mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-08 09:20:59 +02:00
Merge pull request #10241 from SparkiDev/asm_gen_refactor_1
ASM files: generation script refactor output
This commit is contained in:
+40
-40
@@ -59,7 +59,7 @@
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_generate_m0_aesni_rev8:
|
||||
.quad 0x8090a0b0c0d0e0f, 0x1020304050607
|
||||
.quad 0x08090a0b0c0d0e0f,0x0001020304050607
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -71,7 +71,7 @@ L_GCM_generate_m0_aesni_rev8:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_generate_m0_aesni_mod2_128:
|
||||
.quad 0x0, 0xe100000000000000
|
||||
.quad 0x0000000000000000,0xe100000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl GCM_generate_m0_aesni
|
||||
@@ -325,7 +325,7 @@ _GCM_generate_m0_aesni:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_one:
|
||||
.quad 0x0, 0x1
|
||||
.quad 0x0000000000000000,0x0000000000000001
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -337,7 +337,7 @@ L_aes_gcm_one:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_two:
|
||||
.quad 0x0, 0x2
|
||||
.quad 0x0000000000000000,0x0000000000000002
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -349,7 +349,7 @@ L_aes_gcm_two:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_three:
|
||||
.quad 0x0, 0x3
|
||||
.quad 0x0000000000000000,0x0000000000000003
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -361,7 +361,7 @@ L_aes_gcm_three:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_four:
|
||||
.quad 0x0, 0x4
|
||||
.quad 0x0000000000000000,0x0000000000000004
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -373,7 +373,7 @@ L_aes_gcm_four:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_five:
|
||||
.quad 0x0, 0x5
|
||||
.quad 0x0000000000000000,0x0000000000000005
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -385,7 +385,7 @@ L_aes_gcm_five:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_six:
|
||||
.quad 0x0, 0x6
|
||||
.quad 0x0000000000000000,0x0000000000000006
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -397,7 +397,7 @@ L_aes_gcm_six:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_seven:
|
||||
.quad 0x0, 0x7
|
||||
.quad 0x0000000000000000,0x0000000000000007
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -409,7 +409,7 @@ L_aes_gcm_seven:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_eight:
|
||||
.quad 0x0, 0x8
|
||||
.quad 0x0000000000000000,0x0000000000000008
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -421,7 +421,7 @@ L_aes_gcm_eight:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_bswap_epi64:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -433,7 +433,7 @@ L_aes_gcm_bswap_epi64:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_bswap_mask:
|
||||
.quad 0x8090a0b0c0d0e0f, 0x1020304050607
|
||||
.quad 0x08090a0b0c0d0e0f,0x0001020304050607
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -445,7 +445,7 @@ L_aes_gcm_bswap_mask:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_gcm_mod2_128:
|
||||
.quad 0x1, 0xc200000000000000
|
||||
.quad 0x0000000000000001,0xc200000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl AES_GCM_encrypt_aesni
|
||||
@@ -6490,7 +6490,7 @@ L_AES_GCM_decrypt_final_aesni_cmp_tag_done:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_generate_m0_avx1_rev8:
|
||||
.quad 0x8090a0b0c0d0e0f, 0x1020304050607
|
||||
.quad 0x08090a0b0c0d0e0f,0x0001020304050607
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6502,7 +6502,7 @@ L_GCM_generate_m0_avx1_rev8:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_generate_m0_avx1_mod2_128:
|
||||
.quad 0x0, 0xe100000000000000
|
||||
.quad 0x0000000000000000,0xe100000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl GCM_generate_m0_avx1
|
||||
@@ -6722,7 +6722,7 @@ _GCM_generate_m0_avx1:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_one:
|
||||
.quad 0x0, 0x1
|
||||
.quad 0x0000000000000000,0x0000000000000001
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6734,7 +6734,7 @@ L_avx1_aes_gcm_one:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_two:
|
||||
.quad 0x0, 0x2
|
||||
.quad 0x0000000000000000,0x0000000000000002
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6746,7 +6746,7 @@ L_avx1_aes_gcm_two:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_three:
|
||||
.quad 0x0, 0x3
|
||||
.quad 0x0000000000000000,0x0000000000000003
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6758,7 +6758,7 @@ L_avx1_aes_gcm_three:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_four:
|
||||
.quad 0x0, 0x4
|
||||
.quad 0x0000000000000000,0x0000000000000004
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6770,7 +6770,7 @@ L_avx1_aes_gcm_four:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_five:
|
||||
.quad 0x0, 0x5
|
||||
.quad 0x0000000000000000,0x0000000000000005
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6782,7 +6782,7 @@ L_avx1_aes_gcm_five:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_six:
|
||||
.quad 0x0, 0x6
|
||||
.quad 0x0000000000000000,0x0000000000000006
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6794,7 +6794,7 @@ L_avx1_aes_gcm_six:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_seven:
|
||||
.quad 0x0, 0x7
|
||||
.quad 0x0000000000000000,0x0000000000000007
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6806,7 +6806,7 @@ L_avx1_aes_gcm_seven:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_eight:
|
||||
.quad 0x0, 0x8
|
||||
.quad 0x0000000000000000,0x0000000000000008
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6818,7 +6818,7 @@ L_avx1_aes_gcm_eight:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_bswap_epi64:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6830,7 +6830,7 @@ L_avx1_aes_gcm_bswap_epi64:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_bswap_mask:
|
||||
.quad 0x8090a0b0c0d0e0f, 0x1020304050607
|
||||
.quad 0x08090a0b0c0d0e0f,0x0001020304050607
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -6842,7 +6842,7 @@ L_avx1_aes_gcm_bswap_mask:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_gcm_mod2_128:
|
||||
.quad 0x1, 0xc200000000000000
|
||||
.quad 0x0000000000000001,0xc200000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl AES_GCM_encrypt_avx1
|
||||
@@ -11953,7 +11953,7 @@ L_AES_GCM_decrypt_final_avx1_cmp_tag_done:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_generate_m0_avx2_rev8:
|
||||
.quad 0x8090a0b0c0d0e0f, 0x1020304050607
|
||||
.quad 0x08090a0b0c0d0e0f,0x0001020304050607
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -11965,7 +11965,7 @@ L_GCM_generate_m0_avx2_rev8:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_generate_m0_avx2_mod2_128:
|
||||
.quad 0x0, 0xe100000000000000
|
||||
.quad 0x0000000000000000,0xe100000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl GCM_generate_m0_avx2
|
||||
@@ -12185,7 +12185,7 @@ _GCM_generate_m0_avx2:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_one:
|
||||
.quad 0x0, 0x1
|
||||
.quad 0x0000000000000000,0x0000000000000001
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12197,7 +12197,7 @@ L_avx2_aes_gcm_one:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_two:
|
||||
.quad 0x0, 0x2
|
||||
.quad 0x0000000000000000,0x0000000000000002
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12209,7 +12209,7 @@ L_avx2_aes_gcm_two:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_three:
|
||||
.quad 0x0, 0x3
|
||||
.quad 0x0000000000000000,0x0000000000000003
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12221,7 +12221,7 @@ L_avx2_aes_gcm_three:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_four:
|
||||
.quad 0x0, 0x4
|
||||
.quad 0x0000000000000000,0x0000000000000004
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12233,7 +12233,7 @@ L_avx2_aes_gcm_four:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_five:
|
||||
.quad 0x0, 0x5
|
||||
.quad 0x0000000000000000,0x0000000000000005
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12245,7 +12245,7 @@ L_avx2_aes_gcm_five:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_six:
|
||||
.quad 0x0, 0x6
|
||||
.quad 0x0000000000000000,0x0000000000000006
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12257,7 +12257,7 @@ L_avx2_aes_gcm_six:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_seven:
|
||||
.quad 0x0, 0x7
|
||||
.quad 0x0000000000000000,0x0000000000000007
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12269,7 +12269,7 @@ L_avx2_aes_gcm_seven:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_eight:
|
||||
.quad 0x0, 0x8
|
||||
.quad 0x0000000000000000,0x0000000000000008
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12281,7 +12281,7 @@ L_avx2_aes_gcm_eight:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_bswap_one:
|
||||
.quad 0x0, 0x100000000000000
|
||||
.quad 0x0000000000000000,0x0100000000000000
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12293,7 +12293,7 @@ L_avx2_aes_gcm_bswap_one:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_bswap_epi64:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12305,7 +12305,7 @@ L_avx2_aes_gcm_bswap_epi64:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_bswap_mask:
|
||||
.quad 0x8090a0b0c0d0e0f, 0x1020304050607
|
||||
.quad 0x08090a0b0c0d0e0f,0x0001020304050607
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -12317,7 +12317,7 @@ L_avx2_aes_gcm_bswap_mask:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_aes_gcm_mod2_128:
|
||||
.quad 0x1, 0xc200000000000000
|
||||
.quad 0x0000000000000001,0xc200000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl AES_GCM_encrypt_avx2
|
||||
|
||||
+147
-106
@@ -18,6 +18,7 @@
|
||||
; * along with this program; if not, write to the Free Software
|
||||
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
; */
|
||||
|
||||
IF @Version LT 1200
|
||||
; AVX2 instructions not recognized by old versions of MASM
|
||||
IFNDEF NO_AVX2_SUPPORT
|
||||
@@ -42,15 +43,17 @@ ENDIF
|
||||
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_GCM_generate_m0_aesni_rev8 QWORD 579005069656919567, 283686952306183
|
||||
L_GCM_generate_m0_aesni_rev8 QWORD \
|
||||
08090a0b0c0d0e0fh, 0001020304050607h
|
||||
ptr_L_GCM_generate_m0_aesni_rev8 QWORD L_GCM_generate_m0_aesni_rev8
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_GCM_generate_m0_aesni_mod2_128 QWORD 0, 16212958658533785600
|
||||
L_GCM_generate_m0_aesni_mod2_128 QWORD \
|
||||
0000000000000000h, 0e100000000000000h
|
||||
ptr_L_GCM_generate_m0_aesni_mod2_128 QWORD L_GCM_generate_m0_aesni_mod2_128
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
GCM_generate_m0_aesni PROC
|
||||
sub rsp, 80
|
||||
movdqu OWORD PTR [rsp], xmm6
|
||||
@@ -292,63 +295,74 @@ GCM_generate_m0_aesni PROC
|
||||
add rsp, 80
|
||||
ret
|
||||
GCM_generate_m0_aesni ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_one QWORD 0, 1
|
||||
L_aes_gcm_one QWORD \
|
||||
0000000000000000h, 0000000000000001h
|
||||
ptr_L_aes_gcm_one QWORD L_aes_gcm_one
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_two QWORD 0, 2
|
||||
L_aes_gcm_two QWORD \
|
||||
0000000000000000h, 0000000000000002h
|
||||
ptr_L_aes_gcm_two QWORD L_aes_gcm_two
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_three QWORD 0, 3
|
||||
L_aes_gcm_three QWORD \
|
||||
0000000000000000h, 0000000000000003h
|
||||
ptr_L_aes_gcm_three QWORD L_aes_gcm_three
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_four QWORD 0, 4
|
||||
L_aes_gcm_four QWORD \
|
||||
0000000000000000h, 0000000000000004h
|
||||
ptr_L_aes_gcm_four QWORD L_aes_gcm_four
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_five QWORD 0, 5
|
||||
L_aes_gcm_five QWORD \
|
||||
0000000000000000h, 0000000000000005h
|
||||
ptr_L_aes_gcm_five QWORD L_aes_gcm_five
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_six QWORD 0, 6
|
||||
L_aes_gcm_six QWORD \
|
||||
0000000000000000h, 0000000000000006h
|
||||
ptr_L_aes_gcm_six QWORD L_aes_gcm_six
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_seven QWORD 0, 7
|
||||
L_aes_gcm_seven QWORD \
|
||||
0000000000000000h, 0000000000000007h
|
||||
ptr_L_aes_gcm_seven QWORD L_aes_gcm_seven
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_eight QWORD 0, 8
|
||||
L_aes_gcm_eight QWORD \
|
||||
0000000000000000h, 0000000000000008h
|
||||
ptr_L_aes_gcm_eight QWORD L_aes_gcm_eight
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_bswap_epi64 QWORD 283686952306183, 579005069656919567
|
||||
L_aes_gcm_bswap_epi64 QWORD \
|
||||
0001020304050607h, 08090a0b0c0d0e0fh
|
||||
ptr_L_aes_gcm_bswap_epi64 QWORD L_aes_gcm_bswap_epi64
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_bswap_mask QWORD 579005069656919567, 283686952306183
|
||||
L_aes_gcm_bswap_mask QWORD \
|
||||
08090a0b0c0d0e0fh, 0001020304050607h
|
||||
ptr_L_aes_gcm_bswap_mask QWORD L_aes_gcm_bswap_mask
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_gcm_mod2_128 QWORD 1, 13979173243358019584
|
||||
L_aes_gcm_mod2_128 QWORD \
|
||||
0000000000000001h, 0c200000000000000h
|
||||
ptr_L_aes_gcm_mod2_128 QWORD L_aes_gcm_mod2_128
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_aesni PROC
|
||||
push r13
|
||||
push rdi
|
||||
@@ -2218,8 +2232,8 @@ L_AES_GCM_encrypt_aesni_store_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_aesni PROC
|
||||
push r13
|
||||
push rdi
|
||||
@@ -3641,8 +3655,8 @@ L_AES_GCM_decrypt_aesni_cmp_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_init_aesni PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -3999,8 +4013,8 @@ L_AES_GCM_init_aesni_iv_done:
|
||||
pop rdi
|
||||
ret
|
||||
AES_GCM_init_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_aad_update_aesni PROC
|
||||
mov rax, rcx
|
||||
sub rsp, 32
|
||||
@@ -4076,8 +4090,8 @@ L_AES_GCM_aad_update_aesni_16_loop:
|
||||
add rsp, 32
|
||||
ret
|
||||
AES_GCM_aad_update_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_block_aesni PROC
|
||||
mov r10, r8
|
||||
mov r11, r9
|
||||
@@ -4116,8 +4130,8 @@ L_AES_GCM_encrypt_block_aesni_aesenc_block_aesenc_avx_last:
|
||||
pshufb xmm0, OWORD PTR L_aes_gcm_bswap_mask
|
||||
ret
|
||||
AES_GCM_encrypt_block_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_ghash_block_aesni PROC
|
||||
sub rsp, 32
|
||||
movdqu OWORD PTR [rsp], xmm6
|
||||
@@ -4187,8 +4201,8 @@ AES_GCM_ghash_block_aesni PROC
|
||||
add rsp, 32
|
||||
ret
|
||||
AES_GCM_ghash_block_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_update_aesni PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -5426,8 +5440,8 @@ L_AES_GCM_encrypt_update_aesni_done_enc:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_update_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_final_aesni PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -5538,8 +5552,8 @@ L_AES_GCM_encrypt_final_aesni_store_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_final_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_update_aesni PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -6321,8 +6335,8 @@ L_AES_GCM_decrypt_update_aesni_done_dec:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_update_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_final_aesni PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -6454,19 +6468,21 @@ L_AES_GCM_decrypt_final_aesni_cmp_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_final_aesni ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
IFDEF HAVE_INTEL_AVX1
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_GCM_generate_m0_avx1_rev8 QWORD 579005069656919567, 283686952306183
|
||||
L_GCM_generate_m0_avx1_rev8 QWORD \
|
||||
08090a0b0c0d0e0fh, 0001020304050607h
|
||||
ptr_L_GCM_generate_m0_avx1_rev8 QWORD L_GCM_generate_m0_avx1_rev8
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_GCM_generate_m0_avx1_mod2_128 QWORD 0, 16212958658533785600
|
||||
L_GCM_generate_m0_avx1_mod2_128 QWORD \
|
||||
0000000000000000h, 0e100000000000000h
|
||||
ptr_L_GCM_generate_m0_avx1_mod2_128 QWORD L_GCM_generate_m0_avx1_mod2_128
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
GCM_generate_m0_avx1 PROC
|
||||
sub rsp, 80
|
||||
vmovdqu OWORD PTR [rsp], xmm6
|
||||
@@ -6674,63 +6690,74 @@ GCM_generate_m0_avx1 PROC
|
||||
add rsp, 80
|
||||
ret
|
||||
GCM_generate_m0_avx1 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_one QWORD 0, 1
|
||||
L_avx1_aes_gcm_one QWORD \
|
||||
0000000000000000h, 0000000000000001h
|
||||
ptr_L_avx1_aes_gcm_one QWORD L_avx1_aes_gcm_one
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_two QWORD 0, 2
|
||||
L_avx1_aes_gcm_two QWORD \
|
||||
0000000000000000h, 0000000000000002h
|
||||
ptr_L_avx1_aes_gcm_two QWORD L_avx1_aes_gcm_two
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_three QWORD 0, 3
|
||||
L_avx1_aes_gcm_three QWORD \
|
||||
0000000000000000h, 0000000000000003h
|
||||
ptr_L_avx1_aes_gcm_three QWORD L_avx1_aes_gcm_three
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_four QWORD 0, 4
|
||||
L_avx1_aes_gcm_four QWORD \
|
||||
0000000000000000h, 0000000000000004h
|
||||
ptr_L_avx1_aes_gcm_four QWORD L_avx1_aes_gcm_four
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_five QWORD 0, 5
|
||||
L_avx1_aes_gcm_five QWORD \
|
||||
0000000000000000h, 0000000000000005h
|
||||
ptr_L_avx1_aes_gcm_five QWORD L_avx1_aes_gcm_five
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_six QWORD 0, 6
|
||||
L_avx1_aes_gcm_six QWORD \
|
||||
0000000000000000h, 0000000000000006h
|
||||
ptr_L_avx1_aes_gcm_six QWORD L_avx1_aes_gcm_six
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_seven QWORD 0, 7
|
||||
L_avx1_aes_gcm_seven QWORD \
|
||||
0000000000000000h, 0000000000000007h
|
||||
ptr_L_avx1_aes_gcm_seven QWORD L_avx1_aes_gcm_seven
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_eight QWORD 0, 8
|
||||
L_avx1_aes_gcm_eight QWORD \
|
||||
0000000000000000h, 0000000000000008h
|
||||
ptr_L_avx1_aes_gcm_eight QWORD L_avx1_aes_gcm_eight
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_bswap_epi64 QWORD 283686952306183, 579005069656919567
|
||||
L_avx1_aes_gcm_bswap_epi64 QWORD \
|
||||
0001020304050607h, 08090a0b0c0d0e0fh
|
||||
ptr_L_avx1_aes_gcm_bswap_epi64 QWORD L_avx1_aes_gcm_bswap_epi64
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_bswap_mask QWORD 579005069656919567, 283686952306183
|
||||
L_avx1_aes_gcm_bswap_mask QWORD \
|
||||
08090a0b0c0d0e0fh, 0001020304050607h
|
||||
ptr_L_avx1_aes_gcm_bswap_mask QWORD L_avx1_aes_gcm_bswap_mask
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_gcm_mod2_128 QWORD 1, 13979173243358019584
|
||||
L_avx1_aes_gcm_mod2_128 QWORD \
|
||||
0000000000000001h, 0c200000000000000h
|
||||
ptr_L_avx1_aes_gcm_mod2_128 QWORD L_avx1_aes_gcm_mod2_128
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_avx1 PROC
|
||||
push r13
|
||||
push rdi
|
||||
@@ -8328,8 +8355,8 @@ L_AES_GCM_encrypt_avx1_store_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_avx1 PROC
|
||||
push r13
|
||||
push rdi
|
||||
@@ -9521,8 +9548,8 @@ L_AES_GCM_decrypt_avx1_cmp_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_init_avx1 PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -9843,8 +9870,8 @@ L_AES_GCM_init_avx1_iv_done:
|
||||
pop rdi
|
||||
ret
|
||||
AES_GCM_init_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_aad_update_avx1 PROC
|
||||
mov rax, rcx
|
||||
sub rsp, 32
|
||||
@@ -9909,8 +9936,8 @@ L_AES_GCM_aad_update_avx1_16_loop:
|
||||
add rsp, 32
|
||||
ret
|
||||
AES_GCM_aad_update_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_block_avx1 PROC
|
||||
mov r10, r8
|
||||
mov r11, r9
|
||||
@@ -9949,8 +9976,8 @@ L_AES_GCM_encrypt_block_avx1_aesenc_block_last:
|
||||
vzeroupper
|
||||
ret
|
||||
AES_GCM_encrypt_block_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_ghash_block_avx1 PROC
|
||||
sub rsp, 32
|
||||
vmovdqu OWORD PTR [rsp], xmm6
|
||||
@@ -10010,8 +10037,8 @@ AES_GCM_ghash_block_avx1 PROC
|
||||
add rsp, 32
|
||||
ret
|
||||
AES_GCM_ghash_block_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_update_avx1 PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -11052,8 +11079,8 @@ L_AES_GCM_encrypt_update_avx1_done_enc:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_update_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_final_avx1 PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -11153,8 +11180,8 @@ L_AES_GCM_encrypt_final_avx1_store_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_final_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_update_avx1 PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -11779,8 +11806,8 @@ L_AES_GCM_decrypt_update_avx1_done_dec:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_update_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_final_avx1 PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -11901,20 +11928,22 @@ L_AES_GCM_decrypt_final_avx1_cmp_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_final_avx1 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
IFDEF HAVE_INTEL_AVX2
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_GCM_generate_m0_avx2_rev8 QWORD 579005069656919567, 283686952306183
|
||||
L_GCM_generate_m0_avx2_rev8 QWORD \
|
||||
08090a0b0c0d0e0fh, 0001020304050607h
|
||||
ptr_L_GCM_generate_m0_avx2_rev8 QWORD L_GCM_generate_m0_avx2_rev8
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_GCM_generate_m0_avx2_mod2_128 QWORD 0, 16212958658533785600
|
||||
L_GCM_generate_m0_avx2_mod2_128 QWORD \
|
||||
0000000000000000h, 0e100000000000000h
|
||||
ptr_L_GCM_generate_m0_avx2_mod2_128 QWORD L_GCM_generate_m0_avx2_mod2_128
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
GCM_generate_m0_avx2 PROC
|
||||
sub rsp, 80
|
||||
vmovdqu OWORD PTR [rsp], xmm6
|
||||
@@ -12122,68 +12151,80 @@ GCM_generate_m0_avx2 PROC
|
||||
add rsp, 80
|
||||
ret
|
||||
GCM_generate_m0_avx2 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_one QWORD 0, 1
|
||||
L_avx2_aes_gcm_one QWORD \
|
||||
0000000000000000h, 0000000000000001h
|
||||
ptr_L_avx2_aes_gcm_one QWORD L_avx2_aes_gcm_one
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_two QWORD 0, 2
|
||||
L_avx2_aes_gcm_two QWORD \
|
||||
0000000000000000h, 0000000000000002h
|
||||
ptr_L_avx2_aes_gcm_two QWORD L_avx2_aes_gcm_two
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_three QWORD 0, 3
|
||||
L_avx2_aes_gcm_three QWORD \
|
||||
0000000000000000h, 0000000000000003h
|
||||
ptr_L_avx2_aes_gcm_three QWORD L_avx2_aes_gcm_three
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_four QWORD 0, 4
|
||||
L_avx2_aes_gcm_four QWORD \
|
||||
0000000000000000h, 0000000000000004h
|
||||
ptr_L_avx2_aes_gcm_four QWORD L_avx2_aes_gcm_four
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_five QWORD 0, 5
|
||||
L_avx2_aes_gcm_five QWORD \
|
||||
0000000000000000h, 0000000000000005h
|
||||
ptr_L_avx2_aes_gcm_five QWORD L_avx2_aes_gcm_five
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_six QWORD 0, 6
|
||||
L_avx2_aes_gcm_six QWORD \
|
||||
0000000000000000h, 0000000000000006h
|
||||
ptr_L_avx2_aes_gcm_six QWORD L_avx2_aes_gcm_six
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_seven QWORD 0, 7
|
||||
L_avx2_aes_gcm_seven QWORD \
|
||||
0000000000000000h, 0000000000000007h
|
||||
ptr_L_avx2_aes_gcm_seven QWORD L_avx2_aes_gcm_seven
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_eight QWORD 0, 8
|
||||
L_avx2_aes_gcm_eight QWORD \
|
||||
0000000000000000h, 0000000000000008h
|
||||
ptr_L_avx2_aes_gcm_eight QWORD L_avx2_aes_gcm_eight
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_bswap_one QWORD 0, 72057594037927936
|
||||
L_avx2_aes_gcm_bswap_one QWORD \
|
||||
0000000000000000h, 0100000000000000h
|
||||
ptr_L_avx2_aes_gcm_bswap_one QWORD L_avx2_aes_gcm_bswap_one
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_bswap_epi64 QWORD 283686952306183, 579005069656919567
|
||||
L_avx2_aes_gcm_bswap_epi64 QWORD \
|
||||
0001020304050607h, 08090a0b0c0d0e0fh
|
||||
ptr_L_avx2_aes_gcm_bswap_epi64 QWORD L_avx2_aes_gcm_bswap_epi64
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_bswap_mask QWORD 579005069656919567, 283686952306183
|
||||
L_avx2_aes_gcm_bswap_mask QWORD \
|
||||
08090a0b0c0d0e0fh, 0001020304050607h
|
||||
ptr_L_avx2_aes_gcm_bswap_mask QWORD L_avx2_aes_gcm_bswap_mask
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx2_aes_gcm_mod2_128 QWORD 1, 13979173243358019584
|
||||
L_avx2_aes_gcm_mod2_128 QWORD \
|
||||
0000000000000001h, 0c200000000000000h
|
||||
ptr_L_avx2_aes_gcm_mod2_128 QWORD L_avx2_aes_gcm_mod2_128
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_avx2 PROC
|
||||
push r13
|
||||
push rdi
|
||||
@@ -13504,8 +13545,8 @@ L_AES_GCM_encrypt_avx2_store_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_encrypt_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_avx2 PROC
|
||||
push r13
|
||||
push rdi
|
||||
@@ -14489,8 +14530,8 @@ L_AES_GCM_decrypt_avx2_cmp_tag_done:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_init_avx2 PROC
|
||||
push rbx
|
||||
push rdi
|
||||
@@ -14763,8 +14804,8 @@ L_AES_GCM_init_avx2_iv_done:
|
||||
pop rbx
|
||||
ret
|
||||
AES_GCM_init_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_aad_update_avx2 PROC
|
||||
mov rax, rcx
|
||||
sub rsp, 16
|
||||
@@ -14815,8 +14856,8 @@ L_AES_GCM_aad_update_avx2_16_loop:
|
||||
add rsp, 16
|
||||
ret
|
||||
AES_GCM_aad_update_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_block_avx2 PROC
|
||||
mov r10, r8
|
||||
mov r11, r9
|
||||
@@ -14870,8 +14911,8 @@ L_AES_GCM_encrypt_block_avx2_aesenc_block_last:
|
||||
add rsp, 152
|
||||
ret
|
||||
AES_GCM_encrypt_block_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_ghash_block_avx2 PROC
|
||||
sub rsp, 16
|
||||
vmovdqu OWORD PTR [rsp], xmm6
|
||||
@@ -14916,8 +14957,8 @@ AES_GCM_ghash_block_avx2 PROC
|
||||
add rsp, 16
|
||||
ret
|
||||
AES_GCM_ghash_block_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_update_avx2 PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -15791,8 +15832,8 @@ L_AES_GCM_encrypt_update_avx2_done_enc:
|
||||
pop r12
|
||||
ret
|
||||
AES_GCM_encrypt_update_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_encrypt_final_avx2 PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -15862,8 +15903,8 @@ L_AES_GCM_encrypt_final_avx2_store_tag_done:
|
||||
pop r12
|
||||
ret
|
||||
AES_GCM_encrypt_final_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_update_avx2 PROC
|
||||
push r13
|
||||
push r12
|
||||
@@ -16390,8 +16431,8 @@ L_AES_GCM_decrypt_update_avx2_done_dec:
|
||||
pop r13
|
||||
ret
|
||||
AES_GCM_decrypt_update_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_GCM_decrypt_final_avx2 PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -16475,6 +16516,6 @@ L_AES_GCM_decrypt_final_avx2_cmp_tag_done:
|
||||
pop r12
|
||||
ret
|
||||
AES_GCM_decrypt_final_avx2 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
END
|
||||
|
||||
@@ -33,71 +33,93 @@
|
||||
#endif /* NO_AVX2_SUPPORT */
|
||||
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_one:
|
||||
.long 0x0,0x0,0x1,0x0
|
||||
.long 0x00000000,0x00000000,0x00000001,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_two:
|
||||
.long 0x0,0x0,0x2,0x0
|
||||
.long 0x00000000,0x00000000,0x00000002,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_three:
|
||||
.long 0x0,0x0,0x3,0x0
|
||||
.long 0x00000000,0x00000000,0x00000003,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_four:
|
||||
.long 0x0,0x0,0x4,0x0
|
||||
.long 0x00000000,0x00000000,0x00000004,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_bswap_epi64:
|
||||
.long 0x4050607,0x10203,0xc0d0e0f,0x8090a0b
|
||||
.long 0x04050607,0x00010203,0x0c0d0e0f,0x08090a0b
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_bswap_mask:
|
||||
.long 0xc0d0e0f,0x8090a0b,0x4050607,0x10203
|
||||
.long 0x0c0d0e0f,0x08090a0b,0x04050607,0x00010203
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_mod2_128:
|
||||
.long 0x1,0x0,0x0,0xc2000000
|
||||
.long 0x00000001,0x00000000,0x00000000,0xc2000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_one:
|
||||
.long 0x0,0x0,0x1,0x0
|
||||
.long 0x00000000,0x00000000,0x00000001,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_two:
|
||||
.long 0x0,0x0,0x2,0x0
|
||||
.long 0x00000000,0x00000000,0x00000002,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_three:
|
||||
.long 0x0,0x0,0x3,0x0
|
||||
.long 0x00000000,0x00000000,0x00000003,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_four:
|
||||
.long 0x0,0x0,0x4,0x0
|
||||
.long 0x00000000,0x00000000,0x00000004,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_bswap_epi64:
|
||||
.long 0x4050607,0x10203,0xc0d0e0f,0x8090a0b
|
||||
.long 0x04050607,0x00010203,0x0c0d0e0f,0x08090a0b
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_bswap_mask:
|
||||
.long 0xc0d0e0f,0x8090a0b,0x4050607,0x10203
|
||||
.long 0x0c0d0e0f,0x08090a0b,0x04050607,0x00010203
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx1_mod2_128:
|
||||
.long 0x1,0x0,0x0,0xc2000000
|
||||
.long 0x00000001,0x00000000,0x00000000,0xc2000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_one:
|
||||
.long 0x0,0x0,0x1,0x0
|
||||
.long 0x00000000,0x00000000,0x00000001,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_two:
|
||||
.long 0x0,0x0,0x2,0x0
|
||||
.long 0x00000000,0x00000000,0x00000002,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_three:
|
||||
.long 0x0,0x0,0x3,0x0
|
||||
.long 0x00000000,0x00000000,0x00000003,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_four:
|
||||
.long 0x0,0x0,0x4,0x0
|
||||
.long 0x00000000,0x00000000,0x00000004,0x00000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_avx2_aes_gcm_bswap_one:
|
||||
.long 0x0,0x0,0x0,0x1000000
|
||||
.long 0x00000000,0x00000000,0x00000000,0x01000000
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_bswap_epi64:
|
||||
.long 0x4050607,0x10203,0xc0d0e0f,0x8090a0b
|
||||
.long 0x04050607,0x00010203,0x0c0d0e0f,0x08090a0b
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_bswap_mask:
|
||||
.long 0xc0d0e0f,0x8090a0b,0x4050607,0x10203
|
||||
.long 0x0c0d0e0f,0x08090a0b,0x04050607,0x00010203
|
||||
.type data, @object
|
||||
.align 16
|
||||
L_aes_gcm_avx2_mod2_128:
|
||||
.long 0x1,0x0,0x0,0xc2000000
|
||||
.long 0x00000001,0x00000000,0x00000000,0xc2000000
|
||||
.text
|
||||
.globl AES_GCM_encrypt_aesni
|
||||
.type AES_GCM_encrypt_aesni,@function
|
||||
|
||||
@@ -107,6 +107,11 @@ L_AES_XTS_init_aesni_tweak_aes_enc_block_last:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_aes_xts_gc_xts:
|
||||
.long 0x00000087,0x00000001,0x00000001,0x00000001
|
||||
#ifndef __APPLE__
|
||||
@@ -1490,6 +1495,11 @@ L_AES_XTS_init_avx1_tweak_aes_enc_block_last:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_aes_xts_gc_xts:
|
||||
.long 0x00000087,0x00000001,0x00000001,0x00000001
|
||||
#ifndef __APPLE__
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
; * along with this program; if not, write to the Free Software
|
||||
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
; */
|
||||
|
||||
IF @Version LT 1200
|
||||
; AVX2 instructions not recognized by old versions of MASM
|
||||
IFNDEF NO_AVX2_SUPPORT
|
||||
@@ -40,7 +41,7 @@ IFNDEF _WIN64
|
||||
_WIN64 = 1
|
||||
ENDIF
|
||||
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_init_aesni PROC
|
||||
movdqu xmm0, OWORD PTR [rcx]
|
||||
; aes_enc_block
|
||||
@@ -81,13 +82,14 @@ L_AES_XTS_init_aesni_tweak_aes_enc_block_last:
|
||||
movdqu OWORD PTR [rcx], xmm0
|
||||
ret
|
||||
AES_XTS_init_aesni ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_aes_xts_gc_xts DWORD 135,1,1,1
|
||||
L_aes_xts_gc_xts DWORD \
|
||||
00000087h, 00000001h, 00000001h, 00000001h
|
||||
ptr_L_aes_xts_gc_xts QWORD L_aes_xts_gc_xts
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_encrypt_aesni PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -419,8 +421,8 @@ L_AES_XTS_encrypt_aesni_done_enc:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_encrypt_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_encrypt_update_aesni PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -715,8 +717,8 @@ L_AES_XTS_encrypt_update_aesni_done_enc:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_encrypt_update_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_decrypt_aesni PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -1102,8 +1104,8 @@ L_AES_XTS_decrypt_aesni_done_dec:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_decrypt_aesni ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_decrypt_update_aesni PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -1452,9 +1454,9 @@ L_AES_XTS_decrypt_update_aesni_done_dec:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_decrypt_update_aesni ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
IFDEF HAVE_INTEL_AVX1
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_init_avx1 PROC
|
||||
vmovdqu xmm0, OWORD PTR [rcx]
|
||||
; aes_enc_block
|
||||
@@ -1495,13 +1497,14 @@ L_AES_XTS_init_avx1_tweak_aes_enc_block_last:
|
||||
vmovdqu OWORD PTR [rcx], xmm0
|
||||
ret
|
||||
AES_XTS_init_avx1 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_avx1_aes_xts_gc_xts DWORD 135,1,1,1
|
||||
L_avx1_aes_xts_gc_xts DWORD \
|
||||
00000087h, 00000001h, 00000001h, 00000001h
|
||||
ptr_L_avx1_aes_xts_gc_xts QWORD L_avx1_aes_xts_gc_xts
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_encrypt_avx1 PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -1824,8 +1827,8 @@ L_AES_XTS_encrypt_avx1_done_enc:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_encrypt_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_encrypt_update_avx1 PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -2111,8 +2114,8 @@ L_AES_XTS_encrypt_update_avx1_done_enc:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_encrypt_update_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_decrypt_avx1 PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -2487,8 +2490,8 @@ L_AES_XTS_decrypt_avx1_done_dec:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_decrypt_avx1 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
AES_XTS_decrypt_update_avx1 PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -2826,6 +2829,6 @@ L_AES_XTS_decrypt_update_avx1_done_dec:
|
||||
pop rdi
|
||||
ret
|
||||
AES_XTS_decrypt_update_avx1 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
END
|
||||
|
||||
+12
-12
@@ -489,7 +489,7 @@ L_chacha_x64_done:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx1_rotl8:
|
||||
.quad 0x605040702010003, 0xe0d0c0f0a09080b
|
||||
.quad 0x0605040702010003,0x0e0d0c0f0a09080b
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -501,7 +501,7 @@ L_chacha20_avx1_rotl8:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx1_rotl16:
|
||||
.quad 0x504070601000302, 0xd0c0f0e09080b0a
|
||||
.quad 0x0504070601000302,0x0d0c0f0e09080b0a
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -513,7 +513,7 @@ L_chacha20_avx1_rotl16:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx1_add:
|
||||
.quad 0x100000000, 0x300000002
|
||||
.quad 0x0000000100000000,0x0000000300000002
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -525,7 +525,7 @@ L_chacha20_avx1_add:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx1_four:
|
||||
.quad 0x400000004, 0x400000004
|
||||
.quad 0x0000000400000004,0x0000000400000004
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl chacha_encrypt_avx1
|
||||
@@ -1057,8 +1057,8 @@ L_chacha20_avx1_partial_done:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx2_rotl8:
|
||||
.quad 0x605040702010003, 0xe0d0c0f0a09080b
|
||||
.quad 0x605040702010003, 0xe0d0c0f0a09080b
|
||||
.quad 0x0605040702010003,0x0e0d0c0f0a09080b
|
||||
.quad 0x0605040702010003,0x0e0d0c0f0a09080b
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -1070,8 +1070,8 @@ L_chacha20_avx2_rotl8:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx2_rotl16:
|
||||
.quad 0x504070601000302, 0xd0c0f0e09080b0a
|
||||
.quad 0x504070601000302, 0xd0c0f0e09080b0a
|
||||
.quad 0x0504070601000302,0x0d0c0f0e09080b0a
|
||||
.quad 0x0504070601000302,0x0d0c0f0e09080b0a
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -1083,8 +1083,8 @@ L_chacha20_avx2_rotl16:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx2_add:
|
||||
.quad 0x100000000, 0x300000002
|
||||
.quad 0x500000004, 0x700000006
|
||||
.quad 0x0000000100000000,0x0000000300000002
|
||||
.quad 0x0000000500000004,0x0000000700000006
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -1096,8 +1096,8 @@ L_chacha20_avx2_add:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_avx2_eight:
|
||||
.quad 0x800000008, 0x800000008
|
||||
.quad 0x800000008, 0x800000008
|
||||
.quad 0x0000000800000008,0x0000000800000008
|
||||
.quad 0x0000000800000008,0x0000000800000008
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl chacha_encrypt_avx2
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
; * along with this program; if not, write to the Free Software
|
||||
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
; */
|
||||
|
||||
IF @Version LT 1200
|
||||
; AVX2 instructions not recognized by old versions of MASM
|
||||
IFNDEF NO_AVX2_SUPPORT
|
||||
@@ -40,7 +41,7 @@ IFNDEF _WIN64
|
||||
_WIN64 = 1
|
||||
ENDIF
|
||||
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
chacha_encrypt_x64 PROC
|
||||
push rbx
|
||||
push rbp
|
||||
@@ -457,29 +458,33 @@ L_chacha_x64_done:
|
||||
pop rbx
|
||||
ret
|
||||
chacha_encrypt_x64 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
IFDEF HAVE_INTEL_AVX1
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx1_rotl8 QWORD 433757367256023043, 1012478749960636427
|
||||
L_chacha20_avx1_rotl8 QWORD \
|
||||
0605040702010003h, 0e0d0c0f0a09080bh
|
||||
ptr_L_chacha20_avx1_rotl8 QWORD L_chacha20_avx1_rotl8
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx1_rotl16 QWORD 361421592464458498, 940142975169071882
|
||||
L_chacha20_avx1_rotl16 QWORD \
|
||||
0504070601000302h, 0d0c0f0e09080b0ah
|
||||
ptr_L_chacha20_avx1_rotl16 QWORD L_chacha20_avx1_rotl16
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx1_add QWORD 4294967296, 12884901890
|
||||
L_chacha20_avx1_add QWORD \
|
||||
0000000100000000h, 0000000300000002h
|
||||
ptr_L_chacha20_avx1_add QWORD L_chacha20_avx1_add
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx1_four QWORD 17179869188, 17179869188
|
||||
L_chacha20_avx1_four QWORD \
|
||||
0000000400000004h, 0000000400000004h
|
||||
ptr_L_chacha20_avx1_four QWORD L_chacha20_avx1_four
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
chacha_encrypt_avx1 PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -1009,34 +1014,38 @@ L_chacha20_avx1_partial_done:
|
||||
pop r12
|
||||
ret
|
||||
chacha_encrypt_avx1 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
IFDEF HAVE_INTEL_AVX2
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx2_rotl8 QWORD 433757367256023043, 1012478749960636427,
|
||||
433757367256023043, 1012478749960636427
|
||||
L_chacha20_avx2_rotl8 QWORD \
|
||||
0605040702010003h, 0e0d0c0f0a09080bh,
|
||||
0605040702010003h, 0e0d0c0f0a09080bh
|
||||
ptr_L_chacha20_avx2_rotl8 QWORD L_chacha20_avx2_rotl8
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx2_rotl16 QWORD 361421592464458498, 940142975169071882,
|
||||
361421592464458498, 940142975169071882
|
||||
L_chacha20_avx2_rotl16 QWORD \
|
||||
0504070601000302h, 0d0c0f0e09080b0ah,
|
||||
0504070601000302h, 0d0c0f0e09080b0ah
|
||||
ptr_L_chacha20_avx2_rotl16 QWORD L_chacha20_avx2_rotl16
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx2_add QWORD 4294967296, 12884901890,
|
||||
21474836484, 30064771078
|
||||
L_chacha20_avx2_add QWORD \
|
||||
0000000100000000h, 0000000300000002h,
|
||||
0000000500000004h, 0000000700000006h
|
||||
ptr_L_chacha20_avx2_add QWORD L_chacha20_avx2_add
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_chacha20_avx2_eight QWORD 34359738376, 34359738376,
|
||||
34359738376, 34359738376
|
||||
L_chacha20_avx2_eight QWORD \
|
||||
0000000800000008h, 0000000800000008h,
|
||||
0000000800000008h, 0000000800000008h
|
||||
ptr_L_chacha20_avx2_eight QWORD L_chacha20_avx2_eight
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
chacha_encrypt_avx2 PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -1420,6 +1429,6 @@ L_chacha20_avx2_end256:
|
||||
pop r12
|
||||
ret
|
||||
chacha_encrypt_avx2 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
END
|
||||
|
||||
+139
-104
@@ -2343,8 +2343,8 @@ _fe_invert_x64:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_curve25519_base_x64_x2:
|
||||
.quad 0x5cae469cdd684efb, 0x8f3f5ced1e350b5c
|
||||
.quad 0xd9750c687d157114, 0x20d342d51873f1b7
|
||||
.quad 0x5cae469cdd684efb,0x8f3f5ced1e350b5c
|
||||
.quad 0xd9750c687d157114,0x20d342d51873f1b7
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl curve25519_base_x64
|
||||
@@ -8852,7 +8852,7 @@ _ge_p2_dbl_x64:
|
||||
shldq $0x01, %r11, %r12
|
||||
shldq $0x01, %r10, %r11
|
||||
shldq $0x01, %r9, %r10
|
||||
shlq $0x01, %r9
|
||||
shlq $1, %r9
|
||||
movq $0x7fffffffffffffff, %r8
|
||||
shrq $62, %rax
|
||||
andq %r8, %r12
|
||||
@@ -11629,7 +11629,7 @@ _fe_sq2_x64:
|
||||
shldq $0x01, %r9, %r10
|
||||
shldq $0x01, %r8, %r9
|
||||
shldq $0x01, %rcx, %r8
|
||||
shlq $0x01, %rcx
|
||||
shlq $1, %rcx
|
||||
movq $0x7fffffffffffffff, %r15
|
||||
shrq $62, %rax
|
||||
andq %r15, %r10
|
||||
@@ -12157,10 +12157,10 @@ _fe_invert_nct_x64:
|
||||
testb $0x01, %r11b
|
||||
jnz fe_invert_nct_v_even_end
|
||||
fe_invert_nct_v_even_start:
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
movb $0x01, (%rsp,%r15,1)
|
||||
incq %r15
|
||||
testb $0x01, %r11b
|
||||
@@ -12185,17 +12185,17 @@ L_fe_invert_nct_uv_u:
|
||||
sbbq %r12, %r8
|
||||
sbbq %r13, %r9
|
||||
sbbq %r14, %r10
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrq $0x01, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrq $1, %r10
|
||||
testb $0x01, %cl
|
||||
jnz fe_invert_nct_usubv_even_end
|
||||
fe_invert_nct_usubv_even_start:
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrq $0x01, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrq $1, %r10
|
||||
movb $0x00, (%rsp,%r15,1)
|
||||
incq %r15
|
||||
testb $0x01, %cl
|
||||
@@ -12217,17 +12217,17 @@ L_fe_invert_nct_uv_v:
|
||||
sbbq %r8, %r12
|
||||
sbbq %r9, %r13
|
||||
sbbq %r10, %r14
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
testb $0x01, %r11b
|
||||
jnz fe_invert_nct_vsubu_even_end
|
||||
fe_invert_nct_vsubu_even_start:
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
movb $0x01, (%rsp,%r15,1)
|
||||
incq %r15
|
||||
testb $0x01, %r11b
|
||||
@@ -12282,10 +12282,10 @@ L_fe_invert_nct_op_div2_b:
|
||||
movq $0x7fffffffffffffff, %rdx
|
||||
adcq %rdx, %r10
|
||||
L_fe_invert_nct_op_div2_b_mod:
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrq $0x01, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrq $1, %r10
|
||||
movb (%rsp,%r15,1), %dl
|
||||
incq %r15
|
||||
cmpb $0x01, %dl
|
||||
@@ -12317,10 +12317,10 @@ L_fe_invert_nct_op_div2_d:
|
||||
movq $0x7fffffffffffffff, %rdx
|
||||
adcq %rdx, %r14
|
||||
L_fe_invert_nct_op_div2_d_mod:
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
movb (%rsp,%r15,1), %dl
|
||||
incq %r15
|
||||
cmpb $0x01, %dl
|
||||
@@ -13201,8 +13201,8 @@ _fe_invert_avx2:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_curve25519_base_avx2_x2:
|
||||
.quad 0x5cae469cdd684efb, 0x8f3f5ced1e350b5c
|
||||
.quad 0xd9750c687d157114, 0x20d342d51873f1b7
|
||||
.quad 0x5cae469cdd684efb,0x8f3f5ced1e350b5c
|
||||
.quad 0xd9750c687d157114,0x20d342d51873f1b7
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl curve25519_base_avx2
|
||||
@@ -18609,7 +18609,7 @@ _ge_p2_dbl_avx2:
|
||||
shldq $0x01, %r12, %r13
|
||||
shldq $0x01, %r11, %r12
|
||||
shldq $0x01, %r10, %r11
|
||||
shlq $0x01, %r10
|
||||
shlq $1, %r10
|
||||
movq $0x7fffffffffffffff, %rcx
|
||||
shrq $62, %r9
|
||||
andq %rcx, %r13
|
||||
@@ -20979,7 +20979,7 @@ _fe_sq2_avx2:
|
||||
shldq $0x01, %r10, %r11
|
||||
shldq $0x01, %r9, %r10
|
||||
shldq $0x01, %r8, %r9
|
||||
shlq $0x01, %r8
|
||||
shlq $1, %r8
|
||||
movq $0x7fffffffffffffff, %rcx
|
||||
shrq $62, %rax
|
||||
andq %rcx, %r11
|
||||
@@ -21415,7 +21415,12 @@ _sc_muladd_avx2:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__prime:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_prime:
|
||||
.long 0x03ffffed,0x03ffffff,0x03ffffff,0x03ffffff
|
||||
.long 0x03ffffff,0x00000000,0x00000000,0x00000000
|
||||
.long 0x03ffffff,0x03ffffff,0x03ffffff,0x03ffffff
|
||||
@@ -21430,15 +21435,20 @@ L_sp_mod_inv_avx2__prime:
|
||||
#else
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__one:
|
||||
.quad 0x1, 0x0
|
||||
.quad 0x0, 0x0
|
||||
L_fe_invert_nct_avx2_one:
|
||||
.quad 0x0000000000000001,0x0000000000000000
|
||||
.quad 0x0000000000000000,0x0000000000000000
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__all_one:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_all_one:
|
||||
.long 0x00000001,0x00000001,0x00000001,0x00000001
|
||||
.long 0x00000001,0x00000001,0x00000001,0x00000001
|
||||
#ifndef __APPLE__
|
||||
@@ -21446,7 +21456,12 @@ L_sp_mod_inv_avx2__all_one:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__mask01111:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_mask01111:
|
||||
.long 0x00000000,0x00000001,0x00000001,0x00000001
|
||||
.long 0x00000001,0x00000000,0x00000000,0x00000000
|
||||
#ifndef __APPLE__
|
||||
@@ -21454,7 +21469,12 @@ L_sp_mod_inv_avx2__mask01111:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__down_one_dword:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_down_one_dword:
|
||||
.long 0x00000001,0x00000002,0x00000003,0x00000004
|
||||
.long 0x00000005,0x00000006,0x00000007,0x00000007
|
||||
#ifndef __APPLE__
|
||||
@@ -21462,7 +21482,12 @@ L_sp_mod_inv_avx2__down_one_dword:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__neg:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_neg:
|
||||
.long 0x00000000,0x00000000,0x00000000,0x00000000
|
||||
.long 0x80000000,0x00000000,0x00000000,0x00000000
|
||||
#ifndef __APPLE__
|
||||
@@ -21470,7 +21495,12 @@ L_sp_mod_inv_avx2__neg:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__up_one_dword:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_up_one_dword:
|
||||
.long 0x00000007,0x00000000,0x00000001,0x00000002
|
||||
.long 0x00000003,0x00000007,0x00000007,0x00000007
|
||||
#ifndef __APPLE__
|
||||
@@ -21478,7 +21508,12 @@ L_sp_mod_inv_avx2__up_one_dword:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
L_sp_mod_inv_avx2__mask26:
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_fe_invert_nct_avx2_mask26:
|
||||
.long 0x03ffffff,0x03ffffff,0x03ffffff,0x03ffffff
|
||||
.long 0x03ffffff,0x00000000,0x00000000,0x00000000
|
||||
/* Non-constant time modular inversion.
|
||||
@@ -21513,39 +21548,39 @@ _fe_invert_nct_avx2:
|
||||
movq 8(%rsi), %r11
|
||||
movq 16(%rsi), %r12
|
||||
movq 24(%rsi), %r13
|
||||
leaq L_sp_mod_inv_avx2__prime(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_prime(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm6
|
||||
vmovupd 32(%rbx), %ymm7
|
||||
leaq L_sp_mod_inv_avx2__one(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_one(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm8
|
||||
leaq L_sp_mod_inv_avx2__mask01111(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_mask01111(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm9
|
||||
leaq L_sp_mod_inv_avx2__all_one(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_all_one(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm10
|
||||
leaq L_sp_mod_inv_avx2__down_one_dword(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_down_one_dword(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm11
|
||||
leaq L_sp_mod_inv_avx2__neg(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_neg(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm12
|
||||
leaq L_sp_mod_inv_avx2__up_one_dword(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_up_one_dword(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm13
|
||||
leaq L_sp_mod_inv_avx2__mask26(%rip), %rbx
|
||||
leaq L_fe_invert_nct_avx2_mask26(%rip), %rbx
|
||||
vmovupd (%rbx), %ymm14
|
||||
vpxor %xmm0, %xmm0, %xmm0
|
||||
vpxor %xmm1, %xmm1, %xmm1
|
||||
vmovdqu %ymm8, %ymm2
|
||||
vpxor %xmm3, %xmm3, %xmm3
|
||||
testb $0x01, %r10b
|
||||
jnz L__mod_inv_avx2__v_even_end
|
||||
L__mod_inv_avx2__v_even_start:
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrq $0x01, %r13
|
||||
jnz L_fe_invert_nct_avx2_v_even_end
|
||||
L_fe_invert_nct_avx2_v_even_start:
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrq $1, %r13
|
||||
vptest %ymm8, %ymm2
|
||||
jz L__mod_inv_avx2__v_even_shr1
|
||||
jz L_fe_invert_nct_avx2_v_even_shr1
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
vpaddd %ymm7, %ymm3, %ymm3
|
||||
L__mod_inv_avx2__v_even_shr1:
|
||||
L_fe_invert_nct_avx2_v_even_shr1:
|
||||
vpand %ymm9, %ymm2, %ymm4
|
||||
vpand %ymm10, %ymm3, %ymm5
|
||||
vpermd %ymm4, %ymm11, %ymm4
|
||||
@@ -21556,21 +21591,21 @@ L__mod_inv_avx2__v_even_shr1:
|
||||
vpaddd %ymm5, %ymm2, %ymm2
|
||||
vpaddd %ymm4, %ymm3, %ymm3
|
||||
testb $0x01, %r10b
|
||||
jz L__mod_inv_avx2__v_even_start
|
||||
L__mod_inv_avx2__v_even_end:
|
||||
L__mod_inv_avx2__uv_start:
|
||||
jz L_fe_invert_nct_avx2_v_even_start
|
||||
L_fe_invert_nct_avx2_v_even_end:
|
||||
L_fe_invert_nct_avx2_uv_start:
|
||||
cmpq %r13, %r9
|
||||
jb L__mod_inv_avx2__uv_v
|
||||
ja L__mod_inv_avx2__uv_u
|
||||
jb L_fe_invert_nct_avx2_uv_v
|
||||
ja L_fe_invert_nct_avx2_uv_u
|
||||
cmpq %r12, %r8
|
||||
jb L__mod_inv_avx2__uv_v
|
||||
ja L__mod_inv_avx2__uv_u
|
||||
jb L_fe_invert_nct_avx2_uv_v
|
||||
ja L_fe_invert_nct_avx2_uv_u
|
||||
cmpq %r11, %rcx
|
||||
jb L__mod_inv_avx2__uv_v
|
||||
ja L__mod_inv_avx2__uv_u
|
||||
jb L_fe_invert_nct_avx2_uv_v
|
||||
ja L_fe_invert_nct_avx2_uv_u
|
||||
cmpq %r10, %rax
|
||||
jb L__mod_inv_avx2__uv_v
|
||||
L__mod_inv_avx2__uv_u:
|
||||
jb L_fe_invert_nct_avx2_uv_v
|
||||
L_fe_invert_nct_avx2_uv_u:
|
||||
subq %r10, %rax
|
||||
sbbq %r11, %rcx
|
||||
vpsubd %ymm2, %ymm0, %ymm0
|
||||
@@ -21578,20 +21613,20 @@ L__mod_inv_avx2__uv_u:
|
||||
vpsubd %ymm3, %ymm1, %ymm1
|
||||
sbbq %r13, %r9
|
||||
vptest %ymm12, %ymm1
|
||||
jz L__mod_inv_avx2__usubv_done_neg
|
||||
jz L_fe_invert_nct_avx2_usubv_done_neg
|
||||
vpaddd %ymm6, %ymm0, %ymm0
|
||||
vpaddd %ymm7, %ymm1, %ymm1
|
||||
L__mod_inv_avx2__usubv_done_neg:
|
||||
L__mod_inv_avx2__usubv_shr1:
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrq $0x01, %r9
|
||||
L_fe_invert_nct_avx2_usubv_done_neg:
|
||||
L_fe_invert_nct_avx2_usubv_shr1:
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrq $1, %r9
|
||||
vptest %ymm8, %ymm0
|
||||
jz L__mod_inv_avx2__usubv_sub_shr1
|
||||
jz L_fe_invert_nct_avx2_usubv_sub_shr1
|
||||
vpaddd %ymm6, %ymm0, %ymm0
|
||||
vpaddd %ymm7, %ymm1, %ymm1
|
||||
L__mod_inv_avx2__usubv_sub_shr1:
|
||||
L_fe_invert_nct_avx2_usubv_sub_shr1:
|
||||
vpand %ymm9, %ymm0, %ymm4
|
||||
vpand %ymm10, %ymm1, %ymm5
|
||||
vpermd %ymm4, %ymm11, %ymm4
|
||||
@@ -21602,14 +21637,14 @@ L__mod_inv_avx2__usubv_sub_shr1:
|
||||
vpaddd %ymm5, %ymm0, %ymm0
|
||||
vpaddd %ymm4, %ymm1, %ymm1
|
||||
testb $0x01, %al
|
||||
jz L__mod_inv_avx2__usubv_shr1
|
||||
jz L_fe_invert_nct_avx2_usubv_shr1
|
||||
cmpq $0x01, %rax
|
||||
jne L__mod_inv_avx2__uv_start
|
||||
jne L_fe_invert_nct_avx2_uv_start
|
||||
movq %rcx, %rdx
|
||||
orq %r8, %rdx
|
||||
jne L__mod_inv_avx2__uv_start
|
||||
jne L_fe_invert_nct_avx2_uv_start
|
||||
orq %r9, %rdx
|
||||
jne L__mod_inv_avx2__uv_start
|
||||
jne L_fe_invert_nct_avx2_uv_start
|
||||
vpextrd $0x00, %xmm0, %eax
|
||||
vpextrd $0x01, %xmm0, %r8d
|
||||
vpextrd $2, %xmm0, %r10d
|
||||
@@ -21622,8 +21657,8 @@ L__mod_inv_avx2__usubv_sub_shr1:
|
||||
vextracti128 $0x01, %ymm1, %xmm1
|
||||
vpextrd $0x00, %xmm0, %r14d
|
||||
vpextrd $0x00, %xmm1, %r15d
|
||||
jmp L__mod_inv_avx2__store_done
|
||||
L__mod_inv_avx2__uv_v:
|
||||
jmp L_fe_invert_nct_avx2_store_done
|
||||
L_fe_invert_nct_avx2_uv_v:
|
||||
subq %rax, %r10
|
||||
sbbq %rcx, %r11
|
||||
vpsubd %ymm0, %ymm2, %ymm2
|
||||
@@ -21631,20 +21666,20 @@ L__mod_inv_avx2__uv_v:
|
||||
vpsubd %ymm1, %ymm3, %ymm3
|
||||
sbbq %r9, %r13
|
||||
vptest %ymm12, %ymm3
|
||||
jz L__mod_inv_avx2__vsubu_done_neg
|
||||
jz L_fe_invert_nct_avx2_vsubu_done_neg
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
vpaddd %ymm7, %ymm3, %ymm3
|
||||
L__mod_inv_avx2__vsubu_done_neg:
|
||||
L__mod_inv_avx2__vsubu_shr1:
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrq $0x01, %r13
|
||||
L_fe_invert_nct_avx2_vsubu_done_neg:
|
||||
L_fe_invert_nct_avx2_vsubu_shr1:
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrq $1, %r13
|
||||
vptest %ymm8, %ymm2
|
||||
jz L__mod_inv_avx2__vsubu_sub_shr1
|
||||
jz L_fe_invert_nct_avx2_vsubu_sub_shr1
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
vpaddd %ymm7, %ymm3, %ymm3
|
||||
L__mod_inv_avx2__vsubu_sub_shr1:
|
||||
L_fe_invert_nct_avx2_vsubu_sub_shr1:
|
||||
vpand %ymm9, %ymm2, %ymm4
|
||||
vpand %ymm10, %ymm3, %ymm5
|
||||
vpermd %ymm4, %ymm11, %ymm4
|
||||
@@ -21655,14 +21690,14 @@ L__mod_inv_avx2__vsubu_sub_shr1:
|
||||
vpaddd %ymm5, %ymm2, %ymm2
|
||||
vpaddd %ymm4, %ymm3, %ymm3
|
||||
testb $0x01, %r10b
|
||||
jz L__mod_inv_avx2__vsubu_shr1
|
||||
jz L_fe_invert_nct_avx2_vsubu_shr1
|
||||
cmpq $0x01, %r10
|
||||
jne L__mod_inv_avx2__uv_start
|
||||
jne L_fe_invert_nct_avx2_uv_start
|
||||
movq %r11, %rdx
|
||||
orq %r12, %rdx
|
||||
jne L__mod_inv_avx2__uv_start
|
||||
jne L_fe_invert_nct_avx2_uv_start
|
||||
orq %r13, %rdx
|
||||
jne L__mod_inv_avx2__uv_start
|
||||
jne L_fe_invert_nct_avx2_uv_start
|
||||
vpextrd $0x00, %xmm2, %eax
|
||||
vpextrd $0x01, %xmm2, %r8d
|
||||
vpextrd $2, %xmm2, %r10d
|
||||
@@ -21675,7 +21710,7 @@ L__mod_inv_avx2__vsubu_sub_shr1:
|
||||
vextracti128 $0x01, %ymm3, %xmm3
|
||||
vpextrd $0x00, %xmm2, %r14d
|
||||
vpextrd $0x00, %xmm3, %r15d
|
||||
L__mod_inv_avx2__store_done:
|
||||
L_fe_invert_nct_avx2_store_done:
|
||||
movl %eax, %edx
|
||||
andl $0x3ffffff, %eax
|
||||
sarl $26, %edx
|
||||
@@ -21732,7 +21767,7 @@ L__mod_inv_avx2__store_done:
|
||||
adcq %r13, %r12
|
||||
movslq %r14d, %r14
|
||||
adcq %r15, %r14
|
||||
jge L__mod_inv_avx2__3_no_add_prime
|
||||
jge L_fe_invert_nct_avx2_uv_start_no_add_prime
|
||||
movq $0xfffffffffffed, %rcx
|
||||
movq $0xfffffffffffff, %r9
|
||||
movq $0xfffffffffffff, %r11
|
||||
@@ -21760,7 +21795,7 @@ L__mod_inv_avx2__store_done:
|
||||
andq %rdx, %r12
|
||||
sarq $52, %r13
|
||||
addq %r13, %r14
|
||||
L__mod_inv_avx2__3_no_add_prime:
|
||||
L_fe_invert_nct_avx2_uv_start_no_add_prime:
|
||||
movq %r8, %rcx
|
||||
movq %r10, %r9
|
||||
movq %r12, %r11
|
||||
|
||||
@@ -672,8 +672,8 @@ _poly1305_setkey_avx2:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_poly1305_avx2_blocks_mask:
|
||||
.quad 0x3ffffff, 0x3ffffff
|
||||
.quad 0x3ffffff, 0x3ffffff
|
||||
.quad 0x0000000003ffffff,0x0000000003ffffff
|
||||
.quad 0x0000000003ffffff,0x0000000003ffffff
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -685,8 +685,8 @@ L_poly1305_avx2_blocks_mask:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_poly1305_avx2_blocks_hibit:
|
||||
.quad 0x1000000, 0x1000000
|
||||
.quad 0x1000000, 0x1000000
|
||||
.quad 0x0000000001000000,0x0000000001000000
|
||||
.quad 0x0000000001000000,0x0000000001000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl poly1305_blocks_avx2
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
; * along with this program; if not, write to the Free Software
|
||||
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
; */
|
||||
|
||||
IF @Version LT 1200
|
||||
; AVX2 instructions not recognized by old versions of MASM
|
||||
IFNDEF NO_AVX2_SUPPORT
|
||||
@@ -41,7 +42,7 @@ _WIN64 = 1
|
||||
ENDIF
|
||||
|
||||
IFDEF HAVE_INTEL_AVX1
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_setkey_avx PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -93,8 +94,8 @@ poly1305_setkey_avx PROC
|
||||
pop r12
|
||||
ret
|
||||
poly1305_setkey_avx ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_block_avx PROC
|
||||
push r15
|
||||
push rbx
|
||||
@@ -166,8 +167,8 @@ poly1305_block_avx PROC
|
||||
pop r15
|
||||
ret
|
||||
poly1305_block_avx ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_blocks_avx PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -249,8 +250,8 @@ L_poly1305_avx_blocks_start:
|
||||
pop rdi
|
||||
ret
|
||||
poly1305_blocks_avx ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_final_avx PROC
|
||||
push rdi
|
||||
push rbx
|
||||
@@ -318,10 +319,10 @@ L_poly1305_avx_final_no_more:
|
||||
pop rdi
|
||||
ret
|
||||
poly1305_final_avx ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
IFDEF HAVE_INTEL_AVX2
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_calc_powers_avx2 PROC
|
||||
push r12
|
||||
push r13
|
||||
@@ -581,8 +582,8 @@ poly1305_calc_powers_avx2 PROC
|
||||
pop r12
|
||||
ret
|
||||
poly1305_calc_powers_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_setkey_avx2 PROC
|
||||
call poly1305_setkey_avx
|
||||
vpxor ymm0, ymm0, ymm0
|
||||
@@ -595,20 +596,22 @@ poly1305_setkey_avx2 PROC
|
||||
mov WORD PTR [rcx+616], 0
|
||||
ret
|
||||
poly1305_setkey_avx2 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_poly1305_avx2_blocks_mask QWORD 67108863, 67108863,
|
||||
67108863, 67108863
|
||||
L_poly1305_avx2_blocks_mask QWORD \
|
||||
0000000003ffffffh, 0000000003ffffffh,
|
||||
0000000003ffffffh, 0000000003ffffffh
|
||||
ptr_L_poly1305_avx2_blocks_mask QWORD L_poly1305_avx2_blocks_mask
|
||||
_DATA ENDS
|
||||
_DATA SEGMENT
|
||||
ALIGN 16
|
||||
L_poly1305_avx2_blocks_hibit QWORD 16777216, 16777216,
|
||||
16777216, 16777216
|
||||
L_poly1305_avx2_blocks_hibit QWORD \
|
||||
0000000001000000h, 0000000001000000h,
|
||||
0000000001000000h, 0000000001000000h
|
||||
ptr_L_poly1305_avx2_blocks_hibit QWORD L_poly1305_avx2_blocks_hibit
|
||||
_DATA ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_blocks_avx2 PROC
|
||||
push r12
|
||||
push rdi
|
||||
@@ -990,8 +993,8 @@ L_poly1305_avx2_blocks_complete:
|
||||
pop r12
|
||||
ret
|
||||
poly1305_blocks_avx2 ENDP
|
||||
_text ENDS
|
||||
_text SEGMENT READONLY PARA
|
||||
_TEXT ENDS
|
||||
_TEXT SEGMENT READONLY PARA
|
||||
poly1305_final_avx2 PROC
|
||||
push rdi
|
||||
push rsi
|
||||
@@ -1055,6 +1058,6 @@ L_poly1305_avx2_final_cmp_copy:
|
||||
pop rdi
|
||||
ret
|
||||
poly1305_final_avx2 ENDP
|
||||
_text ENDS
|
||||
_TEXT ENDS
|
||||
ENDIF
|
||||
END
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -51,19 +51,22 @@ wc_chacha_setiv:
|
||||
pop {r4, pc}
|
||||
.size wc_chacha_setiv,.-wc_chacha_setiv
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_chacha_arm32_constants, %object
|
||||
.size L_chacha_arm32_constants, 32
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha_arm32_constants:
|
||||
.word 0x61707865
|
||||
.word 0x3120646e
|
||||
.word 0x79622d36
|
||||
.word 0x6b206574
|
||||
.word 0x61707865
|
||||
.word 0x3320646e
|
||||
.word 0x79622d32
|
||||
.word 0x6b206574
|
||||
.long 0x61707865,0x3120646e,0x79622d36,0x6b206574
|
||||
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
|
||||
.text
|
||||
.align 4
|
||||
.globl wc_chacha_setkey
|
||||
@@ -969,8 +972,8 @@ L_chacha_crypt_bytes_arm32_round_start_128:
|
||||
vext.8 q6, q6, q6, #8
|
||||
bne L_chacha_crypt_bytes_arm32_round_start_128
|
||||
# Add back state, XOR in message and store (load next block)
|
||||
vld1.8 {q8, q9}, [r2]!
|
||||
vld1.8 {q10, q11}, [r2]!
|
||||
vld1.8 {q8-q9}, [r2]!
|
||||
vld1.8 {q10-q11}, [r2]!
|
||||
vadd.i32 q0, q0, q12
|
||||
vadd.i32 q1, q1, q13
|
||||
vadd.i32 q2, q2, q14
|
||||
@@ -979,10 +982,10 @@ L_chacha_crypt_bytes_arm32_round_start_128:
|
||||
veor q1, q1, q9
|
||||
veor q2, q2, q10
|
||||
veor q3, q3, q11
|
||||
vld1.8 {q8, q9}, [r2]!
|
||||
vld1.8 {q10, q11}, [r2]!
|
||||
vst1.8 {q0, q1}, [r1]!
|
||||
vst1.8 {q2, q3}, [r1]!
|
||||
vld1.8 {q8-q9}, [r2]!
|
||||
vld1.8 {q10-q11}, [r2]!
|
||||
vst1.8 {q0-q1}, [r1]!
|
||||
vst1.8 {q2-q3}, [r1]!
|
||||
veor q0, q0, q0
|
||||
mov r12, #1
|
||||
vmov.i32 d0[0], r12
|
||||
@@ -995,8 +998,8 @@ L_chacha_crypt_bytes_arm32_round_start_128:
|
||||
veor q5, q5, q9
|
||||
veor q6, q6, q10
|
||||
veor q7, q7, q11
|
||||
vst1.8 {q4, q5}, [r1]!
|
||||
vst1.8 {q6, q7}, [r1]!
|
||||
vst1.8 {q4-q5}, [r1]!
|
||||
vst1.8 {q6-q7}, [r1]!
|
||||
vadd.i32 q15, q15, q0
|
||||
sub r3, r3, #0x80
|
||||
# Done 128-byte block
|
||||
@@ -1075,14 +1078,14 @@ L_chacha_crypt_bytes_arm32_round_64:
|
||||
vadd.i32 q15, q15, q9
|
||||
blt L_chacha_crypt_bytes_arm32_lt_64
|
||||
# Encipher 64 bytes
|
||||
vld1.8 {q4, q5}, [r2]!
|
||||
vld1.8 {q6, q7}, [r2]!
|
||||
vld1.8 {q4-q5}, [r2]!
|
||||
vld1.8 {q6-q7}, [r2]!
|
||||
veor q4, q4, q0
|
||||
veor q5, q5, q1
|
||||
veor q6, q6, q2
|
||||
veor q7, q7, q3
|
||||
vst1.8 {q4, q5}, [r1]!
|
||||
vst1.8 {q6, q7}, [r1]!
|
||||
vst1.8 {q4-q5}, [r1]!
|
||||
vst1.8 {q6-q7}, [r1]!
|
||||
# Check for more bytes to be enciphered
|
||||
subs r3, r3, #0x40
|
||||
bne L_chacha_crypt_bytes_arm32_loop_64
|
||||
@@ -1097,10 +1100,10 @@ L_chacha_crypt_bytes_arm32_lt_64:
|
||||
# Encipher 32 bytes
|
||||
cmp r3, #32
|
||||
blt L_chacha_crypt_bytes_arm32_lt_32
|
||||
vld1.8 {q4, q5}, [r2]!
|
||||
vld1.8 {q4-q5}, [r2]!
|
||||
veor q4, q4, q0
|
||||
veor q5, q5, q1
|
||||
vst1.8 {q4, q5}, [r1]!
|
||||
vst1.8 {q4-q5}, [r1]!
|
||||
subs r3, r3, #32
|
||||
vmov q0, q2
|
||||
vmov q1, q3
|
||||
@@ -1153,19 +1156,22 @@ L_chacha_crypt_bytes_arm32_done_all:
|
||||
vpop {d8-d15}
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
.size wc_chacha_crypt_bytes,.-wc_chacha_crypt_bytes
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_chacha_setkey_arm32_constant, %object
|
||||
.size L_chacha_setkey_arm32_constant, 32
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha_setkey_arm32_constant:
|
||||
.word 0x61707865
|
||||
.word 0x3120646e
|
||||
.word 0x79622d36
|
||||
.word 0x6b206574
|
||||
.word 0x61707865
|
||||
.word 0x3320646e
|
||||
.word 0x79622d32
|
||||
.word 0x6b206574
|
||||
.long 0x61707865,0x3120646e,0x79622d36,0x6b206574
|
||||
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
|
||||
.text
|
||||
.align 4
|
||||
.globl wc_chacha_setkey
|
||||
@@ -1180,7 +1186,7 @@ wc_chacha_setkey:
|
||||
#ifdef BIG_ENDIAN_ORDER
|
||||
vrev32.16 q1, q1
|
||||
#endif /* BIG_ENDIAN_ORDER */
|
||||
vstm r0!, {q0, q1}
|
||||
vstm r0!, {q0-q1}
|
||||
beq L_chacha_setkey_arm32_done
|
||||
vld1.8 {q1}, [r1]
|
||||
#ifdef BIG_ENDIAN_ORDER
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -58,12 +56,12 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setiv(word32* x_p, const byte* iv_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_setiv(word32* x, const byte* iv,
|
||||
word32 counter)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register word32* x asm ("r0") = (word32*)x_p;
|
||||
register const byte* iv asm ("r1") = (const byte*)iv_p;
|
||||
register word32 counter asm ("r2") = (word32)counter_p;
|
||||
register word32* x __asm__ ("r0") = (word32*)x_p;
|
||||
register const byte* iv __asm__ ("r1") = (const byte*)iv_p;
|
||||
register word32 counter __asm__ ("r2") = (word32)counter_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -90,7 +88,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setiv(word32* x, const byte* iv,
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word32 L_chacha_arm32_constants[] = {
|
||||
XALIGNED(8) static const word32 L_chacha_arm32_constants[] = {
|
||||
0x61707865, 0x3120646e, 0x79622d36, 0x6b206574,
|
||||
0x61707865, 0x3320646e, 0x79622d32, 0x6b206574,
|
||||
};
|
||||
@@ -101,13 +99,13 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x_p, const byte* key_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x, const byte* key,
|
||||
word32 keySz)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register word32* x asm ("r0") = (word32*)x_p;
|
||||
register const byte* key asm ("r1") = (const byte*)key_p;
|
||||
register word32 keySz asm ("r2") = (word32)keySz_p;
|
||||
register word32* L_chacha_arm32_constants_c asm ("r3") =
|
||||
register word32* x __asm__ ("r0") = (word32*)x_p;
|
||||
register const byte* key __asm__ ("r1") = (const byte*)key_p;
|
||||
register word32 keySz __asm__ ("r2") = (word32)keySz_p;
|
||||
register word32* L_chacha_arm32_constants_c __asm__ ("r3") =
|
||||
(word32*)&L_chacha_arm32_constants;
|
||||
#else
|
||||
register word32* L_chacha_arm32_constants_c =
|
||||
@@ -142,7 +140,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x, const byte* key,
|
||||
"ldr r12, [%[key], #8]\n\t"
|
||||
"ldr lr, [%[key], #12]\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_setkey_same_key_bytes_%=: \n\t"
|
||||
"L_chacha_arm32_setkey_same_key_bytes_%=:\n\t"
|
||||
"stm %[x], {r4, r5, r12, lr}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [x] "+r" (x), [key] "+r" (key), [keySz] "+r" (keySz),
|
||||
@@ -163,13 +161,13 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx_p, byte* c_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
const byte* m, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ChaCha* ctx asm ("r0") = (ChaCha*)ctx_p;
|
||||
register byte* c asm ("r1") = (byte*)c_p;
|
||||
register const byte* m asm ("r2") = (const byte*)m_p;
|
||||
register word32 len asm ("r3") = (word32)len_p;
|
||||
register ChaCha* ctx __asm__ ("r0") = (ChaCha*)ctx_p;
|
||||
register byte* c __asm__ ("r1") = (byte*)c_p;
|
||||
register const byte* m __asm__ ("r2") = (const byte*)m_p;
|
||||
register word32 len __asm__ ("r3") = (word32)len_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -188,7 +186,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"strd %[m], %[len], [sp, #40]\n\t"
|
||||
#endif
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_block_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_block_%=:\n\t"
|
||||
/* Put x[12]..x[15] onto stack. */
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"ldr r4, [lr, #48]\n\t"
|
||||
@@ -220,7 +218,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"mov lr, #10\n\t"
|
||||
"str lr, [sp, #48]\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_loop_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_loop_%=:\n\t"
|
||||
/* 0, 4, 8, 12 */
|
||||
/* 1, 5, 9, 13 */
|
||||
"ldr lr, [sp, #20]\n\t"
|
||||
@@ -449,7 +447,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"bne L_chacha_arm32_crypt_block_%=\n\t"
|
||||
"b L_chacha_arm32_crypt_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_lt_block_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_lt_block_%=:\n\t"
|
||||
/* Store in over field of ChaCha. */
|
||||
"ldr lr, [sp, #32]\n\t"
|
||||
"add r12, lr, #0x44\n\t"
|
||||
@@ -467,7 +465,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"str r12, [lr, #64]\n\t"
|
||||
"add lr, lr, #0x44\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_16byte_loop_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_16byte_loop_%=:\n\t"
|
||||
"cmp %[len], #16\n\t"
|
||||
"blt L_chacha_arm32_crypt_word_loop_%=\n\t"
|
||||
/* 16 bytes of state XORed into message. */
|
||||
@@ -490,7 +488,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"add %[c], %[c], #16\n\t"
|
||||
"b L_chacha_arm32_crypt_16byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_word_loop_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_word_loop_%=:\n\t"
|
||||
"cmp %[len], #4\n\t"
|
||||
"blt L_chacha_arm32_crypt_byte_start_%=\n\t"
|
||||
/* 4 bytes of state XORed into message. */
|
||||
@@ -505,10 +503,10 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"add %[c], %[c], #4\n\t"
|
||||
"b L_chacha_arm32_crypt_word_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_byte_start_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_byte_start_%=:\n\t"
|
||||
"ldr r4, [lr]\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_byte_loop_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_byte_loop_%=:\n\t"
|
||||
"ldrb r8, [%[m]]\n\t"
|
||||
"eor r8, r8, r4\n\t"
|
||||
"subs %[len], %[len], #1\n\t"
|
||||
@@ -519,7 +517,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"add %[c], %[c], #1\n\t"
|
||||
"b L_chacha_arm32_crypt_byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_crypt_done_%=: \n\t"
|
||||
"L_chacha_arm32_crypt_done_%=:\n\t"
|
||||
"add sp, sp, #52\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [c] "+r" (c), [m] "+r" (m), [len] "+r" (len)
|
||||
@@ -539,18 +537,18 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over_p, byte* output_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
const byte* input, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* over asm ("r0") = (byte*)over_p;
|
||||
register byte* output asm ("r1") = (byte*)output_p;
|
||||
register const byte* input asm ("r2") = (const byte*)input_p;
|
||||
register word32 len asm ("r3") = (word32)len_p;
|
||||
register byte* over __asm__ ("r0") = (byte*)over_p;
|
||||
register byte* output __asm__ ("r1") = (byte*)output_p;
|
||||
register const byte* input __asm__ ("r2") = (const byte*)input_p;
|
||||
register word32 len __asm__ ("r3") = (word32)len_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"\n"
|
||||
"L_chacha_arm32_over_16byte_loop_%=: \n\t"
|
||||
"L_chacha_arm32_over_16byte_loop_%=:\n\t"
|
||||
"cmp %[len], #16\n\t"
|
||||
"blt L_chacha_arm32_over_word_loop_%=\n\t"
|
||||
/* 16 bytes of state XORed into message. */
|
||||
@@ -577,7 +575,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
"add %[output], %[output], #16\n\t"
|
||||
"b L_chacha_arm32_over_16byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_over_word_loop_%=: \n\t"
|
||||
"L_chacha_arm32_over_word_loop_%=:\n\t"
|
||||
"cmp %[len], #4\n\t"
|
||||
"blt L_chacha_arm32_over_byte_loop_%=\n\t"
|
||||
/* 4 bytes of state XORed into message. */
|
||||
@@ -592,7 +590,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
"add %[output], %[output], #4\n\t"
|
||||
"b L_chacha_arm32_over_word_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_over_byte_loop_%=: \n\t"
|
||||
"L_chacha_arm32_over_byte_loop_%=:\n\t"
|
||||
/* 4 bytes of state XORed into message. */
|
||||
"ldrb r12, [%[over]]\n\t"
|
||||
"ldrb r6, [%[input]]\n\t"
|
||||
@@ -605,7 +603,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
"add %[output], %[output], #1\n\t"
|
||||
"b L_chacha_arm32_over_byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_arm32_over_done_%=: \n\t"
|
||||
"L_chacha_arm32_over_done_%=:\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [over] "+r" (over), [output] "+r" (output), [input] "+r" (input),
|
||||
[len] "+r" (len)
|
||||
@@ -627,13 +625,13 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx_p, byte* c_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
const byte* m, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ChaCha* ctx asm ("r0") = (ChaCha*)ctx_p;
|
||||
register byte* c asm ("r1") = (byte*)c_p;
|
||||
register const byte* m asm ("r2") = (const byte*)m_p;
|
||||
register word32 len asm ("r3") = (word32)len_p;
|
||||
register ChaCha* ctx __asm__ ("r0") = (ChaCha*)ctx_p;
|
||||
register byte* c __asm__ ("r1") = (byte*)c_p;
|
||||
register const byte* m __asm__ ("r2") = (const byte*)m_p;
|
||||
register word32 len __asm__ ("r3") = (word32)len_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -644,7 +642,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"blt L_chacha_crypt_bytes_arm32_lt_256_%=\n\t"
|
||||
"str %[ctx], [sp, #28]\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_start_256_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_start_256_%=:\n\t"
|
||||
"str %[m], [sp, #32]\n\t"
|
||||
"str %[c], [sp, #36]\n\t"
|
||||
"str %[len], [sp, #40]\n\t"
|
||||
@@ -676,7 +674,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov lr, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_round_start_256_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_round_start_256_%=:\n\t"
|
||||
"subs lr, lr, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -986,7 +984,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"cmp %[len], #0x100\n\t"
|
||||
"bge L_chacha_crypt_bytes_arm32_start_256_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_256_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_256_%=:\n\t"
|
||||
"cmp %[len], #0x80\n\t"
|
||||
"blt L_chacha_crypt_bytes_arm32_lt_128_%=\n\t"
|
||||
/* Move state into vector registers */
|
||||
@@ -1006,7 +1004,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov lr, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_round_start_128_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_round_start_128_%=:\n\t"
|
||||
"subs lr, lr, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -1124,7 +1122,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"sub %[len], %[len], #0x80\n\t"
|
||||
/* Done 128-byte block */
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_128_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_128_%=:\n\t"
|
||||
"cmp %[len], #0\n\t"
|
||||
"beq L_chacha_crypt_bytes_arm32_done_all_%=\n\t"
|
||||
"mov r12, #1\n\t"
|
||||
@@ -1133,7 +1131,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"vmov d18[0], r12\n\t"
|
||||
"mov r12, #0x40\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_loop_64_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_loop_64_%=:\n\t"
|
||||
/* Move state into vector registers */
|
||||
"vmov q0, q12\n\t"
|
||||
"vmov q1, q13\n\t"
|
||||
@@ -1142,7 +1140,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov lr, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_round_64_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_round_64_%=:\n\t"
|
||||
"subs lr, lr, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -1214,7 +1212,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"bne L_chacha_crypt_bytes_arm32_loop_64_%=\n\t"
|
||||
"b L_chacha_crypt_bytes_arm32_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_64_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_64_%=:\n\t"
|
||||
/* Calculate bytes left in block not used */
|
||||
"sub r12, r12, %[len]\n\t"
|
||||
/* Store encipher block in over for further operations and left */
|
||||
@@ -1233,7 +1231,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"vmov q1, q3\n\t"
|
||||
"beq L_chacha_crypt_bytes_arm32_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_32_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_32_%=:\n\t"
|
||||
"cmp %[len], #16\n\t"
|
||||
"blt L_chacha_crypt_bytes_arm32_lt_16_%=\n\t"
|
||||
/* Encipher 16 bytes */
|
||||
@@ -1244,7 +1242,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"vmov q0, q1\n\t"
|
||||
"beq L_chacha_crypt_bytes_arm32_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_16_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_16_%=:\n\t"
|
||||
"cmp %[len], #8\n\t"
|
||||
"blt L_chacha_crypt_bytes_arm32_lt_8_%=\n\t"
|
||||
/* Encipher 8 bytes */
|
||||
@@ -1255,7 +1253,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"vmov d0, d1\n\t"
|
||||
"beq L_chacha_crypt_bytes_arm32_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_8_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_8_%=:\n\t"
|
||||
"cmp %[len], #4\n\t"
|
||||
"blt L_chacha_crypt_bytes_arm32_lt_4_%=\n\t"
|
||||
/* Encipher 8 bytes */
|
||||
@@ -1267,10 +1265,10 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"vshr.u64 d0, d0, #32\n\t"
|
||||
"beq L_chacha_crypt_bytes_arm32_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_lt_4_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_lt_4_%=:\n\t"
|
||||
"vmov r12, s0\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32loop_lt_4_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32loop_lt_4_%=:\n\t"
|
||||
/* Encipher 1 byte at a time */
|
||||
"ldrb r4, [%[m]], #1\n\t"
|
||||
"eor r4, r4, r12\n\t"
|
||||
@@ -1279,9 +1277,9 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"lsr r12, r12, #8\n\t"
|
||||
"bgt L_chacha_crypt_bytes_arm32loop_lt_4_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_done_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_done_%=:\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm32_done_all_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm32_done_all_%=:\n\t"
|
||||
"vstm.32 %[ctx], {q12-q15}\n\t"
|
||||
"add sp, sp, #44\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
@@ -1297,7 +1295,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
);
|
||||
}
|
||||
|
||||
static const word32 L_chacha_setkey_arm32_constant[] = {
|
||||
XALIGNED(8) static const word32 L_chacha_setkey_arm32_constant[] = {
|
||||
0x61707865, 0x3120646e, 0x79622d36, 0x6b206574,
|
||||
0x61707865, 0x3320646e, 0x79622d32, 0x6b206574,
|
||||
};
|
||||
@@ -1308,13 +1306,13 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x_p, const byte* key_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x, const byte* key,
|
||||
word32 keySz)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register word32* x asm ("r0") = (word32*)x_p;
|
||||
register const byte* key asm ("r1") = (const byte*)key_p;
|
||||
register word32 keySz asm ("r2") = (word32)keySz_p;
|
||||
register word32* L_chacha_setkey_arm32_constant_c asm ("r3") =
|
||||
register word32* x __asm__ ("r0") = (word32*)x_p;
|
||||
register const byte* key __asm__ ("r1") = (const byte*)key_p;
|
||||
register word32 keySz __asm__ ("r2") = (word32)keySz_p;
|
||||
register word32* L_chacha_setkey_arm32_constant_c __asm__ ("r3") =
|
||||
(word32*)&L_chacha_setkey_arm32_constant;
|
||||
#else
|
||||
register word32* L_chacha_setkey_arm32_constant_c =
|
||||
@@ -1338,7 +1336,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x, const byte* key,
|
||||
"vrev32.16 q1, q1\n\t"
|
||||
#endif /* BIG_ENDIAN_ORDER */
|
||||
"\n"
|
||||
"L_chacha_setkey_arm32_done_%=: \n\t"
|
||||
"L_chacha_setkey_arm32_done_%=:\n\t"
|
||||
"vstm %[x], {q1}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [x] "+r" (x), [key] "+r" (key), [keySz] "+r" (keySz),
|
||||
@@ -1359,14 +1357,14 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over_p, byte* output_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
const byte* input, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* over asm ("r0") = (byte*)over_p;
|
||||
register byte* output asm ("r1") = (byte*)output_p;
|
||||
register const byte* input asm ("r2") = (const byte*)input_p;
|
||||
register word32 len asm ("r3") = (word32)len_p;
|
||||
register word32* L_chacha_setkey_arm32_constant_c asm ("r12") =
|
||||
register byte* over __asm__ ("r0") = (byte*)over_p;
|
||||
register byte* output __asm__ ("r1") = (byte*)output_p;
|
||||
register const byte* input __asm__ ("r2") = (const byte*)input_p;
|
||||
register word32 len __asm__ ("r3") = (word32)len_p;
|
||||
register word32* L_chacha_setkey_arm32_constant_c __asm__ ("r12") =
|
||||
(word32*)&L_chacha_setkey_arm32_constant;
|
||||
#else
|
||||
register word32* L_chacha_setkey_arm32_constant_c =
|
||||
@@ -1376,7 +1374,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
__asm__ __volatile__ (
|
||||
"push {%[L_chacha_setkey_arm32_constant]}\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm32_16byte_loop_%=: \n\t"
|
||||
"L_chacha_use_over_arm32_16byte_loop_%=:\n\t"
|
||||
"cmp %[len], #16\n\t"
|
||||
"blt L_chacha_use_over_arm32_word_loop_%=\n\t"
|
||||
/* 16 bytes of state XORed into message. */
|
||||
@@ -1388,7 +1386,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
"beq L_chacha_use_over_arm32_done_%=\n\t"
|
||||
"b L_chacha_use_over_arm32_16byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm32_word_loop_%=: \n\t"
|
||||
"L_chacha_use_over_arm32_word_loop_%=:\n\t"
|
||||
"cmp %[len], #4\n\t"
|
||||
"blt L_chacha_use_over_arm32_byte_loop_%=\n\t"
|
||||
/* 4 bytes of state XORed into message. */
|
||||
@@ -1400,7 +1398,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
"beq L_chacha_use_over_arm32_done_%=\n\t"
|
||||
"b L_chacha_use_over_arm32_word_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm32_byte_loop_%=: \n\t"
|
||||
"L_chacha_use_over_arm32_byte_loop_%=:\n\t"
|
||||
/* 1 bytes of state XORed into message. */
|
||||
"ldrb r12, [%[over]], #1\n\t"
|
||||
"ldrb lr, [%[input]], #1\n\t"
|
||||
@@ -1410,7 +1408,7 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
"beq L_chacha_use_over_arm32_done_%=\n\t"
|
||||
"b L_chacha_use_over_arm32_byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm32_done_%=: \n\t"
|
||||
"L_chacha_use_over_arm32_done_%=:\n\t"
|
||||
"pop {%[L_chacha_setkey_arm32_constant]}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [over] "+r" (over), [output] "+r" (output), [input] "+r" (input),
|
||||
|
||||
@@ -2737,12 +2737,12 @@ fe_mul_op:
|
||||
lsl r0, r0, #1
|
||||
orr r0, r0, r10, lsr #31
|
||||
mul r11, r0, lr
|
||||
pop {r0, r1, r2}
|
||||
pop {r0-r2}
|
||||
mov lr, #38
|
||||
umaal r0, r11, r12, lr
|
||||
umaal r1, r11, r4, lr
|
||||
umaal r2, r11, r5, lr
|
||||
pop {r3, r4, r5}
|
||||
pop {r3-r5}
|
||||
umaal r3, r11, r6, lr
|
||||
umaal r4, r11, r7, lr
|
||||
umaal r5, r11, r8, lr
|
||||
@@ -3147,18 +3147,18 @@ fe_sq_op:
|
||||
lsl r0, r0, #1
|
||||
orr r0, r0, r7, lsr #31
|
||||
mul lr, r0, r6
|
||||
pop {r0, r1}
|
||||
pop {r0-r1}
|
||||
mov r6, #38
|
||||
umaal r0, lr, r12, r6
|
||||
umaal r1, lr, r11, r6
|
||||
mov r12, r3
|
||||
mov r11, r4
|
||||
pop {r2, r3, r4}
|
||||
pop {r2-r4}
|
||||
umaal r2, lr, r10, r6
|
||||
umaal r3, lr, r12, r6
|
||||
umaal r4, lr, r11, r6
|
||||
mov r12, r6
|
||||
pop {r5, r6}
|
||||
pop {r5-r6}
|
||||
umaal r5, lr, r8, r12
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
bic r7, r7, #0x80000000
|
||||
@@ -4563,18 +4563,18 @@ fe_sq2:
|
||||
lsl r0, r0, #1
|
||||
orr r0, r0, r7, lsr #31
|
||||
mul lr, r0, r6
|
||||
pop {r0, r1}
|
||||
pop {r0-r1}
|
||||
mov r6, #38
|
||||
umaal r0, lr, r12, r6
|
||||
umaal r1, lr, r11, r6
|
||||
mov r12, r3
|
||||
mov r11, r4
|
||||
pop {r2, r3, r4}
|
||||
pop {r2-r4}
|
||||
umaal r2, lr, r10, r6
|
||||
umaal r3, lr, r12, r6
|
||||
umaal r4, lr, r11, r6
|
||||
mov r12, r6
|
||||
pop {r5, r6}
|
||||
pop {r5-r6}
|
||||
umaal r5, lr, r8, r12
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
bic r7, r7, #0x80000000
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -64,7 +62,7 @@
|
||||
WC_OMIT_FRAME_POINTER void fe_init()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_init()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -86,7 +84,7 @@ void fe_add_sub_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_add_sub_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_add_sub_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -305,7 +303,7 @@ void fe_sub_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_sub_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sub_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -357,12 +355,12 @@ WC_OMIT_FRAME_POINTER void fe_sub_op()
|
||||
WC_OMIT_FRAME_POINTER void fe_sub(fe r_p, const fe a_p, const fe b_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sub(fe r, const fe a, const fe b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register const sword32* b asm ("r2") = (const sword32*)b_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
register const sword32* b __asm__ ("r2") = (const sword32*)b_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -384,7 +382,7 @@ void fe_add_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_add_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_add_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -437,12 +435,12 @@ WC_OMIT_FRAME_POINTER void fe_add_op()
|
||||
WC_OMIT_FRAME_POINTER void fe_add(fe r_p, const fe a_p, const fe b_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_add(fe r, const fe a, const fe b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register const sword32* b asm ("r2") = (const sword32*)b_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
register const sword32* b __asm__ ("r2") = (const sword32*)b_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -464,11 +462,12 @@ WC_OMIT_FRAME_POINTER void fe_add(fe r, const fe a, const fe b)
|
||||
WC_OMIT_FRAME_POINTER void fe_frombytes(fe out_p, const unsigned char* in_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_frombytes(fe out, const unsigned char* in)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* out asm ("r0") = (sword32*)out_p;
|
||||
register const unsigned char* in asm ("r1") = (const unsigned char*)in_p;
|
||||
register sword32* out __asm__ ("r0") = (sword32*)out_p;
|
||||
register const unsigned char* in __asm__ ("r1") =
|
||||
(const unsigned char*)in_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -508,11 +507,11 @@ WC_OMIT_FRAME_POINTER void fe_frombytes(fe out, const unsigned char* in)
|
||||
WC_OMIT_FRAME_POINTER void fe_tobytes(unsigned char* out_p, const fe n_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_tobytes(unsigned char* out, const fe n)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register unsigned char* out asm ("r0") = (unsigned char*)out_p;
|
||||
register const sword32* n asm ("r1") = (const sword32*)n_p;
|
||||
register unsigned char* out __asm__ ("r0") = (unsigned char*)out_p;
|
||||
register const sword32* n __asm__ ("r1") = (const sword32*)n_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -563,10 +562,10 @@ WC_OMIT_FRAME_POINTER void fe_tobytes(unsigned char* out, const fe n)
|
||||
WC_OMIT_FRAME_POINTER void fe_1(fe n_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_1(fe n)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* n asm ("r0") = (sword32*)n_p;
|
||||
register sword32* n __asm__ ("r0") = (sword32*)n_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -595,10 +594,10 @@ WC_OMIT_FRAME_POINTER void fe_1(fe n)
|
||||
WC_OMIT_FRAME_POINTER void fe_0(fe n_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_0(fe n)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* n asm ("r0") = (sword32*)n_p;
|
||||
register sword32* n __asm__ ("r0") = (sword32*)n_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -627,11 +626,11 @@ WC_OMIT_FRAME_POINTER void fe_0(fe n)
|
||||
WC_OMIT_FRAME_POINTER void fe_copy(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_copy(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -697,11 +696,11 @@ WC_OMIT_FRAME_POINTER void fe_copy(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER void fe_neg(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_neg(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -735,10 +734,10 @@ WC_OMIT_FRAME_POINTER void fe_neg(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER int fe_isnonzero(const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER int fe_isnonzero(const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register const sword32* a asm ("r0") = (const sword32*)a_p;
|
||||
register const sword32* a __asm__ ("r0") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -790,10 +789,10 @@ WC_OMIT_FRAME_POINTER int fe_isnonzero(const fe a)
|
||||
WC_OMIT_FRAME_POINTER int fe_isnegative(const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER int fe_isnegative(const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register const sword32* a asm ("r0") = (const sword32*)a_p;
|
||||
register const sword32* a __asm__ ("r0") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -831,12 +830,12 @@ WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r_p, const fe* base_p,
|
||||
signed char b_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r, const fe* base, signed char b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register fe* r asm ("r0") = (fe*)r_p;
|
||||
register const fe* base asm ("r1") = (const fe*)base_p;
|
||||
register signed char b asm ("r2") = (signed char)b_p;
|
||||
register fe* r __asm__ ("r0") = (fe*)r_p;
|
||||
register const fe* base __asm__ ("r1") = (const fe*)base_p;
|
||||
register signed char b __asm__ ("r2") = (signed char)b_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -2377,12 +2376,12 @@ WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r_p, const fe* base_p,
|
||||
signed char b_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r, const fe* base, signed char b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register fe* r asm ("r0") = (fe*)r_p;
|
||||
register const fe* base asm ("r1") = (const fe*)base_p;
|
||||
register signed char b asm ("r2") = (signed char)b_p;
|
||||
register fe* r __asm__ ("r0") = (fe*)r_p;
|
||||
register const fe* base __asm__ ("r1") = (const fe*)base_p;
|
||||
register signed char b __asm__ ("r2") = (signed char)b_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -2514,7 +2513,7 @@ void fe_mul_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -2909,7 +2908,7 @@ void fe_mul_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -3062,12 +3061,12 @@ WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
WC_OMIT_FRAME_POINTER void fe_mul(fe r_p, const fe a_p, const fe b_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_mul(fe r, const fe a, const fe b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register const sword32* b asm ("r2") = (const sword32*)b_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
register const sword32* b __asm__ ("r2") = (const sword32*)b_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3090,7 +3089,7 @@ void fe_sq_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -3378,7 +3377,7 @@ void fe_sq_op(void);
|
||||
WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -3517,11 +3516,11 @@ WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
WC_OMIT_FRAME_POINTER void fe_sq(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sq(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3544,11 +3543,11 @@ WC_OMIT_FRAME_POINTER void fe_sq(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER void fe_mul121666(fe r_p, fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_mul121666(fe r, fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register sword32* a asm ("r1") = (sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register sword32* a __asm__ ("r1") = (sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3628,11 +3627,11 @@ WC_OMIT_FRAME_POINTER void fe_mul121666(fe r, fe a)
|
||||
WC_OMIT_FRAME_POINTER void fe_mul121666(fe r_p, fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_mul121666(fe r, fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register sword32* a asm ("r1") = (sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register sword32* a __asm__ ("r1") = (sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3701,12 +3700,12 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r_p, const byte* n_p,
|
||||
const byte* a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* r asm ("r0") = (byte*)r_p;
|
||||
register const byte* n asm ("r1") = (const byte*)n_p;
|
||||
register const byte* a asm ("r2") = (const byte*)a_p;
|
||||
register byte* r __asm__ ("r0") = (byte*)r_p;
|
||||
register const byte* n __asm__ ("r1") = (const byte*)n_p;
|
||||
register const byte* a __asm__ ("r2") = (const byte*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3739,9 +3738,9 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"mov %[a], #28\n\t"
|
||||
"str %[a], [sp, #176]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_words_%=: \n\t"
|
||||
"L_curve25519_words_%=:\n\t"
|
||||
"\n"
|
||||
"L_curve25519_bits_%=: \n\t"
|
||||
"L_curve25519_bits_%=:\n\t"
|
||||
"ldr %[n], [sp, #164]\n\t"
|
||||
"ldr %[a], [%[n], r2]\n\t"
|
||||
"ldr %[n], [sp, #180]\n\t"
|
||||
@@ -3957,7 +3956,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #4\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_1_%=: \n\t"
|
||||
"L_curve25519_inv_1_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -3974,7 +3973,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #9\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_2_%=: \n\t"
|
||||
"L_curve25519_inv_2_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -3991,7 +3990,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #19\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_3_%=: \n\t"
|
||||
"L_curve25519_inv_3_%=:\n\t"
|
||||
"add r1, sp, #0x80\n\t"
|
||||
"add r0, sp, #0x80\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4005,7 +4004,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #10\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_4_%=: \n\t"
|
||||
"L_curve25519_inv_4_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4022,7 +4021,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #49\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_5_%=: \n\t"
|
||||
"L_curve25519_inv_5_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4039,7 +4038,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #0x63\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_6_%=: \n\t"
|
||||
"L_curve25519_inv_6_%=:\n\t"
|
||||
"add r1, sp, #0x80\n\t"
|
||||
"add r0, sp, #0x80\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4053,7 +4052,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #50\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_7_%=: \n\t"
|
||||
"L_curve25519_inv_7_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4067,7 +4066,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #5\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_8_%=: \n\t"
|
||||
"L_curve25519_inv_8_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4104,12 +4103,12 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r_p, const byte* n_p,
|
||||
const byte* a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* r asm ("r0") = (byte*)r_p;
|
||||
register const byte* n asm ("r1") = (const byte*)n_p;
|
||||
register const byte* a asm ("r2") = (const byte*)a_p;
|
||||
register byte* r __asm__ ("r0") = (byte*)r_p;
|
||||
register const byte* n __asm__ ("r1") = (const byte*)n_p;
|
||||
register const byte* a __asm__ ("r2") = (const byte*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -4144,7 +4143,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"stm r3, {r4, r5, r6, r7, r8, r9, r10, r11}\n\t"
|
||||
"mov %[a], #0xfe\n\t"
|
||||
"\n"
|
||||
"L_curve25519_bits_%=: \n\t"
|
||||
"L_curve25519_bits_%=:\n\t"
|
||||
"str %[a], [sp, #168]\n\t"
|
||||
"ldr %[n], [sp, #160]\n\t"
|
||||
"and r4, %[a], #31\n\t"
|
||||
@@ -4264,7 +4263,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #4\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_1_%=: \n\t"
|
||||
"L_curve25519_inv_1_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4281,7 +4280,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #9\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_2_%=: \n\t"
|
||||
"L_curve25519_inv_2_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4298,7 +4297,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #19\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_3_%=: \n\t"
|
||||
"L_curve25519_inv_3_%=:\n\t"
|
||||
"add r1, sp, #0x80\n\t"
|
||||
"add r0, sp, #0x80\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4312,7 +4311,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #10\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_4_%=: \n\t"
|
||||
"L_curve25519_inv_4_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4329,7 +4328,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #49\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_5_%=: \n\t"
|
||||
"L_curve25519_inv_5_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4346,7 +4345,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #0x63\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_6_%=: \n\t"
|
||||
"L_curve25519_inv_6_%=:\n\t"
|
||||
"add r1, sp, #0x80\n\t"
|
||||
"add r0, sp, #0x80\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4360,7 +4359,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #50\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_7_%=: \n\t"
|
||||
"L_curve25519_inv_7_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4374,7 +4373,7 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #5\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_8_%=: \n\t"
|
||||
"L_curve25519_inv_8_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4431,11 +4430,11 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
WC_OMIT_FRAME_POINTER void fe_invert(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -4472,7 +4471,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #4\n\t"
|
||||
"\n"
|
||||
"L_fe_invert1_%=: \n\t"
|
||||
"L_fe_invert1_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4489,7 +4488,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #9\n\t"
|
||||
"\n"
|
||||
"L_fe_invert2_%=: \n\t"
|
||||
"L_fe_invert2_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4506,7 +4505,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #19\n\t"
|
||||
"\n"
|
||||
"L_fe_invert3_%=: \n\t"
|
||||
"L_fe_invert3_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4520,7 +4519,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #10\n\t"
|
||||
"\n"
|
||||
"L_fe_invert4_%=: \n\t"
|
||||
"L_fe_invert4_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4537,7 +4536,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #49\n\t"
|
||||
"\n"
|
||||
"L_fe_invert5_%=: \n\t"
|
||||
"L_fe_invert5_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4554,7 +4553,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #0x63\n\t"
|
||||
"\n"
|
||||
"L_fe_invert6_%=: \n\t"
|
||||
"L_fe_invert6_%=:\n\t"
|
||||
"add r1, sp, #0x60\n\t"
|
||||
"add r0, sp, #0x60\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4568,7 +4567,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #50\n\t"
|
||||
"\n"
|
||||
"L_fe_invert7_%=: \n\t"
|
||||
"L_fe_invert7_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4582,7 +4581,7 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #5\n\t"
|
||||
"\n"
|
||||
"L_fe_invert8_%=: \n\t"
|
||||
"L_fe_invert8_%=:\n\t"
|
||||
"add r1, sp, #32\n\t"
|
||||
"add r0, sp, #32\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -4614,11 +4613,11 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER void fe_sq2(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sq2(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -4945,11 +4944,11 @@ WC_OMIT_FRAME_POINTER void fe_sq2(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER void fe_sq2(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_sq2(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5135,11 +5134,11 @@ WC_OMIT_FRAME_POINTER void fe_sq2(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER void fe_pow22523(fe r_p, const fe a_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword32* r asm ("r0") = (sword32*)r_p;
|
||||
register const sword32* a asm ("r1") = (const sword32*)a_p;
|
||||
register sword32* r __asm__ ("r0") = (sword32*)r_p;
|
||||
register const sword32* a __asm__ ("r1") = (const sword32*)a_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5176,7 +5175,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #4\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_1_%=: \n\t"
|
||||
"L_fe_pow22523_1_%=:\n\t"
|
||||
"add r1, sp, #32\n\t"
|
||||
"add r0, sp, #32\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5193,7 +5192,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #9\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_2_%=: \n\t"
|
||||
"L_fe_pow22523_2_%=:\n\t"
|
||||
"add r1, sp, #32\n\t"
|
||||
"add r0, sp, #32\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5210,7 +5209,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #19\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_3_%=: \n\t"
|
||||
"L_fe_pow22523_3_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5224,7 +5223,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #10\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_4_%=: \n\t"
|
||||
"L_fe_pow22523_4_%=:\n\t"
|
||||
"add r1, sp, #32\n\t"
|
||||
"add r0, sp, #32\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5241,7 +5240,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #49\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_5_%=: \n\t"
|
||||
"L_fe_pow22523_5_%=:\n\t"
|
||||
"add r1, sp, #32\n\t"
|
||||
"add r0, sp, #32\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5258,7 +5257,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_sq_op\n\t"
|
||||
"mov r12, #0x63\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_6_%=: \n\t"
|
||||
"L_fe_pow22523_6_%=:\n\t"
|
||||
"add r1, sp, #0x40\n\t"
|
||||
"add r0, sp, #0x40\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5272,7 +5271,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #50\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_7_%=: \n\t"
|
||||
"L_fe_pow22523_7_%=:\n\t"
|
||||
"add r1, sp, #32\n\t"
|
||||
"add r0, sp, #32\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5286,7 +5285,7 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"bl fe_mul_op\n\t"
|
||||
"mov r12, #2\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_8_%=: \n\t"
|
||||
"L_fe_pow22523_8_%=:\n\t"
|
||||
"mov r1, sp\n\t"
|
||||
"mov r0, sp\n\t"
|
||||
"push {r12}\n\t"
|
||||
@@ -5317,11 +5316,11 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
WC_OMIT_FRAME_POINTER void ge_p1p1_to_p2(ge_p2 * r_p, const ge_p1p1 * p_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_p1p1_to_p2(ge_p2 * r, const ge_p1p1 * p)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p2 * r asm ("r0") = (ge_p2 *)r_p;
|
||||
register const ge_p1p1 * p asm ("r1") = (const ge_p1p1 *)p_p;
|
||||
register ge_p2 * r __asm__ ("r0") = (ge_p2 *)r_p;
|
||||
register const ge_p1p1 * p __asm__ ("r1") = (const ge_p1p1 *)p_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5359,11 +5358,11 @@ WC_OMIT_FRAME_POINTER void ge_p1p1_to_p2(ge_p2 * r, const ge_p1p1 * p)
|
||||
WC_OMIT_FRAME_POINTER void ge_p1p1_to_p3(ge_p3 * r_p, const ge_p1p1 * p_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_p1p1_to_p3(ge_p3 * r, const ge_p1p1 * p)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p3 * r asm ("r0") = (ge_p3 *)r_p;
|
||||
register const ge_p1p1 * p asm ("r1") = (const ge_p1p1 *)p_p;
|
||||
register ge_p3 * r __asm__ ("r0") = (ge_p3 *)r_p;
|
||||
register const ge_p1p1 * p __asm__ ("r1") = (const ge_p1p1 *)p_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5406,11 +5405,11 @@ WC_OMIT_FRAME_POINTER void ge_p1p1_to_p3(ge_p3 * r, const ge_p1p1 * p)
|
||||
WC_OMIT_FRAME_POINTER void ge_p2_dbl(ge_p1p1 * r_p, const ge_p2 * p_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_p2_dbl(ge_p1p1 * r, const ge_p2 * p)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p1p1 * r asm ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p2 * p asm ("r1") = (const ge_p2 *)p_p;
|
||||
register ge_p1p1 * r __asm__ ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p2 * p __asm__ ("r1") = (const ge_p2 *)p_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5467,12 +5466,12 @@ WC_OMIT_FRAME_POINTER void ge_madd(ge_p1p1 * r_p, const ge_p3 * p_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_madd(ge_p1p1 * r, const ge_p3 * p,
|
||||
const ge_precomp * q)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p1p1 * r asm ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p asm ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_precomp * q asm ("r2") = (const ge_precomp *)q_p;
|
||||
register ge_p1p1 * r __asm__ ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p __asm__ ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_precomp * q __asm__ ("r2") = (const ge_precomp *)q_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5567,12 +5566,12 @@ WC_OMIT_FRAME_POINTER void ge_msub(ge_p1p1 * r_p, const ge_p3 * p_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_msub(ge_p1p1 * r, const ge_p3 * p,
|
||||
const ge_precomp * q)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p1p1 * r asm ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p asm ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_precomp * q asm ("r2") = (const ge_precomp *)q_p;
|
||||
register ge_p1p1 * r __asm__ ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p __asm__ ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_precomp * q __asm__ ("r2") = (const ge_precomp *)q_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5668,12 +5667,12 @@ WC_OMIT_FRAME_POINTER void ge_add(ge_p1p1 * r_p, const ge_p3 * p_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_add(ge_p1p1 * r, const ge_p3 * p,
|
||||
const ge_cached* q)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p1p1 * r asm ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p asm ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_cached* q asm ("r2") = (const ge_cached*)q_p;
|
||||
register ge_p1p1 * r __asm__ ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p __asm__ ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_cached* q __asm__ ("r2") = (const ge_cached*)q_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5769,12 +5768,12 @@ WC_OMIT_FRAME_POINTER void ge_sub(ge_p1p1 * r_p, const ge_p3 * p_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void ge_sub(ge_p1p1 * r, const ge_p3 * p,
|
||||
const ge_cached* q)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register ge_p1p1 * r asm ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p asm ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_cached* q asm ("r2") = (const ge_cached*)q_p;
|
||||
register ge_p1p1 * r __asm__ ("r0") = (ge_p1p1 *)r_p;
|
||||
register const ge_p3 * p __asm__ ("r1") = (const ge_p3 *)p_p;
|
||||
register const ge_cached* q __asm__ ("r2") = (const ge_cached*)q_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -5871,10 +5870,10 @@ WC_OMIT_FRAME_POINTER void ge_sub(ge_p1p1 * r, const ge_p3 * p,
|
||||
WC_OMIT_FRAME_POINTER void sc_reduce(byte* s_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void sc_reduce(byte* s)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* s asm ("r0") = (byte*)s_p;
|
||||
register byte* s __asm__ ("r0") = (byte*)s_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -6671,10 +6670,10 @@ WC_OMIT_FRAME_POINTER void sc_reduce(byte* s)
|
||||
WC_OMIT_FRAME_POINTER void sc_reduce(byte* s_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void sc_reduce(byte* s)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* s asm ("r0") = (byte*)s_p;
|
||||
register byte* s __asm__ ("r0") = (byte*)s_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -7346,13 +7345,13 @@ WC_OMIT_FRAME_POINTER void sc_muladd(byte* s_p, const byte* a_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void sc_muladd(byte* s, const byte* a, const byte* b,
|
||||
const byte* c)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* s asm ("r0") = (byte*)s_p;
|
||||
register const byte* a asm ("r1") = (const byte*)a_p;
|
||||
register const byte* b asm ("r2") = (const byte*)b_p;
|
||||
register const byte* c asm ("r3") = (const byte*)c_p;
|
||||
register byte* s __asm__ ("r0") = (byte*)s_p;
|
||||
register const byte* a __asm__ ("r1") = (const byte*)a_p;
|
||||
register const byte* b __asm__ ("r2") = (const byte*)b_p;
|
||||
register const byte* c __asm__ ("r3") = (const byte*)c_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -8508,13 +8507,13 @@ WC_OMIT_FRAME_POINTER void sc_muladd(byte* s_p, const byte* a_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void sc_muladd(byte* s, const byte* a, const byte* b,
|
||||
const byte* c)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register byte* s asm ("r0") = (byte*)s_p;
|
||||
register const byte* a asm ("r1") = (const byte*)a_p;
|
||||
register const byte* b asm ("r2") = (const byte*)b_p;
|
||||
register const byte* c asm ("r3") = (const byte*)c_p;
|
||||
register byte* s __asm__ ("r0") = (byte*)s_p;
|
||||
register const byte* a __asm__ ("r1") = (const byte*)a_p;
|
||||
register const byte* b __asm__ ("r2") = (const byte*)b_p;
|
||||
register const byte* c __asm__ ("r3") = (const byte*)c_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
|
||||
@@ -31,139 +31,36 @@
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifdef WOLFSSL_WC_MLKEM
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_arm32_ntt_zetas, %object
|
||||
.size L_mlkem_arm32_ntt_zetas, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 4-byte aligned, 32-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
#else
|
||||
.p2align 2
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_arm32_ntt_zetas:
|
||||
.short 0x8ed
|
||||
.short 0xa0b
|
||||
.short 0xb9a
|
||||
.short 0x714
|
||||
.short 0x5d5
|
||||
.short 0x58e
|
||||
.short 0x11f
|
||||
.short 0xca
|
||||
.short 0xc56
|
||||
.short 0x26e
|
||||
.short 0x629
|
||||
.short 0xb6
|
||||
.short 0x3c2
|
||||
.short 0x84f
|
||||
.short 0x73f
|
||||
.short 0x5bc
|
||||
.short 0x23d
|
||||
.short 0x7d4
|
||||
.short 0x108
|
||||
.short 0x17f
|
||||
.short 0x9c4
|
||||
.short 0x5b2
|
||||
.short 0x6bf
|
||||
.short 0xc7f
|
||||
.short 0xa58
|
||||
.short 0x3f9
|
||||
.short 0x2dc
|
||||
.short 0x260
|
||||
.short 0x6fb
|
||||
.short 0x19b
|
||||
.short 0xc34
|
||||
.short 0x6de
|
||||
.short 0x4c7
|
||||
.short 0x28c
|
||||
.short 0xad9
|
||||
.short 0x3f7
|
||||
.short 0x7f4
|
||||
.short 0x5d3
|
||||
.short 0xbe7
|
||||
.short 0x6f9
|
||||
.short 0x204
|
||||
.short 0xcf9
|
||||
.short 0xbc1
|
||||
.short 0xa67
|
||||
.short 0x6af
|
||||
.short 0x877
|
||||
.short 0x7e
|
||||
.short 0x5bd
|
||||
.short 0x9ac
|
||||
.short 0xca7
|
||||
.short 0xbf2
|
||||
.short 0x33e
|
||||
.short 0x6b
|
||||
.short 0x774
|
||||
.short 0xc0a
|
||||
.short 0x94a
|
||||
.short 0xb73
|
||||
.short 0x3c1
|
||||
.short 0x71d
|
||||
.short 0xa2c
|
||||
.short 0x1c0
|
||||
.short 0x8d8
|
||||
.short 0x2a5
|
||||
.short 0x806
|
||||
.short 0x8b2
|
||||
.short 0x1ae
|
||||
.short 0x22b
|
||||
.short 0x34b
|
||||
.short 0x81e
|
||||
.short 0x367
|
||||
.short 0x60e
|
||||
.short 0x69
|
||||
.short 0x1a6
|
||||
.short 0x24b
|
||||
.short 0xb1
|
||||
.short 0xc16
|
||||
.short 0xbde
|
||||
.short 0xb35
|
||||
.short 0x626
|
||||
.short 0x675
|
||||
.short 0xc0b
|
||||
.short 0x30a
|
||||
.short 0x487
|
||||
.short 0xc6e
|
||||
.short 0x9f8
|
||||
.short 0x5cb
|
||||
.short 0xaa7
|
||||
.short 0x45f
|
||||
.short 0x6cb
|
||||
.short 0x284
|
||||
.short 0x999
|
||||
.short 0x15d
|
||||
.short 0x1a2
|
||||
.short 0x149
|
||||
.short 0xc65
|
||||
.short 0xcb6
|
||||
.short 0x331
|
||||
.short 0x449
|
||||
.short 0x25b
|
||||
.short 0x262
|
||||
.short 0x52a
|
||||
.short 0x7fc
|
||||
.short 0x748
|
||||
.short 0x180
|
||||
.short 0x842
|
||||
.short 0xc79
|
||||
.short 0x4c2
|
||||
.short 0x7ca
|
||||
.short 0x997
|
||||
.short 0xdc
|
||||
.short 0x85e
|
||||
.short 0x686
|
||||
.short 0x860
|
||||
.short 0x707
|
||||
.short 0x803
|
||||
.short 0x31a
|
||||
.short 0x71b
|
||||
.short 0x9ab
|
||||
.short 0x99b
|
||||
.short 0x1de
|
||||
.short 0xc95
|
||||
.short 0xbcd
|
||||
.short 0x3e4
|
||||
.short 0x3df
|
||||
.short 0x3be
|
||||
.short 0x74d
|
||||
.short 0x5f2
|
||||
.short 0x65c
|
||||
.short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
|
||||
.short 0x0c56,0x026e,0x0629,0x00b6,0x03c2,0x084f,0x073f,0x05bc
|
||||
.short 0x023d,0x07d4,0x0108,0x017f,0x09c4,0x05b2,0x06bf,0x0c7f
|
||||
.short 0x0a58,0x03f9,0x02dc,0x0260,0x06fb,0x019b,0x0c34,0x06de
|
||||
.short 0x04c7,0x028c,0x0ad9,0x03f7,0x07f4,0x05d3,0x0be7,0x06f9
|
||||
.short 0x0204,0x0cf9,0x0bc1,0x0a67,0x06af,0x0877,0x007e,0x05bd
|
||||
.short 0x09ac,0x0ca7,0x0bf2,0x033e,0x006b,0x0774,0x0c0a,0x094a
|
||||
.short 0x0b73,0x03c1,0x071d,0x0a2c,0x01c0,0x08d8,0x02a5,0x0806
|
||||
.short 0x08b2,0x01ae,0x022b,0x034b,0x081e,0x0367,0x060e,0x0069
|
||||
.short 0x01a6,0x024b,0x00b1,0x0c16,0x0bde,0x0b35,0x0626,0x0675
|
||||
.short 0x0c0b,0x030a,0x0487,0x0c6e,0x09f8,0x05cb,0x0aa7,0x045f
|
||||
.short 0x06cb,0x0284,0x0999,0x015d,0x01a2,0x0149,0x0c65,0x0cb6
|
||||
.short 0x0331,0x0449,0x025b,0x0262,0x052a,0x07fc,0x0748,0x0180
|
||||
.short 0x0842,0x0c79,0x04c2,0x07ca,0x0997,0x00dc,0x085e,0x0686
|
||||
.short 0x0860,0x0707,0x0803,0x031a,0x071b,0x09ab,0x099b,0x01de
|
||||
.short 0x0c95,0x0bcd,0x03e4,0x03df,0x03be,0x074d,0x05f2,0x065c
|
||||
.text
|
||||
.align 4
|
||||
.globl mlkem_arm32_ntt
|
||||
@@ -3155,139 +3052,36 @@ L_mlkem_arm32_ntt_loop_567:
|
||||
add sp, sp, #8
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
.size mlkem_arm32_ntt,.-mlkem_arm32_ntt
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_invntt_zetas_inv, %object
|
||||
.size L_mlkem_invntt_zetas_inv, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 4-byte aligned, 32-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
#else
|
||||
.p2align 2
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_invntt_zetas_inv:
|
||||
.short 0x6a5
|
||||
.short 0x70f
|
||||
.short 0x5b4
|
||||
.short 0x943
|
||||
.short 0x922
|
||||
.short 0x91d
|
||||
.short 0x134
|
||||
.short 0x6c
|
||||
.short 0xb23
|
||||
.short 0x366
|
||||
.short 0x356
|
||||
.short 0x5e6
|
||||
.short 0x9e7
|
||||
.short 0x4fe
|
||||
.short 0x5fa
|
||||
.short 0x4a1
|
||||
.short 0x67b
|
||||
.short 0x4a3
|
||||
.short 0xc25
|
||||
.short 0x36a
|
||||
.short 0x537
|
||||
.short 0x83f
|
||||
.short 0x88
|
||||
.short 0x4bf
|
||||
.short 0xb81
|
||||
.short 0x5b9
|
||||
.short 0x505
|
||||
.short 0x7d7
|
||||
.short 0xa9f
|
||||
.short 0xaa6
|
||||
.short 0x8b8
|
||||
.short 0x9d0
|
||||
.short 0x4b
|
||||
.short 0x9c
|
||||
.short 0xbb8
|
||||
.short 0xb5f
|
||||
.short 0xba4
|
||||
.short 0x368
|
||||
.short 0xa7d
|
||||
.short 0x636
|
||||
.short 0x8a2
|
||||
.short 0x25a
|
||||
.short 0x736
|
||||
.short 0x309
|
||||
.short 0x93
|
||||
.short 0x87a
|
||||
.short 0x9f7
|
||||
.short 0xf6
|
||||
.short 0x68c
|
||||
.short 0x6db
|
||||
.short 0x1cc
|
||||
.short 0x123
|
||||
.short 0xeb
|
||||
.short 0xc50
|
||||
.short 0xab6
|
||||
.short 0xb5b
|
||||
.short 0xc98
|
||||
.short 0x6f3
|
||||
.short 0x99a
|
||||
.short 0x4e3
|
||||
.short 0x9b6
|
||||
.short 0xad6
|
||||
.short 0xb53
|
||||
.short 0x44f
|
||||
.short 0x4fb
|
||||
.short 0xa5c
|
||||
.short 0x429
|
||||
.short 0xb41
|
||||
.short 0x2d5
|
||||
.short 0x5e4
|
||||
.short 0x940
|
||||
.short 0x18e
|
||||
.short 0x3b7
|
||||
.short 0xf7
|
||||
.short 0x58d
|
||||
.short 0xc96
|
||||
.short 0x9c3
|
||||
.short 0x10f
|
||||
.short 0x5a
|
||||
.short 0x355
|
||||
.short 0x744
|
||||
.short 0xc83
|
||||
.short 0x48a
|
||||
.short 0x652
|
||||
.short 0x29a
|
||||
.short 0x140
|
||||
.short 0x8
|
||||
.short 0xafd
|
||||
.short 0x608
|
||||
.short 0x11a
|
||||
.short 0x72e
|
||||
.short 0x50d
|
||||
.short 0x90a
|
||||
.short 0x228
|
||||
.short 0xa75
|
||||
.short 0x83a
|
||||
.short 0x623
|
||||
.short 0xcd
|
||||
.short 0xb66
|
||||
.short 0x606
|
||||
.short 0xaa1
|
||||
.short 0xa25
|
||||
.short 0x908
|
||||
.short 0x2a9
|
||||
.short 0x82
|
||||
.short 0x642
|
||||
.short 0x74f
|
||||
.short 0x33d
|
||||
.short 0xb82
|
||||
.short 0xbf9
|
||||
.short 0x52d
|
||||
.short 0xac4
|
||||
.short 0x745
|
||||
.short 0x5c2
|
||||
.short 0x4b2
|
||||
.short 0x93f
|
||||
.short 0xc4b
|
||||
.short 0x6d8
|
||||
.short 0xa93
|
||||
.short 0xab
|
||||
.short 0xc37
|
||||
.short 0xbe2
|
||||
.short 0x773
|
||||
.short 0x72c
|
||||
.short 0x5ed
|
||||
.short 0x167
|
||||
.short 0x2f6
|
||||
.short 0x5a1
|
||||
.short 0x06a5,0x070f,0x05b4,0x0943,0x0922,0x091d,0x0134,0x006c
|
||||
.short 0x0b23,0x0366,0x0356,0x05e6,0x09e7,0x04fe,0x05fa,0x04a1
|
||||
.short 0x067b,0x04a3,0x0c25,0x036a,0x0537,0x083f,0x0088,0x04bf
|
||||
.short 0x0b81,0x05b9,0x0505,0x07d7,0x0a9f,0x0aa6,0x08b8,0x09d0
|
||||
.short 0x004b,0x009c,0x0bb8,0x0b5f,0x0ba4,0x0368,0x0a7d,0x0636
|
||||
.short 0x08a2,0x025a,0x0736,0x0309,0x0093,0x087a,0x09f7,0x00f6
|
||||
.short 0x068c,0x06db,0x01cc,0x0123,0x00eb,0x0c50,0x0ab6,0x0b5b
|
||||
.short 0x0c98,0x06f3,0x099a,0x04e3,0x09b6,0x0ad6,0x0b53,0x044f
|
||||
.short 0x04fb,0x0a5c,0x0429,0x0b41,0x02d5,0x05e4,0x0940,0x018e
|
||||
.short 0x03b7,0x00f7,0x058d,0x0c96,0x09c3,0x010f,0x005a,0x0355
|
||||
.short 0x0744,0x0c83,0x048a,0x0652,0x029a,0x0140,0x0008,0x0afd
|
||||
.short 0x0608,0x011a,0x072e,0x050d,0x090a,0x0228,0x0a75,0x083a
|
||||
.short 0x0623,0x00cd,0x0b66,0x0606,0x0aa1,0x0a25,0x0908,0x02a9
|
||||
.short 0x0082,0x0642,0x074f,0x033d,0x0b82,0x0bf9,0x052d,0x0ac4
|
||||
.short 0x0745,0x05c2,0x04b2,0x093f,0x0c4b,0x06d8,0x0a93,0x00ab
|
||||
.short 0x0c37,0x0be2,0x0773,0x072c,0x05ed,0x0167,0x02f6,0x05a1
|
||||
.text
|
||||
.align 4
|
||||
.globl mlkem_arm32_invntt
|
||||
@@ -7673,139 +7467,36 @@ L_mlkem_invntt_loop_321:
|
||||
add sp, sp, #8
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
.size mlkem_arm32_invntt,.-mlkem_arm32_invntt
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_basemul_mont_zetas, %object
|
||||
.size L_mlkem_basemul_mont_zetas, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 4-byte aligned, 32-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
#else
|
||||
.p2align 2
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_basemul_mont_zetas:
|
||||
.short 0x8ed
|
||||
.short 0xa0b
|
||||
.short 0xb9a
|
||||
.short 0x714
|
||||
.short 0x5d5
|
||||
.short 0x58e
|
||||
.short 0x11f
|
||||
.short 0xca
|
||||
.short 0xc56
|
||||
.short 0x26e
|
||||
.short 0x629
|
||||
.short 0xb6
|
||||
.short 0x3c2
|
||||
.short 0x84f
|
||||
.short 0x73f
|
||||
.short 0x5bc
|
||||
.short 0x23d
|
||||
.short 0x7d4
|
||||
.short 0x108
|
||||
.short 0x17f
|
||||
.short 0x9c4
|
||||
.short 0x5b2
|
||||
.short 0x6bf
|
||||
.short 0xc7f
|
||||
.short 0xa58
|
||||
.short 0x3f9
|
||||
.short 0x2dc
|
||||
.short 0x260
|
||||
.short 0x6fb
|
||||
.short 0x19b
|
||||
.short 0xc34
|
||||
.short 0x6de
|
||||
.short 0x4c7
|
||||
.short 0x28c
|
||||
.short 0xad9
|
||||
.short 0x3f7
|
||||
.short 0x7f4
|
||||
.short 0x5d3
|
||||
.short 0xbe7
|
||||
.short 0x6f9
|
||||
.short 0x204
|
||||
.short 0xcf9
|
||||
.short 0xbc1
|
||||
.short 0xa67
|
||||
.short 0x6af
|
||||
.short 0x877
|
||||
.short 0x7e
|
||||
.short 0x5bd
|
||||
.short 0x9ac
|
||||
.short 0xca7
|
||||
.short 0xbf2
|
||||
.short 0x33e
|
||||
.short 0x6b
|
||||
.short 0x774
|
||||
.short 0xc0a
|
||||
.short 0x94a
|
||||
.short 0xb73
|
||||
.short 0x3c1
|
||||
.short 0x71d
|
||||
.short 0xa2c
|
||||
.short 0x1c0
|
||||
.short 0x8d8
|
||||
.short 0x2a5
|
||||
.short 0x806
|
||||
.short 0x8b2
|
||||
.short 0x1ae
|
||||
.short 0x22b
|
||||
.short 0x34b
|
||||
.short 0x81e
|
||||
.short 0x367
|
||||
.short 0x60e
|
||||
.short 0x69
|
||||
.short 0x1a6
|
||||
.short 0x24b
|
||||
.short 0xb1
|
||||
.short 0xc16
|
||||
.short 0xbde
|
||||
.short 0xb35
|
||||
.short 0x626
|
||||
.short 0x675
|
||||
.short 0xc0b
|
||||
.short 0x30a
|
||||
.short 0x487
|
||||
.short 0xc6e
|
||||
.short 0x9f8
|
||||
.short 0x5cb
|
||||
.short 0xaa7
|
||||
.short 0x45f
|
||||
.short 0x6cb
|
||||
.short 0x284
|
||||
.short 0x999
|
||||
.short 0x15d
|
||||
.short 0x1a2
|
||||
.short 0x149
|
||||
.short 0xc65
|
||||
.short 0xcb6
|
||||
.short 0x331
|
||||
.short 0x449
|
||||
.short 0x25b
|
||||
.short 0x262
|
||||
.short 0x52a
|
||||
.short 0x7fc
|
||||
.short 0x748
|
||||
.short 0x180
|
||||
.short 0x842
|
||||
.short 0xc79
|
||||
.short 0x4c2
|
||||
.short 0x7ca
|
||||
.short 0x997
|
||||
.short 0xdc
|
||||
.short 0x85e
|
||||
.short 0x686
|
||||
.short 0x860
|
||||
.short 0x707
|
||||
.short 0x803
|
||||
.short 0x31a
|
||||
.short 0x71b
|
||||
.short 0x9ab
|
||||
.short 0x99b
|
||||
.short 0x1de
|
||||
.short 0xc95
|
||||
.short 0xbcd
|
||||
.short 0x3e4
|
||||
.short 0x3df
|
||||
.short 0x3be
|
||||
.short 0x74d
|
||||
.short 0x5f2
|
||||
.short 0x65c
|
||||
.short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
|
||||
.short 0x0c56,0x026e,0x0629,0x00b6,0x03c2,0x084f,0x073f,0x05bc
|
||||
.short 0x023d,0x07d4,0x0108,0x017f,0x09c4,0x05b2,0x06bf,0x0c7f
|
||||
.short 0x0a58,0x03f9,0x02dc,0x0260,0x06fb,0x019b,0x0c34,0x06de
|
||||
.short 0x04c7,0x028c,0x0ad9,0x03f7,0x07f4,0x05d3,0x0be7,0x06f9
|
||||
.short 0x0204,0x0cf9,0x0bc1,0x0a67,0x06af,0x0877,0x007e,0x05bd
|
||||
.short 0x09ac,0x0ca7,0x0bf2,0x033e,0x006b,0x0774,0x0c0a,0x094a
|
||||
.short 0x0b73,0x03c1,0x071d,0x0a2c,0x01c0,0x08d8,0x02a5,0x0806
|
||||
.short 0x08b2,0x01ae,0x022b,0x034b,0x081e,0x0367,0x060e,0x0069
|
||||
.short 0x01a6,0x024b,0x00b1,0x0c16,0x0bde,0x0b35,0x0626,0x0675
|
||||
.short 0x0c0b,0x030a,0x0487,0x0c6e,0x09f8,0x05cb,0x0aa7,0x045f
|
||||
.short 0x06cb,0x0284,0x0999,0x015d,0x01a2,0x0149,0x0c65,0x0cb6
|
||||
.short 0x0331,0x0449,0x025b,0x0262,0x052a,0x07fc,0x0748,0x0180
|
||||
.short 0x0842,0x0c79,0x04c2,0x07ca,0x0997,0x00dc,0x085e,0x0686
|
||||
.short 0x0860,0x0707,0x0803,0x031a,0x071b,0x09ab,0x099b,0x01de
|
||||
.short 0x0c95,0x0bcd,0x03e4,0x03df,0x03be,0x074d,0x05f2,0x065c
|
||||
.text
|
||||
.align 4
|
||||
.globl mlkem_arm32_basemul_mont
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -52,50 +50,34 @@
|
||||
#include <wolfssl/wolfcrypt/wc_mlkem.h>
|
||||
|
||||
#ifdef WOLFSSL_WC_MLKEM
|
||||
static const word16 L_mlkem_arm32_ntt_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714,
|
||||
0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6,
|
||||
0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f,
|
||||
0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
0x0a58, 0x03f9, 0x02dc, 0x0260,
|
||||
0x06fb, 0x019b, 0x0c34, 0x06de,
|
||||
0x04c7, 0x028c, 0x0ad9, 0x03f7,
|
||||
0x07f4, 0x05d3, 0x0be7, 0x06f9,
|
||||
0x0204, 0x0cf9, 0x0bc1, 0x0a67,
|
||||
0x06af, 0x0877, 0x007e, 0x05bd,
|
||||
0x09ac, 0x0ca7, 0x0bf2, 0x033e,
|
||||
0x006b, 0x0774, 0x0c0a, 0x094a,
|
||||
0x0b73, 0x03c1, 0x071d, 0x0a2c,
|
||||
0x01c0, 0x08d8, 0x02a5, 0x0806,
|
||||
0x08b2, 0x01ae, 0x022b, 0x034b,
|
||||
0x081e, 0x0367, 0x060e, 0x0069,
|
||||
0x01a6, 0x024b, 0x00b1, 0x0c16,
|
||||
0x0bde, 0x0b35, 0x0626, 0x0675,
|
||||
0x0c0b, 0x030a, 0x0487, 0x0c6e,
|
||||
0x09f8, 0x05cb, 0x0aa7, 0x045f,
|
||||
0x06cb, 0x0284, 0x0999, 0x015d,
|
||||
0x01a2, 0x0149, 0x0c65, 0x0cb6,
|
||||
0x0331, 0x0449, 0x025b, 0x0262,
|
||||
0x052a, 0x07fc, 0x0748, 0x0180,
|
||||
0x0842, 0x0c79, 0x04c2, 0x07ca,
|
||||
0x0997, 0x00dc, 0x085e, 0x0686,
|
||||
0x0860, 0x0707, 0x0803, 0x031a,
|
||||
0x071b, 0x09ab, 0x099b, 0x01de,
|
||||
0x0c95, 0x0bcd, 0x03e4, 0x03df,
|
||||
0x03be, 0x074d, 0x05f2, 0x065c,
|
||||
XALIGNED(4) static const word16 L_mlkem_arm32_ntt_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714, 0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6, 0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f, 0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
0x0a58, 0x03f9, 0x02dc, 0x0260, 0x06fb, 0x019b, 0x0c34, 0x06de,
|
||||
0x04c7, 0x028c, 0x0ad9, 0x03f7, 0x07f4, 0x05d3, 0x0be7, 0x06f9,
|
||||
0x0204, 0x0cf9, 0x0bc1, 0x0a67, 0x06af, 0x0877, 0x007e, 0x05bd,
|
||||
0x09ac, 0x0ca7, 0x0bf2, 0x033e, 0x006b, 0x0774, 0x0c0a, 0x094a,
|
||||
0x0b73, 0x03c1, 0x071d, 0x0a2c, 0x01c0, 0x08d8, 0x02a5, 0x0806,
|
||||
0x08b2, 0x01ae, 0x022b, 0x034b, 0x081e, 0x0367, 0x060e, 0x0069,
|
||||
0x01a6, 0x024b, 0x00b1, 0x0c16, 0x0bde, 0x0b35, 0x0626, 0x0675,
|
||||
0x0c0b, 0x030a, 0x0487, 0x0c6e, 0x09f8, 0x05cb, 0x0aa7, 0x045f,
|
||||
0x06cb, 0x0284, 0x0999, 0x015d, 0x01a2, 0x0149, 0x0c65, 0x0cb6,
|
||||
0x0331, 0x0449, 0x025b, 0x0262, 0x052a, 0x07fc, 0x0748, 0x0180,
|
||||
0x0842, 0x0c79, 0x04c2, 0x07ca, 0x0997, 0x00dc, 0x085e, 0x0686,
|
||||
0x0860, 0x0707, 0x0803, 0x031a, 0x071b, 0x09ab, 0x099b, 0x01de,
|
||||
0x0c95, 0x0bcd, 0x03e4, 0x03df, 0x03be, 0x074d, 0x05f2, 0x065c,
|
||||
};
|
||||
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_ntt(sword16* r_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_ntt(sword16* r)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword16* r asm ("r0") = (sword16*)r_p;
|
||||
register word16* L_mlkem_arm32_ntt_zetas_c asm ("r1") =
|
||||
register sword16* r __asm__ ("r0") = (sword16*)r_p;
|
||||
register word16* L_mlkem_arm32_ntt_zetas_c __asm__ ("r1") =
|
||||
(word16*)&L_mlkem_arm32_ntt_zetas;
|
||||
#else
|
||||
register word16* L_mlkem_arm32_ntt_zetas_c =
|
||||
@@ -121,7 +103,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_ntt(sword16* r)
|
||||
#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
|
||||
"mov r2, #16\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_ntt_loop_123_%=: \n\t"
|
||||
"L_mlkem_arm32_ntt_loop_123_%=:\n\t"
|
||||
"str r2, [sp]\n\t"
|
||||
"ldrh r11, [r1, #2]\n\t"
|
||||
"ldr r2, [%[r]]\n\t"
|
||||
@@ -1238,13 +1220,13 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_ntt(sword16* r)
|
||||
"sub %[r], %[r], #0x40\n\t"
|
||||
"mov r3, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_ntt_loop_4_j_%=: \n\t"
|
||||
"L_mlkem_arm32_ntt_loop_4_j_%=:\n\t"
|
||||
"str r3, [sp, #4]\n\t"
|
||||
"add r11, r1, r3, lsr #4\n\t"
|
||||
"mov r2, #4\n\t"
|
||||
"ldr r11, [r11, #16]\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_ntt_loop_4_i_%=: \n\t"
|
||||
"L_mlkem_arm32_ntt_loop_4_i_%=:\n\t"
|
||||
"str r2, [sp]\n\t"
|
||||
"ldr r2, [%[r]]\n\t"
|
||||
"ldr r3, [%[r], #16]\n\t"
|
||||
@@ -1639,7 +1621,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_ntt(sword16* r)
|
||||
"sub %[r], %[r], #0x200\n\t"
|
||||
"mov r3, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_ntt_loop_567_%=: \n\t"
|
||||
"L_mlkem_arm32_ntt_loop_567_%=:\n\t"
|
||||
"add r11, r1, r3, lsr #3\n\t"
|
||||
"str r3, [sp, #4]\n\t"
|
||||
"ldrh r11, [r11, #32]\n\t"
|
||||
@@ -3104,50 +3086,34 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_ntt(sword16* r)
|
||||
);
|
||||
}
|
||||
|
||||
static const word16 L_mlkem_invntt_zetas_inv[] = {
|
||||
0x06a5, 0x070f, 0x05b4, 0x0943,
|
||||
0x0922, 0x091d, 0x0134, 0x006c,
|
||||
0x0b23, 0x0366, 0x0356, 0x05e6,
|
||||
0x09e7, 0x04fe, 0x05fa, 0x04a1,
|
||||
0x067b, 0x04a3, 0x0c25, 0x036a,
|
||||
0x0537, 0x083f, 0x0088, 0x04bf,
|
||||
0x0b81, 0x05b9, 0x0505, 0x07d7,
|
||||
0x0a9f, 0x0aa6, 0x08b8, 0x09d0,
|
||||
0x004b, 0x009c, 0x0bb8, 0x0b5f,
|
||||
0x0ba4, 0x0368, 0x0a7d, 0x0636,
|
||||
0x08a2, 0x025a, 0x0736, 0x0309,
|
||||
0x0093, 0x087a, 0x09f7, 0x00f6,
|
||||
0x068c, 0x06db, 0x01cc, 0x0123,
|
||||
0x00eb, 0x0c50, 0x0ab6, 0x0b5b,
|
||||
0x0c98, 0x06f3, 0x099a, 0x04e3,
|
||||
0x09b6, 0x0ad6, 0x0b53, 0x044f,
|
||||
0x04fb, 0x0a5c, 0x0429, 0x0b41,
|
||||
0x02d5, 0x05e4, 0x0940, 0x018e,
|
||||
0x03b7, 0x00f7, 0x058d, 0x0c96,
|
||||
0x09c3, 0x010f, 0x005a, 0x0355,
|
||||
0x0744, 0x0c83, 0x048a, 0x0652,
|
||||
0x029a, 0x0140, 0x0008, 0x0afd,
|
||||
0x0608, 0x011a, 0x072e, 0x050d,
|
||||
0x090a, 0x0228, 0x0a75, 0x083a,
|
||||
0x0623, 0x00cd, 0x0b66, 0x0606,
|
||||
0x0aa1, 0x0a25, 0x0908, 0x02a9,
|
||||
0x0082, 0x0642, 0x074f, 0x033d,
|
||||
0x0b82, 0x0bf9, 0x052d, 0x0ac4,
|
||||
0x0745, 0x05c2, 0x04b2, 0x093f,
|
||||
0x0c4b, 0x06d8, 0x0a93, 0x00ab,
|
||||
0x0c37, 0x0be2, 0x0773, 0x072c,
|
||||
0x05ed, 0x0167, 0x02f6, 0x05a1,
|
||||
XALIGNED(4) static const word16 L_mlkem_invntt_zetas_inv[] = {
|
||||
0x06a5, 0x070f, 0x05b4, 0x0943, 0x0922, 0x091d, 0x0134, 0x006c,
|
||||
0x0b23, 0x0366, 0x0356, 0x05e6, 0x09e7, 0x04fe, 0x05fa, 0x04a1,
|
||||
0x067b, 0x04a3, 0x0c25, 0x036a, 0x0537, 0x083f, 0x0088, 0x04bf,
|
||||
0x0b81, 0x05b9, 0x0505, 0x07d7, 0x0a9f, 0x0aa6, 0x08b8, 0x09d0,
|
||||
0x004b, 0x009c, 0x0bb8, 0x0b5f, 0x0ba4, 0x0368, 0x0a7d, 0x0636,
|
||||
0x08a2, 0x025a, 0x0736, 0x0309, 0x0093, 0x087a, 0x09f7, 0x00f6,
|
||||
0x068c, 0x06db, 0x01cc, 0x0123, 0x00eb, 0x0c50, 0x0ab6, 0x0b5b,
|
||||
0x0c98, 0x06f3, 0x099a, 0x04e3, 0x09b6, 0x0ad6, 0x0b53, 0x044f,
|
||||
0x04fb, 0x0a5c, 0x0429, 0x0b41, 0x02d5, 0x05e4, 0x0940, 0x018e,
|
||||
0x03b7, 0x00f7, 0x058d, 0x0c96, 0x09c3, 0x010f, 0x005a, 0x0355,
|
||||
0x0744, 0x0c83, 0x048a, 0x0652, 0x029a, 0x0140, 0x0008, 0x0afd,
|
||||
0x0608, 0x011a, 0x072e, 0x050d, 0x090a, 0x0228, 0x0a75, 0x083a,
|
||||
0x0623, 0x00cd, 0x0b66, 0x0606, 0x0aa1, 0x0a25, 0x0908, 0x02a9,
|
||||
0x0082, 0x0642, 0x074f, 0x033d, 0x0b82, 0x0bf9, 0x052d, 0x0ac4,
|
||||
0x0745, 0x05c2, 0x04b2, 0x093f, 0x0c4b, 0x06d8, 0x0a93, 0x00ab,
|
||||
0x0c37, 0x0be2, 0x0773, 0x072c, 0x05ed, 0x0167, 0x02f6, 0x05a1,
|
||||
};
|
||||
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_invntt(sword16* r_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_invntt(sword16* r)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword16* r asm ("r0") = (sword16*)r_p;
|
||||
register word16* L_mlkem_invntt_zetas_inv_c asm ("r1") =
|
||||
register sword16* r __asm__ ("r0") = (sword16*)r_p;
|
||||
register word16* L_mlkem_invntt_zetas_inv_c __asm__ ("r1") =
|
||||
(word16*)&L_mlkem_invntt_zetas_inv;
|
||||
#else
|
||||
register word16* L_mlkem_invntt_zetas_inv_c =
|
||||
@@ -3173,7 +3139,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_invntt(sword16* r)
|
||||
#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
|
||||
"mov r3, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_invntt_loop_765_%=: \n\t"
|
||||
"L_mlkem_invntt_loop_765_%=:\n\t"
|
||||
"add r11, r1, r3, lsr #1\n\t"
|
||||
"str r3, [sp, #4]\n\t"
|
||||
"ldr r2, [%[r]]\n\t"
|
||||
@@ -4774,13 +4740,13 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_invntt(sword16* r)
|
||||
"sub %[r], %[r], #0x200\n\t"
|
||||
"mov r3, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_invntt_loop_4_j_%=: \n\t"
|
||||
"L_mlkem_invntt_loop_4_j_%=:\n\t"
|
||||
"str r3, [sp, #4]\n\t"
|
||||
"add r11, r1, r3, lsr #4\n\t"
|
||||
"mov r2, #4\n\t"
|
||||
"ldr r11, [r11, #224]\n\t"
|
||||
"\n"
|
||||
"L_mlkem_invntt_loop_4_i_%=: \n\t"
|
||||
"L_mlkem_invntt_loop_4_i_%=:\n\t"
|
||||
"str r2, [sp]\n\t"
|
||||
"ldr r2, [%[r]]\n\t"
|
||||
"ldr r3, [%[r], #16]\n\t"
|
||||
@@ -5279,7 +5245,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_invntt(sword16* r)
|
||||
"sub %[r], %[r], #0x200\n\t"
|
||||
"mov r2, #16\n\t"
|
||||
"\n"
|
||||
"L_mlkem_invntt_loop_321_%=: \n\t"
|
||||
"L_mlkem_invntt_loop_321_%=:\n\t"
|
||||
"str r2, [sp]\n\t"
|
||||
"ldrh r11, [r1, #2]\n\t"
|
||||
"ldr r2, [%[r]]\n\t"
|
||||
@@ -7550,39 +7516,23 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_invntt(sword16* r)
|
||||
);
|
||||
}
|
||||
|
||||
static const word16 L_mlkem_basemul_mont_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714,
|
||||
0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6,
|
||||
0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f,
|
||||
0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
0x0a58, 0x03f9, 0x02dc, 0x0260,
|
||||
0x06fb, 0x019b, 0x0c34, 0x06de,
|
||||
0x04c7, 0x028c, 0x0ad9, 0x03f7,
|
||||
0x07f4, 0x05d3, 0x0be7, 0x06f9,
|
||||
0x0204, 0x0cf9, 0x0bc1, 0x0a67,
|
||||
0x06af, 0x0877, 0x007e, 0x05bd,
|
||||
0x09ac, 0x0ca7, 0x0bf2, 0x033e,
|
||||
0x006b, 0x0774, 0x0c0a, 0x094a,
|
||||
0x0b73, 0x03c1, 0x071d, 0x0a2c,
|
||||
0x01c0, 0x08d8, 0x02a5, 0x0806,
|
||||
0x08b2, 0x01ae, 0x022b, 0x034b,
|
||||
0x081e, 0x0367, 0x060e, 0x0069,
|
||||
0x01a6, 0x024b, 0x00b1, 0x0c16,
|
||||
0x0bde, 0x0b35, 0x0626, 0x0675,
|
||||
0x0c0b, 0x030a, 0x0487, 0x0c6e,
|
||||
0x09f8, 0x05cb, 0x0aa7, 0x045f,
|
||||
0x06cb, 0x0284, 0x0999, 0x015d,
|
||||
0x01a2, 0x0149, 0x0c65, 0x0cb6,
|
||||
0x0331, 0x0449, 0x025b, 0x0262,
|
||||
0x052a, 0x07fc, 0x0748, 0x0180,
|
||||
0x0842, 0x0c79, 0x04c2, 0x07ca,
|
||||
0x0997, 0x00dc, 0x085e, 0x0686,
|
||||
0x0860, 0x0707, 0x0803, 0x031a,
|
||||
0x071b, 0x09ab, 0x099b, 0x01de,
|
||||
0x0c95, 0x0bcd, 0x03e4, 0x03df,
|
||||
0x03be, 0x074d, 0x05f2, 0x065c,
|
||||
XALIGNED(4) static const word16 L_mlkem_basemul_mont_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714, 0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6, 0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f, 0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
0x0a58, 0x03f9, 0x02dc, 0x0260, 0x06fb, 0x019b, 0x0c34, 0x06de,
|
||||
0x04c7, 0x028c, 0x0ad9, 0x03f7, 0x07f4, 0x05d3, 0x0be7, 0x06f9,
|
||||
0x0204, 0x0cf9, 0x0bc1, 0x0a67, 0x06af, 0x0877, 0x007e, 0x05bd,
|
||||
0x09ac, 0x0ca7, 0x0bf2, 0x033e, 0x006b, 0x0774, 0x0c0a, 0x094a,
|
||||
0x0b73, 0x03c1, 0x071d, 0x0a2c, 0x01c0, 0x08d8, 0x02a5, 0x0806,
|
||||
0x08b2, 0x01ae, 0x022b, 0x034b, 0x081e, 0x0367, 0x060e, 0x0069,
|
||||
0x01a6, 0x024b, 0x00b1, 0x0c16, 0x0bde, 0x0b35, 0x0626, 0x0675,
|
||||
0x0c0b, 0x030a, 0x0487, 0x0c6e, 0x09f8, 0x05cb, 0x0aa7, 0x045f,
|
||||
0x06cb, 0x0284, 0x0999, 0x015d, 0x01a2, 0x0149, 0x0c65, 0x0cb6,
|
||||
0x0331, 0x0449, 0x025b, 0x0262, 0x052a, 0x07fc, 0x0748, 0x0180,
|
||||
0x0842, 0x0c79, 0x04c2, 0x07ca, 0x0997, 0x00dc, 0x085e, 0x0686,
|
||||
0x0860, 0x0707, 0x0803, 0x031a, 0x071b, 0x09ab, 0x099b, 0x01de,
|
||||
0x0c95, 0x0bcd, 0x03e4, 0x03df, 0x03be, 0x074d, 0x05f2, 0x065c,
|
||||
};
|
||||
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
@@ -7591,13 +7541,13 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont(sword16* r_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont(sword16* r,
|
||||
const sword16* a, const sword16* b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword16* r asm ("r0") = (sword16*)r_p;
|
||||
register const sword16* a asm ("r1") = (const sword16*)a_p;
|
||||
register const sword16* b asm ("r2") = (const sword16*)b_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c asm ("r3") =
|
||||
register sword16* r __asm__ ("r0") = (sword16*)r_p;
|
||||
register const sword16* a __asm__ ("r1") = (const sword16*)a_p;
|
||||
register const sword16* b __asm__ ("r2") = (const sword16*)b_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r3") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
@@ -7623,7 +7573,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont(sword16* r,
|
||||
#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
|
||||
"mov r8, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_basemul_mont_loop_%=: \n\t"
|
||||
"L_mlkem_basemul_mont_loop_%=:\n\t"
|
||||
"ldm %[a]!, {r4, r5}\n\t"
|
||||
"ldm %[b]!, {r6, r7}\n\t"
|
||||
"ldr lr, [r3, r8]\n\t"
|
||||
@@ -7896,13 +7846,13 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont_add(sword16* r_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont_add(sword16* r,
|
||||
const sword16* a, const sword16* b)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword16* r asm ("r0") = (sword16*)r_p;
|
||||
register const sword16* a asm ("r1") = (const sword16*)a_p;
|
||||
register const sword16* b asm ("r2") = (const sword16*)b_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c asm ("r3") =
|
||||
register sword16* r __asm__ ("r0") = (sword16*)r_p;
|
||||
register const sword16* a __asm__ ("r1") = (const sword16*)a_p;
|
||||
register const sword16* b __asm__ ("r2") = (const sword16*)b_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r3") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
@@ -7928,7 +7878,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont_add(sword16* r,
|
||||
#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
|
||||
"mov r8, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_basemul_mont_add_loop_%=: \n\t"
|
||||
"L_mlkem_arm32_basemul_mont_add_loop_%=:\n\t"
|
||||
"ldm %[a]!, {r4, r5}\n\t"
|
||||
"ldm %[b]!, {r6, r7}\n\t"
|
||||
"ldr lr, [r3, r8]\n\t"
|
||||
@@ -8233,11 +8183,11 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_basemul_mont_add(sword16* r,
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_csubq(sword16* p_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void mlkem_arm32_csubq(sword16* p)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword16* p asm ("r0") = (sword16*)p_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c asm ("r1") =
|
||||
register sword16* p __asm__ ("r0") = (sword16*)p_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r1") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
@@ -8273,7 +8223,7 @@ WC_OMIT_FRAME_POINTER void mlkem_arm32_csubq(sword16* p)
|
||||
#endif
|
||||
"mov r1, #0x100\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_csubq_loop_%=: \n\t"
|
||||
"L_mlkem_arm32_csubq_loop_%=:\n\t"
|
||||
"ldm %[p], {r2, r3, r4, r5}\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
|
||||
"ssub16 r2, r2, lr\n\t"
|
||||
@@ -8429,14 +8379,14 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
unsigned int len, const byte* r, unsigned int rLen)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register sword16* p asm ("r0") = (sword16*)p_p;
|
||||
register unsigned int len asm ("r1") = (unsigned int)len_p;
|
||||
register const byte* r asm ("r2") = (const byte*)r_p;
|
||||
register unsigned int rLen asm ("r3") = (unsigned int)rLen_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c asm ("r12") =
|
||||
register sword16* p __asm__ ("r0") = (sword16*)p_p;
|
||||
register unsigned int len __asm__ ("r1") = (unsigned int)len_p;
|
||||
register const byte* r __asm__ ("r2") = (const byte*)r_p;
|
||||
register unsigned int rLen __asm__ ("r3") = (unsigned int)rLen_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r12") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
@@ -8453,7 +8403,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
#endif
|
||||
"mov r12, #0\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_loop_no_fail_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_loop_no_fail_%=:\n\t"
|
||||
"cmp %[len], #8\n\t"
|
||||
"blt L_mlkem_arm32_rej_uniform_done_no_fail_%=\n\t"
|
||||
"ldm %[r]!, {r4, r5, r6}\n\t"
|
||||
@@ -8562,11 +8512,11 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"bne L_mlkem_arm32_rej_uniform_loop_no_fail_%=\n\t"
|
||||
"b L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_done_no_fail_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_done_no_fail_%=:\n\t"
|
||||
"cmp %[len], #0\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_loop_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_loop_%=:\n\t"
|
||||
"ldm %[r]!, {r4, r5, r6}\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsl r7, r4, #20\n\t"
|
||||
@@ -8581,7 +8531,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_0_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_0_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsl r7, r4, #8\n\t"
|
||||
"lsr r7, r7, #20\n\t"
|
||||
@@ -8595,7 +8545,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_1_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_1_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsr r7, r4, #24\n\t"
|
||||
#else
|
||||
@@ -8616,7 +8566,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_2_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_2_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsl r7, r5, #16\n\t"
|
||||
"lsr r7, r7, #20\n\t"
|
||||
@@ -8630,7 +8580,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_3_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_3_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsl r7, r5, #4\n\t"
|
||||
"lsr r7, r7, #20\n\t"
|
||||
@@ -8644,7 +8594,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_4_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_4_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsr r7, r5, #28\n\t"
|
||||
#else
|
||||
@@ -8665,7 +8615,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_5_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_5_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsl r7, r6, #12\n\t"
|
||||
"lsr r7, r7, #20\n\t"
|
||||
@@ -8679,7 +8629,7 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_6_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_6_%=:\n\t"
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"lsr r7, r6, #20\n\t"
|
||||
#else
|
||||
@@ -8692,11 +8642,11 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_arm32_rej_uniform(sword16* p,
|
||||
"add r12, r12, #2\n\t"
|
||||
"beq L_mlkem_arm32_rej_uniform_done_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_fail_7_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_fail_7_%=:\n\t"
|
||||
"subs %[rLen], %[rLen], #12\n\t"
|
||||
"bgt L_mlkem_arm32_rej_uniform_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_arm32_rej_uniform_done_%=: \n\t"
|
||||
"L_mlkem_arm32_rej_uniform_done_%=:\n\t"
|
||||
"lsr r0, r12, #1\n\t"
|
||||
"pop {%[L_mlkem_basemul_mont_zetas]}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
|
||||
@@ -246,15 +246,21 @@ L_poly1305_arm32_16_done:
|
||||
add sp, sp, #28
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
.size poly1305_arm32_blocks_16,.-poly1305_arm32_blocks_16
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_poly1305_arm32_clamp, %object
|
||||
.size L_poly1305_arm32_clamp, 16
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_poly1305_arm32_clamp:
|
||||
.word 0xfffffff
|
||||
.word 0xffffffc
|
||||
.word 0xffffffc
|
||||
.word 0xffffffc
|
||||
.long 0x0fffffff,0x0ffffffc,0x0ffffffc,0x0ffffffc
|
||||
.text
|
||||
.align 4
|
||||
.globl poly1305_set_key
|
||||
@@ -822,7 +828,7 @@ L_poly1305_arm32_blocks_start_1:
|
||||
adcs r9, r9, r4
|
||||
adcs r10, r10, r5
|
||||
adc r11, r11, r12
|
||||
push {r0, r1}
|
||||
push {r0-r1}
|
||||
add r1, r0, #0
|
||||
add lr, r0, #16
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 6)
|
||||
@@ -996,7 +1002,7 @@ L_poly1305_arm32_blocks_start_1:
|
||||
adcs r9, r9, r5
|
||||
adcs r10, r10, r6
|
||||
adc r11, r11, r12
|
||||
pop {r0, r1}
|
||||
pop {r0-r1}
|
||||
pop {r2}
|
||||
add r12, r0, #16
|
||||
stm r12, {r7, r8, r9, r10, r11}
|
||||
@@ -1004,15 +1010,21 @@ L_poly1305_arm32_blocks_done:
|
||||
vpop {d8-d15}
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
.size poly1305_arm32_blocks,.-poly1305_arm32_blocks
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_poly1305_arm32_clamp, %object
|
||||
.size L_poly1305_arm32_clamp, 16
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_poly1305_arm32_clamp:
|
||||
.word 0xfffffff
|
||||
.word 0xffffffc
|
||||
.word 0xffffffc
|
||||
.word 0xffffffc
|
||||
.long 0x0fffffff,0x0ffffffc,0x0ffffffc,0x0ffffffc
|
||||
.text
|
||||
.align 4
|
||||
.globl poly1305_set_key
|
||||
@@ -1059,7 +1071,7 @@ poly1305_set_key:
|
||||
vmov.i32 s5, r9
|
||||
vmov.i32 s7, r10
|
||||
vmov.i32 s9, r11
|
||||
push {r0, r1}
|
||||
push {r0-r1}
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 6)
|
||||
# Square r
|
||||
umull r1, r6, r2, r3
|
||||
@@ -1158,7 +1170,7 @@ poly1305_set_key:
|
||||
vmov.i32 s4, r4
|
||||
vmov.i32 s6, r5
|
||||
vmov.i32 s8, r10
|
||||
pop {r0, r1}
|
||||
pop {r0-r1}
|
||||
add lr, r0, #0x7c
|
||||
vstm.32 lr, {d0-d4}
|
||||
# Multiply r^2, r by r^2
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -59,13 +57,13 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
const byte* m, word32 len, int notLast)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* m asm ("r1") = (const byte*)m_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register int notLast asm ("r3") = (int)notLast_p;
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* m __asm__ ("r1") = (const byte*)m_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register int notLast __asm__ ("r3") = (int)notLast_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -78,7 +76,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
"add lr, %[ctx], #16\n\t"
|
||||
"ldm lr, {r4, r5, r6, r7, r8}\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_16_loop_%=: \n\t"
|
||||
"L_poly1305_arm32_16_loop_%=:\n\t"
|
||||
/* Add m to h */
|
||||
"ldr %[m], [sp, #16]\n\t"
|
||||
"ldr %[len], [%[m]]\n\t"
|
||||
@@ -275,7 +273,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
"bgt L_poly1305_arm32_16_loop_%=\n\t"
|
||||
"stm lr, {r4, r5, r6, r7, r8}\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_16_done_%=: \n\t"
|
||||
"L_poly1305_arm32_16_done_%=:\n\t"
|
||||
"add sp, sp, #28\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [m] "+r" (m), [len] "+r" (len),
|
||||
@@ -291,7 +289,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
);
|
||||
}
|
||||
|
||||
static const word32 L_poly1305_arm32_clamp[] = {
|
||||
XALIGNED(8) static const word32 L_poly1305_arm32_clamp[] = {
|
||||
0x0fffffff, 0x0ffffffc, 0x0ffffffc, 0x0ffffffc,
|
||||
};
|
||||
|
||||
@@ -299,12 +297,12 @@ static const word32 L_poly1305_arm32_clamp[] = {
|
||||
WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx_p, const byte* key_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx, const byte* key)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* key asm ("r1") = (const byte*)key_p;
|
||||
register word32* L_poly1305_arm32_clamp_c asm ("r2") =
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* key __asm__ ("r1") = (const byte*)key_p;
|
||||
register word32* L_poly1305_arm32_clamp_c __asm__ ("r2") =
|
||||
(word32*)&L_poly1305_arm32_clamp;
|
||||
#else
|
||||
register word32* L_poly1305_arm32_clamp_c =
|
||||
@@ -360,11 +358,11 @@ WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx, const byte* key)
|
||||
WC_OMIT_FRAME_POINTER void poly1305_final(Poly1305* ctx_p, byte* mac_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_final(Poly1305* ctx, byte* mac)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register byte* mac asm ("r1") = (byte*)mac_p;
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register byte* mac __asm__ ("r1") = (byte*)mac_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -430,13 +428,13 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
const byte* m, word32 len, int notLast)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* m asm ("r1") = (const byte*)m_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register int notLast asm ("r3") = (int)notLast_p;
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* m __asm__ ("r1") = (const byte*)m_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register int notLast __asm__ ("r3") = (int)notLast_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -449,7 +447,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
"add lr, %[ctx], #16\n\t"
|
||||
"ldm lr, {r4, r5, r6, r7, r8}\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_16_loop_%=: \n\t"
|
||||
"L_poly1305_arm32_16_loop_%=:\n\t"
|
||||
/* Add m to h */
|
||||
"ldr %[m], [sp, #16]\n\t"
|
||||
"ldr %[len], [%[m]]\n\t"
|
||||
@@ -646,7 +644,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks_16(Poly1305* ctx,
|
||||
"bgt L_poly1305_arm32_16_loop_%=\n\t"
|
||||
"stm lr, {r4, r5, r6, r7, r8}\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_16_done_%=: \n\t"
|
||||
"L_poly1305_arm32_16_done_%=:\n\t"
|
||||
"add sp, sp, #28\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [m] "+r" (m), [len] "+r" (len),
|
||||
@@ -668,12 +666,12 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
const unsigned char* m, size_t bytes)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register const unsigned char* m asm ("r1") = (const unsigned char*)m_p;
|
||||
register size_t bytes asm ("r2") = (size_t)bytes_p;
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register const unsigned char* m __asm__ ("r1") = (const unsigned char*)m_p;
|
||||
register size_t bytes __asm__ ("r2") = (size_t)bytes_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -683,7 +681,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"ldm r12, {r7, r8, r9, r10, r11}\n\t"
|
||||
"b L_poly1305_arm32_blocks_start_1_%=\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_begin_neon_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_begin_neon_%=:\n\t"
|
||||
"vmov.i16 q15, #0xffff\n\t"
|
||||
"vshr.u64 q15, q15, #38\n\t"
|
||||
"vld1.64 {d0-d2}, [r12]\n\t"
|
||||
@@ -711,11 +709,11 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"vadd.u32 d9, d9, d24\n\t"
|
||||
"b L_poly1305_arm32_blocks_start_2_%=\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_begin_4_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_begin_4_%=:\n\t"
|
||||
"add r3, %[ctx], #0xa4\n\t"
|
||||
"vldm.32 r3, {d26-d30}\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_start_4_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_start_4_%=:\n\t"
|
||||
"sub %[bytes], #0x40\n\t"
|
||||
"vld4.32 {d10-d13}, [%[m]]!\n\t"
|
||||
"vshl.u32 d6, d27, #2\n\t"
|
||||
@@ -837,7 +835,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"cmp %[bytes], #32\n\t"
|
||||
"blt L_poly1305_arm32_blocks_done_neon_%=\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_start_2_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_start_2_%=:\n\t"
|
||||
"sub %[bytes], #32\n\t"
|
||||
"vld4.32 {d10-d13}, [%[m]]!\n\t"
|
||||
"vshr.u32 d14, d13, #8\n\t"
|
||||
@@ -901,7 +899,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"vsra.u64 d1, d0, #26\n\t"
|
||||
"vand.u64 d0, d0, d31\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_done_neon_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_done_neon_%=:\n\t"
|
||||
"cmp %[bytes], #16\n\t"
|
||||
"beq L_poly1305_arm32_blocks_begin_1_%=\n\t"
|
||||
"add r12, %[ctx], #16\n\t"
|
||||
@@ -914,7 +912,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"vst1.64 {d0-d2}, [r12]\n\t"
|
||||
"b L_poly1305_arm32_blocks_done_%=\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_begin_1_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_begin_1_%=:\n\t"
|
||||
"vsli.u64 d0, d1, #26\n\t"
|
||||
"vsli.u64 d0, d2, #52\n\t"
|
||||
"vshr.u64 d1, d2, #12\n\t"
|
||||
@@ -925,7 +923,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"vmov r9, r10, d1\n\t"
|
||||
"vmov r11, d2[0]\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_start_1_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_start_1_%=:\n\t"
|
||||
"mov r12, #1\n\t"
|
||||
"push {r2}\n\t"
|
||||
/* Load message */
|
||||
@@ -1118,7 +1116,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
"add r12, %[ctx], #16\n\t"
|
||||
"stm r12, {r7, r8, r9, r10, r11}\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm32_blocks_done_%=: \n\t"
|
||||
"L_poly1305_arm32_blocks_done_%=:\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [m] "+r" (m), [bytes] "+r" (bytes)
|
||||
:
|
||||
@@ -1134,7 +1132,7 @@ WC_OMIT_FRAME_POINTER void poly1305_arm32_blocks(Poly1305* ctx,
|
||||
);
|
||||
}
|
||||
|
||||
static const word32 L_poly1305_arm32_clamp[] = {
|
||||
XALIGNED(8) static const word32 L_poly1305_arm32_clamp[] = {
|
||||
0x0fffffff, 0x0ffffffc, 0x0ffffffc, 0x0ffffffc,
|
||||
};
|
||||
|
||||
@@ -1142,12 +1140,12 @@ static const word32 L_poly1305_arm32_clamp[] = {
|
||||
WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx_p, const byte* key_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx, const byte* key)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* key asm ("r1") = (const byte*)key_p;
|
||||
register word32* L_poly1305_arm32_clamp_c asm ("r2") =
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register const byte* key __asm__ ("r1") = (const byte*)key_p;
|
||||
register word32* L_poly1305_arm32_clamp_c __asm__ ("r2") =
|
||||
(word32*)&L_poly1305_arm32_clamp;
|
||||
#else
|
||||
register word32* L_poly1305_arm32_clamp_c =
|
||||
@@ -1383,11 +1381,11 @@ WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx, const byte* key)
|
||||
WC_OMIT_FRAME_POINTER void poly1305_final(Poly1305* ctx_p, byte* mac_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void poly1305_final(Poly1305* ctx, byte* mac)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register Poly1305* ctx asm ("r0") = (Poly1305*)ctx_p;
|
||||
register byte* mac asm ("r1") = (byte*)mac_p;
|
||||
register Poly1305* ctx __asm__ ("r0") = (Poly1305*)ctx_p;
|
||||
register byte* mac __asm__ ("r1") = (byte*)mac_p;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
|
||||
@@ -32,75 +32,36 @@
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifndef NO_SHA256
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_transform_len_k, %object
|
||||
.size L_SHA256_transform_len_k, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_transform_len_k:
|
||||
.word 0x428a2f98
|
||||
.word 0x71374491
|
||||
.word 0xb5c0fbcf
|
||||
.word 0xe9b5dba5
|
||||
.word 0x3956c25b
|
||||
.word 0x59f111f1
|
||||
.word 0x923f82a4
|
||||
.word 0xab1c5ed5
|
||||
.word 0xd807aa98
|
||||
.word 0x12835b01
|
||||
.word 0x243185be
|
||||
.word 0x550c7dc3
|
||||
.word 0x72be5d74
|
||||
.word 0x80deb1fe
|
||||
.word 0x9bdc06a7
|
||||
.word 0xc19bf174
|
||||
.word 0xe49b69c1
|
||||
.word 0xefbe4786
|
||||
.word 0xfc19dc6
|
||||
.word 0x240ca1cc
|
||||
.word 0x2de92c6f
|
||||
.word 0x4a7484aa
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x76f988da
|
||||
.word 0x983e5152
|
||||
.word 0xa831c66d
|
||||
.word 0xb00327c8
|
||||
.word 0xbf597fc7
|
||||
.word 0xc6e00bf3
|
||||
.word 0xd5a79147
|
||||
.word 0x6ca6351
|
||||
.word 0x14292967
|
||||
.word 0x27b70a85
|
||||
.word 0x2e1b2138
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x53380d13
|
||||
.word 0x650a7354
|
||||
.word 0x766a0abb
|
||||
.word 0x81c2c92e
|
||||
.word 0x92722c85
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xa81a664b
|
||||
.word 0xc24b8b70
|
||||
.word 0xc76c51a3
|
||||
.word 0xd192e819
|
||||
.word 0xd6990624
|
||||
.word 0xf40e3585
|
||||
.word 0x106aa070
|
||||
.word 0x19a4c116
|
||||
.word 0x1e376c08
|
||||
.word 0x2748774c
|
||||
.word 0x34b0bcb5
|
||||
.word 0x391c0cb3
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x5b9cca4f
|
||||
.word 0x682e6ff3
|
||||
.word 0x748f82ee
|
||||
.word 0x78a5636f
|
||||
.word 0x84c87814
|
||||
.word 0x8cc70208
|
||||
.word 0x90befffa
|
||||
.word 0xa4506ceb
|
||||
.word 0xbef9a3f7
|
||||
.word 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
.text
|
||||
.align 4
|
||||
.globl Transform_Sha256_Len_base
|
||||
@@ -2568,75 +2529,36 @@ L_SHA256_transform_len_blk_end_15:
|
||||
.size Transform_Sha256_Len_base,.-Transform_Sha256_Len_base
|
||||
#else
|
||||
#ifdef WOLFSSL_ARMASM_NO_HW_CRYPTO
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_transform_neon_len_k, %object
|
||||
.size L_SHA256_transform_neon_len_k, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_transform_neon_len_k:
|
||||
.word 0x428a2f98
|
||||
.word 0x71374491
|
||||
.word 0xb5c0fbcf
|
||||
.word 0xe9b5dba5
|
||||
.word 0x3956c25b
|
||||
.word 0x59f111f1
|
||||
.word 0x923f82a4
|
||||
.word 0xab1c5ed5
|
||||
.word 0xd807aa98
|
||||
.word 0x12835b01
|
||||
.word 0x243185be
|
||||
.word 0x550c7dc3
|
||||
.word 0x72be5d74
|
||||
.word 0x80deb1fe
|
||||
.word 0x9bdc06a7
|
||||
.word 0xc19bf174
|
||||
.word 0xe49b69c1
|
||||
.word 0xefbe4786
|
||||
.word 0xfc19dc6
|
||||
.word 0x240ca1cc
|
||||
.word 0x2de92c6f
|
||||
.word 0x4a7484aa
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x76f988da
|
||||
.word 0x983e5152
|
||||
.word 0xa831c66d
|
||||
.word 0xb00327c8
|
||||
.word 0xbf597fc7
|
||||
.word 0xc6e00bf3
|
||||
.word 0xd5a79147
|
||||
.word 0x6ca6351
|
||||
.word 0x14292967
|
||||
.word 0x27b70a85
|
||||
.word 0x2e1b2138
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x53380d13
|
||||
.word 0x650a7354
|
||||
.word 0x766a0abb
|
||||
.word 0x81c2c92e
|
||||
.word 0x92722c85
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xa81a664b
|
||||
.word 0xc24b8b70
|
||||
.word 0xc76c51a3
|
||||
.word 0xd192e819
|
||||
.word 0xd6990624
|
||||
.word 0xf40e3585
|
||||
.word 0x106aa070
|
||||
.word 0x19a4c116
|
||||
.word 0x1e376c08
|
||||
.word 0x2748774c
|
||||
.word 0x34b0bcb5
|
||||
.word 0x391c0cb3
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x5b9cca4f
|
||||
.word 0x682e6ff3
|
||||
.word 0x748f82ee
|
||||
.word 0x78a5636f
|
||||
.word 0x84c87814
|
||||
.word 0x8cc70208
|
||||
.word 0x90befffa
|
||||
.word 0xa4506ceb
|
||||
.word 0xbef9a3f7
|
||||
.word 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
.text
|
||||
.align 4
|
||||
.fpu neon
|
||||
@@ -3667,75 +3589,36 @@ L_SHA256_transform_neon_len_start:
|
||||
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
||||
.size Transform_Sha256_Len_neon,.-Transform_Sha256_Len_neon
|
||||
#else
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_trans_crypto_len_k, %object
|
||||
.size L_SHA256_trans_crypto_len_k, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_trans_crypto_len_k:
|
||||
.word 0x428a2f98
|
||||
.word 0x71374491
|
||||
.word 0xb5c0fbcf
|
||||
.word 0xe9b5dba5
|
||||
.word 0x3956c25b
|
||||
.word 0x59f111f1
|
||||
.word 0x923f82a4
|
||||
.word 0xab1c5ed5
|
||||
.word 0xd807aa98
|
||||
.word 0x12835b01
|
||||
.word 0x243185be
|
||||
.word 0x550c7dc3
|
||||
.word 0x72be5d74
|
||||
.word 0x80deb1fe
|
||||
.word 0x9bdc06a7
|
||||
.word 0xc19bf174
|
||||
.word 0xe49b69c1
|
||||
.word 0xefbe4786
|
||||
.word 0xfc19dc6
|
||||
.word 0x240ca1cc
|
||||
.word 0x2de92c6f
|
||||
.word 0x4a7484aa
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x76f988da
|
||||
.word 0x983e5152
|
||||
.word 0xa831c66d
|
||||
.word 0xb00327c8
|
||||
.word 0xbf597fc7
|
||||
.word 0xc6e00bf3
|
||||
.word 0xd5a79147
|
||||
.word 0x6ca6351
|
||||
.word 0x14292967
|
||||
.word 0x27b70a85
|
||||
.word 0x2e1b2138
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x53380d13
|
||||
.word 0x650a7354
|
||||
.word 0x766a0abb
|
||||
.word 0x81c2c92e
|
||||
.word 0x92722c85
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xa81a664b
|
||||
.word 0xc24b8b70
|
||||
.word 0xc76c51a3
|
||||
.word 0xd192e819
|
||||
.word 0xd6990624
|
||||
.word 0xf40e3585
|
||||
.word 0x106aa070
|
||||
.word 0x19a4c116
|
||||
.word 0x1e376c08
|
||||
.word 0x2748774c
|
||||
.word 0x34b0bcb5
|
||||
.word 0x391c0cb3
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x5b9cca4f
|
||||
.word 0x682e6ff3
|
||||
.word 0x748f82ee
|
||||
.word 0x78a5636f
|
||||
.word 0x84c87814
|
||||
.word 0x8cc70208
|
||||
.word 0x90befffa
|
||||
.word 0xa4506ceb
|
||||
.word 0xbef9a3f7
|
||||
.word 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
.text
|
||||
.align 4
|
||||
.globl Transform_Sha256_Len_crypto
|
||||
@@ -3745,14 +3628,14 @@ Transform_Sha256_Len_crypto:
|
||||
adr r3, L_SHA256_trans_crypto_len_k
|
||||
# Load K into vector registers
|
||||
vldm r3!, {q8-q11}
|
||||
vldm r3!, {q12, q13}
|
||||
vldm r3!, {q12-q13}
|
||||
# Load digest into working vars
|
||||
vldm r0, {q0, q1}
|
||||
vldm r0, {q0-q1}
|
||||
# Start of loop processing a block
|
||||
L_sha256_len_crypto_begin:
|
||||
# Load W
|
||||
vld1.8 {q4, q5}, [r1]!
|
||||
vld1.8 {q6, q7}, [r1]!
|
||||
vld1.8 {q4-q5}, [r1]!
|
||||
vld1.8 {q6-q7}, [r1]!
|
||||
vrev32.8 q4, q4
|
||||
vrev32.8 q5, q5
|
||||
vrev32.8 q6, q6
|
||||
@@ -3882,7 +3765,7 @@ L_sha256_len_crypto_begin:
|
||||
sub r3, r3, #0xa0
|
||||
bne L_sha256_len_crypto_begin
|
||||
# Store digest back
|
||||
vst1.8 {q0, q1}, [r0]
|
||||
vst1.8 {q0-q1}, [r0]
|
||||
vpop {d8-d15}
|
||||
bx lr
|
||||
.size Transform_Sha256_Len_crypto,.-Transform_Sha256_Len_crypto
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -53,7 +51,7 @@
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word32 L_SHA256_transform_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -80,13 +78,13 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("r0") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("r1") = (const byte*)data_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c asm ("r3") =
|
||||
register wc_Sha256* sha256 __asm__ ("r0") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("r1") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c __asm__ ("r3") =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_len_k_c =
|
||||
@@ -146,7 +144,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
#endif
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load, Reverse and Store W - 64 bytes */
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 6)
|
||||
"ldr r4, [%[data]]\n\t"
|
||||
@@ -364,7 +362,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"mov r3, #3\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_start_fast_%=: \n\t"
|
||||
"L_SHA256_transform_len_start_fast_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"ldr r5, [%[sha256], #16]\n\t"
|
||||
"ldr r6, [%[sha256], #20]\n\t"
|
||||
@@ -1636,7 +1634,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"mov r3, #4\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_start_small_%=: \n\t"
|
||||
"L_SHA256_transform_len_start_small_%=:\n\t"
|
||||
"sub r3, r3, #1\n\t"
|
||||
/* Round 0 */
|
||||
"ldr r5, [%[sha256], #16]\n\t"
|
||||
@@ -1688,7 +1686,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_0_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_0_%=:\n\t"
|
||||
/* Round 1 */
|
||||
"ldr r5, [%[sha256], #12]\n\t"
|
||||
"ldr r6, [%[sha256], #16]\n\t"
|
||||
@@ -1739,7 +1737,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #4]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_1_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_1_%=:\n\t"
|
||||
/* Round 2 */
|
||||
"ldr r5, [%[sha256], #8]\n\t"
|
||||
"ldr r6, [%[sha256], #12]\n\t"
|
||||
@@ -1790,7 +1788,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #8]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_2_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_2_%=:\n\t"
|
||||
/* Round 3 */
|
||||
"ldr r5, [%[sha256], #4]\n\t"
|
||||
"ldr r6, [%[sha256], #8]\n\t"
|
||||
@@ -1841,7 +1839,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #12]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_3_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_3_%=:\n\t"
|
||||
/* Round 4 */
|
||||
"ldr r5, [%[sha256]]\n\t"
|
||||
"ldr r6, [%[sha256], #4]\n\t"
|
||||
@@ -1892,7 +1890,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #16]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_4_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_4_%=:\n\t"
|
||||
/* Round 5 */
|
||||
"ldr r5, [%[sha256], #28]\n\t"
|
||||
"ldr r6, [%[sha256]]\n\t"
|
||||
@@ -1943,7 +1941,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #20]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_5_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_5_%=:\n\t"
|
||||
/* Round 6 */
|
||||
"ldr r5, [%[sha256], #24]\n\t"
|
||||
"ldr r6, [%[sha256], #28]\n\t"
|
||||
@@ -1994,7 +1992,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #24]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_6_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_6_%=:\n\t"
|
||||
/* Round 7 */
|
||||
"ldr r5, [%[sha256], #20]\n\t"
|
||||
"ldr r6, [%[sha256], #24]\n\t"
|
||||
@@ -2045,7 +2043,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #28]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_7_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_7_%=:\n\t"
|
||||
/* Round 8 */
|
||||
"ldr r5, [%[sha256], #16]\n\t"
|
||||
"ldr r6, [%[sha256], #20]\n\t"
|
||||
@@ -2096,7 +2094,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #32]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_8_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_8_%=:\n\t"
|
||||
/* Round 9 */
|
||||
"ldr r5, [%[sha256], #12]\n\t"
|
||||
"ldr r6, [%[sha256], #16]\n\t"
|
||||
@@ -2147,7 +2145,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #36]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_9_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_9_%=:\n\t"
|
||||
/* Round 10 */
|
||||
"ldr r5, [%[sha256], #8]\n\t"
|
||||
"ldr r6, [%[sha256], #12]\n\t"
|
||||
@@ -2198,7 +2196,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #40]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_10_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_10_%=:\n\t"
|
||||
/* Round 11 */
|
||||
"ldr r5, [%[sha256], #4]\n\t"
|
||||
"ldr r6, [%[sha256], #8]\n\t"
|
||||
@@ -2249,7 +2247,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #44]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_11_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_11_%=:\n\t"
|
||||
/* Round 12 */
|
||||
"ldr r5, [%[sha256]]\n\t"
|
||||
"ldr r6, [%[sha256], #4]\n\t"
|
||||
@@ -2300,7 +2298,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #48]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_12_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_12_%=:\n\t"
|
||||
/* Round 13 */
|
||||
"ldr r5, [%[sha256], #28]\n\t"
|
||||
"ldr r6, [%[sha256]]\n\t"
|
||||
@@ -2351,7 +2349,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #52]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_13_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_13_%=:\n\t"
|
||||
/* Round 14 */
|
||||
"ldr r5, [%[sha256], #24]\n\t"
|
||||
"ldr r6, [%[sha256], #28]\n\t"
|
||||
@@ -2402,7 +2400,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #56]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_14_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_14_%=:\n\t"
|
||||
/* Round 15 */
|
||||
"ldr r5, [%[sha256], #20]\n\t"
|
||||
"ldr r6, [%[sha256], #24]\n\t"
|
||||
@@ -2453,7 +2451,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"add r9, r9, r4\n\t"
|
||||
"str r9, [sp, #60]\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_blk_end_15_%=: \n\t"
|
||||
"L_SHA256_transform_len_blk_end_15_%=:\n\t"
|
||||
"cmp r3, #0\n\t"
|
||||
"add r12, r12, #0x40\n\t"
|
||||
"bne L_SHA256_transform_len_start_small_%=\n\t"
|
||||
@@ -2586,7 +2584,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
|
||||
#else
|
||||
#ifdef WOLFSSL_ARMASM_NO_HW_CRYPTO
|
||||
static const word32 L_SHA256_transform_neon_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_neon_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -2613,13 +2611,13 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_neon(wc_Sha256* sha256_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_neon(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("r0") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("r1") = (const byte*)data_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_neon_len_k_c asm ("r3") =
|
||||
register wc_Sha256* sha256 __asm__ ("r0") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("r1") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_neon_len_k_c __asm__ ("r3") =
|
||||
(word32*)&L_SHA256_transform_neon_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_neon_len_k_c =
|
||||
@@ -2661,7 +2659,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_neon(wc_Sha256* sha256,
|
||||
#endif
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_neon_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_neon_len_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
"vld1.8 {d0-d3}, [%[data]]!\n\t"
|
||||
"vld1.8 {d4-d7}, [%[data]]!\n\t"
|
||||
@@ -2684,7 +2682,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_neon(wc_Sha256* sha256,
|
||||
"mov lr, #3\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_neon_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_neon_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"vmov.32 r10, d0[0]\n\t"
|
||||
"ror %[sha256], r6, #6\n\t"
|
||||
@@ -3663,7 +3661,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_neon(wc_Sha256* sha256,
|
||||
}
|
||||
|
||||
#else
|
||||
static const word32 L_SHA256_trans_crypto_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_trans_crypto_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -3690,13 +3688,13 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_crypto(wc_Sha256* sha256_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_crypto(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("r0") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("r1") = (const byte*)data_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_trans_crypto_len_k_c asm ("r3") =
|
||||
register wc_Sha256* sha256 __asm__ ("r0") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("r1") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_trans_crypto_len_k_c __asm__ ("r3") =
|
||||
(word32*)&L_SHA256_trans_crypto_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_trans_crypto_len_k_c =
|
||||
@@ -3712,7 +3710,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_crypto(wc_Sha256* sha256,
|
||||
"vldm %[sha256], {q0-q1}\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_sha256_len_crypto_begin_%=: \n\t"
|
||||
"L_sha256_len_crypto_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
"vld1.8 {q4-q5}, [%[data]]!\n\t"
|
||||
"vld1.8 {q6-q7}, [%[data]]!\n\t"
|
||||
|
||||
@@ -32,59 +32,32 @@
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifdef WOLFSSL_SHA3
|
||||
#ifndef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_sha3_arm32_neon_rt, %object
|
||||
.size L_sha3_arm32_neon_rt, 192
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_arm32_neon_rt:
|
||||
.word 0x1
|
||||
.word 0x0
|
||||
.word 0x8082
|
||||
.word 0x0
|
||||
.word 0x808a
|
||||
.word 0x80000000
|
||||
.word 0x80008000
|
||||
.word 0x80000000
|
||||
.word 0x808b
|
||||
.word 0x0
|
||||
.word 0x80000001
|
||||
.word 0x0
|
||||
.word 0x80008081
|
||||
.word 0x80000000
|
||||
.word 0x8009
|
||||
.word 0x80000000
|
||||
.word 0x8a
|
||||
.word 0x0
|
||||
.word 0x88
|
||||
.word 0x0
|
||||
.word 0x80008009
|
||||
.word 0x0
|
||||
.word 0x8000000a
|
||||
.word 0x0
|
||||
.word 0x8000808b
|
||||
.word 0x0
|
||||
.word 0x8b
|
||||
.word 0x80000000
|
||||
.word 0x8089
|
||||
.word 0x80000000
|
||||
.word 0x8003
|
||||
.word 0x80000000
|
||||
.word 0x8002
|
||||
.word 0x80000000
|
||||
.word 0x80
|
||||
.word 0x80000000
|
||||
.word 0x800a
|
||||
.word 0x0
|
||||
.word 0x8000000a
|
||||
.word 0x80000000
|
||||
.word 0x80008081
|
||||
.word 0x80000000
|
||||
.word 0x8080
|
||||
.word 0x80000000
|
||||
.word 0x80000001
|
||||
.word 0x0
|
||||
.word 0x80008008
|
||||
.word 0x80000000
|
||||
.quad 0x0000000000000001,0x0000000000008082
|
||||
.quad 0x800000000000808a,0x8000000080008000
|
||||
.quad 0x000000000000808b,0x0000000080000001
|
||||
.quad 0x8000000080008081,0x8000000000008009
|
||||
.quad 0x000000000000008a,0x0000000000000088
|
||||
.quad 0x0000000080008009,0x000000008000000a
|
||||
.quad 0x000000008000808b,0x800000000000008b
|
||||
.quad 0x8000000000008089,0x8000000000008003
|
||||
.quad 0x8000000000008002,0x8000000000000080
|
||||
.quad 0x000000000000800a,0x800000008000000a
|
||||
.quad 0x8000000080008081,0x8000000000008080
|
||||
.quad 0x0000000080000001,0x8000000080008008
|
||||
.text
|
||||
.align 4
|
||||
.globl BlockSha3
|
||||
@@ -125,7 +98,7 @@ L_sha3_arm32_neon_begin:
|
||||
veor d28, d28, d22
|
||||
veor d29, d29, d23
|
||||
veor d25, d25, d24
|
||||
vst1.8 {d25, d26}, [r3]
|
||||
vst1.8 {d25-d26}, [r3]
|
||||
# Calc t[0..4] and XOR into s[i*5..i*5+4]
|
||||
# t[0]
|
||||
vshr.u64 d30, d27, #63
|
||||
@@ -353,59 +326,32 @@ L_sha3_arm32_neon_begin:
|
||||
.size BlockSha3,.-BlockSha3
|
||||
#endif /* WOLFSSL_ARMASM_NO_NEON */
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_sha3_arm32_rt, %object
|
||||
.size L_sha3_arm32_rt, 192
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_arm32_rt:
|
||||
.word 0x1
|
||||
.word 0x0
|
||||
.word 0x8082
|
||||
.word 0x0
|
||||
.word 0x808a
|
||||
.word 0x80000000
|
||||
.word 0x80008000
|
||||
.word 0x80000000
|
||||
.word 0x808b
|
||||
.word 0x0
|
||||
.word 0x80000001
|
||||
.word 0x0
|
||||
.word 0x80008081
|
||||
.word 0x80000000
|
||||
.word 0x8009
|
||||
.word 0x80000000
|
||||
.word 0x8a
|
||||
.word 0x0
|
||||
.word 0x88
|
||||
.word 0x0
|
||||
.word 0x80008009
|
||||
.word 0x0
|
||||
.word 0x8000000a
|
||||
.word 0x0
|
||||
.word 0x8000808b
|
||||
.word 0x0
|
||||
.word 0x8b
|
||||
.word 0x80000000
|
||||
.word 0x8089
|
||||
.word 0x80000000
|
||||
.word 0x8003
|
||||
.word 0x80000000
|
||||
.word 0x8002
|
||||
.word 0x80000000
|
||||
.word 0x80
|
||||
.word 0x80000000
|
||||
.word 0x800a
|
||||
.word 0x0
|
||||
.word 0x8000000a
|
||||
.word 0x80000000
|
||||
.word 0x80008081
|
||||
.word 0x80000000
|
||||
.word 0x8080
|
||||
.word 0x80000000
|
||||
.word 0x80000001
|
||||
.word 0x0
|
||||
.word 0x80008008
|
||||
.word 0x80000000
|
||||
.quad 0x0000000000000001,0x0000000000008082
|
||||
.quad 0x800000000000808a,0x8000000080008000
|
||||
.quad 0x000000000000808b,0x0000000080000001
|
||||
.quad 0x8000000080008081,0x8000000000008009
|
||||
.quad 0x000000000000008a,0x0000000000000088
|
||||
.quad 0x0000000080008009,0x000000008000000a
|
||||
.quad 0x000000008000808b,0x800000000000008b
|
||||
.quad 0x8000000000008089,0x8000000000008003
|
||||
.quad 0x8000000000008002,0x8000000000000080
|
||||
.quad 0x000000000000800a,0x800000008000000a
|
||||
.quad 0x8000000080008081,0x8000000000008080
|
||||
.quad 0x0000000080000001,0x8000000080008008
|
||||
.text
|
||||
.align 4
|
||||
.globl BlockSha3
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -51,7 +49,7 @@
|
||||
|
||||
#ifdef WOLFSSL_SHA3
|
||||
#ifndef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word64 L_sha3_arm32_neon_rt[] = {
|
||||
XALIGNED(16) static const word64 L_sha3_arm32_neon_rt[] = {
|
||||
0x0000000000000001UL, 0x0000000000008082UL,
|
||||
0x800000000000808aUL, 0x8000000080008000UL,
|
||||
0x000000000000808bUL, 0x0000000080000001UL,
|
||||
@@ -72,11 +70,11 @@ static const word64 L_sha3_arm32_neon_rt[] = {
|
||||
WC_OMIT_FRAME_POINTER void BlockSha3(word64* state_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register word64* state asm ("r0") = (word64*)state_p;
|
||||
register word64* L_sha3_arm32_neon_rt_c asm ("r1") =
|
||||
register word64* state __asm__ ("r0") = (word64*)state_p;
|
||||
register word64* L_sha3_arm32_neon_rt_c __asm__ ("r1") =
|
||||
(word64*)&L_sha3_arm32_neon_rt;
|
||||
#else
|
||||
register word64* L_sha3_arm32_neon_rt_c = (word64*)&L_sha3_arm32_neon_rt;
|
||||
@@ -96,7 +94,7 @@ WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
"vld1.8 {d24}, [%[state]]\n\t"
|
||||
"sub %[state], %[state], #0xc0\n\t"
|
||||
"\n"
|
||||
"L_sha3_arm32_neon_begin_%=: \n\t"
|
||||
"L_sha3_arm32_neon_begin_%=:\n\t"
|
||||
/* Calc b[0..4] */
|
||||
"veor d26, d0, d5\n\t"
|
||||
"veor d27, d1, d6\n\t"
|
||||
@@ -359,7 +357,7 @@ WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_NO_NEON */
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word64 L_sha3_arm32_rt[] = {
|
||||
XALIGNED(16) static const word64 L_sha3_arm32_rt[] = {
|
||||
0x0000000000000001UL, 0x0000000000008082UL,
|
||||
0x800000000000808aUL, 0x8000000080008000UL,
|
||||
0x000000000000808bUL, 0x0000000080000001UL,
|
||||
@@ -380,11 +378,12 @@ static const word64 L_sha3_arm32_rt[] = {
|
||||
WC_OMIT_FRAME_POINTER void BlockSha3(word64* state_p)
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register word64* state asm ("r0") = (word64*)state_p;
|
||||
register word64* L_sha3_arm32_rt_c asm ("r1") = (word64*)&L_sha3_arm32_rt;
|
||||
register word64* state __asm__ ("r0") = (word64*)state_p;
|
||||
register word64* L_sha3_arm32_rt_c __asm__ ("r1") =
|
||||
(word64*)&L_sha3_arm32_rt;
|
||||
#else
|
||||
register word64* L_sha3_arm32_rt_c = (word64*)&L_sha3_arm32_rt;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
@@ -394,7 +393,7 @@ WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
"mov r1, %[L_sha3_arm32_rt]\n\t"
|
||||
"mov r2, #12\n\t"
|
||||
"\n"
|
||||
"L_sha3_arm32_begin_%=: \n\t"
|
||||
"L_sha3_arm32_begin_%=:\n\t"
|
||||
"str r2, [sp, #200]\n\t"
|
||||
/* Round even */
|
||||
/* Calc b[4] */
|
||||
|
||||
@@ -32,171 +32,60 @@
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA512_transform_len_k, %object
|
||||
.size L_SHA512_transform_len_k, 640
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA512_transform_len_k:
|
||||
.word 0xd728ae22
|
||||
.word 0x428a2f98
|
||||
.word 0x23ef65cd
|
||||
.word 0x71374491
|
||||
.word 0xec4d3b2f
|
||||
.word 0xb5c0fbcf
|
||||
.word 0x8189dbbc
|
||||
.word 0xe9b5dba5
|
||||
.word 0xf348b538
|
||||
.word 0x3956c25b
|
||||
.word 0xb605d019
|
||||
.word 0x59f111f1
|
||||
.word 0xaf194f9b
|
||||
.word 0x923f82a4
|
||||
.word 0xda6d8118
|
||||
.word 0xab1c5ed5
|
||||
.word 0xa3030242
|
||||
.word 0xd807aa98
|
||||
.word 0x45706fbe
|
||||
.word 0x12835b01
|
||||
.word 0x4ee4b28c
|
||||
.word 0x243185be
|
||||
.word 0xd5ffb4e2
|
||||
.word 0x550c7dc3
|
||||
.word 0xf27b896f
|
||||
.word 0x72be5d74
|
||||
.word 0x3b1696b1
|
||||
.word 0x80deb1fe
|
||||
.word 0x25c71235
|
||||
.word 0x9bdc06a7
|
||||
.word 0xcf692694
|
||||
.word 0xc19bf174
|
||||
.word 0x9ef14ad2
|
||||
.word 0xe49b69c1
|
||||
.word 0x384f25e3
|
||||
.word 0xefbe4786
|
||||
.word 0x8b8cd5b5
|
||||
.word 0xfc19dc6
|
||||
.word 0x77ac9c65
|
||||
.word 0x240ca1cc
|
||||
.word 0x592b0275
|
||||
.word 0x2de92c6f
|
||||
.word 0x6ea6e483
|
||||
.word 0x4a7484aa
|
||||
.word 0xbd41fbd4
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x831153b5
|
||||
.word 0x76f988da
|
||||
.word 0xee66dfab
|
||||
.word 0x983e5152
|
||||
.word 0x2db43210
|
||||
.word 0xa831c66d
|
||||
.word 0x98fb213f
|
||||
.word 0xb00327c8
|
||||
.word 0xbeef0ee4
|
||||
.word 0xbf597fc7
|
||||
.word 0x3da88fc2
|
||||
.word 0xc6e00bf3
|
||||
.word 0x930aa725
|
||||
.word 0xd5a79147
|
||||
.word 0xe003826f
|
||||
.word 0x6ca6351
|
||||
.word 0xa0e6e70
|
||||
.word 0x14292967
|
||||
.word 0x46d22ffc
|
||||
.word 0x27b70a85
|
||||
.word 0x5c26c926
|
||||
.word 0x2e1b2138
|
||||
.word 0x5ac42aed
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x9d95b3df
|
||||
.word 0x53380d13
|
||||
.word 0x8baf63de
|
||||
.word 0x650a7354
|
||||
.word 0x3c77b2a8
|
||||
.word 0x766a0abb
|
||||
.word 0x47edaee6
|
||||
.word 0x81c2c92e
|
||||
.word 0x1482353b
|
||||
.word 0x92722c85
|
||||
.word 0x4cf10364
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xbc423001
|
||||
.word 0xa81a664b
|
||||
.word 0xd0f89791
|
||||
.word 0xc24b8b70
|
||||
.word 0x654be30
|
||||
.word 0xc76c51a3
|
||||
.word 0xd6ef5218
|
||||
.word 0xd192e819
|
||||
.word 0x5565a910
|
||||
.word 0xd6990624
|
||||
.word 0x5771202a
|
||||
.word 0xf40e3585
|
||||
.word 0x32bbd1b8
|
||||
.word 0x106aa070
|
||||
.word 0xb8d2d0c8
|
||||
.word 0x19a4c116
|
||||
.word 0x5141ab53
|
||||
.word 0x1e376c08
|
||||
.word 0xdf8eeb99
|
||||
.word 0x2748774c
|
||||
.word 0xe19b48a8
|
||||
.word 0x34b0bcb5
|
||||
.word 0xc5c95a63
|
||||
.word 0x391c0cb3
|
||||
.word 0xe3418acb
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x7763e373
|
||||
.word 0x5b9cca4f
|
||||
.word 0xd6b2b8a3
|
||||
.word 0x682e6ff3
|
||||
.word 0x5defb2fc
|
||||
.word 0x748f82ee
|
||||
.word 0x43172f60
|
||||
.word 0x78a5636f
|
||||
.word 0xa1f0ab72
|
||||
.word 0x84c87814
|
||||
.word 0x1a6439ec
|
||||
.word 0x8cc70208
|
||||
.word 0x23631e28
|
||||
.word 0x90befffa
|
||||
.word 0xde82bde9
|
||||
.word 0xa4506ceb
|
||||
.word 0xb2c67915
|
||||
.word 0xbef9a3f7
|
||||
.word 0xe372532b
|
||||
.word 0xc67178f2
|
||||
.word 0xea26619c
|
||||
.word 0xca273ece
|
||||
.word 0x21c0c207
|
||||
.word 0xd186b8c7
|
||||
.word 0xcde0eb1e
|
||||
.word 0xeada7dd6
|
||||
.word 0xee6ed178
|
||||
.word 0xf57d4f7f
|
||||
.word 0x72176fba
|
||||
.word 0x6f067aa
|
||||
.word 0xa2c898a6
|
||||
.word 0xa637dc5
|
||||
.word 0xbef90dae
|
||||
.word 0x113f9804
|
||||
.word 0x131c471b
|
||||
.word 0x1b710b35
|
||||
.word 0x23047d84
|
||||
.word 0x28db77f5
|
||||
.word 0x40c72493
|
||||
.word 0x32caab7b
|
||||
.word 0x15c9bebc
|
||||
.word 0x3c9ebe0a
|
||||
.word 0x9c100d4c
|
||||
.word 0x431d67c4
|
||||
.word 0xcb3e42b6
|
||||
.word 0x4cc5d4be
|
||||
.word 0xfc657e2a
|
||||
.word 0x597f299c
|
||||
.word 0x3ad6faec
|
||||
.word 0x5fcb6fab
|
||||
.word 0x4a475817
|
||||
.word 0x6c44198c
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
|
||||
.quad 0x3956c25bf348b538,0x59f111f1b605d019
|
||||
.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
|
||||
.quad 0xd807aa98a3030242,0x12835b0145706fbe
|
||||
.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
|
||||
.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
|
||||
.quad 0x9bdc06a725c71235,0xc19bf174cf692694
|
||||
.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
|
||||
.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
|
||||
.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
|
||||
.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
|
||||
.quad 0x983e5152ee66dfab,0xa831c66d2db43210
|
||||
.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
|
||||
.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
|
||||
.quad 0x06ca6351e003826f,0x142929670a0e6e70
|
||||
.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
|
||||
.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
|
||||
.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
|
||||
.quad 0x81c2c92e47edaee6,0x92722c851482353b
|
||||
.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
|
||||
.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
|
||||
.quad 0xd192e819d6ef5218,0xd69906245565a910
|
||||
.quad 0xf40e35855771202a,0x106aa07032bbd1b8
|
||||
.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
|
||||
.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
|
||||
.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
|
||||
.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
|
||||
.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
|
||||
.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
|
||||
.quad 0x90befffa23631e28,0xa4506cebde82bde9
|
||||
.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
|
||||
.quad 0xca273eceea26619c,0xd186b8c721c0c207
|
||||
.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
|
||||
.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
|
||||
.quad 0x113f9804bef90dae,0x1b710b35131c471b
|
||||
.quad 0x28db77f523047d84,0x32caab7b40c72493
|
||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||
.text
|
||||
.align 4
|
||||
.globl Transform_Sha512_Len_base
|
||||
@@ -7618,171 +7507,60 @@ L_SHA512_transform_len_start:
|
||||
.size Transform_Sha512_Len_base,.-Transform_Sha512_Len_base
|
||||
#endif /* WOLFSSL_ARMASM_NO_NEON */
|
||||
#ifndef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA512_transform_neon_len_k, %object
|
||||
.size L_SHA512_transform_neon_len_k, 640
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA512_transform_neon_len_k:
|
||||
.word 0xd728ae22
|
||||
.word 0x428a2f98
|
||||
.word 0x23ef65cd
|
||||
.word 0x71374491
|
||||
.word 0xec4d3b2f
|
||||
.word 0xb5c0fbcf
|
||||
.word 0x8189dbbc
|
||||
.word 0xe9b5dba5
|
||||
.word 0xf348b538
|
||||
.word 0x3956c25b
|
||||
.word 0xb605d019
|
||||
.word 0x59f111f1
|
||||
.word 0xaf194f9b
|
||||
.word 0x923f82a4
|
||||
.word 0xda6d8118
|
||||
.word 0xab1c5ed5
|
||||
.word 0xa3030242
|
||||
.word 0xd807aa98
|
||||
.word 0x45706fbe
|
||||
.word 0x12835b01
|
||||
.word 0x4ee4b28c
|
||||
.word 0x243185be
|
||||
.word 0xd5ffb4e2
|
||||
.word 0x550c7dc3
|
||||
.word 0xf27b896f
|
||||
.word 0x72be5d74
|
||||
.word 0x3b1696b1
|
||||
.word 0x80deb1fe
|
||||
.word 0x25c71235
|
||||
.word 0x9bdc06a7
|
||||
.word 0xcf692694
|
||||
.word 0xc19bf174
|
||||
.word 0x9ef14ad2
|
||||
.word 0xe49b69c1
|
||||
.word 0x384f25e3
|
||||
.word 0xefbe4786
|
||||
.word 0x8b8cd5b5
|
||||
.word 0xfc19dc6
|
||||
.word 0x77ac9c65
|
||||
.word 0x240ca1cc
|
||||
.word 0x592b0275
|
||||
.word 0x2de92c6f
|
||||
.word 0x6ea6e483
|
||||
.word 0x4a7484aa
|
||||
.word 0xbd41fbd4
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x831153b5
|
||||
.word 0x76f988da
|
||||
.word 0xee66dfab
|
||||
.word 0x983e5152
|
||||
.word 0x2db43210
|
||||
.word 0xa831c66d
|
||||
.word 0x98fb213f
|
||||
.word 0xb00327c8
|
||||
.word 0xbeef0ee4
|
||||
.word 0xbf597fc7
|
||||
.word 0x3da88fc2
|
||||
.word 0xc6e00bf3
|
||||
.word 0x930aa725
|
||||
.word 0xd5a79147
|
||||
.word 0xe003826f
|
||||
.word 0x6ca6351
|
||||
.word 0xa0e6e70
|
||||
.word 0x14292967
|
||||
.word 0x46d22ffc
|
||||
.word 0x27b70a85
|
||||
.word 0x5c26c926
|
||||
.word 0x2e1b2138
|
||||
.word 0x5ac42aed
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x9d95b3df
|
||||
.word 0x53380d13
|
||||
.word 0x8baf63de
|
||||
.word 0x650a7354
|
||||
.word 0x3c77b2a8
|
||||
.word 0x766a0abb
|
||||
.word 0x47edaee6
|
||||
.word 0x81c2c92e
|
||||
.word 0x1482353b
|
||||
.word 0x92722c85
|
||||
.word 0x4cf10364
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xbc423001
|
||||
.word 0xa81a664b
|
||||
.word 0xd0f89791
|
||||
.word 0xc24b8b70
|
||||
.word 0x654be30
|
||||
.word 0xc76c51a3
|
||||
.word 0xd6ef5218
|
||||
.word 0xd192e819
|
||||
.word 0x5565a910
|
||||
.word 0xd6990624
|
||||
.word 0x5771202a
|
||||
.word 0xf40e3585
|
||||
.word 0x32bbd1b8
|
||||
.word 0x106aa070
|
||||
.word 0xb8d2d0c8
|
||||
.word 0x19a4c116
|
||||
.word 0x5141ab53
|
||||
.word 0x1e376c08
|
||||
.word 0xdf8eeb99
|
||||
.word 0x2748774c
|
||||
.word 0xe19b48a8
|
||||
.word 0x34b0bcb5
|
||||
.word 0xc5c95a63
|
||||
.word 0x391c0cb3
|
||||
.word 0xe3418acb
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x7763e373
|
||||
.word 0x5b9cca4f
|
||||
.word 0xd6b2b8a3
|
||||
.word 0x682e6ff3
|
||||
.word 0x5defb2fc
|
||||
.word 0x748f82ee
|
||||
.word 0x43172f60
|
||||
.word 0x78a5636f
|
||||
.word 0xa1f0ab72
|
||||
.word 0x84c87814
|
||||
.word 0x1a6439ec
|
||||
.word 0x8cc70208
|
||||
.word 0x23631e28
|
||||
.word 0x90befffa
|
||||
.word 0xde82bde9
|
||||
.word 0xa4506ceb
|
||||
.word 0xb2c67915
|
||||
.word 0xbef9a3f7
|
||||
.word 0xe372532b
|
||||
.word 0xc67178f2
|
||||
.word 0xea26619c
|
||||
.word 0xca273ece
|
||||
.word 0x21c0c207
|
||||
.word 0xd186b8c7
|
||||
.word 0xcde0eb1e
|
||||
.word 0xeada7dd6
|
||||
.word 0xee6ed178
|
||||
.word 0xf57d4f7f
|
||||
.word 0x72176fba
|
||||
.word 0x6f067aa
|
||||
.word 0xa2c898a6
|
||||
.word 0xa637dc5
|
||||
.word 0xbef90dae
|
||||
.word 0x113f9804
|
||||
.word 0x131c471b
|
||||
.word 0x1b710b35
|
||||
.word 0x23047d84
|
||||
.word 0x28db77f5
|
||||
.word 0x40c72493
|
||||
.word 0x32caab7b
|
||||
.word 0x15c9bebc
|
||||
.word 0x3c9ebe0a
|
||||
.word 0x9c100d4c
|
||||
.word 0x431d67c4
|
||||
.word 0xcb3e42b6
|
||||
.word 0x4cc5d4be
|
||||
.word 0xfc657e2a
|
||||
.word 0x597f299c
|
||||
.word 0x3ad6faec
|
||||
.word 0x5fcb6fab
|
||||
.word 0x4a475817
|
||||
.word 0x6c44198c
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
|
||||
.quad 0x3956c25bf348b538,0x59f111f1b605d019
|
||||
.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
|
||||
.quad 0xd807aa98a3030242,0x12835b0145706fbe
|
||||
.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
|
||||
.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
|
||||
.quad 0x9bdc06a725c71235,0xc19bf174cf692694
|
||||
.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
|
||||
.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
|
||||
.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
|
||||
.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
|
||||
.quad 0x983e5152ee66dfab,0xa831c66d2db43210
|
||||
.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
|
||||
.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
|
||||
.quad 0x06ca6351e003826f,0x142929670a0e6e70
|
||||
.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
|
||||
.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
|
||||
.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
|
||||
.quad 0x81c2c92e47edaee6,0x92722c851482353b
|
||||
.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
|
||||
.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
|
||||
.quad 0xd192e819d6ef5218,0xd69906245565a910
|
||||
.quad 0xf40e35855771202a,0x106aa07032bbd1b8
|
||||
.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
|
||||
.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
|
||||
.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
|
||||
.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
|
||||
.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
|
||||
.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
|
||||
.quad 0x90befffa23631e28,0xa4506cebde82bde9
|
||||
.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
|
||||
.quad 0xca273eceea26619c,0xd186b8c721c0c207
|
||||
.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
|
||||
.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
|
||||
.quad 0x113f9804bef90dae,0x1b710b35131c471b
|
||||
.quad 0x28db77f523047d84,0x32caab7b40c72493
|
||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||
.text
|
||||
.align 4
|
||||
.fpu neon
|
||||
@@ -7796,10 +7574,10 @@ Transform_Sha512_Len_neon:
|
||||
# Start of loop processing a block
|
||||
L_SHA512_transform_neon_len_begin:
|
||||
# Load W
|
||||
vld1.8 {q8, q9}, [r1]!
|
||||
vld1.8 {q10, q11}, [r1]!
|
||||
vld1.8 {q12, q13}, [r1]!
|
||||
vld1.8 {q14, q15}, [r1]!
|
||||
vld1.8 {q8-q9}, [r1]!
|
||||
vld1.8 {q10-q11}, [r1]!
|
||||
vld1.8 {q12-q13}, [r1]!
|
||||
vld1.8 {q14-q15}, [r1]!
|
||||
#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
|
||||
vrev64.8 q8, q8
|
||||
vrev64.8 q9, q9
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -53,7 +51,7 @@
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word64 L_SHA512_transform_len_k[] = {
|
||||
XALIGNED(16) static const word64 L_SHA512_transform_len_k[] = {
|
||||
0x428a2f98d728ae22UL, 0x7137449123ef65cdUL,
|
||||
0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
|
||||
0x3956c25bf348b538UL, 0x59f111f1b605d019UL,
|
||||
@@ -104,13 +102,13 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512,
|
||||
const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha512* sha512 asm ("r0") = (wc_Sha512*)sha512_p;
|
||||
register const byte* data asm ("r1") = (const byte*)data_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register word64* L_SHA512_transform_len_k_c asm ("r3") =
|
||||
register wc_Sha512* sha512 __asm__ ("r0") = (wc_Sha512*)sha512_p;
|
||||
register const byte* data __asm__ ("r1") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word64* L_SHA512_transform_len_k_c __asm__ ("r3") =
|
||||
(word64*)&L_SHA512_transform_len_k;
|
||||
#else
|
||||
register word64* L_SHA512_transform_len_k_c =
|
||||
@@ -218,7 +216,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512,
|
||||
#endif
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA512_transform_len_begin_%=: \n\t"
|
||||
"L_SHA512_transform_len_begin_%=:\n\t"
|
||||
/* Load, Reverse and Store W - 64 bytes */
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 6)
|
||||
"ldr r4, [%[data]]\n\t"
|
||||
@@ -529,7 +527,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512,
|
||||
"mov r12, #4\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA512_transform_len_start_%=: \n\t"
|
||||
"L_SHA512_transform_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
|
||||
"ldr r4, [%[sha512], #32]\n\t"
|
||||
@@ -7549,7 +7547,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512,
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
|
||||
#ifndef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word64 L_SHA512_transform_neon_len_k[] = {
|
||||
XALIGNED(16) static const word64 L_SHA512_transform_neon_len_k[] = {
|
||||
0x428a2f98d728ae22UL, 0x7137449123ef65cdUL,
|
||||
0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
|
||||
0x3956c25bf348b538UL, 0x59f111f1b605d019UL,
|
||||
@@ -7600,13 +7598,13 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_neon(wc_Sha512* sha512_p,
|
||||
#else
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_neon(wc_Sha512* sha512,
|
||||
const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha512* sha512 asm ("r0") = (wc_Sha512*)sha512_p;
|
||||
register const byte* data asm ("r1") = (const byte*)data_p;
|
||||
register word32 len asm ("r2") = (word32)len_p;
|
||||
register word64* L_SHA512_transform_neon_len_k_c asm ("r3") =
|
||||
register wc_Sha512* sha512 __asm__ ("r0") = (wc_Sha512*)sha512_p;
|
||||
register const byte* data __asm__ ("r1") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word64* L_SHA512_transform_neon_len_k_c __asm__ ("r3") =
|
||||
(word64*)&L_SHA512_transform_neon_len_k;
|
||||
#else
|
||||
register word64* L_SHA512_transform_neon_len_k_c =
|
||||
@@ -7619,7 +7617,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_neon(wc_Sha512* sha512,
|
||||
"vldm.64 %[sha512], {d0-d7}\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA512_transform_neon_len_begin_%=: \n\t"
|
||||
"L_SHA512_transform_neon_len_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
"vld1.8 {q8-q9}, [%[data]]!\n\t"
|
||||
"vld1.8 {q10-q11}, [%[data]]!\n\t"
|
||||
@@ -7655,7 +7653,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_neon(wc_Sha512* sha512,
|
||||
"mov r12, #4\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA512_transform_neon_len_start_%=: \n\t"
|
||||
"L_SHA512_transform_neon_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"vld1.64 {d12}, [r3:64]!\n\t"
|
||||
"vshl.u64 d8, d4, #50\n\t"
|
||||
|
||||
@@ -43123,16 +43123,17 @@ L_aes_xts_decrypt_arm64_crypto_done:
|
||||
defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_NEON_te, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_NEON_te, %object
|
||||
.size L_AES_ARM64_NEON_te, 256
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_NEON_te:
|
||||
.byte 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
|
||||
@@ -43169,16 +43170,17 @@ L_AES_ARM64_NEON_te:
|
||||
.byte 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_NEON_shift_rows_shuffle, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_NEON_shift_rows_shuffle, %object
|
||||
.size L_AES_ARM64_NEON_shift_rows_shuffle, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_NEON_shift_rows_shuffle:
|
||||
.byte 0x0c,0x09,0x06,0x03,0x00,0x0d,0x0a,0x07
|
||||
@@ -43249,28 +43251,22 @@ L_AES_invert_key_NEON_mix_loop:
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_NEON_rcon, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_NEON_rcon, %object
|
||||
.size L_AES_ARM64_NEON_rcon, 40
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_NEON_rcon:
|
||||
.word 0x01000000
|
||||
.word 0x02000000
|
||||
.word 0x04000000
|
||||
.word 0x08000000
|
||||
.word 0x10000000
|
||||
.word 0x20000000
|
||||
.word 0x40000000
|
||||
.word 0x80000000
|
||||
.word 0x1b000000
|
||||
.word 0x36000000
|
||||
.long 0x01000000,0x02000000,0x04000000,0x08000000
|
||||
.long 0x10000000,0x20000000,0x40000000,0x80000000
|
||||
.long 0x1b000000,0x36000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl AES_set_encrypt_key_NEON
|
||||
@@ -45307,16 +45303,17 @@ L_AES_CTR_encrypt_NEON_data_done:
|
||||
defined(HAVE_AES_CBC) || defined(HAVE_AES_ECB)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_NEON_td, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_NEON_td, %object
|
||||
.size L_AES_ARM64_NEON_td, 256
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_NEON_td:
|
||||
.byte 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
|
||||
@@ -45353,16 +45350,17 @@ L_AES_ARM64_NEON_td:
|
||||
.byte 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_NEON_shift_rows_invshuffle, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_NEON_shift_rows_invshuffle, %object
|
||||
.size L_AES_ARM64_NEON_shift_rows_invshuffle, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_NEON_shift_rows_invshuffle:
|
||||
.byte 0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07
|
||||
@@ -51289,548 +51287,166 @@ L_AES_XTS_decrypt_NEON_data_done:
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_td, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_td, %object
|
||||
.size L_AES_ARM64_td, 1024
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_td:
|
||||
.word 0x5051f4a7
|
||||
.word 0x537e4165
|
||||
.word 0xc31a17a4
|
||||
.word 0x963a275e
|
||||
.word 0xcb3bab6b
|
||||
.word 0xf11f9d45
|
||||
.word 0xabacfa58
|
||||
.word 0x934be303
|
||||
.word 0x552030fa
|
||||
.word 0xf6ad766d
|
||||
.word 0x9188cc76
|
||||
.word 0x25f5024c
|
||||
.word 0xfc4fe5d7
|
||||
.word 0xd7c52acb
|
||||
.word 0x80263544
|
||||
.word 0x8fb562a3
|
||||
.word 0x49deb15a
|
||||
.word 0x6725ba1b
|
||||
.word 0x9845ea0e
|
||||
.word 0xe15dfec0
|
||||
.word 0x02c32f75
|
||||
.word 0x12814cf0
|
||||
.word 0xa38d4697
|
||||
.word 0xc66bd3f9
|
||||
.word 0xe7038f5f
|
||||
.word 0x9515929c
|
||||
.word 0xebbf6d7a
|
||||
.word 0xda955259
|
||||
.word 0x2dd4be83
|
||||
.word 0xd3587421
|
||||
.word 0x2949e069
|
||||
.word 0x448ec9c8
|
||||
.word 0x6a75c289
|
||||
.word 0x78f48e79
|
||||
.word 0x6b99583e
|
||||
.word 0xdd27b971
|
||||
.word 0xb6bee14f
|
||||
.word 0x17f088ad
|
||||
.word 0x66c920ac
|
||||
.word 0xb47dce3a
|
||||
.word 0x1863df4a
|
||||
.word 0x82e51a31
|
||||
.word 0x60975133
|
||||
.word 0x4562537f
|
||||
.word 0xe0b16477
|
||||
.word 0x84bb6bae
|
||||
.word 0x1cfe81a0
|
||||
.word 0x94f9082b
|
||||
.word 0x58704868
|
||||
.word 0x198f45fd
|
||||
.word 0x8794de6c
|
||||
.word 0xb7527bf8
|
||||
.word 0x23ab73d3
|
||||
.word 0xe2724b02
|
||||
.word 0x57e31f8f
|
||||
.word 0x2a6655ab
|
||||
.word 0x07b2eb28
|
||||
.word 0x032fb5c2
|
||||
.word 0x9a86c57b
|
||||
.word 0xa5d33708
|
||||
.word 0xf2302887
|
||||
.word 0xb223bfa5
|
||||
.word 0xba02036a
|
||||
.word 0x5ced1682
|
||||
.word 0x2b8acf1c
|
||||
.word 0x92a779b4
|
||||
.word 0xf0f307f2
|
||||
.word 0xa14e69e2
|
||||
.word 0xcd65daf4
|
||||
.word 0xd50605be
|
||||
.word 0x1fd13462
|
||||
.word 0x8ac4a6fe
|
||||
.word 0x9d342e53
|
||||
.word 0xa0a2f355
|
||||
.word 0x32058ae1
|
||||
.word 0x75a4f6eb
|
||||
.word 0x390b83ec
|
||||
.word 0xaa4060ef
|
||||
.word 0x065e719f
|
||||
.word 0x51bd6e10
|
||||
.word 0xf93e218a
|
||||
.word 0x3d96dd06
|
||||
.word 0xaedd3e05
|
||||
.word 0x464de6bd
|
||||
.word 0xb591548d
|
||||
.word 0x0571c45d
|
||||
.word 0x6f0406d4
|
||||
.word 0xff605015
|
||||
.word 0x241998fb
|
||||
.word 0x97d6bde9
|
||||
.word 0xcc894043
|
||||
.word 0x7767d99e
|
||||
.word 0xbdb0e842
|
||||
.word 0x8807898b
|
||||
.word 0x38e7195b
|
||||
.word 0xdb79c8ee
|
||||
.word 0x47a17c0a
|
||||
.word 0xe97c420f
|
||||
.word 0xc9f8841e
|
||||
.word 0x00000000
|
||||
.word 0x83098086
|
||||
.word 0x48322bed
|
||||
.word 0xac1e1170
|
||||
.word 0x4e6c5a72
|
||||
.word 0xfbfd0eff
|
||||
.word 0x560f8538
|
||||
.word 0x1e3daed5
|
||||
.word 0x27362d39
|
||||
.word 0x640a0fd9
|
||||
.word 0x21685ca6
|
||||
.word 0xd19b5b54
|
||||
.word 0x3a24362e
|
||||
.word 0xb10c0a67
|
||||
.word 0x0f9357e7
|
||||
.word 0xd2b4ee96
|
||||
.word 0x9e1b9b91
|
||||
.word 0x4f80c0c5
|
||||
.word 0xa261dc20
|
||||
.word 0x695a774b
|
||||
.word 0x161c121a
|
||||
.word 0x0ae293ba
|
||||
.word 0xe5c0a02a
|
||||
.word 0x433c22e0
|
||||
.word 0x1d121b17
|
||||
.word 0x0b0e090d
|
||||
.word 0xadf28bc7
|
||||
.word 0xb92db6a8
|
||||
.word 0xc8141ea9
|
||||
.word 0x8557f119
|
||||
.word 0x4caf7507
|
||||
.word 0xbbee99dd
|
||||
.word 0xfda37f60
|
||||
.word 0x9ff70126
|
||||
.word 0xbc5c72f5
|
||||
.word 0xc544663b
|
||||
.word 0x345bfb7e
|
||||
.word 0x768b4329
|
||||
.word 0xdccb23c6
|
||||
.word 0x68b6edfc
|
||||
.word 0x63b8e4f1
|
||||
.word 0xcad731dc
|
||||
.word 0x10426385
|
||||
.word 0x40139722
|
||||
.word 0x2084c611
|
||||
.word 0x7d854a24
|
||||
.word 0xf8d2bb3d
|
||||
.word 0x11aef932
|
||||
.word 0x6dc729a1
|
||||
.word 0x4b1d9e2f
|
||||
.word 0xf3dcb230
|
||||
.word 0xec0d8652
|
||||
.word 0xd077c1e3
|
||||
.word 0x6c2bb316
|
||||
.word 0x99a970b9
|
||||
.word 0xfa119448
|
||||
.word 0x2247e964
|
||||
.word 0xc4a8fc8c
|
||||
.word 0x1aa0f03f
|
||||
.word 0xd8567d2c
|
||||
.word 0xef223390
|
||||
.word 0xc787494e
|
||||
.word 0xc1d938d1
|
||||
.word 0xfe8ccaa2
|
||||
.word 0x3698d40b
|
||||
.word 0xcfa6f581
|
||||
.word 0x28a57ade
|
||||
.word 0x26dab78e
|
||||
.word 0xa43fadbf
|
||||
.word 0xe42c3a9d
|
||||
.word 0x0d507892
|
||||
.word 0x9b6a5fcc
|
||||
.word 0x62547e46
|
||||
.word 0xc2f68d13
|
||||
.word 0xe890d8b8
|
||||
.word 0x5e2e39f7
|
||||
.word 0xf582c3af
|
||||
.word 0xbe9f5d80
|
||||
.word 0x7c69d093
|
||||
.word 0xa96fd52d
|
||||
.word 0xb3cf2512
|
||||
.word 0x3bc8ac99
|
||||
.word 0xa710187d
|
||||
.word 0x6ee89c63
|
||||
.word 0x7bdb3bbb
|
||||
.word 0x09cd2678
|
||||
.word 0xf46e5918
|
||||
.word 0x01ec9ab7
|
||||
.word 0xa8834f9a
|
||||
.word 0x65e6956e
|
||||
.word 0x7eaaffe6
|
||||
.word 0x0821bccf
|
||||
.word 0xe6ef15e8
|
||||
.word 0xd9bae79b
|
||||
.word 0xce4a6f36
|
||||
.word 0xd4ea9f09
|
||||
.word 0xd629b07c
|
||||
.word 0xaf31a4b2
|
||||
.word 0x312a3f23
|
||||
.word 0x30c6a594
|
||||
.word 0xc035a266
|
||||
.word 0x37744ebc
|
||||
.word 0xa6fc82ca
|
||||
.word 0xb0e090d0
|
||||
.word 0x1533a7d8
|
||||
.word 0x4af10498
|
||||
.word 0xf741ecda
|
||||
.word 0x0e7fcd50
|
||||
.word 0x2f1791f6
|
||||
.word 0x8d764dd6
|
||||
.word 0x4d43efb0
|
||||
.word 0x54ccaa4d
|
||||
.word 0xdfe49604
|
||||
.word 0xe39ed1b5
|
||||
.word 0x1b4c6a88
|
||||
.word 0xb8c12c1f
|
||||
.word 0x7f466551
|
||||
.word 0x049d5eea
|
||||
.word 0x5d018c35
|
||||
.word 0x73fa8774
|
||||
.word 0x2efb0b41
|
||||
.word 0x5ab3671d
|
||||
.word 0x5292dbd2
|
||||
.word 0x33e91056
|
||||
.word 0x136dd647
|
||||
.word 0x8c9ad761
|
||||
.word 0x7a37a10c
|
||||
.word 0x8e59f814
|
||||
.word 0x89eb133c
|
||||
.word 0xeecea927
|
||||
.word 0x35b761c9
|
||||
.word 0xede11ce5
|
||||
.word 0x3c7a47b1
|
||||
.word 0x599cd2df
|
||||
.word 0x3f55f273
|
||||
.word 0x791814ce
|
||||
.word 0xbf73c737
|
||||
.word 0xea53f7cd
|
||||
.word 0x5b5ffdaa
|
||||
.word 0x14df3d6f
|
||||
.word 0x867844db
|
||||
.word 0x81caaff3
|
||||
.word 0x3eb968c4
|
||||
.word 0x2c382434
|
||||
.word 0x5fc2a340
|
||||
.word 0x72161dc3
|
||||
.word 0x0cbce225
|
||||
.word 0x8b283c49
|
||||
.word 0x41ff0d95
|
||||
.word 0x7139a801
|
||||
.word 0xde080cb3
|
||||
.word 0x9cd8b4e4
|
||||
.word 0x906456c1
|
||||
.word 0x617bcb84
|
||||
.word 0x70d532b6
|
||||
.word 0x74486c5c
|
||||
.word 0x42d0b857
|
||||
.long 0x5051f4a7,0x537e4165,0xc31a17a4,0x963a275e
|
||||
.long 0xcb3bab6b,0xf11f9d45,0xabacfa58,0x934be303
|
||||
.long 0x552030fa,0xf6ad766d,0x9188cc76,0x25f5024c
|
||||
.long 0xfc4fe5d7,0xd7c52acb,0x80263544,0x8fb562a3
|
||||
.long 0x49deb15a,0x6725ba1b,0x9845ea0e,0xe15dfec0
|
||||
.long 0x02c32f75,0x12814cf0,0xa38d4697,0xc66bd3f9
|
||||
.long 0xe7038f5f,0x9515929c,0xebbf6d7a,0xda955259
|
||||
.long 0x2dd4be83,0xd3587421,0x2949e069,0x448ec9c8
|
||||
.long 0x6a75c289,0x78f48e79,0x6b99583e,0xdd27b971
|
||||
.long 0xb6bee14f,0x17f088ad,0x66c920ac,0xb47dce3a
|
||||
.long 0x1863df4a,0x82e51a31,0x60975133,0x4562537f
|
||||
.long 0xe0b16477,0x84bb6bae,0x1cfe81a0,0x94f9082b
|
||||
.long 0x58704868,0x198f45fd,0x8794de6c,0xb7527bf8
|
||||
.long 0x23ab73d3,0xe2724b02,0x57e31f8f,0x2a6655ab
|
||||
.long 0x07b2eb28,0x032fb5c2,0x9a86c57b,0xa5d33708
|
||||
.long 0xf2302887,0xb223bfa5,0xba02036a,0x5ced1682
|
||||
.long 0x2b8acf1c,0x92a779b4,0xf0f307f2,0xa14e69e2
|
||||
.long 0xcd65daf4,0xd50605be,0x1fd13462,0x8ac4a6fe
|
||||
.long 0x9d342e53,0xa0a2f355,0x32058ae1,0x75a4f6eb
|
||||
.long 0x390b83ec,0xaa4060ef,0x065e719f,0x51bd6e10
|
||||
.long 0xf93e218a,0x3d96dd06,0xaedd3e05,0x464de6bd
|
||||
.long 0xb591548d,0x0571c45d,0x6f0406d4,0xff605015
|
||||
.long 0x241998fb,0x97d6bde9,0xcc894043,0x7767d99e
|
||||
.long 0xbdb0e842,0x8807898b,0x38e7195b,0xdb79c8ee
|
||||
.long 0x47a17c0a,0xe97c420f,0xc9f8841e,0x00000000
|
||||
.long 0x83098086,0x48322bed,0xac1e1170,0x4e6c5a72
|
||||
.long 0xfbfd0eff,0x560f8538,0x1e3daed5,0x27362d39
|
||||
.long 0x640a0fd9,0x21685ca6,0xd19b5b54,0x3a24362e
|
||||
.long 0xb10c0a67,0x0f9357e7,0xd2b4ee96,0x9e1b9b91
|
||||
.long 0x4f80c0c5,0xa261dc20,0x695a774b,0x161c121a
|
||||
.long 0x0ae293ba,0xe5c0a02a,0x433c22e0,0x1d121b17
|
||||
.long 0x0b0e090d,0xadf28bc7,0xb92db6a8,0xc8141ea9
|
||||
.long 0x8557f119,0x4caf7507,0xbbee99dd,0xfda37f60
|
||||
.long 0x9ff70126,0xbc5c72f5,0xc544663b,0x345bfb7e
|
||||
.long 0x768b4329,0xdccb23c6,0x68b6edfc,0x63b8e4f1
|
||||
.long 0xcad731dc,0x10426385,0x40139722,0x2084c611
|
||||
.long 0x7d854a24,0xf8d2bb3d,0x11aef932,0x6dc729a1
|
||||
.long 0x4b1d9e2f,0xf3dcb230,0xec0d8652,0xd077c1e3
|
||||
.long 0x6c2bb316,0x99a970b9,0xfa119448,0x2247e964
|
||||
.long 0xc4a8fc8c,0x1aa0f03f,0xd8567d2c,0xef223390
|
||||
.long 0xc787494e,0xc1d938d1,0xfe8ccaa2,0x3698d40b
|
||||
.long 0xcfa6f581,0x28a57ade,0x26dab78e,0xa43fadbf
|
||||
.long 0xe42c3a9d,0x0d507892,0x9b6a5fcc,0x62547e46
|
||||
.long 0xc2f68d13,0xe890d8b8,0x5e2e39f7,0xf582c3af
|
||||
.long 0xbe9f5d80,0x7c69d093,0xa96fd52d,0xb3cf2512
|
||||
.long 0x3bc8ac99,0xa710187d,0x6ee89c63,0x7bdb3bbb
|
||||
.long 0x09cd2678,0xf46e5918,0x01ec9ab7,0xa8834f9a
|
||||
.long 0x65e6956e,0x7eaaffe6,0x0821bccf,0xe6ef15e8
|
||||
.long 0xd9bae79b,0xce4a6f36,0xd4ea9f09,0xd629b07c
|
||||
.long 0xaf31a4b2,0x312a3f23,0x30c6a594,0xc035a266
|
||||
.long 0x37744ebc,0xa6fc82ca,0xb0e090d0,0x1533a7d8
|
||||
.long 0x4af10498,0xf741ecda,0x0e7fcd50,0x2f1791f6
|
||||
.long 0x8d764dd6,0x4d43efb0,0x54ccaa4d,0xdfe49604
|
||||
.long 0xe39ed1b5,0x1b4c6a88,0xb8c12c1f,0x7f466551
|
||||
.long 0x049d5eea,0x5d018c35,0x73fa8774,0x2efb0b41
|
||||
.long 0x5ab3671d,0x5292dbd2,0x33e91056,0x136dd647
|
||||
.long 0x8c9ad761,0x7a37a10c,0x8e59f814,0x89eb133c
|
||||
.long 0xeecea927,0x35b761c9,0xede11ce5,0x3c7a47b1
|
||||
.long 0x599cd2df,0x3f55f273,0x791814ce,0xbf73c737
|
||||
.long 0xea53f7cd,0x5b5ffdaa,0x14df3d6f,0x867844db
|
||||
.long 0x81caaff3,0x3eb968c4,0x2c382434,0x5fc2a340
|
||||
.long 0x72161dc3,0x0cbce225,0x8b283c49,0x41ff0d95
|
||||
.long 0x7139a801,0xde080cb3,0x9cd8b4e4,0x906456c1
|
||||
.long 0x617bcb84,0x70d532b6,0x74486c5c,0x42d0b857
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
#if defined(HAVE_AES_DECRYPT) || defined(HAVE_AES_CBC) || \
|
||||
defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
|
||||
defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_te, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_te, %object
|
||||
.size L_AES_ARM64_te, 1024
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_te:
|
||||
.word 0xa5c66363
|
||||
.word 0x84f87c7c
|
||||
.word 0x99ee7777
|
||||
.word 0x8df67b7b
|
||||
.word 0x0dfff2f2
|
||||
.word 0xbdd66b6b
|
||||
.word 0xb1de6f6f
|
||||
.word 0x5491c5c5
|
||||
.word 0x50603030
|
||||
.word 0x03020101
|
||||
.word 0xa9ce6767
|
||||
.word 0x7d562b2b
|
||||
.word 0x19e7fefe
|
||||
.word 0x62b5d7d7
|
||||
.word 0xe64dabab
|
||||
.word 0x9aec7676
|
||||
.word 0x458fcaca
|
||||
.word 0x9d1f8282
|
||||
.word 0x4089c9c9
|
||||
.word 0x87fa7d7d
|
||||
.word 0x15effafa
|
||||
.word 0xebb25959
|
||||
.word 0xc98e4747
|
||||
.word 0x0bfbf0f0
|
||||
.word 0xec41adad
|
||||
.word 0x67b3d4d4
|
||||
.word 0xfd5fa2a2
|
||||
.word 0xea45afaf
|
||||
.word 0xbf239c9c
|
||||
.word 0xf753a4a4
|
||||
.word 0x96e47272
|
||||
.word 0x5b9bc0c0
|
||||
.word 0xc275b7b7
|
||||
.word 0x1ce1fdfd
|
||||
.word 0xae3d9393
|
||||
.word 0x6a4c2626
|
||||
.word 0x5a6c3636
|
||||
.word 0x417e3f3f
|
||||
.word 0x02f5f7f7
|
||||
.word 0x4f83cccc
|
||||
.word 0x5c683434
|
||||
.word 0xf451a5a5
|
||||
.word 0x34d1e5e5
|
||||
.word 0x08f9f1f1
|
||||
.word 0x93e27171
|
||||
.word 0x73abd8d8
|
||||
.word 0x53623131
|
||||
.word 0x3f2a1515
|
||||
.word 0x0c080404
|
||||
.word 0x5295c7c7
|
||||
.word 0x65462323
|
||||
.word 0x5e9dc3c3
|
||||
.word 0x28301818
|
||||
.word 0xa1379696
|
||||
.word 0x0f0a0505
|
||||
.word 0xb52f9a9a
|
||||
.word 0x090e0707
|
||||
.word 0x36241212
|
||||
.word 0x9b1b8080
|
||||
.word 0x3ddfe2e2
|
||||
.word 0x26cdebeb
|
||||
.word 0x694e2727
|
||||
.word 0xcd7fb2b2
|
||||
.word 0x9fea7575
|
||||
.word 0x1b120909
|
||||
.word 0x9e1d8383
|
||||
.word 0x74582c2c
|
||||
.word 0x2e341a1a
|
||||
.word 0x2d361b1b
|
||||
.word 0xb2dc6e6e
|
||||
.word 0xeeb45a5a
|
||||
.word 0xfb5ba0a0
|
||||
.word 0xf6a45252
|
||||
.word 0x4d763b3b
|
||||
.word 0x61b7d6d6
|
||||
.word 0xce7db3b3
|
||||
.word 0x7b522929
|
||||
.word 0x3edde3e3
|
||||
.word 0x715e2f2f
|
||||
.word 0x97138484
|
||||
.word 0xf5a65353
|
||||
.word 0x68b9d1d1
|
||||
.word 0x00000000
|
||||
.word 0x2cc1eded
|
||||
.word 0x60402020
|
||||
.word 0x1fe3fcfc
|
||||
.word 0xc879b1b1
|
||||
.word 0xedb65b5b
|
||||
.word 0xbed46a6a
|
||||
.word 0x468dcbcb
|
||||
.word 0xd967bebe
|
||||
.word 0x4b723939
|
||||
.word 0xde944a4a
|
||||
.word 0xd4984c4c
|
||||
.word 0xe8b05858
|
||||
.word 0x4a85cfcf
|
||||
.word 0x6bbbd0d0
|
||||
.word 0x2ac5efef
|
||||
.word 0xe54faaaa
|
||||
.word 0x16edfbfb
|
||||
.word 0xc5864343
|
||||
.word 0xd79a4d4d
|
||||
.word 0x55663333
|
||||
.word 0x94118585
|
||||
.word 0xcf8a4545
|
||||
.word 0x10e9f9f9
|
||||
.word 0x06040202
|
||||
.word 0x81fe7f7f
|
||||
.word 0xf0a05050
|
||||
.word 0x44783c3c
|
||||
.word 0xba259f9f
|
||||
.word 0xe34ba8a8
|
||||
.word 0xf3a25151
|
||||
.word 0xfe5da3a3
|
||||
.word 0xc0804040
|
||||
.word 0x8a058f8f
|
||||
.word 0xad3f9292
|
||||
.word 0xbc219d9d
|
||||
.word 0x48703838
|
||||
.word 0x04f1f5f5
|
||||
.word 0xdf63bcbc
|
||||
.word 0xc177b6b6
|
||||
.word 0x75afdada
|
||||
.word 0x63422121
|
||||
.word 0x30201010
|
||||
.word 0x1ae5ffff
|
||||
.word 0x0efdf3f3
|
||||
.word 0x6dbfd2d2
|
||||
.word 0x4c81cdcd
|
||||
.word 0x14180c0c
|
||||
.word 0x35261313
|
||||
.word 0x2fc3ecec
|
||||
.word 0xe1be5f5f
|
||||
.word 0xa2359797
|
||||
.word 0xcc884444
|
||||
.word 0x392e1717
|
||||
.word 0x5793c4c4
|
||||
.word 0xf255a7a7
|
||||
.word 0x82fc7e7e
|
||||
.word 0x477a3d3d
|
||||
.word 0xacc86464
|
||||
.word 0xe7ba5d5d
|
||||
.word 0x2b321919
|
||||
.word 0x95e67373
|
||||
.word 0xa0c06060
|
||||
.word 0x98198181
|
||||
.word 0xd19e4f4f
|
||||
.word 0x7fa3dcdc
|
||||
.word 0x66442222
|
||||
.word 0x7e542a2a
|
||||
.word 0xab3b9090
|
||||
.word 0x830b8888
|
||||
.word 0xca8c4646
|
||||
.word 0x29c7eeee
|
||||
.word 0xd36bb8b8
|
||||
.word 0x3c281414
|
||||
.word 0x79a7dede
|
||||
.word 0xe2bc5e5e
|
||||
.word 0x1d160b0b
|
||||
.word 0x76addbdb
|
||||
.word 0x3bdbe0e0
|
||||
.word 0x56643232
|
||||
.word 0x4e743a3a
|
||||
.word 0x1e140a0a
|
||||
.word 0xdb924949
|
||||
.word 0x0a0c0606
|
||||
.word 0x6c482424
|
||||
.word 0xe4b85c5c
|
||||
.word 0x5d9fc2c2
|
||||
.word 0x6ebdd3d3
|
||||
.word 0xef43acac
|
||||
.word 0xa6c46262
|
||||
.word 0xa8399191
|
||||
.word 0xa4319595
|
||||
.word 0x37d3e4e4
|
||||
.word 0x8bf27979
|
||||
.word 0x32d5e7e7
|
||||
.word 0x438bc8c8
|
||||
.word 0x596e3737
|
||||
.word 0xb7da6d6d
|
||||
.word 0x8c018d8d
|
||||
.word 0x64b1d5d5
|
||||
.word 0xd29c4e4e
|
||||
.word 0xe049a9a9
|
||||
.word 0xb4d86c6c
|
||||
.word 0xfaac5656
|
||||
.word 0x07f3f4f4
|
||||
.word 0x25cfeaea
|
||||
.word 0xafca6565
|
||||
.word 0x8ef47a7a
|
||||
.word 0xe947aeae
|
||||
.word 0x18100808
|
||||
.word 0xd56fbaba
|
||||
.word 0x88f07878
|
||||
.word 0x6f4a2525
|
||||
.word 0x725c2e2e
|
||||
.word 0x24381c1c
|
||||
.word 0xf157a6a6
|
||||
.word 0xc773b4b4
|
||||
.word 0x5197c6c6
|
||||
.word 0x23cbe8e8
|
||||
.word 0x7ca1dddd
|
||||
.word 0x9ce87474
|
||||
.word 0x213e1f1f
|
||||
.word 0xdd964b4b
|
||||
.word 0xdc61bdbd
|
||||
.word 0x860d8b8b
|
||||
.word 0x850f8a8a
|
||||
.word 0x90e07070
|
||||
.word 0x427c3e3e
|
||||
.word 0xc471b5b5
|
||||
.word 0xaacc6666
|
||||
.word 0xd8904848
|
||||
.word 0x05060303
|
||||
.word 0x01f7f6f6
|
||||
.word 0x121c0e0e
|
||||
.word 0xa3c26161
|
||||
.word 0x5f6a3535
|
||||
.word 0xf9ae5757
|
||||
.word 0xd069b9b9
|
||||
.word 0x91178686
|
||||
.word 0x5899c1c1
|
||||
.word 0x273a1d1d
|
||||
.word 0xb9279e9e
|
||||
.word 0x38d9e1e1
|
||||
.word 0x13ebf8f8
|
||||
.word 0xb32b9898
|
||||
.word 0x33221111
|
||||
.word 0xbbd26969
|
||||
.word 0x70a9d9d9
|
||||
.word 0x89078e8e
|
||||
.word 0xa7339494
|
||||
.word 0xb62d9b9b
|
||||
.word 0x223c1e1e
|
||||
.word 0x92158787
|
||||
.word 0x20c9e9e9
|
||||
.word 0x4987cece
|
||||
.word 0xffaa5555
|
||||
.word 0x78502828
|
||||
.word 0x7aa5dfdf
|
||||
.word 0x8f038c8c
|
||||
.word 0xf859a1a1
|
||||
.word 0x80098989
|
||||
.word 0x171a0d0d
|
||||
.word 0xda65bfbf
|
||||
.word 0x31d7e6e6
|
||||
.word 0xc6844242
|
||||
.word 0xb8d06868
|
||||
.word 0xc3824141
|
||||
.word 0xb0299999
|
||||
.word 0x775a2d2d
|
||||
.word 0x111e0f0f
|
||||
.word 0xcb7bb0b0
|
||||
.word 0xfca85454
|
||||
.word 0xd66dbbbb
|
||||
.word 0x3a2c1616
|
||||
.long 0xa5c66363,0x84f87c7c,0x99ee7777,0x8df67b7b
|
||||
.long 0x0dfff2f2,0xbdd66b6b,0xb1de6f6f,0x5491c5c5
|
||||
.long 0x50603030,0x03020101,0xa9ce6767,0x7d562b2b
|
||||
.long 0x19e7fefe,0x62b5d7d7,0xe64dabab,0x9aec7676
|
||||
.long 0x458fcaca,0x9d1f8282,0x4089c9c9,0x87fa7d7d
|
||||
.long 0x15effafa,0xebb25959,0xc98e4747,0x0bfbf0f0
|
||||
.long 0xec41adad,0x67b3d4d4,0xfd5fa2a2,0xea45afaf
|
||||
.long 0xbf239c9c,0xf753a4a4,0x96e47272,0x5b9bc0c0
|
||||
.long 0xc275b7b7,0x1ce1fdfd,0xae3d9393,0x6a4c2626
|
||||
.long 0x5a6c3636,0x417e3f3f,0x02f5f7f7,0x4f83cccc
|
||||
.long 0x5c683434,0xf451a5a5,0x34d1e5e5,0x08f9f1f1
|
||||
.long 0x93e27171,0x73abd8d8,0x53623131,0x3f2a1515
|
||||
.long 0x0c080404,0x5295c7c7,0x65462323,0x5e9dc3c3
|
||||
.long 0x28301818,0xa1379696,0x0f0a0505,0xb52f9a9a
|
||||
.long 0x090e0707,0x36241212,0x9b1b8080,0x3ddfe2e2
|
||||
.long 0x26cdebeb,0x694e2727,0xcd7fb2b2,0x9fea7575
|
||||
.long 0x1b120909,0x9e1d8383,0x74582c2c,0x2e341a1a
|
||||
.long 0x2d361b1b,0xb2dc6e6e,0xeeb45a5a,0xfb5ba0a0
|
||||
.long 0xf6a45252,0x4d763b3b,0x61b7d6d6,0xce7db3b3
|
||||
.long 0x7b522929,0x3edde3e3,0x715e2f2f,0x97138484
|
||||
.long 0xf5a65353,0x68b9d1d1,0x00000000,0x2cc1eded
|
||||
.long 0x60402020,0x1fe3fcfc,0xc879b1b1,0xedb65b5b
|
||||
.long 0xbed46a6a,0x468dcbcb,0xd967bebe,0x4b723939
|
||||
.long 0xde944a4a,0xd4984c4c,0xe8b05858,0x4a85cfcf
|
||||
.long 0x6bbbd0d0,0x2ac5efef,0xe54faaaa,0x16edfbfb
|
||||
.long 0xc5864343,0xd79a4d4d,0x55663333,0x94118585
|
||||
.long 0xcf8a4545,0x10e9f9f9,0x06040202,0x81fe7f7f
|
||||
.long 0xf0a05050,0x44783c3c,0xba259f9f,0xe34ba8a8
|
||||
.long 0xf3a25151,0xfe5da3a3,0xc0804040,0x8a058f8f
|
||||
.long 0xad3f9292,0xbc219d9d,0x48703838,0x04f1f5f5
|
||||
.long 0xdf63bcbc,0xc177b6b6,0x75afdada,0x63422121
|
||||
.long 0x30201010,0x1ae5ffff,0x0efdf3f3,0x6dbfd2d2
|
||||
.long 0x4c81cdcd,0x14180c0c,0x35261313,0x2fc3ecec
|
||||
.long 0xe1be5f5f,0xa2359797,0xcc884444,0x392e1717
|
||||
.long 0x5793c4c4,0xf255a7a7,0x82fc7e7e,0x477a3d3d
|
||||
.long 0xacc86464,0xe7ba5d5d,0x2b321919,0x95e67373
|
||||
.long 0xa0c06060,0x98198181,0xd19e4f4f,0x7fa3dcdc
|
||||
.long 0x66442222,0x7e542a2a,0xab3b9090,0x830b8888
|
||||
.long 0xca8c4646,0x29c7eeee,0xd36bb8b8,0x3c281414
|
||||
.long 0x79a7dede,0xe2bc5e5e,0x1d160b0b,0x76addbdb
|
||||
.long 0x3bdbe0e0,0x56643232,0x4e743a3a,0x1e140a0a
|
||||
.long 0xdb924949,0x0a0c0606,0x6c482424,0xe4b85c5c
|
||||
.long 0x5d9fc2c2,0x6ebdd3d3,0xef43acac,0xa6c46262
|
||||
.long 0xa8399191,0xa4319595,0x37d3e4e4,0x8bf27979
|
||||
.long 0x32d5e7e7,0x438bc8c8,0x596e3737,0xb7da6d6d
|
||||
.long 0x8c018d8d,0x64b1d5d5,0xd29c4e4e,0xe049a9a9
|
||||
.long 0xb4d86c6c,0xfaac5656,0x07f3f4f4,0x25cfeaea
|
||||
.long 0xafca6565,0x8ef47a7a,0xe947aeae,0x18100808
|
||||
.long 0xd56fbaba,0x88f07878,0x6f4a2525,0x725c2e2e
|
||||
.long 0x24381c1c,0xf157a6a6,0xc773b4b4,0x5197c6c6
|
||||
.long 0x23cbe8e8,0x7ca1dddd,0x9ce87474,0x213e1f1f
|
||||
.long 0xdd964b4b,0xdc61bdbd,0x860d8b8b,0x850f8a8a
|
||||
.long 0x90e07070,0x427c3e3e,0xc471b5b5,0xaacc6666
|
||||
.long 0xd8904848,0x05060303,0x01f7f6f6,0x121c0e0e
|
||||
.long 0xa3c26161,0x5f6a3535,0xf9ae5757,0xd069b9b9
|
||||
.long 0x91178686,0x5899c1c1,0x273a1d1d,0xb9279e9e
|
||||
.long 0x38d9e1e1,0x13ebf8f8,0xb32b9898,0x33221111
|
||||
.long 0xbbd26969,0x70a9d9d9,0x89078e8e,0xa7339494
|
||||
.long 0xb62d9b9b,0x223c1e1e,0x92158787,0x20c9e9e9
|
||||
.long 0x4987cece,0xffaa5555,0x78502828,0x7aa5dfdf
|
||||
.long 0x8f038c8c,0xf859a1a1,0x80098989,0x171a0d0d
|
||||
.long 0xda65bfbf,0x31d7e6e6,0xc6844242,0xb8d06868
|
||||
.long 0xc3824141,0xb0299999,0x775a2d2d,0x111e0f0f
|
||||
.long 0xcb7bb0b0,0xfca85454,0xd66dbbbb,0x3a2c1616
|
||||
#endif /* HAVE_AES_DECRYPT || HAVE_AES_CBC || HAVE_AESCCM || HAVE_AESGCM ||
|
||||
* WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER */
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
@@ -51969,28 +51585,22 @@ L_AES_invert_key_mix_loop:
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_rcon, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_rcon, %object
|
||||
.size L_AES_ARM64_rcon, 40
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_rcon:
|
||||
.word 0x01000000
|
||||
.word 0x02000000
|
||||
.word 0x04000000
|
||||
.word 0x08000000
|
||||
.word 0x10000000
|
||||
.word 0x20000000
|
||||
.word 0x40000000
|
||||
.word 0x80000000
|
||||
.word 0x1b000000
|
||||
.word 0x36000000
|
||||
.long 0x01000000,0x02000000,0x04000000,0x08000000
|
||||
.long 0x10000000,0x20000000,0x40000000,0x80000000
|
||||
.long 0x1b000000,0x36000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl AES_set_encrypt_key
|
||||
@@ -53270,16 +52880,17 @@ L_AES_CTR_encrypt_loop_nr:
|
||||
defined(HAVE_AES_CBC) || defined(HAVE_AES_ECB)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_AES_ARM64_td4, %object
|
||||
.section .rodata
|
||||
.type L_AES_ARM64_td4, %object
|
||||
.size L_AES_ARM64_td4, 256
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_AES_ARM64_td4:
|
||||
.byte 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
|
||||
@@ -54230,50 +53841,27 @@ L_AES_CBC_decrypt_end_dec:
|
||||
#ifdef HAVE_AESGCM
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_GCM_gmult_len_r, %object
|
||||
.section .rodata
|
||||
.type L_GCM_gmult_len_r, %object
|
||||
.size L_GCM_gmult_len_r, 128
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_GCM_gmult_len_r:
|
||||
.word 0x00000000
|
||||
.word 0x1c200000
|
||||
.word 0x38400000
|
||||
.word 0x24600000
|
||||
.word 0x70800000
|
||||
.word 0x6ca00000
|
||||
.word 0x48c00000
|
||||
.word 0x54e00000
|
||||
.word 0xe1000000
|
||||
.word 0xfd200000
|
||||
.word 0xd9400000
|
||||
.word 0xc5600000
|
||||
.word 0x91800000
|
||||
.word 0x8da00000
|
||||
.word 0xa9c00000
|
||||
.word 0xb5e00000
|
||||
.word 0x00000000
|
||||
.word 0x01c20000
|
||||
.word 0x03840000
|
||||
.word 0x02460000
|
||||
.word 0x07080000
|
||||
.word 0x06ca0000
|
||||
.word 0x048c0000
|
||||
.word 0x054e0000
|
||||
.word 0x0e100000
|
||||
.word 0x0fd20000
|
||||
.word 0x0d940000
|
||||
.word 0x0c560000
|
||||
.word 0x09180000
|
||||
.word 0x08da0000
|
||||
.word 0x0a9c0000
|
||||
.word 0x0b5e0000
|
||||
.long 0x00000000,0x1c200000,0x38400000,0x24600000
|
||||
.long 0x70800000,0x6ca00000,0x48c00000,0x54e00000
|
||||
.long 0xe1000000,0xfd200000,0xd9400000,0xc5600000
|
||||
.long 0x91800000,0x8da00000,0xa9c00000,0xb5e00000
|
||||
.long 0x00000000,0x01c20000,0x03840000,0x02460000
|
||||
.long 0x07080000,0x06ca0000,0x048c0000,0x054e0000
|
||||
.long 0x0e100000,0x0fd20000,0x0d940000,0x0c560000
|
||||
.long 0x09180000,0x08da0000,0x0a9c0000,0x0b5e0000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl GCM_gmult_len
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,40 +32,36 @@
|
||||
#ifdef HAVE_CHACHA
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_chacha20_arm64_ctr, %object
|
||||
.section .rodata
|
||||
.type L_chacha20_arm64_ctr, %object
|
||||
.size L_chacha20_arm64_ctr, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_arm64_ctr:
|
||||
.word 0x00000000
|
||||
.word 0x00000001
|
||||
.word 0x00000002
|
||||
.word 0x00000003
|
||||
.long 0x00000000,0x00000001,0x00000002,0x00000003
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_chacha20_arm64_rol8, %object
|
||||
.section .rodata
|
||||
.type L_chacha20_arm64_rol8, %object
|
||||
.size L_chacha20_arm64_rol8, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha20_arm64_rol8:
|
||||
.word 0x02010003
|
||||
.word 0x06050407
|
||||
.word 0x0a09080b
|
||||
.word 0x0e0d0c0f
|
||||
.long 0x02010003,0x06050407,0x0a09080b,0x0e0d0c0f
|
||||
#ifndef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
@@ -1009,26 +1005,21 @@ _wc_chacha_setiv:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_chacha_setkey_arm64_constant, %object
|
||||
.section .rodata
|
||||
.type L_chacha_setkey_arm64_constant, %object
|
||||
.size L_chacha_setkey_arm64_constant, 32
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha_setkey_arm64_constant:
|
||||
.word 0x61707865
|
||||
.word 0x3120646e
|
||||
.word 0x79622d36
|
||||
.word 0x6b206574
|
||||
.word 0x61707865
|
||||
.word 0x3320646e
|
||||
.word 0x79622d32
|
||||
.word 0x6b206574
|
||||
.long 0x61707865,0x3120646e,0x79622d36,0x6b206574
|
||||
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl wc_chacha_setkey
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
#ifdef HAVE_CHACHA
|
||||
#include <wolfssl/wolfcrypt/chacha.h>
|
||||
|
||||
static const word32 L_chacha20_arm64_ctr[] = {
|
||||
XALIGNED(8) static const word32 L_chacha20_arm64_ctr[] = {
|
||||
0x00000000, 0x00000001, 0x00000002, 0x00000003,
|
||||
};
|
||||
|
||||
static const word32 L_chacha20_arm64_rol8[] = {
|
||||
XALIGNED(8) static const word32 L_chacha20_arm64_rol8[] = {
|
||||
0x02010003, 0x06050407, 0x0a09080b, 0x0e0d0c0f,
|
||||
};
|
||||
|
||||
@@ -62,7 +62,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"b.lt L_chacha_crypt_bytes_arm64_lt_320_%=\n\t"
|
||||
"mov w25, #4\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_loop_320_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_loop_320_%=:\n\t"
|
||||
/* Move state into regular register */
|
||||
"mov x8, v16.d[0]\n\t"
|
||||
"mov x10, v16.d[1]\n\t"
|
||||
@@ -104,7 +104,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov x26, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_round_start_320_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_round_start_320_%=:\n\t"
|
||||
"subs x26, x26, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -436,7 +436,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"b.ge L_chacha_crypt_bytes_arm64_loop_320_%=\n\t"
|
||||
/* Done doing 320 bytes at a time */
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_320_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_320_%=:\n\t"
|
||||
"cmp %w[len], #0x100\n\t"
|
||||
"b.lt L_chacha_crypt_bytes_arm64_lt_256_%=\n\t"
|
||||
/* Move state into vector registers */
|
||||
@@ -461,7 +461,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov x26, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_round_start_256_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_round_start_256_%=:\n\t"
|
||||
"subs x26, x26, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -669,7 +669,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"add v19.4s, v19.4s, v29.4s\n\t"
|
||||
/* Done 256-byte block */
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_256_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_256_%=:\n\t"
|
||||
"cmp %w[len], #0x80\n\t"
|
||||
"b.lt L_chacha_crypt_bytes_arm64_lt_128_%=\n\t"
|
||||
"ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [%x[m]], #0x40\n\t"
|
||||
@@ -687,7 +687,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov x26, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_round_start_128_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_round_start_128_%=:\n\t"
|
||||
"subs x26, x26, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -793,12 +793,12 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"sub %w[len], %w[len], #0x80\n\t"
|
||||
/* Done 128-byte block */
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_128_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_128_%=:\n\t"
|
||||
"cmp %w[len], #0\n\t"
|
||||
"b.eq L_chacha_crypt_bytes_arm64_done_all_%=\n\t"
|
||||
"mov %w[rol8], #0x40\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_loop_64_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_loop_64_%=:\n\t"
|
||||
/* Move state into vector registers */
|
||||
"mov v0.16b, v16.16b\n\t"
|
||||
"mov v1.16b, v17.16b\n\t"
|
||||
@@ -807,7 +807,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
/* Set number of odd+even rounds to perform */
|
||||
"mov x26, #10\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_round_64_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_round_64_%=:\n\t"
|
||||
"subs x26, x26, #1\n\t"
|
||||
/* Round odd */
|
||||
/* a += b; d ^= a; d <<<= 16; */
|
||||
@@ -875,7 +875,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"b.ne L_chacha_crypt_bytes_arm64_loop_64_%=\n\t"
|
||||
"b L_chacha_crypt_bytes_arm64_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_64_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_64_%=:\n\t"
|
||||
/* Calculate bytes left in block not used */
|
||||
"sub %w[rol8], %w[rol8], %w[len]\n\t"
|
||||
/* Store encipher block in over for further operations and left */
|
||||
@@ -893,7 +893,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"mov v1.16b, v3.16b\n\t"
|
||||
"b.eq L_chacha_crypt_bytes_arm64_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_32_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_32_%=:\n\t"
|
||||
"cmp %w[len], #16\n\t"
|
||||
"b.lt L_chacha_crypt_bytes_arm64_lt_16_%=\n\t"
|
||||
/* Encipher 16 bytes */
|
||||
@@ -904,7 +904,7 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"mov v0.16b, v1.16b\n\t"
|
||||
"b.eq L_chacha_crypt_bytes_arm64_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_16_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_16_%=:\n\t"
|
||||
"cmp %w[len], #8\n\t"
|
||||
"b.lt L_chacha_crypt_bytes_arm64_lt_8_%=\n\t"
|
||||
/* Encipher 8 bytes */
|
||||
@@ -915,10 +915,10 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"mov v0.d[0], v0.d[1]\n\t"
|
||||
"b.eq L_chacha_crypt_bytes_arm64_done_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_lt_8_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_lt_8_%=:\n\t"
|
||||
"mov %[rol8], v0.d[0]\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_loop_lt_8_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_loop_lt_8_%=:\n\t"
|
||||
/* Encipher 1 byte at a time */
|
||||
"ldrb %w[ctr], [%x[m]], #1\n\t"
|
||||
"eor %w[ctr], %w[ctr], %w[rol8]\n\t"
|
||||
@@ -927,9 +927,9 @@ void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c, const byte* m, word32 len)
|
||||
"lsr %[rol8], %[rol8], #8\n\t"
|
||||
"b.gt L_chacha_crypt_bytes_arm64_loop_lt_8_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_done_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_done_%=:\n\t"
|
||||
"\n"
|
||||
"L_chacha_crypt_bytes_arm64_done_all_%=: \n\t"
|
||||
"L_chacha_crypt_bytes_arm64_done_all_%=:\n\t"
|
||||
"st1 {v16.4s, v17.4s, v18.4s, v19.4s}, [%x[ctx]]\n\t"
|
||||
: [ctx] "+r" (ctx), [c] "+r" (c), [len] "+r" (len)
|
||||
: [m] "r" (m), [rol8] "r" (rol8), [ctr] "r" (ctr)
|
||||
@@ -956,7 +956,7 @@ void wc_chacha_setiv(word32* x, const byte* iv, word32 counter)
|
||||
);
|
||||
}
|
||||
|
||||
static const word32 L_chacha_setkey_arm64_constant[] = {
|
||||
XALIGNED(8) static const word32 L_chacha_setkey_arm64_constant[] = {
|
||||
0x61707865, 0x3120646e, 0x79622d36, 0x6b206574,
|
||||
0x61707865, 0x3320646e, 0x79622d32, 0x6b206574,
|
||||
};
|
||||
@@ -981,7 +981,7 @@ void wc_chacha_setkey(word32* x, const byte* key, word32 keySz)
|
||||
"rev32 v1.8h, v1.8h\n\t"
|
||||
#endif /* BIG_ENDIAN_ORDER */
|
||||
"\n"
|
||||
"L_chacha_setkey_arm64_done_%=: \n\t"
|
||||
"L_chacha_setkey_arm64_done_%=:\n\t"
|
||||
"st1 {v1.4s}, [%x[x]]\n\t"
|
||||
: [x] "+r" (x), [keySz] "+r" (keySz)
|
||||
: [key] "r" (key), [constant] "r" (constant)
|
||||
@@ -993,7 +993,7 @@ void wc_chacha_use_over(byte* over, byte* output, const byte* input, word32 len)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
"\n"
|
||||
"L_chacha_use_over_arm64_16byte_loop_%=: \n\t"
|
||||
"L_chacha_use_over_arm64_16byte_loop_%=:\n\t"
|
||||
"cmp %w[len], #16\n\t"
|
||||
"b.lt L_chacha_use_over_arm64_word_loop_%=\n\t"
|
||||
/* 16 bytes of state XORed into message. */
|
||||
@@ -1005,7 +1005,7 @@ void wc_chacha_use_over(byte* over, byte* output, const byte* input, word32 len)
|
||||
"b.eq L_chacha_use_over_arm64_done_%=\n\t"
|
||||
"b L_chacha_use_over_arm64_16byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm64_word_loop_%=: \n\t"
|
||||
"L_chacha_use_over_arm64_word_loop_%=:\n\t"
|
||||
"cmp %w[len], #4\n\t"
|
||||
"b.lt L_chacha_use_over_arm64_byte_loop_%=\n\t"
|
||||
/* 4 bytes of state XORed into message. */
|
||||
@@ -1017,7 +1017,7 @@ void wc_chacha_use_over(byte* over, byte* output, const byte* input, word32 len)
|
||||
"b.eq L_chacha_use_over_arm64_done_%=\n\t"
|
||||
"b L_chacha_use_over_arm64_word_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm64_byte_loop_%=: \n\t"
|
||||
"L_chacha_use_over_arm64_byte_loop_%=:\n\t"
|
||||
/* 1 bytes of state XORed into message. */
|
||||
"ldrb w4, [%x[over]], #1\n\t"
|
||||
"ldrb w5, [%x[input]], #1\n\t"
|
||||
@@ -1027,7 +1027,7 @@ void wc_chacha_use_over(byte* over, byte* output, const byte* input, word32 len)
|
||||
"b.eq L_chacha_use_over_arm64_done_%=\n\t"
|
||||
"b L_chacha_use_over_arm64_byte_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_chacha_use_over_arm64_done_%=: \n\t"
|
||||
"L_chacha_use_over_arm64_done_%=:\n\t"
|
||||
: [over] "+r" (over), [output] "+r" (output), [len] "+r" (len)
|
||||
: [input] "r" (input)
|
||||
: "memory", "cc", "x4", "x5", "v0", "v1"
|
||||
|
||||
@@ -1941,20 +1941,21 @@ L_fe_invert8:
|
||||
#if !defined(HAVE_ED25519) && !defined(WOLFSSL_CURVE25519_USE_ED25519)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_curve25519_base_x2, %object
|
||||
.section .rodata
|
||||
.type L_curve25519_base_x2, %object
|
||||
.size L_curve25519_base_x2, 32
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 5
|
||||
.align 4
|
||||
#else
|
||||
.p2align 5
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_curve25519_base_x2:
|
||||
.xword 0x5cae469cdd684efb, 0x8f3f5ced1e350b5c
|
||||
.xword 0xd9750c687d157114, 0x20d342d51873f1b7
|
||||
.quad 0x5cae469cdd684efb,0x8f3f5ced1e350b5c
|
||||
.quad 0xd9750c687d157114,0x20d342d51873f1b7
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl curve25519_base
|
||||
|
||||
@@ -501,7 +501,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x23, x24, x23\n\t"
|
||||
"b L_fe_invert_nct_num_bits_init_v_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_num_bits_init_v_0_%=: \n\t"
|
||||
"L_fe_invert_nct_num_bits_init_v_0_%=:\n\t"
|
||||
"cmp x8, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_num_bits_init_v_1_%=\n\t"
|
||||
"mov x24, #0xc0\n\t"
|
||||
@@ -509,7 +509,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x23, x24, x23\n\t"
|
||||
"b L_fe_invert_nct_num_bits_init_v_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_num_bits_init_v_1_%=: \n\t"
|
||||
"L_fe_invert_nct_num_bits_init_v_1_%=:\n\t"
|
||||
"cmp x7, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_num_bits_init_v_2_%=\n\t"
|
||||
"mov x24, #0x80\n\t"
|
||||
@@ -517,16 +517,16 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x23, x24, x23\n\t"
|
||||
"b L_fe_invert_nct_num_bits_init_v_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_num_bits_init_v_2_%=: \n\t"
|
||||
"L_fe_invert_nct_num_bits_init_v_2_%=:\n\t"
|
||||
"mov x24, #0x40\n\t"
|
||||
"clz x23, x6\n\t"
|
||||
"sub x23, x24, x23\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_num_bits_init_v_3_%=: \n\t"
|
||||
"L_fe_invert_nct_num_bits_init_v_3_%=:\n\t"
|
||||
"tst x6, #1\n\t"
|
||||
"b.ne L_fe_invert_nct_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_even_init_v_0_%=: \n\t"
|
||||
"L_fe_invert_nct_even_init_v_0_%=:\n\t"
|
||||
"extr x6, x7, x6, #1\n\t"
|
||||
"extr x7, x8, x7, #1\n\t"
|
||||
"extr x8, x9, x8, #1\n\t"
|
||||
@@ -540,7 +540,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"adcs x17, x17, x21\n\t"
|
||||
"cset x24, cs\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_even_init_v_1_%=: \n\t"
|
||||
"L_fe_invert_nct_even_init_v_1_%=:\n\t"
|
||||
"extr x14, x15, x14, #1\n\t"
|
||||
"extr x15, x16, x15, #1\n\t"
|
||||
"extr x16, x17, x16, #1\n\t"
|
||||
@@ -548,7 +548,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"tst x6, #1\n\t"
|
||||
"b.eq L_fe_invert_nct_even_init_v_0_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_loop_%=: \n\t"
|
||||
"L_fe_invert_nct_loop_%=:\n\t"
|
||||
"cmp x22, #1\n\t"
|
||||
"b.eq L_fe_invert_nct_u_done_%=\n\t"
|
||||
"cmp x23, #1\n\t"
|
||||
@@ -568,7 +568,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"cmp x2, x6\n\t"
|
||||
"bcc L_fe_invert_nct_v_larger_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_u_larger_%=: \n\t"
|
||||
"L_fe_invert_nct_u_larger_%=:\n\t"
|
||||
"subs x2, x2, x6\n\t"
|
||||
"sbcs x3, x3, x7\n\t"
|
||||
"sbcs x4, x4, x8\n\t"
|
||||
@@ -583,7 +583,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"adcs x12, x12, x20\n\t"
|
||||
"adc x13, x13, x21\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_sub_uv_%=: \n\t"
|
||||
"L_fe_invert_nct_sub_uv_%=:\n\t"
|
||||
"cmp x5, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_nct_num_bits_u_0_%=\n\t"
|
||||
"mov x24, #0x100\n\t"
|
||||
@@ -591,7 +591,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x22, x24, x22\n\t"
|
||||
"b L_fe_invert_nct_nct_num_bits_u_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_u_0_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_u_0_%=:\n\t"
|
||||
"cmp x4, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_nct_num_bits_u_1_%=\n\t"
|
||||
"mov x24, #0xc0\n\t"
|
||||
@@ -599,7 +599,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x22, x24, x22\n\t"
|
||||
"b L_fe_invert_nct_nct_num_bits_u_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_u_1_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_u_1_%=:\n\t"
|
||||
"cmp x3, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_nct_num_bits_u_2_%=\n\t"
|
||||
"mov x24, #0x80\n\t"
|
||||
@@ -607,14 +607,14 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x22, x24, x22\n\t"
|
||||
"b L_fe_invert_nct_nct_num_bits_u_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_u_2_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_u_2_%=:\n\t"
|
||||
"mov x24, #0x40\n\t"
|
||||
"clz x22, x2\n\t"
|
||||
"sub x22, x24, x22\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_u_3_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_u_3_%=:\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_even_u_0_%=: \n\t"
|
||||
"L_fe_invert_nct_even_u_0_%=:\n\t"
|
||||
"extr x2, x3, x2, #1\n\t"
|
||||
"extr x3, x4, x3, #1\n\t"
|
||||
"extr x4, x5, x4, #1\n\t"
|
||||
@@ -628,7 +628,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"adcs x13, x13, x21\n\t"
|
||||
"cset x24, cs\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_even_u_1_%=: \n\t"
|
||||
"L_fe_invert_nct_even_u_1_%=:\n\t"
|
||||
"extr x10, x11, x10, #1\n\t"
|
||||
"extr x11, x12, x11, #1\n\t"
|
||||
"extr x12, x13, x12, #1\n\t"
|
||||
@@ -637,7 +637,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"b.eq L_fe_invert_nct_even_u_0_%=\n\t"
|
||||
"b L_fe_invert_nct_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_v_larger_%=: \n\t"
|
||||
"L_fe_invert_nct_v_larger_%=:\n\t"
|
||||
"subs x6, x6, x2\n\t"
|
||||
"sbcs x7, x7, x3\n\t"
|
||||
"sbcs x8, x8, x4\n\t"
|
||||
@@ -652,7 +652,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"adcs x16, x16, x20\n\t"
|
||||
"adc x17, x17, x21\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_sub_vu_%=: \n\t"
|
||||
"L_fe_invert_nct_sub_vu_%=:\n\t"
|
||||
"cmp x9, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_nct_num_bits_v_0_%=\n\t"
|
||||
"mov x24, #0x100\n\t"
|
||||
@@ -660,7 +660,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x23, x24, x23\n\t"
|
||||
"b L_fe_invert_nct_nct_num_bits_v_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_v_0_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_v_0_%=:\n\t"
|
||||
"cmp x8, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_nct_num_bits_v_1_%=\n\t"
|
||||
"mov x24, #0xc0\n\t"
|
||||
@@ -668,7 +668,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x23, x24, x23\n\t"
|
||||
"b L_fe_invert_nct_nct_num_bits_v_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_v_1_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_v_1_%=:\n\t"
|
||||
"cmp x7, #0\n\t"
|
||||
"b.eq L_fe_invert_nct_nct_num_bits_v_2_%=\n\t"
|
||||
"mov x24, #0x80\n\t"
|
||||
@@ -676,14 +676,14 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"sub x23, x24, x23\n\t"
|
||||
"b L_fe_invert_nct_nct_num_bits_v_3_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_v_2_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_v_2_%=:\n\t"
|
||||
"mov x24, #0x40\n\t"
|
||||
"clz x23, x6\n\t"
|
||||
"sub x23, x24, x23\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_nct_num_bits_v_3_%=: \n\t"
|
||||
"L_fe_invert_nct_nct_num_bits_v_3_%=:\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_even_v_0_%=: \n\t"
|
||||
"L_fe_invert_nct_even_v_0_%=:\n\t"
|
||||
"extr x6, x7, x6, #1\n\t"
|
||||
"extr x7, x8, x7, #1\n\t"
|
||||
"extr x8, x9, x8, #1\n\t"
|
||||
@@ -697,7 +697,7 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"adcs x17, x17, x21\n\t"
|
||||
"cset x24, cs\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_even_v_1_%=: \n\t"
|
||||
"L_fe_invert_nct_even_v_1_%=:\n\t"
|
||||
"extr x14, x15, x14, #1\n\t"
|
||||
"extr x15, x16, x15, #1\n\t"
|
||||
"extr x16, x17, x16, #1\n\t"
|
||||
@@ -706,20 +706,20 @@ void fe_invert_nct(fe r, const fe a)
|
||||
"b.eq L_fe_invert_nct_even_v_0_%=\n\t"
|
||||
"b L_fe_invert_nct_loop_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_u_done_%=: \n\t"
|
||||
"L_fe_invert_nct_u_done_%=:\n\t"
|
||||
"str x10, [%x[r]]\n\t"
|
||||
"str x11, [%x[r], #8]\n\t"
|
||||
"str x12, [%x[r], #16]\n\t"
|
||||
"str x13, [%x[r], #24]\n\t"
|
||||
"b L_fe_invert_nct_done_%=\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_v_done_%=: \n\t"
|
||||
"L_fe_invert_nct_v_done_%=:\n\t"
|
||||
"str x14, [%x[r]]\n\t"
|
||||
"str x15, [%x[r], #8]\n\t"
|
||||
"str x16, [%x[r], #16]\n\t"
|
||||
"str x17, [%x[r], #24]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert_nct_done_%=: \n\t"
|
||||
"L_fe_invert_nct_done_%=:\n\t"
|
||||
: [r] "+r" (r)
|
||||
: [a] "r" (a)
|
||||
: "memory", "cc", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10",
|
||||
@@ -1041,7 +1041,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert1_%=: \n\t"
|
||||
"L_fe_invert1_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1142,7 +1142,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert2_%=: \n\t"
|
||||
"L_fe_invert2_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1243,7 +1243,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert3_%=: \n\t"
|
||||
"L_fe_invert3_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1344,7 +1344,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert4_%=: \n\t"
|
||||
"L_fe_invert4_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1443,7 +1443,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert5_%=: \n\t"
|
||||
"L_fe_invert5_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1544,7 +1544,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert6_%=: \n\t"
|
||||
"L_fe_invert6_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1645,7 +1645,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert7_%=: \n\t"
|
||||
"L_fe_invert7_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1744,7 +1744,7 @@ void fe_invert(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_invert8_%=: \n\t"
|
||||
"L_fe_invert8_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -1847,9 +1847,9 @@ void fe_invert(fe r, const fe a)
|
||||
}
|
||||
|
||||
#if !defined(HAVE_ED25519) && !defined(WOLFSSL_CURVE25519_USE_ED25519)
|
||||
static const word64 L_curve25519_base_x2[] = {
|
||||
0x5cae469cdd684efb, 0x8f3f5ced1e350b5c,
|
||||
0xd9750c687d157114, 0x20d342d51873f1b7,
|
||||
XALIGNED(16) static const word64 L_curve25519_base_x2[] = {
|
||||
0x5cae469cdd684efbUL, 0x8f3f5ced1e350b5cUL,
|
||||
0xd9750c687d157114UL, 0x20d342d51873f1b7UL,
|
||||
};
|
||||
|
||||
int curve25519_base(byte* r, const byte* n)
|
||||
@@ -1876,7 +1876,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"mov x23, %x[r]\n\t"
|
||||
"mov x24, #0xfd\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_bits_%=: \n\t"
|
||||
"L_curve25519_base_bits_%=:\n\t"
|
||||
"lsr x3, x24, #6\n\t"
|
||||
"and x4, x24, #63\n\t"
|
||||
"ldr x5, [%x[n], x3, LSL 3]\n\t"
|
||||
@@ -2885,7 +2885,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"csel x17, x13, x9, ne\n\t"
|
||||
"csel x13, x9, x13, ne\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_3_%=: \n\t"
|
||||
"L_curve25519_base_3_%=:\n\t"
|
||||
/* Add */
|
||||
"adds x6, x10, x25\n\t"
|
||||
"adcs x7, x11, x26\n\t"
|
||||
@@ -3427,7 +3427,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_1_%=: \n\t"
|
||||
"L_curve25519_base_inv_1_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -3528,7 +3528,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_2_%=: \n\t"
|
||||
"L_curve25519_base_inv_2_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -3629,7 +3629,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_3_%=: \n\t"
|
||||
"L_curve25519_base_inv_3_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -3730,7 +3730,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_4_%=: \n\t"
|
||||
"L_curve25519_base_inv_4_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -3829,7 +3829,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_5_%=: \n\t"
|
||||
"L_curve25519_base_inv_5_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -3930,7 +3930,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_6_%=: \n\t"
|
||||
"L_curve25519_base_inv_6_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -4031,7 +4031,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_7_%=: \n\t"
|
||||
"L_curve25519_base_inv_7_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -4130,7 +4130,7 @@ int curve25519_base(byte* r, const byte* n)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_base_inv_8_%=: \n\t"
|
||||
"L_curve25519_base_inv_8_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -4394,7 +4394,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"stp xzr, xzr, [x29, #32]\n\t"
|
||||
"mov x24, #0xfe\n\t"
|
||||
"\n"
|
||||
"L_curve25519_bits_%=: \n\t"
|
||||
"L_curve25519_bits_%=:\n\t"
|
||||
"lsr x3, x24, #6\n\t"
|
||||
"and x4, x24, #63\n\t"
|
||||
"ldr x5, [%x[n], x3, LSL 3]\n\t"
|
||||
@@ -5492,7 +5492,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"csel x17, x13, x9, ne\n\t"
|
||||
"csel x13, x9, x13, ne\n\t"
|
||||
"\n"
|
||||
"L_curve25519_3_%=: \n\t"
|
||||
"L_curve25519_3_%=:\n\t"
|
||||
/* Add */
|
||||
"adds x6, x10, x25\n\t"
|
||||
"adcs x7, x11, x26\n\t"
|
||||
@@ -6034,7 +6034,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_1_%=: \n\t"
|
||||
"L_curve25519_inv_1_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6135,7 +6135,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_2_%=: \n\t"
|
||||
"L_curve25519_inv_2_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6236,7 +6236,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_3_%=: \n\t"
|
||||
"L_curve25519_inv_3_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6337,7 +6337,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_4_%=: \n\t"
|
||||
"L_curve25519_inv_4_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6436,7 +6436,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_5_%=: \n\t"
|
||||
"L_curve25519_inv_5_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6537,7 +6537,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_6_%=: \n\t"
|
||||
"L_curve25519_inv_6_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6638,7 +6638,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #112]\n\t"
|
||||
"ldp x8, x9, [x29, #128]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_7_%=: \n\t"
|
||||
"L_curve25519_inv_7_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -6737,7 +6737,7 @@ int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"ldp x6, x7, [x29, #80]\n\t"
|
||||
"ldp x8, x9, [x29, #96]\n\t"
|
||||
"\n"
|
||||
"L_curve25519_inv_8_%=: \n\t"
|
||||
"L_curve25519_inv_8_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7057,7 +7057,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #16]\n\t"
|
||||
"ldp x8, x9, [x29, #32]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_1_%=: \n\t"
|
||||
"L_fe_pow22523_1_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7160,7 +7160,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #16]\n\t"
|
||||
"ldp x8, x9, [x29, #32]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_2_%=: \n\t"
|
||||
"L_fe_pow22523_2_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7261,7 +7261,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_3_%=: \n\t"
|
||||
"L_fe_pow22523_3_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7362,7 +7362,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_4_%=: \n\t"
|
||||
"L_fe_pow22523_4_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7461,7 +7461,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #16]\n\t"
|
||||
"ldp x8, x9, [x29, #32]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_5_%=: \n\t"
|
||||
"L_fe_pow22523_5_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7562,7 +7562,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_6_%=: \n\t"
|
||||
"L_fe_pow22523_6_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
@@ -7663,7 +7663,7 @@ void fe_pow22523(fe r, const fe a)
|
||||
"ldp x6, x7, [x29, #48]\n\t"
|
||||
"ldp x8, x9, [x29, #64]\n\t"
|
||||
"\n"
|
||||
"L_fe_pow22523_7_%=: \n\t"
|
||||
"L_fe_pow22523_7_%=:\n\t"
|
||||
/* Square */
|
||||
/* A[0] * A[1] */
|
||||
"umulh x12, x6, x7\n\t"
|
||||
|
||||
@@ -31,32 +31,34 @@
|
||||
#ifndef WOLFSSL_ARMASM_INLINE
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_consts, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_consts, %object
|
||||
.size L_mlkem_aarch64_consts, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_consts:
|
||||
.short 0x0d01,0xf301,0x4ebf,0x0549,0x5049,0x0000,0x0000,0x0000
|
||||
#ifdef WOLFSSL_WC_MLKEM
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_zetas, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_zetas, %object
|
||||
.size L_mlkem_aarch64_zetas, 576
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_zetas:
|
||||
.short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
|
||||
@@ -97,16 +99,17 @@ L_mlkem_aarch64_zetas:
|
||||
.short 0x03be,0x03be,0x074d,0x074d,0x05f2,0x05f2,0x065c,0x065c
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_zetas_qinv, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_zetas_qinv, %object
|
||||
.size L_mlkem_aarch64_zetas_qinv, 576
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_zetas_qinv:
|
||||
.short 0xffed,0x7b0b,0x399a,0x0314,0x34d5,0xcf8e,0x6e1f,0xbeca
|
||||
@@ -1441,16 +1444,17 @@ _mlkem_ntt:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_zetas_inv, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_zetas_inv, %object
|
||||
.size L_mlkem_aarch64_zetas_inv, 576
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_zetas_inv:
|
||||
.short 0x06a5,0x06a5,0x070f,0x070f,0x05b4,0x05b4,0x0943,0x0943
|
||||
@@ -1491,16 +1495,17 @@ L_mlkem_aarch64_zetas_inv:
|
||||
.short 0x0c37,0x0be2,0x0773,0x072c,0x05ed,0x0167,0x02f6,0x05a1
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_zetas_inv_qinv, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_zetas_inv_qinv, %object
|
||||
.size L_mlkem_aarch64_zetas_inv_qinv, 576
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_zetas_inv_qinv:
|
||||
.short 0xa5a5,0xa5a5,0x440f,0x440f,0xe1b4,0xe1b4,0xa243,0xa243
|
||||
@@ -5481,16 +5486,17 @@ _mlkem_invntt_sqrdmlsh:
|
||||
#endif /* WOLFSSL_AARCH64_NO_SQRDMLSH */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_zetas_mul, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_zetas_mul, %object
|
||||
.size L_mlkem_aarch64_zetas_mul, 256
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_zetas_mul:
|
||||
.short 0x08b2,0xf74e,0x01ae,0xfe52,0x022b,0xfdd5,0x034b,0xfcb5
|
||||
@@ -6955,16 +6961,17 @@ _mlkem_basemul_mont_add:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_aarch64_q, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_aarch64_q, %object
|
||||
.size L_mlkem_aarch64_q, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_aarch64_q:
|
||||
.short 0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01,0x0d01
|
||||
@@ -8160,46 +8167,49 @@ _mlkem_to_mont_sqrdmlsh:
|
||||
#endif /* WOLFSSL_AARCH64_NO_SQRDMLSH */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_to_msg_low, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_to_msg_low, %object
|
||||
.size L_mlkem_to_msg_low, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_to_msg_low:
|
||||
.short 0x0373,0x0373,0x0373,0x0373,0x0373,0x0373,0x0373,0x0373
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_to_msg_high, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_to_msg_high, %object
|
||||
.size L_mlkem_to_msg_high, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_to_msg_high:
|
||||
.short 0x09c0,0x09c0,0x09c0,0x09c0,0x09c0,0x09c0,0x09c0,0x09c0
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_to_msg_bits, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_to_msg_bits, %object
|
||||
.size L_mlkem_to_msg_bits, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_to_msg_bits:
|
||||
.short 0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080
|
||||
@@ -8456,31 +8466,33 @@ _mlkem_to_msg_neon:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_from_msg_q1half, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_from_msg_q1half, %object
|
||||
.size L_mlkem_from_msg_q1half, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_from_msg_q1half:
|
||||
.short 0x0681,0x0681,0x0681,0x0681,0x0681,0x0681,0x0681,0x0681
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_from_msg_bits, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_from_msg_bits, %object
|
||||
.size L_mlkem_from_msg_bits, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_from_msg_bits:
|
||||
.byte 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
|
||||
@@ -8941,46 +8953,49 @@ L_mlkem_aarch64_cmp_neon_done:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_rej_uniform_mask, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_rej_uniform_mask, %object
|
||||
.size L_mlkem_rej_uniform_mask, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_rej_uniform_mask:
|
||||
.short 0x0fff,0x0fff,0x0fff,0x0fff,0x0fff,0x0fff,0x0fff,0x0fff
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_rej_uniform_bits, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_rej_uniform_bits, %object
|
||||
.size L_mlkem_rej_uniform_bits, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
.align 3
|
||||
#else
|
||||
.p2align 2
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_rej_uniform_bits:
|
||||
.short 0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_rej_uniform_indices, %object
|
||||
.section .rodata
|
||||
.type L_mlkem_rej_uniform_indices, %object
|
||||
.size L_mlkem_rej_uniform_indices, 4096
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 1
|
||||
.align 3
|
||||
#else
|
||||
.p2align 1
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_rej_uniform_indices:
|
||||
.byte 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
||||
@@ -9688,42 +9703,31 @@ L_mlkem_rej_uniform_done:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_sha3_aarch64_r, %object
|
||||
.section .rodata
|
||||
.type L_sha3_aarch64_r, %object
|
||||
.size L_sha3_aarch64_r, 192
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
.align 4
|
||||
#else
|
||||
.p2align 3
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_aarch64_r:
|
||||
.xword 0x0000000000000001
|
||||
.xword 0x0000000000008082
|
||||
.xword 0x800000000000808a
|
||||
.xword 0x8000000080008000
|
||||
.xword 0x000000000000808b
|
||||
.xword 0x0000000080000001
|
||||
.xword 0x8000000080008081
|
||||
.xword 0x8000000000008009
|
||||
.xword 0x000000000000008a
|
||||
.xword 0x0000000000000088
|
||||
.xword 0x0000000080008009
|
||||
.xword 0x000000008000000a
|
||||
.xword 0x000000008000808b
|
||||
.xword 0x800000000000008b
|
||||
.xword 0x8000000000008089
|
||||
.xword 0x8000000000008003
|
||||
.xword 0x8000000000008002
|
||||
.xword 0x8000000000000080
|
||||
.xword 0x000000000000800a
|
||||
.xword 0x800000008000000a
|
||||
.xword 0x8000000080008081
|
||||
.xword 0x8000000000008080
|
||||
.xword 0x0000000080000001
|
||||
.xword 0x8000000080008008
|
||||
.quad 0x0000000000000001,0x0000000000008082
|
||||
.quad 0x800000000000808a,0x8000000080008000
|
||||
.quad 0x000000000000808b,0x0000000080000001
|
||||
.quad 0x8000000080008081,0x8000000000008009
|
||||
.quad 0x000000000000008a,0x0000000000000088
|
||||
.quad 0x0000000080008009,0x000000008000000a
|
||||
.quad 0x000000008000808b,0x800000000000008b
|
||||
.quad 0x8000000000008089,0x8000000000008003
|
||||
.quad 0x8000000000008002,0x8000000000000080
|
||||
.quad 0x000000000000800a,0x800000008000000a
|
||||
.quad 0x8000000080008081,0x8000000000008080
|
||||
.quad 0x0000000080000001,0x8000000080008008
|
||||
#ifdef WOLFSSL_ARMASM_CRYPTO_SHA3
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
#ifdef WOLFSSL_ARMASM
|
||||
#ifdef __aarch64__
|
||||
#ifdef WOLFSSL_ARMASM_INLINE
|
||||
static const word16 L_mlkem_aarch64_consts[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_consts[] = {
|
||||
0x0d01, 0xf301, 0x4ebf, 0x0549, 0x5049, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
#include <wolfssl/wolfcrypt/wc_mlkem.h>
|
||||
|
||||
#ifdef WOLFSSL_WC_MLKEM
|
||||
static const word16 L_mlkem_aarch64_zetas[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714, 0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6, 0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f, 0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
@@ -76,7 +76,7 @@ static const word16 L_mlkem_aarch64_zetas[] = {
|
||||
0x03be, 0x03be, 0x074d, 0x074d, 0x05f2, 0x05f2, 0x065c, 0x065c,
|
||||
};
|
||||
|
||||
static const word16 L_mlkem_aarch64_zetas_qinv[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_zetas_qinv[] = {
|
||||
0xffed, 0x7b0b, 0x399a, 0x0314, 0x34d5, 0xcf8e, 0x6e1f, 0xbeca,
|
||||
0xae56, 0x6c6e, 0xf129, 0xc2b6, 0x29c2, 0x054f, 0xd43f, 0x79bc,
|
||||
0xe93d, 0x43d4, 0x9908, 0x8e7f, 0x15c4, 0xfbb2, 0x53bf, 0x997f,
|
||||
@@ -1376,7 +1376,7 @@ void mlkem_ntt(sword16* r)
|
||||
);
|
||||
}
|
||||
|
||||
static const word16 L_mlkem_aarch64_zetas_inv[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_zetas_inv[] = {
|
||||
0x06a5, 0x06a5, 0x070f, 0x070f, 0x05b4, 0x05b4, 0x0943, 0x0943,
|
||||
0x0922, 0x0922, 0x091d, 0x091d, 0x0134, 0x0134, 0x006c, 0x006c,
|
||||
0x0b23, 0x0b23, 0x0366, 0x0366, 0x0356, 0x0356, 0x05e6, 0x05e6,
|
||||
@@ -1415,7 +1415,7 @@ static const word16 L_mlkem_aarch64_zetas_inv[] = {
|
||||
0x0c37, 0x0be2, 0x0773, 0x072c, 0x05ed, 0x0167, 0x02f6, 0x05a1,
|
||||
};
|
||||
|
||||
static const word16 L_mlkem_aarch64_zetas_inv_qinv[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_zetas_inv_qinv[] = {
|
||||
0xa5a5, 0xa5a5, 0x440f, 0x440f, 0xe1b4, 0xe1b4, 0xa243, 0xa243,
|
||||
0x4f22, 0x4f22, 0x901d, 0x901d, 0x5d34, 0x5d34, 0x846c, 0x846c,
|
||||
0x4423, 0x4423, 0xd566, 0xd566, 0xa556, 0xa556, 0x57e6, 0x57e6,
|
||||
@@ -5295,7 +5295,7 @@ void mlkem_invntt_sqrdmlsh(sword16* r)
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_AARCH64_NO_SQRDMLSH */
|
||||
static const word16 L_mlkem_aarch64_zetas_mul[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_zetas_mul[] = {
|
||||
0x08b2, 0xf74e, 0x01ae, 0xfe52, 0x022b, 0xfdd5, 0x034b, 0xfcb5,
|
||||
0x081e, 0xf7e2, 0x0367, 0xfc99, 0x060e, 0xf9f2, 0x0069, 0xff97,
|
||||
0x01a6, 0xfe5a, 0x024b, 0xfdb5, 0x00b1, 0xff4f, 0x0c16, 0xf3ea,
|
||||
@@ -6703,7 +6703,7 @@ void mlkem_basemul_mont_add(sword16* r, const sword16* a, const sword16* b)
|
||||
);
|
||||
}
|
||||
|
||||
static const word16 L_mlkem_aarch64_q[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_aarch64_q[] = {
|
||||
0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01,
|
||||
};
|
||||
|
||||
@@ -7761,15 +7761,15 @@ void mlkem_to_mont_sqrdmlsh(sword16* p)
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_AARCH64_NO_SQRDMLSH */
|
||||
static const word16 L_mlkem_to_msg_low[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_to_msg_low[] = {
|
||||
0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373,
|
||||
};
|
||||
|
||||
static const word16 L_mlkem_to_msg_high[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_to_msg_high[] = {
|
||||
0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0,
|
||||
};
|
||||
|
||||
static const word16 L_mlkem_to_msg_bits[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_to_msg_bits[] = {
|
||||
0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
|
||||
};
|
||||
|
||||
@@ -7990,11 +7990,11 @@ void mlkem_to_msg_neon(byte* msg, sword16* p)
|
||||
);
|
||||
}
|
||||
|
||||
static const word16 L_mlkem_from_msg_q1half[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_from_msg_q1half[] = {
|
||||
0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681,
|
||||
};
|
||||
|
||||
static const word8 L_mlkem_from_msg_bits[] = {
|
||||
XALIGNED(4) static const word8 L_mlkem_from_msg_bits[] = {
|
||||
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
|
||||
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
|
||||
};
|
||||
@@ -8400,7 +8400,7 @@ int mlkem_cmp_neon(const byte* a, const byte* b, int sz)
|
||||
"orr v8.16b, v8.16b, v0.16b\n\t"
|
||||
"orr v9.16b, v9.16b, v1.16b\n\t"
|
||||
"\n"
|
||||
"L_mlkem_aarch64_cmp_neon_done_%=: \n\t"
|
||||
"L_mlkem_aarch64_cmp_neon_done_%=:\n\t"
|
||||
"orr v8.16b, v8.16b, v9.16b\n\t"
|
||||
"orr v10.16b, v10.16b, v11.16b\n\t"
|
||||
"orr v8.16b, v8.16b, v10.16b\n\t"
|
||||
@@ -8417,15 +8417,15 @@ int mlkem_cmp_neon(const byte* a, const byte* b, int sz)
|
||||
return (word32)(size_t)a;
|
||||
}
|
||||
|
||||
static const word16 L_mlkem_rej_uniform_mask[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_rej_uniform_mask[] = {
|
||||
0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff,
|
||||
};
|
||||
|
||||
static const word16 L_mlkem_rej_uniform_bits[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_rej_uniform_bits[] = {
|
||||
0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
|
||||
};
|
||||
|
||||
static const word8 L_mlkem_rej_uniform_indices[] = {
|
||||
XALIGNED(4) static const word8 L_mlkem_rej_uniform_indices[] = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
@@ -8963,7 +8963,7 @@ unsigned int mlkem_rej_uniform_neon(sword16* p, unsigned int len, const byte* r,
|
||||
"subs wzr, %w[len], #16\n\t"
|
||||
"b.lt L_mlkem_rej_uniform_loop_4_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_rej_uniform_loop_16_%=: \n\t"
|
||||
"L_mlkem_rej_uniform_loop_16_%=:\n\t"
|
||||
"ld3 {v4.8b, v5.8b, v6.8b}, [%x[r]], #24\n\t"
|
||||
"zip1 v4.16b, v4.16b, v1.16b\n\t"
|
||||
"zip1 v5.16b, v5.16b, v1.16b\n\t"
|
||||
@@ -9010,7 +9010,7 @@ unsigned int mlkem_rej_uniform_neon(sword16* p, unsigned int len, const byte* r,
|
||||
"b.lt L_mlkem_rej_uniform_loop_4_%=\n\t"
|
||||
"b L_mlkem_rej_uniform_loop_16_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_rej_uniform_loop_4_%=: \n\t"
|
||||
"L_mlkem_rej_uniform_loop_4_%=:\n\t"
|
||||
"subs w10, %w[len], w12\n\t"
|
||||
"b.eq L_mlkem_rej_uniform_done_%=\n\t"
|
||||
"subs x10, x10, #4\n\t"
|
||||
@@ -9047,7 +9047,7 @@ unsigned int mlkem_rej_uniform_neon(sword16* p, unsigned int len, const byte* r,
|
||||
"b.eq L_mlkem_rej_uniform_done_%=\n\t"
|
||||
"b L_mlkem_rej_uniform_loop_4_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_rej_uniform_loop_lt_4_%=: \n\t"
|
||||
"L_mlkem_rej_uniform_loop_lt_4_%=:\n\t"
|
||||
"ldr %[mask], [%x[r]], #6\n\t"
|
||||
"lsr %[q], %[mask], #12\n\t"
|
||||
"lsr %[bits], %[mask], #24\n\t"
|
||||
@@ -9088,7 +9088,7 @@ unsigned int mlkem_rej_uniform_neon(sword16* p, unsigned int len, const byte* r,
|
||||
"b.eq L_mlkem_rej_uniform_done_%=\n\t"
|
||||
"b L_mlkem_rej_uniform_loop_lt_4_%=\n\t"
|
||||
"\n"
|
||||
"L_mlkem_rej_uniform_done_%=: \n\t"
|
||||
"L_mlkem_rej_uniform_done_%=:\n\t"
|
||||
"mov x0, x12\n\t"
|
||||
: [p] "+r" (p), [len] "+r" (len), [rLen] "+r" (rLen)
|
||||
: [r] "r" (r), [mask] "r" (mask), [q] "r" (q), [bits] "r" (bits),
|
||||
@@ -9100,19 +9100,19 @@ unsigned int mlkem_rej_uniform_neon(sword16* p, unsigned int len, const byte* r,
|
||||
return (word32)(size_t)p;
|
||||
}
|
||||
|
||||
static const word64 L_sha3_aarch64_r[] = {
|
||||
0x0000000000000001, 0x0000000000008082,
|
||||
0x800000000000808a, 0x8000000080008000,
|
||||
0x000000000000808b, 0x0000000080000001,
|
||||
0x8000000080008081, 0x8000000000008009,
|
||||
0x000000000000008a, 0x0000000000000088,
|
||||
0x0000000080008009, 0x000000008000000a,
|
||||
0x000000008000808b, 0x800000000000008b,
|
||||
0x8000000000008089, 0x8000000000008003,
|
||||
0x8000000000008002, 0x8000000000000080,
|
||||
0x000000000000800a, 0x800000008000000a,
|
||||
0x8000000080008081, 0x8000000000008080,
|
||||
0x0000000080000001, 0x8000000080008008,
|
||||
XALIGNED(16) static const word64 L_sha3_aarch64_r[] = {
|
||||
0x0000000000000001UL, 0x0000000000008082UL,
|
||||
0x800000000000808aUL, 0x8000000080008000UL,
|
||||
0x000000000000808bUL, 0x0000000080000001UL,
|
||||
0x8000000080008081UL, 0x8000000000008009UL,
|
||||
0x000000000000008aUL, 0x0000000000000088UL,
|
||||
0x0000000080008009UL, 0x000000008000000aUL,
|
||||
0x000000008000808bUL, 0x800000000000008bUL,
|
||||
0x8000000000008089UL, 0x8000000000008003UL,
|
||||
0x8000000000008002UL, 0x8000000000000080UL,
|
||||
0x000000000000800aUL, 0x800000008000000aUL,
|
||||
0x8000000080008081UL, 0x8000000000008080UL,
|
||||
0x0000000080000001UL, 0x8000000080008008UL,
|
||||
};
|
||||
|
||||
#ifdef WOLFSSL_ARMASM_CRYPTO_SHA3
|
||||
@@ -9155,7 +9155,7 @@ void mlkem_sha3_blocksx3_neon(word64* state)
|
||||
"mov x28, #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_transform_blocksx3_neon_begin_%=: \n\t"
|
||||
"L_SHA3_transform_blocksx3_neon_begin_%=:\n\t"
|
||||
"stp %[r], x28, [x29, #48]\n\t"
|
||||
/* Col Mix */
|
||||
"eor3 v31.16b, v0.16b, v5.16b, v10.16b\n\t"
|
||||
@@ -9476,7 +9476,7 @@ void mlkem_shake128_blocksx3_seed_neon(word64* state, byte* seed)
|
||||
"mov %x[seed], #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_shake128_blocksx3_seed_neon_begin_%=: \n\t"
|
||||
"L_SHA3_shake128_blocksx3_seed_neon_begin_%=:\n\t"
|
||||
"stp %[r], %x[seed], [x29, #48]\n\t"
|
||||
/* Col Mix */
|
||||
"eor3 v31.16b, v0.16b, v5.16b, v10.16b\n\t"
|
||||
@@ -9797,7 +9797,7 @@ void mlkem_shake256_blocksx3_seed_neon(word64* state, byte* seed)
|
||||
"mov %x[seed], #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_shake256_blocksx3_seed_neon_begin_%=: \n\t"
|
||||
"L_SHA3_shake256_blocksx3_seed_neon_begin_%=:\n\t"
|
||||
"stp %[r], %x[seed], [x29, #48]\n\t"
|
||||
/* Col Mix */
|
||||
"eor3 v31.16b, v0.16b, v5.16b, v10.16b\n\t"
|
||||
@@ -10097,7 +10097,7 @@ void mlkem_sha3_blocksx3_neon(word64* state)
|
||||
"mov x28, #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_transform_blocksx3_neon_begin_%=: \n\t"
|
||||
"L_SHA3_transform_blocksx3_neon_begin_%=:\n\t"
|
||||
"stp %[r], x28, [x29, #48]\n\t"
|
||||
/* Col Mix NEON */
|
||||
"eor v30.16b, v4.16b, v9.16b\n\t"
|
||||
@@ -10503,7 +10503,7 @@ void mlkem_shake128_blocksx3_seed_neon(word64* state, byte* seed)
|
||||
"mov %x[seed], #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_shake128_blocksx3_seed_neon_begin_%=: \n\t"
|
||||
"L_SHA3_shake128_blocksx3_seed_neon_begin_%=:\n\t"
|
||||
"stp %[r], %x[seed], [x29, #48]\n\t"
|
||||
/* Col Mix NEON */
|
||||
"eor v30.16b, v4.16b, v9.16b\n\t"
|
||||
@@ -10909,7 +10909,7 @@ void mlkem_shake256_blocksx3_seed_neon(word64* state, byte* seed)
|
||||
"mov %x[seed], #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_shake256_blocksx3_seed_neon_begin_%=: \n\t"
|
||||
"L_SHA3_shake256_blocksx3_seed_neon_begin_%=:\n\t"
|
||||
"stp %[r], %x[seed], [x29, #48]\n\t"
|
||||
/* Col Mix NEON */
|
||||
"eor v30.16b, v4.16b, v9.16b\n\t"
|
||||
|
||||
@@ -438,22 +438,20 @@ L_poly1305_arm64_blocks_done_all:
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_poly1305_set_key_arm64_clamp, %object
|
||||
.section .rodata
|
||||
.type L_poly1305_set_key_arm64_clamp, %object
|
||||
.size L_poly1305_set_key_arm64_clamp, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_poly1305_set_key_arm64_clamp:
|
||||
.word 0x0fffffff
|
||||
.word 0x0ffffffc
|
||||
.word 0x0ffffffc
|
||||
.word 0x0ffffffc
|
||||
.long 0x0fffffff,0x0ffffffc,0x0ffffffc,0x0ffffffc
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl poly1305_set_key
|
||||
|
||||
@@ -138,7 +138,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"mul v22.4s, v18.4s, v24.4s\n\t"
|
||||
"mul v23.4s, v19.4s, v24.4s\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_loop_64_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_loop_64_%=:\n\t"
|
||||
/* Load message of 64 bytes - setting hi bit for not finished */
|
||||
"ld4 {v5.4s, v6.4s, v7.4s, v8.4s}, [%x[m]], #0x40\n\t"
|
||||
"sub %x[bytes], %x[bytes], #0x40\n\t"
|
||||
@@ -314,7 +314,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"usra v4.2d, v3.2d, #26\n\t"
|
||||
"and v3.16b, v3.16b, v26.16b\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_done_32_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_done_32_%=:\n\t"
|
||||
"cmp %x[bytes], #16\n\t"
|
||||
"b.eq L_poly1305_arm64_blocks_transfer_%=\n\t"
|
||||
"add x14, %x[ctx], #0x60\n\t"
|
||||
@@ -322,7 +322,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"st1 {v4.s}[0], [x14]\n\t"
|
||||
"b L_poly1305_arm64_blocks_done_all_%=\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_transfer_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_transfer_%=:\n\t"
|
||||
"mov w3, v0.s[0]\n\t"
|
||||
"mov w4, v1.s[0]\n\t"
|
||||
"mov w5, v2.s[0]\n\t"
|
||||
@@ -330,7 +330,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"mov w7, v4.s[0]\n\t"
|
||||
"b L_poly1305_arm64_blocks_start_%=\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_done_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_done_%=:\n\t"
|
||||
"cmp %x[bytes], #16\n\t"
|
||||
"b.lt L_poly1305_arm64_blocks_done_all_%=\n\t"
|
||||
/* Load h */
|
||||
@@ -338,7 +338,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"ldp w5, w6, [%x[ctx], #104]\n\t"
|
||||
"ldr w7, [%x[ctx], #112]\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_start_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_start_%=:\n\t"
|
||||
"mov x17, #1\n\t"
|
||||
/* Load r */
|
||||
"ldp x8, x9, [%x[ctx]]\n\t"
|
||||
@@ -350,7 +350,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"lsr x5, x7, #24\n\t"
|
||||
"add x4, x4, x7, lsl 40\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_loop_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_loop_%=:\n\t"
|
||||
/* Load m */
|
||||
"ldr x14, [%x[m]]\n\t"
|
||||
"ldr x15, [%x[m], #8]\n\t"
|
||||
@@ -413,7 +413,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
"stp w5, w6, [%x[ctx], #104]\n\t"
|
||||
"str w7, [%x[ctx], #112]\n\t"
|
||||
"\n"
|
||||
"L_poly1305_arm64_blocks_done_all_%=: \n\t"
|
||||
"L_poly1305_arm64_blocks_done_all_%=:\n\t"
|
||||
: [ctx] "+r" (ctx), [bytes] "+r" (bytes)
|
||||
: [m] "r" (m)
|
||||
: "memory", "cc", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10",
|
||||
@@ -424,7 +424,7 @@ void poly1305_arm64_blocks(Poly1305* ctx, const unsigned char* m, size_t bytes)
|
||||
);
|
||||
}
|
||||
|
||||
static const word32 L_poly1305_set_key_arm64_clamp[] = {
|
||||
XALIGNED(8) static const word32 L_poly1305_set_key_arm64_clamp[] = {
|
||||
0x0fffffff, 0x0ffffffc, 0x0ffffffc, 0x0ffffffc,
|
||||
};
|
||||
|
||||
|
||||
@@ -32,82 +32,35 @@
|
||||
#if !defined(NO_SHA256) || defined(WOLFSSL_SHA224)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_transform_neon_len_k, %object
|
||||
.section .rodata
|
||||
.type L_SHA256_transform_neon_len_k, %object
|
||||
.size L_SHA256_transform_neon_len_k, 256
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_transform_neon_len_k:
|
||||
.word 0x428a2f98
|
||||
.word 0x71374491
|
||||
.word 0xb5c0fbcf
|
||||
.word 0xe9b5dba5
|
||||
.word 0x3956c25b
|
||||
.word 0x59f111f1
|
||||
.word 0x923f82a4
|
||||
.word 0xab1c5ed5
|
||||
.word 0xd807aa98
|
||||
.word 0x12835b01
|
||||
.word 0x243185be
|
||||
.word 0x550c7dc3
|
||||
.word 0x72be5d74
|
||||
.word 0x80deb1fe
|
||||
.word 0x9bdc06a7
|
||||
.word 0xc19bf174
|
||||
.word 0xe49b69c1
|
||||
.word 0xefbe4786
|
||||
.word 0x0fc19dc6
|
||||
.word 0x240ca1cc
|
||||
.word 0x2de92c6f
|
||||
.word 0x4a7484aa
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x76f988da
|
||||
.word 0x983e5152
|
||||
.word 0xa831c66d
|
||||
.word 0xb00327c8
|
||||
.word 0xbf597fc7
|
||||
.word 0xc6e00bf3
|
||||
.word 0xd5a79147
|
||||
.word 0x06ca6351
|
||||
.word 0x14292967
|
||||
.word 0x27b70a85
|
||||
.word 0x2e1b2138
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x53380d13
|
||||
.word 0x650a7354
|
||||
.word 0x766a0abb
|
||||
.word 0x81c2c92e
|
||||
.word 0x92722c85
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xa81a664b
|
||||
.word 0xc24b8b70
|
||||
.word 0xc76c51a3
|
||||
.word 0xd192e819
|
||||
.word 0xd6990624
|
||||
.word 0xf40e3585
|
||||
.word 0x106aa070
|
||||
.word 0x19a4c116
|
||||
.word 0x1e376c08
|
||||
.word 0x2748774c
|
||||
.word 0x34b0bcb5
|
||||
.word 0x391c0cb3
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x5b9cca4f
|
||||
.word 0x682e6ff3
|
||||
.word 0x748f82ee
|
||||
.word 0x78a5636f
|
||||
.word 0x84c87814
|
||||
.word 0x8cc70208
|
||||
.word 0x90befffa
|
||||
.word 0xa4506ceb
|
||||
.word 0xbef9a3f7
|
||||
.word 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_Len_neon
|
||||
@@ -1101,82 +1054,35 @@ L_sha256_len_neon_start:
|
||||
#ifndef WOLFSSL_ARMASM_NO_HW_CRYPTO
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_trans_crypto_len_k, %object
|
||||
.section .rodata
|
||||
.type L_SHA256_trans_crypto_len_k, %object
|
||||
.size L_SHA256_trans_crypto_len_k, 256
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_trans_crypto_len_k:
|
||||
.word 0x428a2f98
|
||||
.word 0x71374491
|
||||
.word 0xb5c0fbcf
|
||||
.word 0xe9b5dba5
|
||||
.word 0x3956c25b
|
||||
.word 0x59f111f1
|
||||
.word 0x923f82a4
|
||||
.word 0xab1c5ed5
|
||||
.word 0xd807aa98
|
||||
.word 0x12835b01
|
||||
.word 0x243185be
|
||||
.word 0x550c7dc3
|
||||
.word 0x72be5d74
|
||||
.word 0x80deb1fe
|
||||
.word 0x9bdc06a7
|
||||
.word 0xc19bf174
|
||||
.word 0xe49b69c1
|
||||
.word 0xefbe4786
|
||||
.word 0x0fc19dc6
|
||||
.word 0x240ca1cc
|
||||
.word 0x2de92c6f
|
||||
.word 0x4a7484aa
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x76f988da
|
||||
.word 0x983e5152
|
||||
.word 0xa831c66d
|
||||
.word 0xb00327c8
|
||||
.word 0xbf597fc7
|
||||
.word 0xc6e00bf3
|
||||
.word 0xd5a79147
|
||||
.word 0x06ca6351
|
||||
.word 0x14292967
|
||||
.word 0x27b70a85
|
||||
.word 0x2e1b2138
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x53380d13
|
||||
.word 0x650a7354
|
||||
.word 0x766a0abb
|
||||
.word 0x81c2c92e
|
||||
.word 0x92722c85
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xa81a664b
|
||||
.word 0xc24b8b70
|
||||
.word 0xc76c51a3
|
||||
.word 0xd192e819
|
||||
.word 0xd6990624
|
||||
.word 0xf40e3585
|
||||
.word 0x106aa070
|
||||
.word 0x19a4c116
|
||||
.word 0x1e376c08
|
||||
.word 0x2748774c
|
||||
.word 0x34b0bcb5
|
||||
.word 0x391c0cb3
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x5b9cca4f
|
||||
.word 0x682e6ff3
|
||||
.word 0x748f82ee
|
||||
.word 0x78a5636f
|
||||
.word 0x84c87814
|
||||
.word 0x8cc70208
|
||||
.word 0x90befffa
|
||||
.word 0xa4506ceb
|
||||
.word 0xbef9a3f7
|
||||
.word 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_Len_crypto
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
|
||||
#if !defined(NO_SHA256) || defined(WOLFSSL_SHA224)
|
||||
static const word32 L_SHA256_transform_neon_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_neon_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -67,7 +67,7 @@ void Transform_Sha256_Len_neon(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"ldr w11, [%x[sha256], #28]\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_sha256_len_neon_begin_%=: \n\t"
|
||||
"L_sha256_len_neon_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
/* Copy digest to add in at end */
|
||||
"ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [%x[data]], #32\n\t"
|
||||
@@ -91,7 +91,7 @@ void Transform_Sha256_Len_neon(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mov x24, #3\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_sha256_len_neon_start_%=: \n\t"
|
||||
"L_sha256_len_neon_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"mov w14, v0.s[0]\n\t"
|
||||
"ror w12, w8, #6\n\t"
|
||||
@@ -1020,7 +1020,7 @@ void Transform_Sha256_Len_neon(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
}
|
||||
|
||||
#ifndef WOLFSSL_ARMASM_NO_HW_CRYPTO
|
||||
static const word32 L_SHA256_trans_crypto_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_trans_crypto_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -1055,7 +1055,7 @@ void Transform_Sha256_Len_crypto(wc_Sha256* sha256, const byte* data,
|
||||
"ld1 {v0.4s, v1.4s}, [%x[sha256]]\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_sha256_len_crypto_begin_%=: \n\t"
|
||||
"L_sha256_len_crypto_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
"ld1 {v4.4s, v5.4s, v6.4s, v7.4s}, [%x[data]], #0x40\n\t"
|
||||
"rev32 v4.16b, v4.16b\n\t"
|
||||
|
||||
@@ -33,42 +33,31 @@
|
||||
#ifdef WOLFSSL_ARMASM_CRYPTO_SHA3
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA3_transform_crypto_r, %object
|
||||
.section .rodata
|
||||
.type L_SHA3_transform_crypto_r, %object
|
||||
.size L_SHA3_transform_crypto_r, 192
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
.align 4
|
||||
#else
|
||||
.p2align 3
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA3_transform_crypto_r:
|
||||
.xword 0x0000000000000001
|
||||
.xword 0x0000000000008082
|
||||
.xword 0x800000000000808a
|
||||
.xword 0x8000000080008000
|
||||
.xword 0x000000000000808b
|
||||
.xword 0x0000000080000001
|
||||
.xword 0x8000000080008081
|
||||
.xword 0x8000000000008009
|
||||
.xword 0x000000000000008a
|
||||
.xword 0x0000000000000088
|
||||
.xword 0x0000000080008009
|
||||
.xword 0x000000008000000a
|
||||
.xword 0x000000008000808b
|
||||
.xword 0x800000000000008b
|
||||
.xword 0x8000000000008089
|
||||
.xword 0x8000000000008003
|
||||
.xword 0x8000000000008002
|
||||
.xword 0x8000000000000080
|
||||
.xword 0x000000000000800a
|
||||
.xword 0x800000008000000a
|
||||
.xword 0x8000000080008081
|
||||
.xword 0x8000000000008080
|
||||
.xword 0x0000000080000001
|
||||
.xword 0x8000000080008008
|
||||
.quad 0x0000000000000001,0x0000000000008082
|
||||
.quad 0x800000000000808a,0x8000000080008000
|
||||
.quad 0x000000000000808b,0x0000000080000001
|
||||
.quad 0x8000000080008081,0x8000000000008009
|
||||
.quad 0x000000000000008a,0x0000000000000088
|
||||
.quad 0x0000000080008009,0x000000008000000a
|
||||
.quad 0x000000008000808b,0x800000000000008b
|
||||
.quad 0x8000000000008089,0x8000000000008003
|
||||
.quad 0x8000000000008002,0x8000000000000080
|
||||
.quad 0x000000000000800a,0x800000008000000a
|
||||
.quad 0x8000000080008081,0x8000000000008080
|
||||
.quad 0x0000000080000001,0x8000000080008008
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl BlockSha3_crypto
|
||||
@@ -207,42 +196,31 @@ L_sha3_crypto_begin:
|
||||
#endif /* WOLFSSL_ARMASM_CRYPTO_SHA3 */
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA3_transform_base_r, %object
|
||||
.section .rodata
|
||||
.type L_SHA3_transform_base_r, %object
|
||||
.size L_SHA3_transform_base_r, 192
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
.align 4
|
||||
#else
|
||||
.p2align 3
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA3_transform_base_r:
|
||||
.xword 0x0000000000000001
|
||||
.xword 0x0000000000008082
|
||||
.xword 0x800000000000808a
|
||||
.xword 0x8000000080008000
|
||||
.xword 0x000000000000808b
|
||||
.xword 0x0000000080000001
|
||||
.xword 0x8000000080008081
|
||||
.xword 0x8000000000008009
|
||||
.xword 0x000000000000008a
|
||||
.xword 0x0000000000000088
|
||||
.xword 0x0000000080008009
|
||||
.xword 0x000000008000000a
|
||||
.xword 0x000000008000808b
|
||||
.xword 0x800000000000008b
|
||||
.xword 0x8000000000008089
|
||||
.xword 0x8000000000008003
|
||||
.xword 0x8000000000008002
|
||||
.xword 0x8000000000000080
|
||||
.xword 0x000000000000800a
|
||||
.xword 0x800000008000000a
|
||||
.xword 0x8000000080008081
|
||||
.xword 0x8000000000008080
|
||||
.xword 0x0000000080000001
|
||||
.xword 0x8000000080008008
|
||||
.quad 0x0000000000000001,0x0000000000008082
|
||||
.quad 0x800000000000808a,0x8000000080008000
|
||||
.quad 0x000000000000808b,0x0000000080000001
|
||||
.quad 0x8000000080008081,0x8000000000008009
|
||||
.quad 0x000000000000008a,0x0000000000000088
|
||||
.quad 0x0000000080008009,0x000000008000000a
|
||||
.quad 0x000000008000808b,0x800000000000008b
|
||||
.quad 0x8000000000008089,0x8000000000008003
|
||||
.quad 0x8000000000008002,0x8000000000000080
|
||||
.quad 0x000000000000800a,0x800000008000000a
|
||||
.quad 0x8000000080008081,0x8000000000008080
|
||||
.quad 0x0000000080000001,0x8000000080008008
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl BlockSha3_base
|
||||
|
||||
@@ -34,19 +34,19 @@
|
||||
|
||||
#ifdef WOLFSSL_SHA3
|
||||
#ifdef WOLFSSL_ARMASM_CRYPTO_SHA3
|
||||
static const word64 L_SHA3_transform_crypto_r[] = {
|
||||
0x0000000000000001, 0x0000000000008082,
|
||||
0x800000000000808a, 0x8000000080008000,
|
||||
0x000000000000808b, 0x0000000080000001,
|
||||
0x8000000080008081, 0x8000000000008009,
|
||||
0x000000000000008a, 0x0000000000000088,
|
||||
0x0000000080008009, 0x000000008000000a,
|
||||
0x000000008000808b, 0x800000000000008b,
|
||||
0x8000000000008089, 0x8000000000008003,
|
||||
0x8000000000008002, 0x8000000000000080,
|
||||
0x000000000000800a, 0x800000008000000a,
|
||||
0x8000000080008081, 0x8000000000008080,
|
||||
0x0000000080000001, 0x8000000080008008,
|
||||
XALIGNED(16) static const word64 L_SHA3_transform_crypto_r[] = {
|
||||
0x0000000000000001UL, 0x0000000000008082UL,
|
||||
0x800000000000808aUL, 0x8000000080008000UL,
|
||||
0x000000000000808bUL, 0x0000000080000001UL,
|
||||
0x8000000080008081UL, 0x8000000000008009UL,
|
||||
0x000000000000008aUL, 0x0000000000000088UL,
|
||||
0x0000000080008009UL, 0x000000008000000aUL,
|
||||
0x000000008000808bUL, 0x800000000000008bUL,
|
||||
0x8000000000008089UL, 0x8000000000008003UL,
|
||||
0x8000000000008002UL, 0x8000000000000080UL,
|
||||
0x000000000000800aUL, 0x800000008000000aUL,
|
||||
0x8000000080008081UL, 0x8000000000008080UL,
|
||||
0x0000000080000001UL, 0x8000000080008008UL,
|
||||
};
|
||||
|
||||
void BlockSha3_crypto(word64* state)
|
||||
@@ -67,7 +67,7 @@ void BlockSha3_crypto(word64* state)
|
||||
"mov x2, #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_sha3_crypto_begin_%=: \n\t"
|
||||
"L_sha3_crypto_begin_%=:\n\t"
|
||||
/* Col Mix */
|
||||
"eor3 v31.16b, v0.16b, v5.16b, v10.16b\n\t"
|
||||
"eor3 v27.16b, v1.16b, v6.16b, v11.16b\n\t"
|
||||
@@ -165,19 +165,19 @@ void BlockSha3_crypto(word64* state)
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_ARMASM_CRYPTO_SHA3 */
|
||||
static const word64 L_SHA3_transform_base_r[] = {
|
||||
0x0000000000000001, 0x0000000000008082,
|
||||
0x800000000000808a, 0x8000000080008000,
|
||||
0x000000000000808b, 0x0000000080000001,
|
||||
0x8000000080008081, 0x8000000000008009,
|
||||
0x000000000000008a, 0x0000000000000088,
|
||||
0x0000000080008009, 0x000000008000000a,
|
||||
0x000000008000808b, 0x800000000000008b,
|
||||
0x8000000000008089, 0x8000000000008003,
|
||||
0x8000000000008002, 0x8000000000000080,
|
||||
0x000000000000800a, 0x800000008000000a,
|
||||
0x8000000080008081, 0x8000000000008080,
|
||||
0x0000000080000001, 0x8000000080008008,
|
||||
XALIGNED(16) static const word64 L_SHA3_transform_base_r[] = {
|
||||
0x0000000000000001UL, 0x0000000000008082UL,
|
||||
0x800000000000808aUL, 0x8000000080008000UL,
|
||||
0x000000000000808bUL, 0x0000000080000001UL,
|
||||
0x8000000080008081UL, 0x8000000000008009UL,
|
||||
0x000000000000008aUL, 0x0000000000000088UL,
|
||||
0x0000000080008009UL, 0x000000008000000aUL,
|
||||
0x000000008000808bUL, 0x800000000000008bUL,
|
||||
0x8000000000008089UL, 0x8000000000008003UL,
|
||||
0x8000000000008002UL, 0x8000000000000080UL,
|
||||
0x000000000000800aUL, 0x800000008000000aUL,
|
||||
0x8000000080008081UL, 0x8000000000008080UL,
|
||||
0x0000000080000001UL, 0x8000000080008008UL,
|
||||
};
|
||||
|
||||
void BlockSha3_base(word64* state)
|
||||
@@ -203,7 +203,7 @@ void BlockSha3_base(word64* state)
|
||||
"mov x28, #24\n\t"
|
||||
/* Start of 24 rounds */
|
||||
"\n"
|
||||
"L_SHA3_transform_base_begin_%=: \n\t"
|
||||
"L_SHA3_transform_base_begin_%=:\n\t"
|
||||
"stp %[r], x28, [x29, #48]\n\t"
|
||||
"eor %x[state], x5, x10\n\t"
|
||||
"eor x30, x1, x6\n\t"
|
||||
|
||||
@@ -32,113 +32,75 @@
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA512_transform_neon_len_k, %object
|
||||
.section .rodata
|
||||
.type L_SHA512_transform_neon_len_k, %object
|
||||
.size L_SHA512_transform_neon_len_k, 640
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
.align 4
|
||||
#else
|
||||
.p2align 3
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA512_transform_neon_len_k:
|
||||
.xword 0x428a2f98d728ae22
|
||||
.xword 0x7137449123ef65cd
|
||||
.xword 0xb5c0fbcfec4d3b2f
|
||||
.xword 0xe9b5dba58189dbbc
|
||||
.xword 0x3956c25bf348b538
|
||||
.xword 0x59f111f1b605d019
|
||||
.xword 0x923f82a4af194f9b
|
||||
.xword 0xab1c5ed5da6d8118
|
||||
.xword 0xd807aa98a3030242
|
||||
.xword 0x12835b0145706fbe
|
||||
.xword 0x243185be4ee4b28c
|
||||
.xword 0x550c7dc3d5ffb4e2
|
||||
.xword 0x72be5d74f27b896f
|
||||
.xword 0x80deb1fe3b1696b1
|
||||
.xword 0x9bdc06a725c71235
|
||||
.xword 0xc19bf174cf692694
|
||||
.xword 0xe49b69c19ef14ad2
|
||||
.xword 0xefbe4786384f25e3
|
||||
.xword 0x0fc19dc68b8cd5b5
|
||||
.xword 0x240ca1cc77ac9c65
|
||||
.xword 0x2de92c6f592b0275
|
||||
.xword 0x4a7484aa6ea6e483
|
||||
.xword 0x5cb0a9dcbd41fbd4
|
||||
.xword 0x76f988da831153b5
|
||||
.xword 0x983e5152ee66dfab
|
||||
.xword 0xa831c66d2db43210
|
||||
.xword 0xb00327c898fb213f
|
||||
.xword 0xbf597fc7beef0ee4
|
||||
.xword 0xc6e00bf33da88fc2
|
||||
.xword 0xd5a79147930aa725
|
||||
.xword 0x06ca6351e003826f
|
||||
.xword 0x142929670a0e6e70
|
||||
.xword 0x27b70a8546d22ffc
|
||||
.xword 0x2e1b21385c26c926
|
||||
.xword 0x4d2c6dfc5ac42aed
|
||||
.xword 0x53380d139d95b3df
|
||||
.xword 0x650a73548baf63de
|
||||
.xword 0x766a0abb3c77b2a8
|
||||
.xword 0x81c2c92e47edaee6
|
||||
.xword 0x92722c851482353b
|
||||
.xword 0xa2bfe8a14cf10364
|
||||
.xword 0xa81a664bbc423001
|
||||
.xword 0xc24b8b70d0f89791
|
||||
.xword 0xc76c51a30654be30
|
||||
.xword 0xd192e819d6ef5218
|
||||
.xword 0xd69906245565a910
|
||||
.xword 0xf40e35855771202a
|
||||
.xword 0x106aa07032bbd1b8
|
||||
.xword 0x19a4c116b8d2d0c8
|
||||
.xword 0x1e376c085141ab53
|
||||
.xword 0x2748774cdf8eeb99
|
||||
.xword 0x34b0bcb5e19b48a8
|
||||
.xword 0x391c0cb3c5c95a63
|
||||
.xword 0x4ed8aa4ae3418acb
|
||||
.xword 0x5b9cca4f7763e373
|
||||
.xword 0x682e6ff3d6b2b8a3
|
||||
.xword 0x748f82ee5defb2fc
|
||||
.xword 0x78a5636f43172f60
|
||||
.xword 0x84c87814a1f0ab72
|
||||
.xword 0x8cc702081a6439ec
|
||||
.xword 0x90befffa23631e28
|
||||
.xword 0xa4506cebde82bde9
|
||||
.xword 0xbef9a3f7b2c67915
|
||||
.xword 0xc67178f2e372532b
|
||||
.xword 0xca273eceea26619c
|
||||
.xword 0xd186b8c721c0c207
|
||||
.xword 0xeada7dd6cde0eb1e
|
||||
.xword 0xf57d4f7fee6ed178
|
||||
.xword 0x06f067aa72176fba
|
||||
.xword 0x0a637dc5a2c898a6
|
||||
.xword 0x113f9804bef90dae
|
||||
.xword 0x1b710b35131c471b
|
||||
.xword 0x28db77f523047d84
|
||||
.xword 0x32caab7b40c72493
|
||||
.xword 0x3c9ebe0a15c9bebc
|
||||
.xword 0x431d67c49c100d4c
|
||||
.xword 0x4cc5d4becb3e42b6
|
||||
.xword 0x597f299cfc657e2a
|
||||
.xword 0x5fcb6fab3ad6faec
|
||||
.xword 0x6c44198c4a475817
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
|
||||
.quad 0x3956c25bf348b538,0x59f111f1b605d019
|
||||
.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
|
||||
.quad 0xd807aa98a3030242,0x12835b0145706fbe
|
||||
.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
|
||||
.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
|
||||
.quad 0x9bdc06a725c71235,0xc19bf174cf692694
|
||||
.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
|
||||
.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
|
||||
.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
|
||||
.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
|
||||
.quad 0x983e5152ee66dfab,0xa831c66d2db43210
|
||||
.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
|
||||
.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
|
||||
.quad 0x06ca6351e003826f,0x142929670a0e6e70
|
||||
.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
|
||||
.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
|
||||
.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
|
||||
.quad 0x81c2c92e47edaee6,0x92722c851482353b
|
||||
.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
|
||||
.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
|
||||
.quad 0xd192e819d6ef5218,0xd69906245565a910
|
||||
.quad 0xf40e35855771202a,0x106aa07032bbd1b8
|
||||
.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
|
||||
.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
|
||||
.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
|
||||
.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
|
||||
.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
|
||||
.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
|
||||
.quad 0x90befffa23631e28,0xa4506cebde82bde9
|
||||
.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
|
||||
.quad 0xca273eceea26619c,0xd186b8c721c0c207
|
||||
.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
|
||||
.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
|
||||
.quad 0x113f9804bef90dae,0x1b710b35131c471b
|
||||
.quad 0x28db77f523047d84,0x32caab7b40c72493
|
||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA512_transform_neon_len_r8, %object
|
||||
.section .rodata
|
||||
.type L_SHA512_transform_neon_len_r8, %object
|
||||
.size L_SHA512_transform_neon_len_r8, 16
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA512_transform_neon_len_r8:
|
||||
.xword 0x7060504030201, 0x80f0e0d0c0b0a09
|
||||
.quad 0x0007060504030201,0x080f0e0d0c0b0a09
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha512_Len_neon
|
||||
@@ -1087,98 +1049,59 @@ L_sha512_len_neon_start:
|
||||
#ifdef WOLFSSL_ARMASM_CRYPTO_SHA512
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA512_trans_crypto_len_k, %object
|
||||
.section .rodata
|
||||
.type L_SHA512_trans_crypto_len_k, %object
|
||||
.size L_SHA512_trans_crypto_len_k, 640
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 16-byte aligned, 128-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
.align 4
|
||||
#else
|
||||
.p2align 3
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA512_trans_crypto_len_k:
|
||||
.xword 0x428a2f98d728ae22
|
||||
.xword 0x7137449123ef65cd
|
||||
.xword 0xb5c0fbcfec4d3b2f
|
||||
.xword 0xe9b5dba58189dbbc
|
||||
.xword 0x3956c25bf348b538
|
||||
.xword 0x59f111f1b605d019
|
||||
.xword 0x923f82a4af194f9b
|
||||
.xword 0xab1c5ed5da6d8118
|
||||
.xword 0xd807aa98a3030242
|
||||
.xword 0x12835b0145706fbe
|
||||
.xword 0x243185be4ee4b28c
|
||||
.xword 0x550c7dc3d5ffb4e2
|
||||
.xword 0x72be5d74f27b896f
|
||||
.xword 0x80deb1fe3b1696b1
|
||||
.xword 0x9bdc06a725c71235
|
||||
.xword 0xc19bf174cf692694
|
||||
.xword 0xe49b69c19ef14ad2
|
||||
.xword 0xefbe4786384f25e3
|
||||
.xword 0x0fc19dc68b8cd5b5
|
||||
.xword 0x240ca1cc77ac9c65
|
||||
.xword 0x2de92c6f592b0275
|
||||
.xword 0x4a7484aa6ea6e483
|
||||
.xword 0x5cb0a9dcbd41fbd4
|
||||
.xword 0x76f988da831153b5
|
||||
.xword 0x983e5152ee66dfab
|
||||
.xword 0xa831c66d2db43210
|
||||
.xword 0xb00327c898fb213f
|
||||
.xword 0xbf597fc7beef0ee4
|
||||
.xword 0xc6e00bf33da88fc2
|
||||
.xword 0xd5a79147930aa725
|
||||
.xword 0x06ca6351e003826f
|
||||
.xword 0x142929670a0e6e70
|
||||
.xword 0x27b70a8546d22ffc
|
||||
.xword 0x2e1b21385c26c926
|
||||
.xword 0x4d2c6dfc5ac42aed
|
||||
.xword 0x53380d139d95b3df
|
||||
.xword 0x650a73548baf63de
|
||||
.xword 0x766a0abb3c77b2a8
|
||||
.xword 0x81c2c92e47edaee6
|
||||
.xword 0x92722c851482353b
|
||||
.xword 0xa2bfe8a14cf10364
|
||||
.xword 0xa81a664bbc423001
|
||||
.xword 0xc24b8b70d0f89791
|
||||
.xword 0xc76c51a30654be30
|
||||
.xword 0xd192e819d6ef5218
|
||||
.xword 0xd69906245565a910
|
||||
.xword 0xf40e35855771202a
|
||||
.xword 0x106aa07032bbd1b8
|
||||
.xword 0x19a4c116b8d2d0c8
|
||||
.xword 0x1e376c085141ab53
|
||||
.xword 0x2748774cdf8eeb99
|
||||
.xword 0x34b0bcb5e19b48a8
|
||||
.xword 0x391c0cb3c5c95a63
|
||||
.xword 0x4ed8aa4ae3418acb
|
||||
.xword 0x5b9cca4f7763e373
|
||||
.xword 0x682e6ff3d6b2b8a3
|
||||
.xword 0x748f82ee5defb2fc
|
||||
.xword 0x78a5636f43172f60
|
||||
.xword 0x84c87814a1f0ab72
|
||||
.xword 0x8cc702081a6439ec
|
||||
.xword 0x90befffa23631e28
|
||||
.xword 0xa4506cebde82bde9
|
||||
.xword 0xbef9a3f7b2c67915
|
||||
.xword 0xc67178f2e372532b
|
||||
.xword 0xca273eceea26619c
|
||||
.xword 0xd186b8c721c0c207
|
||||
.xword 0xeada7dd6cde0eb1e
|
||||
.xword 0xf57d4f7fee6ed178
|
||||
.xword 0x06f067aa72176fba
|
||||
.xword 0x0a637dc5a2c898a6
|
||||
.xword 0x113f9804bef90dae
|
||||
.xword 0x1b710b35131c471b
|
||||
.xword 0x28db77f523047d84
|
||||
.xword 0x32caab7b40c72493
|
||||
.xword 0x3c9ebe0a15c9bebc
|
||||
.xword 0x431d67c49c100d4c
|
||||
.xword 0x4cc5d4becb3e42b6
|
||||
.xword 0x597f299cfc657e2a
|
||||
.xword 0x5fcb6fab3ad6faec
|
||||
.xword 0x6c44198c4a475817
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
|
||||
.quad 0x3956c25bf348b538,0x59f111f1b605d019
|
||||
.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
|
||||
.quad 0xd807aa98a3030242,0x12835b0145706fbe
|
||||
.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
|
||||
.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
|
||||
.quad 0x9bdc06a725c71235,0xc19bf174cf692694
|
||||
.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
|
||||
.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
|
||||
.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
|
||||
.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
|
||||
.quad 0x983e5152ee66dfab,0xa831c66d2db43210
|
||||
.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
|
||||
.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
|
||||
.quad 0x06ca6351e003826f,0x142929670a0e6e70
|
||||
.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
|
||||
.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
|
||||
.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
|
||||
.quad 0x81c2c92e47edaee6,0x92722c851482353b
|
||||
.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
|
||||
.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
|
||||
.quad 0xd192e819d6ef5218,0xd69906245565a910
|
||||
.quad 0xf40e35855771202a,0x106aa07032bbd1b8
|
||||
.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
|
||||
.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
|
||||
.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
|
||||
.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
|
||||
.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
|
||||
.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
|
||||
.quad 0x90befffa23631e28,0xa4506cebde82bde9
|
||||
.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
|
||||
.quad 0xca273eceea26619c,0xd186b8c721c0c207
|
||||
.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
|
||||
.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
|
||||
.quad 0x113f9804bef90dae,0x1b710b35131c471b
|
||||
.quad 0x28db77f523047d84,0x32caab7b40c72493
|
||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha512_Len_crypto
|
||||
|
||||
@@ -33,51 +33,51 @@
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
static const word64 L_SHA512_transform_neon_len_k[] = {
|
||||
0x428a2f98d728ae22, 0x7137449123ef65cd,
|
||||
0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
|
||||
0x3956c25bf348b538, 0x59f111f1b605d019,
|
||||
0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
|
||||
0xd807aa98a3030242, 0x12835b0145706fbe,
|
||||
0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
|
||||
0x72be5d74f27b896f, 0x80deb1fe3b1696b1,
|
||||
0x9bdc06a725c71235, 0xc19bf174cf692694,
|
||||
0xe49b69c19ef14ad2, 0xefbe4786384f25e3,
|
||||
0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
|
||||
0x2de92c6f592b0275, 0x4a7484aa6ea6e483,
|
||||
0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
|
||||
0x983e5152ee66dfab, 0xa831c66d2db43210,
|
||||
0xb00327c898fb213f, 0xbf597fc7beef0ee4,
|
||||
0xc6e00bf33da88fc2, 0xd5a79147930aa725,
|
||||
0x06ca6351e003826f, 0x142929670a0e6e70,
|
||||
0x27b70a8546d22ffc, 0x2e1b21385c26c926,
|
||||
0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
|
||||
0x650a73548baf63de, 0x766a0abb3c77b2a8,
|
||||
0x81c2c92e47edaee6, 0x92722c851482353b,
|
||||
0xa2bfe8a14cf10364, 0xa81a664bbc423001,
|
||||
0xc24b8b70d0f89791, 0xc76c51a30654be30,
|
||||
0xd192e819d6ef5218, 0xd69906245565a910,
|
||||
0xf40e35855771202a, 0x106aa07032bbd1b8,
|
||||
0x19a4c116b8d2d0c8, 0x1e376c085141ab53,
|
||||
0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
|
||||
0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb,
|
||||
0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
|
||||
0x748f82ee5defb2fc, 0x78a5636f43172f60,
|
||||
0x84c87814a1f0ab72, 0x8cc702081a6439ec,
|
||||
0x90befffa23631e28, 0xa4506cebde82bde9,
|
||||
0xbef9a3f7b2c67915, 0xc67178f2e372532b,
|
||||
0xca273eceea26619c, 0xd186b8c721c0c207,
|
||||
0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
|
||||
0x06f067aa72176fba, 0x0a637dc5a2c898a6,
|
||||
0x113f9804bef90dae, 0x1b710b35131c471b,
|
||||
0x28db77f523047d84, 0x32caab7b40c72493,
|
||||
0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
|
||||
0x4cc5d4becb3e42b6, 0x597f299cfc657e2a,
|
||||
0x5fcb6fab3ad6faec, 0x6c44198c4a475817,
|
||||
XALIGNED(16) static const word64 L_SHA512_transform_neon_len_k[] = {
|
||||
0x428a2f98d728ae22UL, 0x7137449123ef65cdUL,
|
||||
0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
|
||||
0x3956c25bf348b538UL, 0x59f111f1b605d019UL,
|
||||
0x923f82a4af194f9bUL, 0xab1c5ed5da6d8118UL,
|
||||
0xd807aa98a3030242UL, 0x12835b0145706fbeUL,
|
||||
0x243185be4ee4b28cUL, 0x550c7dc3d5ffb4e2UL,
|
||||
0x72be5d74f27b896fUL, 0x80deb1fe3b1696b1UL,
|
||||
0x9bdc06a725c71235UL, 0xc19bf174cf692694UL,
|
||||
0xe49b69c19ef14ad2UL, 0xefbe4786384f25e3UL,
|
||||
0x0fc19dc68b8cd5b5UL, 0x240ca1cc77ac9c65UL,
|
||||
0x2de92c6f592b0275UL, 0x4a7484aa6ea6e483UL,
|
||||
0x5cb0a9dcbd41fbd4UL, 0x76f988da831153b5UL,
|
||||
0x983e5152ee66dfabUL, 0xa831c66d2db43210UL,
|
||||
0xb00327c898fb213fUL, 0xbf597fc7beef0ee4UL,
|
||||
0xc6e00bf33da88fc2UL, 0xd5a79147930aa725UL,
|
||||
0x06ca6351e003826fUL, 0x142929670a0e6e70UL,
|
||||
0x27b70a8546d22ffcUL, 0x2e1b21385c26c926UL,
|
||||
0x4d2c6dfc5ac42aedUL, 0x53380d139d95b3dfUL,
|
||||
0x650a73548baf63deUL, 0x766a0abb3c77b2a8UL,
|
||||
0x81c2c92e47edaee6UL, 0x92722c851482353bUL,
|
||||
0xa2bfe8a14cf10364UL, 0xa81a664bbc423001UL,
|
||||
0xc24b8b70d0f89791UL, 0xc76c51a30654be30UL,
|
||||
0xd192e819d6ef5218UL, 0xd69906245565a910UL,
|
||||
0xf40e35855771202aUL, 0x106aa07032bbd1b8UL,
|
||||
0x19a4c116b8d2d0c8UL, 0x1e376c085141ab53UL,
|
||||
0x2748774cdf8eeb99UL, 0x34b0bcb5e19b48a8UL,
|
||||
0x391c0cb3c5c95a63UL, 0x4ed8aa4ae3418acbUL,
|
||||
0x5b9cca4f7763e373UL, 0x682e6ff3d6b2b8a3UL,
|
||||
0x748f82ee5defb2fcUL, 0x78a5636f43172f60UL,
|
||||
0x84c87814a1f0ab72UL, 0x8cc702081a6439ecUL,
|
||||
0x90befffa23631e28UL, 0xa4506cebde82bde9UL,
|
||||
0xbef9a3f7b2c67915UL, 0xc67178f2e372532bUL,
|
||||
0xca273eceea26619cUL, 0xd186b8c721c0c207UL,
|
||||
0xeada7dd6cde0eb1eUL, 0xf57d4f7fee6ed178UL,
|
||||
0x06f067aa72176fbaUL, 0x0a637dc5a2c898a6UL,
|
||||
0x113f9804bef90daeUL, 0x1b710b35131c471bUL,
|
||||
0x28db77f523047d84UL, 0x32caab7b40c72493UL,
|
||||
0x3c9ebe0a15c9bebcUL, 0x431d67c49c100d4cUL,
|
||||
0x4cc5d4becb3e42b6UL, 0x597f299cfc657e2aUL,
|
||||
0x5fcb6fab3ad6faecUL, 0x6c44198c4a475817UL,
|
||||
};
|
||||
|
||||
static const word64 L_SHA512_transform_neon_len_r8[] = {
|
||||
0x0007060504030201, 0x080f0e0d0c0b0a09,
|
||||
XALIGNED(16) static const word64 L_SHA512_transform_neon_len_r8[] = {
|
||||
0x0007060504030201UL, 0x080f0e0d0c0b0a09UL,
|
||||
};
|
||||
|
||||
void Transform_Sha512_Len_neon(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
@@ -93,7 +93,7 @@ void Transform_Sha512_Len_neon(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
"ldp x10, x11, [%x[sha512], #48]\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_sha512_len_neon_begin_%=: \n\t"
|
||||
"L_sha512_len_neon_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
/* Copy digest to add in at end */
|
||||
"ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [%x[data]], #0x40\n\t"
|
||||
@@ -119,7 +119,7 @@ void Transform_Sha512_Len_neon(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
"mov %[r8], #4\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_sha512_len_neon_start_%=: \n\t"
|
||||
"L_sha512_len_neon_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"mov x13, v0.d[0]\n\t"
|
||||
"ldr x15, [%[k]], #8\n\t"
|
||||
@@ -995,47 +995,47 @@ void Transform_Sha512_Len_neon(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_ARMASM_CRYPTO_SHA512
|
||||
static const word64 L_SHA512_trans_crypto_len_k[] = {
|
||||
0x428a2f98d728ae22, 0x7137449123ef65cd,
|
||||
0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,
|
||||
0x3956c25bf348b538, 0x59f111f1b605d019,
|
||||
0x923f82a4af194f9b, 0xab1c5ed5da6d8118,
|
||||
0xd807aa98a3030242, 0x12835b0145706fbe,
|
||||
0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,
|
||||
0x72be5d74f27b896f, 0x80deb1fe3b1696b1,
|
||||
0x9bdc06a725c71235, 0xc19bf174cf692694,
|
||||
0xe49b69c19ef14ad2, 0xefbe4786384f25e3,
|
||||
0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,
|
||||
0x2de92c6f592b0275, 0x4a7484aa6ea6e483,
|
||||
0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,
|
||||
0x983e5152ee66dfab, 0xa831c66d2db43210,
|
||||
0xb00327c898fb213f, 0xbf597fc7beef0ee4,
|
||||
0xc6e00bf33da88fc2, 0xd5a79147930aa725,
|
||||
0x06ca6351e003826f, 0x142929670a0e6e70,
|
||||
0x27b70a8546d22ffc, 0x2e1b21385c26c926,
|
||||
0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,
|
||||
0x650a73548baf63de, 0x766a0abb3c77b2a8,
|
||||
0x81c2c92e47edaee6, 0x92722c851482353b,
|
||||
0xa2bfe8a14cf10364, 0xa81a664bbc423001,
|
||||
0xc24b8b70d0f89791, 0xc76c51a30654be30,
|
||||
0xd192e819d6ef5218, 0xd69906245565a910,
|
||||
0xf40e35855771202a, 0x106aa07032bbd1b8,
|
||||
0x19a4c116b8d2d0c8, 0x1e376c085141ab53,
|
||||
0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,
|
||||
0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb,
|
||||
0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,
|
||||
0x748f82ee5defb2fc, 0x78a5636f43172f60,
|
||||
0x84c87814a1f0ab72, 0x8cc702081a6439ec,
|
||||
0x90befffa23631e28, 0xa4506cebde82bde9,
|
||||
0xbef9a3f7b2c67915, 0xc67178f2e372532b,
|
||||
0xca273eceea26619c, 0xd186b8c721c0c207,
|
||||
0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,
|
||||
0x06f067aa72176fba, 0x0a637dc5a2c898a6,
|
||||
0x113f9804bef90dae, 0x1b710b35131c471b,
|
||||
0x28db77f523047d84, 0x32caab7b40c72493,
|
||||
0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,
|
||||
0x4cc5d4becb3e42b6, 0x597f299cfc657e2a,
|
||||
0x5fcb6fab3ad6faec, 0x6c44198c4a475817,
|
||||
XALIGNED(16) static const word64 L_SHA512_trans_crypto_len_k[] = {
|
||||
0x428a2f98d728ae22UL, 0x7137449123ef65cdUL,
|
||||
0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
|
||||
0x3956c25bf348b538UL, 0x59f111f1b605d019UL,
|
||||
0x923f82a4af194f9bUL, 0xab1c5ed5da6d8118UL,
|
||||
0xd807aa98a3030242UL, 0x12835b0145706fbeUL,
|
||||
0x243185be4ee4b28cUL, 0x550c7dc3d5ffb4e2UL,
|
||||
0x72be5d74f27b896fUL, 0x80deb1fe3b1696b1UL,
|
||||
0x9bdc06a725c71235UL, 0xc19bf174cf692694UL,
|
||||
0xe49b69c19ef14ad2UL, 0xefbe4786384f25e3UL,
|
||||
0x0fc19dc68b8cd5b5UL, 0x240ca1cc77ac9c65UL,
|
||||
0x2de92c6f592b0275UL, 0x4a7484aa6ea6e483UL,
|
||||
0x5cb0a9dcbd41fbd4UL, 0x76f988da831153b5UL,
|
||||
0x983e5152ee66dfabUL, 0xa831c66d2db43210UL,
|
||||
0xb00327c898fb213fUL, 0xbf597fc7beef0ee4UL,
|
||||
0xc6e00bf33da88fc2UL, 0xd5a79147930aa725UL,
|
||||
0x06ca6351e003826fUL, 0x142929670a0e6e70UL,
|
||||
0x27b70a8546d22ffcUL, 0x2e1b21385c26c926UL,
|
||||
0x4d2c6dfc5ac42aedUL, 0x53380d139d95b3dfUL,
|
||||
0x650a73548baf63deUL, 0x766a0abb3c77b2a8UL,
|
||||
0x81c2c92e47edaee6UL, 0x92722c851482353bUL,
|
||||
0xa2bfe8a14cf10364UL, 0xa81a664bbc423001UL,
|
||||
0xc24b8b70d0f89791UL, 0xc76c51a30654be30UL,
|
||||
0xd192e819d6ef5218UL, 0xd69906245565a910UL,
|
||||
0xf40e35855771202aUL, 0x106aa07032bbd1b8UL,
|
||||
0x19a4c116b8d2d0c8UL, 0x1e376c085141ab53UL,
|
||||
0x2748774cdf8eeb99UL, 0x34b0bcb5e19b48a8UL,
|
||||
0x391c0cb3c5c95a63UL, 0x4ed8aa4ae3418acbUL,
|
||||
0x5b9cca4f7763e373UL, 0x682e6ff3d6b2b8a3UL,
|
||||
0x748f82ee5defb2fcUL, 0x78a5636f43172f60UL,
|
||||
0x84c87814a1f0ab72UL, 0x8cc702081a6439ecUL,
|
||||
0x90befffa23631e28UL, 0xa4506cebde82bde9UL,
|
||||
0xbef9a3f7b2c67915UL, 0xc67178f2e372532bUL,
|
||||
0xca273eceea26619cUL, 0xd186b8c721c0c207UL,
|
||||
0xeada7dd6cde0eb1eUL, 0xf57d4f7fee6ed178UL,
|
||||
0x06f067aa72176fbaUL, 0x0a637dc5a2c898a6UL,
|
||||
0x113f9804bef90daeUL, 0x1b710b35131c471bUL,
|
||||
0x28db77f523047d84UL, 0x32caab7b40c72493UL,
|
||||
0x3c9ebe0a15c9bebcUL, 0x431d67c49c100d4cUL,
|
||||
0x4cc5d4becb3e42b6UL, 0x597f299cfc657e2aUL,
|
||||
0x5fcb6fab3ad6faecUL, 0x6c44198c4a475817UL,
|
||||
};
|
||||
|
||||
void Transform_Sha512_Len_crypto(wc_Sha512* sha512, const byte* data,
|
||||
@@ -1055,7 +1055,7 @@ void Transform_Sha512_Len_crypto(wc_Sha512* sha512, const byte* data,
|
||||
"ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [%x[sha512]]\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_sha512_len_crypto_begin_%=: \n\t"
|
||||
"L_sha512_len_crypto_begin_%=:\n\t"
|
||||
"mov x3, %[k]\n\t"
|
||||
/* Load W */
|
||||
"ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [%x[data]], #0x40\n\t"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -41,12 +41,17 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifndef NO_AES
|
||||
#include <wolfssl/wolfcrypt/aes.h>
|
||||
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
XALIGNED(16) static const word32 L_AES_Thumb2_td_data[] = {
|
||||
XALIGNED(8) static const word32 L_AES_Thumb2_td_data[] = {
|
||||
0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e,
|
||||
0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,
|
||||
0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c,
|
||||
@@ -117,7 +122,7 @@ XALIGNED(16) static const word32 L_AES_Thumb2_td_data[] = {
|
||||
#if defined(HAVE_AES_DECRYPT) || defined(HAVE_AES_CBC) || \
|
||||
defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
|
||||
defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
|
||||
XALIGNED(16) static const word32 L_AES_Thumb2_te_data[] = {
|
||||
XALIGNED(8) static const word32 L_AES_Thumb2_te_data[] = {
|
||||
0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b,
|
||||
0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,
|
||||
0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b,
|
||||
@@ -196,7 +201,7 @@ static const word32* L_AES_Thumb2_te = L_AES_Thumb2_te_data;
|
||||
#endif /* HAVE_AES_DECRYPT || HAVE_AES_CBC || HAVE_AESCCM || HAVE_AESGCM ||
|
||||
* WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER */
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
void AES_invert_key(unsigned char* ks, word32 rounds);
|
||||
void AES_invert_key(unsigned char* ks_p, word32 rounds_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_invert_key(unsigned char* ks_p, word32 rounds_p)
|
||||
#else
|
||||
@@ -208,15 +213,11 @@ WC_OMIT_FRAME_POINTER void AES_invert_key(unsigned char* ks, word32 rounds)
|
||||
register word32 rounds __asm__ ("r1") = (word32)rounds_p;
|
||||
register word32* L_AES_Thumb2_te_c __asm__ ("r2") =
|
||||
(word32*)L_AES_Thumb2_te;
|
||||
|
||||
register word32* L_AES_Thumb2_td_c __asm__ ("r3") =
|
||||
(word32*)L_AES_Thumb2_td;
|
||||
|
||||
#else
|
||||
register word32* L_AES_Thumb2_te_c = (word32*)L_AES_Thumb2_te;
|
||||
|
||||
register word32* L_AES_Thumb2_td_c = (word32*)L_AES_Thumb2_td;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -325,24 +326,31 @@ WC_OMIT_FRAME_POINTER void AES_invert_key(unsigned char* ks, word32 rounds)
|
||||
#else
|
||||
"BNE.W L_AES_invert_key_mix_loop_%=\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ks] "+r" (ks), [rounds] "+r" (rounds),
|
||||
[L_AES_Thumb2_te] "+r" (L_AES_Thumb2_te_c),
|
||||
[L_AES_Thumb2_td] "+r" (L_AES_Thumb2_td_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [ks] "r" (ks), [rounds] "r" (rounds),
|
||||
[L_AES_Thumb2_te] "r" (L_AES_Thumb2_te_c),
|
||||
[L_AES_Thumb2_td] "r" (L_AES_Thumb2_td_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r4", "r5", "r6", "r7", "r8", "r9",
|
||||
"r10", "r11"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
XALIGNED(16) static const word32 L_AES_Thumb2_rcon[] = {
|
||||
XALIGNED(8) static const word32 L_AES_Thumb2_rcon[] = {
|
||||
0x01000000, 0x02000000, 0x04000000, 0x08000000,
|
||||
0x10000000, 0x20000000, 0x40000000, 0x80000000,
|
||||
0x1b000000, 0x36000000
|
||||
};
|
||||
|
||||
void AES_set_encrypt_key(const unsigned char* key, word32 len,
|
||||
unsigned char* ks);
|
||||
void AES_set_encrypt_key(const unsigned char* key_p, word32 len_p,
|
||||
unsigned char* ks_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_set_encrypt_key(const unsigned char* key_p,
|
||||
word32 len_p, unsigned char* ks_p)
|
||||
@@ -358,15 +366,11 @@ WC_OMIT_FRAME_POINTER void AES_set_encrypt_key(const unsigned char* key,
|
||||
register unsigned char* ks __asm__ ("r2") = (unsigned char*)ks_p;
|
||||
register word32* L_AES_Thumb2_te_c __asm__ ("r3") =
|
||||
(word32*)L_AES_Thumb2_te;
|
||||
|
||||
register word32* L_AES_Thumb2_rcon_c __asm__ ("r4") =
|
||||
(word32*)&L_AES_Thumb2_rcon;
|
||||
|
||||
#else
|
||||
register word32* L_AES_Thumb2_te_c = (word32*)L_AES_Thumb2_te;
|
||||
|
||||
register word32* L_AES_Thumb2_rcon_c = (word32*)&L_AES_Thumb2_rcon;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -629,16 +633,24 @@ WC_OMIT_FRAME_POINTER void AES_set_encrypt_key(const unsigned char* key,
|
||||
#else
|
||||
"L_AES_set_encrypt_key_end_%=:\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [key] "+r" (key), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[L_AES_Thumb2_te] "+r" (L_AES_Thumb2_te_c),
|
||||
[L_AES_Thumb2_rcon] "+r" (L_AES_Thumb2_rcon_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [key] "r" (key), [len] "r" (len), [ks] "r" (ks),
|
||||
[L_AES_Thumb2_te] "r" (L_AES_Thumb2_te_c),
|
||||
[L_AES_Thumb2_rcon] "r" (L_AES_Thumb2_rcon_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r5", "r6", "r7", "r8", "r9", "r10"
|
||||
);
|
||||
}
|
||||
|
||||
#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
|
||||
void AES_encrypt_block(const word32* te, int nr, int len, const word32* ks);
|
||||
void AES_encrypt_block(const word32* te_p, int nr_p, int len_p,
|
||||
const word32* ks_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_encrypt_block(const word32* te_p, int nr_p,
|
||||
int len_p, const word32* ks_p)
|
||||
@@ -869,8 +881,13 @@ WC_OMIT_FRAME_POINTER void AES_encrypt_block(const word32* te, int nr, int len,
|
||||
"EOR r5, r5, r9\n\t"
|
||||
"EOR r6, r6, r10\n\t"
|
||||
"EOR r7, r7, r11\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [te] "+r" (te), [nr] "+r" (nr), [len] "+r" (len), [ks] "+r" (ks)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [te] "r" (te), [nr] "r" (nr), [len] "r" (len), [ks] "r" (ks)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -884,8 +901,8 @@ static const word32* L_AES_Thumb2_te_ecb = L_AES_Thumb2_te_data;
|
||||
#if defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
|
||||
defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || \
|
||||
defined(HAVE_AES_ECB)
|
||||
void AES_ECB_encrypt(const unsigned char* in, unsigned char* out,
|
||||
unsigned long len, const unsigned char* ks, int nr);
|
||||
void AES_ECB_encrypt(const unsigned char* in_p, unsigned char* out_p,
|
||||
unsigned long len_p, const unsigned char* ks_p, int nr_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_ECB_encrypt(const unsigned char* in_p,
|
||||
unsigned char* out_p, unsigned long len_p, const unsigned char* ks_p,
|
||||
@@ -905,10 +922,8 @@ WC_OMIT_FRAME_POINTER void AES_ECB_encrypt(const unsigned char* in,
|
||||
register int nr __asm__ ("r4") = (int)nr_p;
|
||||
register word32* L_AES_Thumb2_te_ecb_c __asm__ ("r5") =
|
||||
(word32*)L_AES_Thumb2_te_ecb;
|
||||
|
||||
#else
|
||||
register word32* L_AES_Thumb2_te_ecb_c = (word32*)L_AES_Thumb2_te_ecb;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -1749,9 +1764,15 @@ WC_OMIT_FRAME_POINTER void AES_ECB_encrypt(const unsigned char* in,
|
||||
"L_AES_ECB_encrypt_end_%=:\n\t"
|
||||
#endif
|
||||
"POP {%[ks]}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[nr] "+r" (nr), [L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [in] "r" (in), [out] "r" (out), [len] "r" (len), [ks] "r" (ks),
|
||||
[nr] "r" (nr), [L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r6", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@@ -1759,8 +1780,9 @@ WC_OMIT_FRAME_POINTER void AES_ECB_encrypt(const unsigned char* in,
|
||||
#endif /* HAVE_AESCCM || HAVE_AESGCM || WOLFSSL_AES_DIRECT ||
|
||||
* WOLFSSL_AES_COUNTER || HAVE_AES_ECB */
|
||||
#ifdef HAVE_AES_CBC
|
||||
void AES_CBC_encrypt(const unsigned char* in, unsigned char* out,
|
||||
unsigned long len, const unsigned char* ks, int nr, unsigned char* iv);
|
||||
void AES_CBC_encrypt(const unsigned char* in_p, unsigned char* out_p,
|
||||
unsigned long len_p, const unsigned char* ks_p, int nr_p,
|
||||
unsigned char* iv_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_CBC_encrypt(const unsigned char* in_p,
|
||||
unsigned char* out_p, unsigned long len_p, const unsigned char* ks_p,
|
||||
@@ -1782,10 +1804,8 @@ WC_OMIT_FRAME_POINTER void AES_CBC_encrypt(const unsigned char* in,
|
||||
register unsigned char* iv __asm__ ("r5") = (unsigned char*)iv_p;
|
||||
register word32* L_AES_Thumb2_te_ecb_c __asm__ ("r6") =
|
||||
(word32*)L_AES_Thumb2_te_ecb;
|
||||
|
||||
#else
|
||||
register word32* L_AES_Thumb2_te_ecb_c = (word32*)L_AES_Thumb2_te_ecb;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -2645,10 +2665,17 @@ WC_OMIT_FRAME_POINTER void AES_CBC_encrypt(const unsigned char* in,
|
||||
#endif
|
||||
"POP {%[ks], r9}\n\t"
|
||||
"STM r9, {r4, r5, r6, r7}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[nr] "+r" (nr), [iv] "+r" (iv),
|
||||
[L_AES_Thumb2_te_ecb] "+r" (L_AES_Thumb2_te_ecb_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [in] "r" (in), [out] "r" (out), [len] "r" (len), [ks] "r" (ks),
|
||||
[nr] "r" (nr), [iv] "r" (iv),
|
||||
[L_AES_Thumb2_te_ecb] "r" (L_AES_Thumb2_te_ecb_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@@ -2656,8 +2683,9 @@ WC_OMIT_FRAME_POINTER void AES_CBC_encrypt(const unsigned char* in,
|
||||
#endif /* HAVE_AES_CBC */
|
||||
#ifdef WOLFSSL_AES_COUNTER
|
||||
static const word32* L_AES_Thumb2_te_ctr = L_AES_Thumb2_te_data;
|
||||
void AES_CTR_encrypt(const unsigned char* in, unsigned char* out,
|
||||
unsigned long len, const unsigned char* ks, int nr, unsigned char* ctr);
|
||||
void AES_CTR_encrypt(const unsigned char* in_p, unsigned char* out_p,
|
||||
unsigned long len_p, const unsigned char* ks_p, int nr_p,
|
||||
unsigned char* ctr_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_CTR_encrypt(const unsigned char* in_p,
|
||||
unsigned char* out_p, unsigned long len_p, const unsigned char* ks_p,
|
||||
@@ -2679,10 +2707,8 @@ WC_OMIT_FRAME_POINTER void AES_CTR_encrypt(const unsigned char* in,
|
||||
register unsigned char* ctr __asm__ ("r5") = (unsigned char*)ctr_p;
|
||||
register word32* L_AES_Thumb2_te_ctr_c __asm__ ("r6") =
|
||||
(word32*)L_AES_Thumb2_te_ctr;
|
||||
|
||||
#else
|
||||
register word32* L_AES_Thumb2_te_ctr_c = (word32*)L_AES_Thumb2_te_ctr;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3563,10 +3589,17 @@ WC_OMIT_FRAME_POINTER void AES_CTR_encrypt(const unsigned char* in,
|
||||
"REV r6, r6\n\t"
|
||||
"REV r7, r7\n\t"
|
||||
"STM r8, {r4, r5, r6, r7}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[nr] "+r" (nr), [ctr] "+r" (ctr),
|
||||
[L_AES_Thumb2_te_ctr] "+r" (L_AES_Thumb2_te_ctr_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [in] "r" (in), [out] "r" (out), [len] "r" (len), [ks] "r" (ks),
|
||||
[nr] "r" (nr), [ctr] "r" (ctr),
|
||||
[L_AES_Thumb2_te_ctr] "r" (L_AES_Thumb2_te_ctr_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@@ -3576,7 +3609,7 @@ WC_OMIT_FRAME_POINTER void AES_CTR_encrypt(const unsigned char* in,
|
||||
#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || \
|
||||
defined(HAVE_AES_CBC) || defined(HAVE_AES_ECB)
|
||||
#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
|
||||
void AES_decrypt_block(const word32* td, int nr, const byte* td4);
|
||||
void AES_decrypt_block(const word32* td_p, int nr_p, const byte* td4_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_decrypt_block(const word32* td_p, int nr_p,
|
||||
const byte* td4_p)
|
||||
@@ -3806,15 +3839,20 @@ WC_OMIT_FRAME_POINTER void AES_decrypt_block(const word32* td, int nr,
|
||||
"EOR r5, r5, r9\n\t"
|
||||
"EOR r6, r6, r10\n\t"
|
||||
"EOR r7, r7, r11\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [td] "+r" (td), [nr] "+r" (nr), [td4] "+r" (td4)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [td] "r" (td), [nr] "r" (nr), [td4] "r" (td4)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
|
||||
static const word32* L_AES_Thumb2_td_ecb = L_AES_Thumb2_td_data;
|
||||
static const byte L_AES_Thumb2_td4[] = {
|
||||
XALIGNED(4) static const word8 L_AES_Thumb2_td4[] = {
|
||||
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38,
|
||||
0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb,
|
||||
0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
|
||||
@@ -3849,9 +3887,10 @@ static const byte L_AES_Thumb2_td4[] = {
|
||||
0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d,
|
||||
};
|
||||
|
||||
#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || defined(HAVE_AES_ECB)
|
||||
void AES_ECB_decrypt(const unsigned char* in, unsigned char* out,
|
||||
unsigned long len, const unsigned char* ks, int nr);
|
||||
#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || \
|
||||
defined(HAVE_AES_ECB)
|
||||
void AES_ECB_decrypt(const unsigned char* in_p, unsigned char* out_p,
|
||||
unsigned long len_p, const unsigned char* ks_p, int nr_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_ECB_decrypt(const unsigned char* in_p,
|
||||
unsigned char* out_p, unsigned long len_p, const unsigned char* ks_p,
|
||||
@@ -3871,15 +3910,11 @@ WC_OMIT_FRAME_POINTER void AES_ECB_decrypt(const unsigned char* in,
|
||||
register int nr __asm__ ("r4") = (int)nr_p;
|
||||
register word32* L_AES_Thumb2_td_ecb_c __asm__ ("r5") =
|
||||
(word32*)L_AES_Thumb2_td_ecb;
|
||||
|
||||
register byte* L_AES_Thumb2_td4_c __asm__ ("r6") =
|
||||
(byte*)&L_AES_Thumb2_td4;
|
||||
|
||||
register word8* L_AES_Thumb2_td4_c __asm__ ("r6") =
|
||||
(word8*)&L_AES_Thumb2_td4;
|
||||
#else
|
||||
register word32* L_AES_Thumb2_td_ecb_c = (word32*)L_AES_Thumb2_td_ecb;
|
||||
|
||||
register byte* L_AES_Thumb2_td4_c = (byte*)&L_AES_Thumb2_td4;
|
||||
|
||||
register word8* L_AES_Thumb2_td4_c = (word8*)&L_AES_Thumb2_td4;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -4717,18 +4752,26 @@ WC_OMIT_FRAME_POINTER void AES_ECB_decrypt(const unsigned char* in,
|
||||
#else
|
||||
"L_AES_ECB_decrypt_end_%=:\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[nr] "+r" (nr), [L_AES_Thumb2_td_ecb] "+r" (L_AES_Thumb2_td_ecb_c),
|
||||
[L_AES_Thumb2_td4] "+r" (L_AES_Thumb2_td4_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [in] "r" (in), [out] "r" (out), [len] "r" (len), [ks] "r" (ks),
|
||||
[nr] "r" (nr), [L_AES_Thumb2_td_ecb] "r" (L_AES_Thumb2_td_ecb_c),
|
||||
[L_AES_Thumb2_td4] "r" (L_AES_Thumb2_td4_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER || defined(HAVE_AES_ECB) */
|
||||
#ifdef HAVE_AES_CBC
|
||||
void AES_CBC_decrypt(const unsigned char* in, unsigned char* out,
|
||||
unsigned long len, const unsigned char* ks, int nr, unsigned char* iv);
|
||||
void AES_CBC_decrypt(const unsigned char* in_p, unsigned char* out_p,
|
||||
unsigned long len_p, const unsigned char* ks_p, int nr_p,
|
||||
unsigned char* iv_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_CBC_decrypt(const unsigned char* in_p,
|
||||
unsigned char* out_p, unsigned long len_p, const unsigned char* ks_p,
|
||||
@@ -4750,15 +4793,11 @@ WC_OMIT_FRAME_POINTER void AES_CBC_decrypt(const unsigned char* in,
|
||||
register unsigned char* iv __asm__ ("r5") = (unsigned char*)iv_p;
|
||||
register word32* L_AES_Thumb2_td_ecb_c __asm__ ("r6") =
|
||||
(word32*)L_AES_Thumb2_td_ecb;
|
||||
|
||||
register byte* L_AES_Thumb2_td4_c __asm__ ("r7") =
|
||||
(byte*)&L_AES_Thumb2_td4;
|
||||
|
||||
register word8* L_AES_Thumb2_td4_c __asm__ ("r7") =
|
||||
(word8*)&L_AES_Thumb2_td4;
|
||||
#else
|
||||
register word32* L_AES_Thumb2_td_ecb_c = (word32*)L_AES_Thumb2_td_ecb;
|
||||
|
||||
register byte* L_AES_Thumb2_td4_c = (byte*)&L_AES_Thumb2_td4;
|
||||
|
||||
register word8* L_AES_Thumb2_td4_c = (word8*)&L_AES_Thumb2_td4;
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -6431,11 +6470,19 @@ WC_OMIT_FRAME_POINTER void AES_CBC_decrypt(const unsigned char* in,
|
||||
"L_AES_CBC_decrypt_end_%=:\n\t"
|
||||
#endif
|
||||
"POP {%[ks], r4}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[nr] "+r" (nr), [iv] "+r" (iv),
|
||||
[L_AES_Thumb2_td_ecb] "+r" (L_AES_Thumb2_td_ecb_c),
|
||||
[L_AES_Thumb2_td4] "+r" (L_AES_Thumb2_td4_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [in] "r" (in), [out] "r" (out), [len] "r" (len), [ks] "r" (ks),
|
||||
[nr] "r" (nr), [iv] "r" (iv),
|
||||
[L_AES_Thumb2_td_ecb] "r" (L_AES_Thumb2_td_ecb_c),
|
||||
[L_AES_Thumb2_td4] "r" (L_AES_Thumb2_td4_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
@@ -6445,15 +6492,15 @@ WC_OMIT_FRAME_POINTER void AES_CBC_decrypt(const unsigned char* in,
|
||||
* HAVE_AES_ECB */
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
#ifdef HAVE_AESGCM
|
||||
XALIGNED(16) static const word32 L_GCM_gmult_len_r[] = {
|
||||
XALIGNED(8) static const word32 L_GCM_gmult_len_r[] = {
|
||||
0x00000000, 0x1c200000, 0x38400000, 0x24600000,
|
||||
0x70800000, 0x6ca00000, 0x48c00000, 0x54e00000,
|
||||
0xe1000000, 0xfd200000, 0xd9400000, 0xc5600000,
|
||||
0x91800000, 0x8da00000, 0xa9c00000, 0xb5e00000,
|
||||
};
|
||||
|
||||
void GCM_gmult_len(unsigned char* x, const unsigned char** m,
|
||||
const unsigned char* data, unsigned long len);
|
||||
void GCM_gmult_len(unsigned char* x_p, const unsigned char** m_p,
|
||||
const unsigned char* data_p, unsigned long len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void GCM_gmult_len(unsigned char* x_p,
|
||||
const unsigned char** m_p, const unsigned char* data_p, unsigned long len_p)
|
||||
@@ -6471,10 +6518,8 @@ WC_OMIT_FRAME_POINTER void GCM_gmult_len(unsigned char* x,
|
||||
register unsigned long len __asm__ ("r3") = (unsigned long)len_p;
|
||||
register word32* L_GCM_gmult_len_r_c __asm__ ("r4") =
|
||||
(word32*)&L_GCM_gmult_len_r;
|
||||
|
||||
#else
|
||||
register word32* L_GCM_gmult_len_r_c = (word32*)&L_GCM_gmult_len_r;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -7036,17 +7081,24 @@ WC_OMIT_FRAME_POINTER void GCM_gmult_len(unsigned char* x,
|
||||
#else
|
||||
"BNE.W L_GCM_gmult_len_start_block_%=\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [x] "+r" (x), [m] "+r" (m), [data] "+r" (data), [len] "+r" (len),
|
||||
[L_GCM_gmult_len_r] "+r" (L_GCM_gmult_len_r_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [x] "r" (x), [m] "r" (m), [data] "r" (data), [len] "r" (len),
|
||||
[L_GCM_gmult_len_r] "r" (L_GCM_gmult_len_r_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11"
|
||||
);
|
||||
}
|
||||
|
||||
static const word32* L_AES_Thumb2_te_gcm = L_AES_Thumb2_te_data;
|
||||
void AES_GCM_encrypt(const unsigned char* in, unsigned char* out,
|
||||
unsigned long len, const unsigned char* ks, int nr, unsigned char* ctr);
|
||||
void AES_GCM_encrypt(const unsigned char* in_p, unsigned char* out_p,
|
||||
unsigned long len_p, const unsigned char* ks_p, int nr_p,
|
||||
unsigned char* ctr_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void AES_GCM_encrypt(const unsigned char* in_p,
|
||||
unsigned char* out_p, unsigned long len_p, const unsigned char* ks_p,
|
||||
@@ -7068,10 +7120,8 @@ WC_OMIT_FRAME_POINTER void AES_GCM_encrypt(const unsigned char* in,
|
||||
register unsigned char* ctr __asm__ ("r5") = (unsigned char*)ctr_p;
|
||||
register word32* L_AES_Thumb2_te_gcm_c __asm__ ("r6") =
|
||||
(word32*)L_AES_Thumb2_te_gcm;
|
||||
|
||||
#else
|
||||
register word32* L_AES_Thumb2_te_gcm_c = (word32*)L_AES_Thumb2_te_gcm;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -7943,10 +7993,17 @@ WC_OMIT_FRAME_POINTER void AES_GCM_encrypt(const unsigned char* in,
|
||||
"REV r6, r6\n\t"
|
||||
"REV r7, r7\n\t"
|
||||
"STM r8, {r4, r5, r6, r7}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [in] "+r" (in), [out] "+r" (out), [len] "+r" (len), [ks] "+r" (ks),
|
||||
[nr] "+r" (nr), [ctr] "+r" (ctr),
|
||||
[L_AES_Thumb2_te_gcm] "+r" (L_AES_Thumb2_te_gcm_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [in] "r" (in), [out] "r" (out), [len] "r" (len), [ks] "r" (ks),
|
||||
[nr] "r" (nr), [ctr] "r" (ctr),
|
||||
[L_AES_Thumb2_te_gcm] "r" (L_AES_Thumb2_te_gcm_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r12", "lr", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -53,19 +53,22 @@ wc_chacha_setiv:
|
||||
POP {r4, r5, r6, pc}
|
||||
/* Cycle Count = 26 */
|
||||
.size wc_chacha_setiv,.-wc_chacha_setiv
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_chacha_thumb2_constants, %object
|
||||
.size L_chacha_thumb2_constants, 32
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 8-byte aligned, 64-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_chacha_thumb2_constants:
|
||||
.word 0x61707865
|
||||
.word 0x3120646e
|
||||
.word 0x79622d36
|
||||
.word 0x6b206574
|
||||
.word 0x61707865
|
||||
.word 0x3320646e
|
||||
.word 0x79622d32
|
||||
.word 0x6b206574
|
||||
.long 0x61707865,0x3120646e,0x79622d36,0x6b206574
|
||||
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
|
||||
.text
|
||||
.align 4
|
||||
.globl wc_chacha_setkey
|
||||
@@ -568,6 +571,6 @@ L_chacha_thumb2_over_done:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,6 +41,11 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifdef HAVE_CHACHA
|
||||
#include <wolfssl/wolfcrypt/chacha.h>
|
||||
@@ -71,13 +76,18 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setiv(word32* x, const byte* iv,
|
||||
"REV r6, r6\n\t"
|
||||
#endif /* BIG_ENDIAN_ORDER */
|
||||
"STM r3, {r4, r5, r6}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [x] "+r" (x), [iv] "+r" (iv), [counter] "+r" (counter)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [x] "r" (x), [iv] "r" (iv), [counter] "r" (counter)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6"
|
||||
);
|
||||
}
|
||||
|
||||
XALIGNED(16) static const word32 L_chacha_thumb2_constants[] = {
|
||||
XALIGNED(8) static const word32 L_chacha_thumb2_constants[] = {
|
||||
0x61707865, 0x3120646e, 0x79622d36, 0x6b206574,
|
||||
0x61707865, 0x3320646e, 0x79622d32, 0x6b206574,
|
||||
};
|
||||
@@ -96,11 +106,9 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x, const byte* key,
|
||||
register word32 keySz __asm__ ("r2") = (word32)keySz_p;
|
||||
register word32* L_chacha_thumb2_constants_c __asm__ ("r3") =
|
||||
(word32*)&L_chacha_thumb2_constants;
|
||||
|
||||
#else
|
||||
register word32* L_chacha_thumb2_constants_c =
|
||||
(word32*)&L_chacha_thumb2_constants;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -143,9 +151,15 @@ WC_OMIT_FRAME_POINTER void wc_chacha_setkey(word32* x, const byte* key,
|
||||
"L_chacha_thumb2_setkey_same_key_bytes_%=:\n\t"
|
||||
#endif
|
||||
"STM %[x], {r3, r4, r5, r6}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [x] "+r" (x), [key] "+r" (key), [keySz] "+r" (keySz),
|
||||
[L_chacha_thumb2_constants] "+r" (L_chacha_thumb2_constants_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [x] "r" (x), [key] "r" (key), [keySz] "r" (keySz),
|
||||
[L_chacha_thumb2_constants] "r" (L_chacha_thumb2_constants_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7"
|
||||
);
|
||||
}
|
||||
@@ -583,8 +597,13 @@ WC_OMIT_FRAME_POINTER void wc_chacha_crypt_bytes(ChaCha* ctx, byte* c,
|
||||
"L_chacha_thumb2_crypt_done_%=:\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0x34\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [c] "+r" (c), [m] "+r" (m), [len] "+r" (len)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [ctx] "r" (ctx), [c] "r" (c), [m] "r" (m), [len] "r" (len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12", "lr"
|
||||
);
|
||||
@@ -727,9 +746,15 @@ WC_OMIT_FRAME_POINTER void wc_chacha_use_over(byte* over, byte* output,
|
||||
#else
|
||||
"L_chacha_thumb2_over_done_%=:\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [over] "+r" (over), [output] "+r" (output), [input] "+r" (input),
|
||||
[len] "+r" (len)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [over] "r" (over), [output] "r" (output), [input] "r" (input),
|
||||
[len] "r" (len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6480,6 +6480,6 @@ sc_muladd:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,6 +41,11 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
/* Based on work by: Emil Lenngren
|
||||
* https://github.com/pornin/X25519-Cortex-M4
|
||||
@@ -63,8 +68,13 @@ WC_OMIT_FRAME_POINTER void fe_init()
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
__asm__ __volatile__ (
|
||||
"\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc"
|
||||
);
|
||||
}
|
||||
@@ -166,8 +176,13 @@ WC_OMIT_FRAME_POINTER void fe_add_sub_op()
|
||||
"SBC r11, r11, #0x0\n\t"
|
||||
"STM r1, {r4, r5, r6, r7, r8, r9, r10, r11}\n\t"
|
||||
/* Done Add-Sub */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -207,8 +222,13 @@ WC_OMIT_FRAME_POINTER void fe_sub_op()
|
||||
"SBC lr, lr, #0x0\n\t"
|
||||
"STM r0, {r6, r7, r8, r9, r10, r11, r12, lr}\n\t"
|
||||
/* Done Sub */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -227,8 +247,13 @@ WC_OMIT_FRAME_POINTER void fe_sub(fe r, const fe a, const fe b)
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"BL fe_sub_op\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -269,8 +294,13 @@ WC_OMIT_FRAME_POINTER void fe_add_op()
|
||||
"ADC lr, lr, #0x0\n\t"
|
||||
"STM r0, {r6, r7, r8, r9, r10, r11, r12, lr}\n\t"
|
||||
/* Done Add */
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -289,8 +319,13 @@ WC_OMIT_FRAME_POINTER void fe_add(fe r, const fe a, const fe b)
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"BL fe_add_op\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -327,8 +362,13 @@ WC_OMIT_FRAME_POINTER void fe_frombytes(fe out, const unsigned char* in)
|
||||
"STR r7, [%[out], #20]\n\t"
|
||||
"STR r8, [%[out], #24]\n\t"
|
||||
"STR r9, [%[out], #28]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [out] "+r" (out), [in] "+r" (in)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [out] "r" (out), [in] "r" (in)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9"
|
||||
);
|
||||
}
|
||||
@@ -373,8 +413,13 @@ WC_OMIT_FRAME_POINTER void fe_tobytes(unsigned char* out, const fe n)
|
||||
"STR r7, [%[out], #20]\n\t"
|
||||
"STR r8, [%[out], #24]\n\t"
|
||||
"STR r9, [%[out], #28]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [out] "+r" (out), [n] "+r" (n)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [out] "r" (out), [n] "r" (n)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10"
|
||||
);
|
||||
}
|
||||
@@ -400,8 +445,13 @@ WC_OMIT_FRAME_POINTER void fe_1(fe n)
|
||||
"MOV r8, #0x0\n\t"
|
||||
"MOV r9, #0x0\n\t"
|
||||
"STM %[n], {r2, r3, r4, r5, r6, r7, r8, r9}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [n] "+r" (n)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [n] "r" (n)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9"
|
||||
);
|
||||
}
|
||||
@@ -427,8 +477,13 @@ WC_OMIT_FRAME_POINTER void fe_0(fe n)
|
||||
"MOV r8, #0x0\n\t"
|
||||
"MOV r9, #0x0\n\t"
|
||||
"STM %[n], {r2, r3, r4, r5, r6, r7, r8, r9}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [n] "+r" (n)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [n] "r" (n)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9"
|
||||
);
|
||||
}
|
||||
@@ -454,8 +509,13 @@ WC_OMIT_FRAME_POINTER void fe_copy(fe r, const fe a)
|
||||
"LDRD r4, r5, [%[a], #24]\n\t"
|
||||
"STRD r2, r3, [%[r], #16]\n\t"
|
||||
"STRD r4, r5, [%[r], #24]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5"
|
||||
);
|
||||
}
|
||||
@@ -487,8 +547,13 @@ WC_OMIT_FRAME_POINTER void fe_neg(fe r, const fe a)
|
||||
"SBCS r4, r7, r4\n\t"
|
||||
"SBC r5, r6, r5\n\t"
|
||||
"STM %[r]!, {r2, r3, r4, r5}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7"
|
||||
);
|
||||
}
|
||||
@@ -531,8 +596,13 @@ WC_OMIT_FRAME_POINTER int fe_isnonzero(const fe a)
|
||||
"ORR r4, r4, r6\n\t"
|
||||
"ORR r2, r2, r8\n\t"
|
||||
"ORR %[a], r2, r4\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
|
||||
"r10"
|
||||
);
|
||||
@@ -564,14 +634,20 @@ WC_OMIT_FRAME_POINTER int fe_isnegative(const fe a)
|
||||
"AND %[a], r2, #0x1\n\t"
|
||||
"LSR r1, r1, #31\n\t"
|
||||
"EOR %[a], %[a], r1\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r1", "r2", "r3", "r4", "r5"
|
||||
);
|
||||
return (word32)(size_t)a;
|
||||
}
|
||||
|
||||
#if defined(HAVE_ED25519_MAKE_KEY) || defined(HAVE_ED25519_SIGN) || defined(WOLFSSL_CURVE25519_USE_ED25519)
|
||||
#if defined(HAVE_ED25519_MAKE_KEY) || defined(HAVE_ED25519_SIGN) || \
|
||||
defined(WOLFSSL_CURVE25519_USE_ED25519)
|
||||
#ifndef WC_NO_CACHE_RESISTANT
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r_p, const fe* base_p,
|
||||
@@ -1550,8 +1626,13 @@ WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r, const fe* base, signed char b)
|
||||
"STRD r4, r5, [%[r], #24]\n\t"
|
||||
"STRD r6, r7, [%[r], #56]\n\t"
|
||||
"STRD r8, r9, [%[r], #88]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [base] "+r" (base), [b] "+r" (b)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [base] "r" (base), [b] "r" (b)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r3", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -1664,15 +1745,21 @@ WC_OMIT_FRAME_POINTER void fe_cmov_table(fe* r, const fe* base, signed char b)
|
||||
"AND r7, r7, lr\n\t"
|
||||
"STM %[r]!, {r4, r5, r6, r7}\n\t"
|
||||
"SUB %[base], %[base], %[b]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [base] "+r" (base), [b] "+r" (b)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [base] "r" (base), [b] "r" (b)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* WC_NO_CACHE_RESISTANT */
|
||||
#endif /* HAVE_ED25519_MAKE_KEY || HAVE_ED25519_SIGN || WOLFSSL_CURVE25519_USE_ED25519 */
|
||||
#endif /* HAVE_ED25519_MAKE_KEY || HAVE_ED25519_SIGN ||
|
||||
* WOLFSSL_CURVE25519_USE_ED25519 */
|
||||
#endif /* HAVE_ED25519 || WOLFSSL_CURVE25519_USE_ED25519 */
|
||||
#ifdef WOLFSSL_ARM_ARCH_7M
|
||||
void fe_mul_op(void);
|
||||
@@ -2054,8 +2141,13 @@ WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
"LDR r0, [sp, #36]\n\t"
|
||||
"STM r0, {r1, r2, r3, r4, r5, r6, r7, r8}\n\t"
|
||||
"ADD sp, sp, #0x28\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -2194,8 +2286,13 @@ WC_OMIT_FRAME_POINTER void fe_mul_op()
|
||||
/* Store */
|
||||
"STM lr, {r0, r1, r2, r3, r4, r5, r6, r7}\n\t"
|
||||
"ADD sp, sp, #0x10\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -2215,8 +2312,13 @@ WC_OMIT_FRAME_POINTER void fe_mul(fe r, const fe a, const fe b)
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"BL fe_mul_op\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -2495,8 +2597,13 @@ WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
"LDR r0, [sp, #64]\n\t"
|
||||
"STM r0, {r1, r2, r3, r4, r5, r6, r7, r8}\n\t"
|
||||
"ADD sp, sp, #0x44\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -2621,8 +2728,13 @@ WC_OMIT_FRAME_POINTER void fe_sq_op()
|
||||
"POP {lr}\n\t"
|
||||
/* Store */
|
||||
"STM lr, {r0, r1, r2, r3, r4, r5, r6, r7}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
:
|
||||
:
|
||||
#else
|
||||
:
|
||||
:
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -2641,8 +2753,13 @@ WC_OMIT_FRAME_POINTER void fe_sq(fe r, const fe a)
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"BL fe_sq_op\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -2702,8 +2819,13 @@ WC_OMIT_FRAME_POINTER void fe_mul121666(fe r, fe a)
|
||||
"ADCS r8, r8, #0x0\n\t"
|
||||
"ADC r9, r9, #0x0\n\t"
|
||||
"STM %[r], {r2, r3, r4, r5, r6, r7, r8, r9}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12"
|
||||
);
|
||||
@@ -2749,8 +2871,13 @@ WC_OMIT_FRAME_POINTER void fe_mul121666(fe r, fe a)
|
||||
"ADCS r8, r8, #0x0\n\t"
|
||||
"ADC r9, r9, #0x0\n\t"
|
||||
"STM %[r], {r2, r3, r4, r5, r6, r7, r8, r9}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12"
|
||||
);
|
||||
@@ -3247,8 +3374,13 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"BL fe_mul_op\n\t"
|
||||
"MOV r0, #0x0\n\t"
|
||||
"ADD sp, sp, #0xbc\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [n] "+r" (n), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [n] "r" (n), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r3", "r12", "lr"
|
||||
);
|
||||
@@ -3655,8 +3787,13 @@ WC_OMIT_FRAME_POINTER int curve25519(byte* r, const byte* n, const byte* a)
|
||||
"STM %[r], {r4, r5, r6, r7, r8, r9, r10, r11}\n\t"
|
||||
"MOV r0, #0x0\n\t"
|
||||
"ADD sp, sp, #0xc0\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [n] "+r" (n), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [n] "r" (n), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r3", "r12", "lr"
|
||||
);
|
||||
@@ -3916,8 +4053,13 @@ WC_OMIT_FRAME_POINTER void fe_invert(fe r, const fe a)
|
||||
"LDR %[a], [sp, #132]\n\t"
|
||||
"LDR %[r], [sp, #128]\n\t"
|
||||
"ADD sp, sp, #0x88\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr", "r12", "r2", "r3", "r4", "r5", "r6", "r7", "r8",
|
||||
"r9", "r10", "r11"
|
||||
);
|
||||
@@ -4231,8 +4373,13 @@ WC_OMIT_FRAME_POINTER void fe_sq2(fe r, const fe a)
|
||||
"LDR r0, [sp, #64]\n\t"
|
||||
"STM r0, {r1, r2, r3, r4, r5, r6, r7, r8}\n\t"
|
||||
"ADD sp, sp, #0x44\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -4394,8 +4541,13 @@ WC_OMIT_FRAME_POINTER void fe_sq2(fe r, const fe a)
|
||||
"STM r12, {r0, r1, r2, r3, r4, r5, r6, r7}\n\t"
|
||||
"MOV r0, r12\n\t"
|
||||
"MOV r1, lr\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr"
|
||||
);
|
||||
}
|
||||
@@ -4651,8 +4803,13 @@ WC_OMIT_FRAME_POINTER void fe_pow22523(fe r, const fe a)
|
||||
"LDR %[a], [sp, #100]\n\t"
|
||||
"LDR %[r], [sp, #96]\n\t"
|
||||
"ADD sp, sp, #0x68\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr", "r12", "r2", "r3", "r4", "r5", "r6", "r7", "r8",
|
||||
"r9", "r10", "r11"
|
||||
);
|
||||
@@ -4688,8 +4845,13 @@ WC_OMIT_FRAME_POINTER void ge_p1p1_to_p2(ge_p2 * r, const ge_p1p1 * p)
|
||||
"ADD r0, r0, #0x40\n\t"
|
||||
"BL fe_mul_op\n\t"
|
||||
"ADD sp, sp, #0x8\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
|
||||
"r10", "r11", "r12"
|
||||
);
|
||||
@@ -4730,8 +4892,13 @@ WC_OMIT_FRAME_POINTER void ge_p1p1_to_p3(ge_p3 * r, const ge_p1p1 * p)
|
||||
"ADD r0, r0, #0x60\n\t"
|
||||
"BL fe_mul_op\n\t"
|
||||
"ADD sp, sp, #0x8\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "lr", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
|
||||
"r10", "r11", "r12"
|
||||
);
|
||||
@@ -4784,8 +4951,13 @@ WC_OMIT_FRAME_POINTER void ge_p2_dbl(ge_p1p1 * r, const ge_p2 * p)
|
||||
"MOV r1, r0\n\t"
|
||||
"BL fe_sub_op\n\t"
|
||||
"ADD sp, sp, #0x8\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -4875,8 +5047,13 @@ WC_OMIT_FRAME_POINTER void ge_madd(ge_p1p1 * r, const ge_p3 * p,
|
||||
"ADD r1, r0, #0x20\n\t"
|
||||
"BL fe_add_sub_op\n\t"
|
||||
"ADD sp, sp, #0xc\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p), [q] "+r" (q)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p), [q] "r" (q)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -4967,8 +5144,13 @@ WC_OMIT_FRAME_POINTER void ge_msub(ge_p1p1 * r, const ge_p3 * p,
|
||||
"ADD r0, r0, #0x20\n\t"
|
||||
"BL fe_add_sub_op\n\t"
|
||||
"ADD sp, sp, #0xc\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p), [q] "+r" (q)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p), [q] "r" (q)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -5059,8 +5241,13 @@ WC_OMIT_FRAME_POINTER void ge_add(ge_p1p1 * r, const ge_p3 * p,
|
||||
"ADD r0, r0, #0x20\n\t"
|
||||
"BL fe_add_sub_op\n\t"
|
||||
"ADD sp, sp, #0x2c\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p), [q] "+r" (q)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p), [q] "r" (q)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -5151,8 +5338,13 @@ WC_OMIT_FRAME_POINTER void ge_sub(ge_p1p1 * r, const ge_p3 * p,
|
||||
"ADD r0, r0, #0x40\n\t"
|
||||
"BL fe_add_sub_op\n\t"
|
||||
"ADD sp, sp, #0x2c\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [p] "+r" (p), [q] "+r" (q)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [p] "r" (p), [q] "r" (q)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -5588,8 +5780,13 @@ WC_OMIT_FRAME_POINTER void sc_reduce(byte* s)
|
||||
"LDR %[s], [sp, #52]\n\t"
|
||||
"STM %[s], {r2, r3, r4, r5, r6, r7, r8, r9}\n\t"
|
||||
"ADD sp, sp, #0x38\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [s] "+r" (s)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [s] "r" (s)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
|
||||
"r10", "r11", "r12", "lr"
|
||||
);
|
||||
@@ -5894,8 +6091,13 @@ WC_OMIT_FRAME_POINTER void sc_reduce(byte* s)
|
||||
"LDR %[s], [sp, #52]\n\t"
|
||||
"STM %[s], {r2, r3, r4, r5, r6, r7, r8, r9}\n\t"
|
||||
"ADD sp, sp, #0x38\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [s] "+r" (s)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [s] "r" (s)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
|
||||
"r10", "r11", "r12", "lr"
|
||||
);
|
||||
@@ -6693,8 +6895,13 @@ WC_OMIT_FRAME_POINTER void sc_muladd(byte* s, const byte* a, const byte* b,
|
||||
"STR r8, [%[s], #24]\n\t"
|
||||
"STR r9, [%[s], #28]\n\t"
|
||||
"ADD sp, sp, #0x50\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [s] "+r" (s), [a] "+r" (a), [b] "+r" (b), [c] "+r" (c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [s] "r" (s), [a] "r" (a), [b] "r" (b), [c] "r" (c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12", "lr"
|
||||
);
|
||||
@@ -7134,8 +7341,13 @@ WC_OMIT_FRAME_POINTER void sc_muladd(byte* s, const byte* a, const byte* b,
|
||||
"STR r8, [%[s], #24]\n\t"
|
||||
"STR r9, [%[s], #28]\n\t"
|
||||
"ADD sp, sp, #0x50\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [s] "+r" (s), [a] "+r" (a), [b] "+r" (b), [c] "+r" (c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [s] "r" (s), [a] "r" (a), [b] "r" (b), [c] "r" (c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12", "lr"
|
||||
);
|
||||
|
||||
@@ -33,139 +33,36 @@
|
||||
.thumb
|
||||
.syntax unified
|
||||
#ifdef WOLFSSL_WC_MLKEM
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_thumb2_ntt_zetas, %object
|
||||
.size L_mlkem_thumb2_ntt_zetas, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 4-byte aligned, 32-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
#else
|
||||
.p2align 2
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_thumb2_ntt_zetas:
|
||||
.short 0x8ed
|
||||
.short 0xa0b
|
||||
.short 0xb9a
|
||||
.short 0x714
|
||||
.short 0x5d5
|
||||
.short 0x58e
|
||||
.short 0x11f
|
||||
.short 0xca
|
||||
.short 0xc56
|
||||
.short 0x26e
|
||||
.short 0x629
|
||||
.short 0xb6
|
||||
.short 0x3c2
|
||||
.short 0x84f
|
||||
.short 0x73f
|
||||
.short 0x5bc
|
||||
.short 0x23d
|
||||
.short 0x7d4
|
||||
.short 0x108
|
||||
.short 0x17f
|
||||
.short 0x9c4
|
||||
.short 0x5b2
|
||||
.short 0x6bf
|
||||
.short 0xc7f
|
||||
.short 0xa58
|
||||
.short 0x3f9
|
||||
.short 0x2dc
|
||||
.short 0x260
|
||||
.short 0x6fb
|
||||
.short 0x19b
|
||||
.short 0xc34
|
||||
.short 0x6de
|
||||
.short 0x4c7
|
||||
.short 0x28c
|
||||
.short 0xad9
|
||||
.short 0x3f7
|
||||
.short 0x7f4
|
||||
.short 0x5d3
|
||||
.short 0xbe7
|
||||
.short 0x6f9
|
||||
.short 0x204
|
||||
.short 0xcf9
|
||||
.short 0xbc1
|
||||
.short 0xa67
|
||||
.short 0x6af
|
||||
.short 0x877
|
||||
.short 0x7e
|
||||
.short 0x5bd
|
||||
.short 0x9ac
|
||||
.short 0xca7
|
||||
.short 0xbf2
|
||||
.short 0x33e
|
||||
.short 0x6b
|
||||
.short 0x774
|
||||
.short 0xc0a
|
||||
.short 0x94a
|
||||
.short 0xb73
|
||||
.short 0x3c1
|
||||
.short 0x71d
|
||||
.short 0xa2c
|
||||
.short 0x1c0
|
||||
.short 0x8d8
|
||||
.short 0x2a5
|
||||
.short 0x806
|
||||
.short 0x8b2
|
||||
.short 0x1ae
|
||||
.short 0x22b
|
||||
.short 0x34b
|
||||
.short 0x81e
|
||||
.short 0x367
|
||||
.short 0x60e
|
||||
.short 0x69
|
||||
.short 0x1a6
|
||||
.short 0x24b
|
||||
.short 0xb1
|
||||
.short 0xc16
|
||||
.short 0xbde
|
||||
.short 0xb35
|
||||
.short 0x626
|
||||
.short 0x675
|
||||
.short 0xc0b
|
||||
.short 0x30a
|
||||
.short 0x487
|
||||
.short 0xc6e
|
||||
.short 0x9f8
|
||||
.short 0x5cb
|
||||
.short 0xaa7
|
||||
.short 0x45f
|
||||
.short 0x6cb
|
||||
.short 0x284
|
||||
.short 0x999
|
||||
.short 0x15d
|
||||
.short 0x1a2
|
||||
.short 0x149
|
||||
.short 0xc65
|
||||
.short 0xcb6
|
||||
.short 0x331
|
||||
.short 0x449
|
||||
.short 0x25b
|
||||
.short 0x262
|
||||
.short 0x52a
|
||||
.short 0x7fc
|
||||
.short 0x748
|
||||
.short 0x180
|
||||
.short 0x842
|
||||
.short 0xc79
|
||||
.short 0x4c2
|
||||
.short 0x7ca
|
||||
.short 0x997
|
||||
.short 0xdc
|
||||
.short 0x85e
|
||||
.short 0x686
|
||||
.short 0x860
|
||||
.short 0x707
|
||||
.short 0x803
|
||||
.short 0x31a
|
||||
.short 0x71b
|
||||
.short 0x9ab
|
||||
.short 0x99b
|
||||
.short 0x1de
|
||||
.short 0xc95
|
||||
.short 0xbcd
|
||||
.short 0x3e4
|
||||
.short 0x3df
|
||||
.short 0x3be
|
||||
.short 0x74d
|
||||
.short 0x5f2
|
||||
.short 0x65c
|
||||
.short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
|
||||
.short 0x0c56,0x026e,0x0629,0x00b6,0x03c2,0x084f,0x073f,0x05bc
|
||||
.short 0x023d,0x07d4,0x0108,0x017f,0x09c4,0x05b2,0x06bf,0x0c7f
|
||||
.short 0x0a58,0x03f9,0x02dc,0x0260,0x06fb,0x019b,0x0c34,0x06de
|
||||
.short 0x04c7,0x028c,0x0ad9,0x03f7,0x07f4,0x05d3,0x0be7,0x06f9
|
||||
.short 0x0204,0x0cf9,0x0bc1,0x0a67,0x06af,0x0877,0x007e,0x05bd
|
||||
.short 0x09ac,0x0ca7,0x0bf2,0x033e,0x006b,0x0774,0x0c0a,0x094a
|
||||
.short 0x0b73,0x03c1,0x071d,0x0a2c,0x01c0,0x08d8,0x02a5,0x0806
|
||||
.short 0x08b2,0x01ae,0x022b,0x034b,0x081e,0x0367,0x060e,0x0069
|
||||
.short 0x01a6,0x024b,0x00b1,0x0c16,0x0bde,0x0b35,0x0626,0x0675
|
||||
.short 0x0c0b,0x030a,0x0487,0x0c6e,0x09f8,0x05cb,0x0aa7,0x045f
|
||||
.short 0x06cb,0x0284,0x0999,0x015d,0x01a2,0x0149,0x0c65,0x0cb6
|
||||
.short 0x0331,0x0449,0x025b,0x0262,0x052a,0x07fc,0x0748,0x0180
|
||||
.short 0x0842,0x0c79,0x04c2,0x07ca,0x0997,0x00dc,0x085e,0x0686
|
||||
.short 0x0860,0x0707,0x0803,0x031a,0x071b,0x09ab,0x099b,0x01de
|
||||
.short 0x0c95,0x0bcd,0x03e4,0x03df,0x03be,0x074d,0x05f2,0x065c
|
||||
.text
|
||||
.align 4
|
||||
.globl mlkem_thumb2_ntt
|
||||
@@ -1425,139 +1322,36 @@ L_mlkem_thumb2_ntt_loop_567:
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
/* Cycle Count = 1270 */
|
||||
.size mlkem_thumb2_ntt,.-mlkem_thumb2_ntt
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_invntt_zetas_inv, %object
|
||||
.size L_mlkem_invntt_zetas_inv, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 4-byte aligned, 32-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
#else
|
||||
.p2align 2
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_invntt_zetas_inv:
|
||||
.short 0x6a5
|
||||
.short 0x70f
|
||||
.short 0x5b4
|
||||
.short 0x943
|
||||
.short 0x922
|
||||
.short 0x91d
|
||||
.short 0x134
|
||||
.short 0x6c
|
||||
.short 0xb23
|
||||
.short 0x366
|
||||
.short 0x356
|
||||
.short 0x5e6
|
||||
.short 0x9e7
|
||||
.short 0x4fe
|
||||
.short 0x5fa
|
||||
.short 0x4a1
|
||||
.short 0x67b
|
||||
.short 0x4a3
|
||||
.short 0xc25
|
||||
.short 0x36a
|
||||
.short 0x537
|
||||
.short 0x83f
|
||||
.short 0x88
|
||||
.short 0x4bf
|
||||
.short 0xb81
|
||||
.short 0x5b9
|
||||
.short 0x505
|
||||
.short 0x7d7
|
||||
.short 0xa9f
|
||||
.short 0xaa6
|
||||
.short 0x8b8
|
||||
.short 0x9d0
|
||||
.short 0x4b
|
||||
.short 0x9c
|
||||
.short 0xbb8
|
||||
.short 0xb5f
|
||||
.short 0xba4
|
||||
.short 0x368
|
||||
.short 0xa7d
|
||||
.short 0x636
|
||||
.short 0x8a2
|
||||
.short 0x25a
|
||||
.short 0x736
|
||||
.short 0x309
|
||||
.short 0x93
|
||||
.short 0x87a
|
||||
.short 0x9f7
|
||||
.short 0xf6
|
||||
.short 0x68c
|
||||
.short 0x6db
|
||||
.short 0x1cc
|
||||
.short 0x123
|
||||
.short 0xeb
|
||||
.short 0xc50
|
||||
.short 0xab6
|
||||
.short 0xb5b
|
||||
.short 0xc98
|
||||
.short 0x6f3
|
||||
.short 0x99a
|
||||
.short 0x4e3
|
||||
.short 0x9b6
|
||||
.short 0xad6
|
||||
.short 0xb53
|
||||
.short 0x44f
|
||||
.short 0x4fb
|
||||
.short 0xa5c
|
||||
.short 0x429
|
||||
.short 0xb41
|
||||
.short 0x2d5
|
||||
.short 0x5e4
|
||||
.short 0x940
|
||||
.short 0x18e
|
||||
.short 0x3b7
|
||||
.short 0xf7
|
||||
.short 0x58d
|
||||
.short 0xc96
|
||||
.short 0x9c3
|
||||
.short 0x10f
|
||||
.short 0x5a
|
||||
.short 0x355
|
||||
.short 0x744
|
||||
.short 0xc83
|
||||
.short 0x48a
|
||||
.short 0x652
|
||||
.short 0x29a
|
||||
.short 0x140
|
||||
.short 0x8
|
||||
.short 0xafd
|
||||
.short 0x608
|
||||
.short 0x11a
|
||||
.short 0x72e
|
||||
.short 0x50d
|
||||
.short 0x90a
|
||||
.short 0x228
|
||||
.short 0xa75
|
||||
.short 0x83a
|
||||
.short 0x623
|
||||
.short 0xcd
|
||||
.short 0xb66
|
||||
.short 0x606
|
||||
.short 0xaa1
|
||||
.short 0xa25
|
||||
.short 0x908
|
||||
.short 0x2a9
|
||||
.short 0x82
|
||||
.short 0x642
|
||||
.short 0x74f
|
||||
.short 0x33d
|
||||
.short 0xb82
|
||||
.short 0xbf9
|
||||
.short 0x52d
|
||||
.short 0xac4
|
||||
.short 0x745
|
||||
.short 0x5c2
|
||||
.short 0x4b2
|
||||
.short 0x93f
|
||||
.short 0xc4b
|
||||
.short 0x6d8
|
||||
.short 0xa93
|
||||
.short 0xab
|
||||
.short 0xc37
|
||||
.short 0xbe2
|
||||
.short 0x773
|
||||
.short 0x72c
|
||||
.short 0x5ed
|
||||
.short 0x167
|
||||
.short 0x2f6
|
||||
.short 0x5a1
|
||||
.short 0x06a5,0x070f,0x05b4,0x0943,0x0922,0x091d,0x0134,0x006c
|
||||
.short 0x0b23,0x0366,0x0356,0x05e6,0x09e7,0x04fe,0x05fa,0x04a1
|
||||
.short 0x067b,0x04a3,0x0c25,0x036a,0x0537,0x083f,0x0088,0x04bf
|
||||
.short 0x0b81,0x05b9,0x0505,0x07d7,0x0a9f,0x0aa6,0x08b8,0x09d0
|
||||
.short 0x004b,0x009c,0x0bb8,0x0b5f,0x0ba4,0x0368,0x0a7d,0x0636
|
||||
.short 0x08a2,0x025a,0x0736,0x0309,0x0093,0x087a,0x09f7,0x00f6
|
||||
.short 0x068c,0x06db,0x01cc,0x0123,0x00eb,0x0c50,0x0ab6,0x0b5b
|
||||
.short 0x0c98,0x06f3,0x099a,0x04e3,0x09b6,0x0ad6,0x0b53,0x044f
|
||||
.short 0x04fb,0x0a5c,0x0429,0x0b41,0x02d5,0x05e4,0x0940,0x018e
|
||||
.short 0x03b7,0x00f7,0x058d,0x0c96,0x09c3,0x010f,0x005a,0x0355
|
||||
.short 0x0744,0x0c83,0x048a,0x0652,0x029a,0x0140,0x0008,0x0afd
|
||||
.short 0x0608,0x011a,0x072e,0x050d,0x090a,0x0228,0x0a75,0x083a
|
||||
.short 0x0623,0x00cd,0x0b66,0x0606,0x0aa1,0x0a25,0x0908,0x02a9
|
||||
.short 0x0082,0x0642,0x074f,0x033d,0x0b82,0x0bf9,0x052d,0x0ac4
|
||||
.short 0x0745,0x05c2,0x04b2,0x093f,0x0c4b,0x06d8,0x0a93,0x00ab
|
||||
.short 0x0c37,0x0be2,0x0773,0x072c,0x05ed,0x0167,0x02f6,0x05a1
|
||||
.text
|
||||
.align 4
|
||||
.globl mlkem_thumb2_invntt
|
||||
@@ -3184,139 +2978,36 @@ L_mlkem_invntt_loop_321:
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
/* Cycle Count = 1629 */
|
||||
.size mlkem_thumb2_invntt,.-mlkem_thumb2_invntt
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_mlkem_basemul_mont_zetas, %object
|
||||
.size L_mlkem_basemul_mont_zetas, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 4-byte aligned, 32-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 2
|
||||
#else
|
||||
.p2align 2
|
||||
#endif /* __APPLE__ */
|
||||
L_mlkem_basemul_mont_zetas:
|
||||
.short 0x8ed
|
||||
.short 0xa0b
|
||||
.short 0xb9a
|
||||
.short 0x714
|
||||
.short 0x5d5
|
||||
.short 0x58e
|
||||
.short 0x11f
|
||||
.short 0xca
|
||||
.short 0xc56
|
||||
.short 0x26e
|
||||
.short 0x629
|
||||
.short 0xb6
|
||||
.short 0x3c2
|
||||
.short 0x84f
|
||||
.short 0x73f
|
||||
.short 0x5bc
|
||||
.short 0x23d
|
||||
.short 0x7d4
|
||||
.short 0x108
|
||||
.short 0x17f
|
||||
.short 0x9c4
|
||||
.short 0x5b2
|
||||
.short 0x6bf
|
||||
.short 0xc7f
|
||||
.short 0xa58
|
||||
.short 0x3f9
|
||||
.short 0x2dc
|
||||
.short 0x260
|
||||
.short 0x6fb
|
||||
.short 0x19b
|
||||
.short 0xc34
|
||||
.short 0x6de
|
||||
.short 0x4c7
|
||||
.short 0x28c
|
||||
.short 0xad9
|
||||
.short 0x3f7
|
||||
.short 0x7f4
|
||||
.short 0x5d3
|
||||
.short 0xbe7
|
||||
.short 0x6f9
|
||||
.short 0x204
|
||||
.short 0xcf9
|
||||
.short 0xbc1
|
||||
.short 0xa67
|
||||
.short 0x6af
|
||||
.short 0x877
|
||||
.short 0x7e
|
||||
.short 0x5bd
|
||||
.short 0x9ac
|
||||
.short 0xca7
|
||||
.short 0xbf2
|
||||
.short 0x33e
|
||||
.short 0x6b
|
||||
.short 0x774
|
||||
.short 0xc0a
|
||||
.short 0x94a
|
||||
.short 0xb73
|
||||
.short 0x3c1
|
||||
.short 0x71d
|
||||
.short 0xa2c
|
||||
.short 0x1c0
|
||||
.short 0x8d8
|
||||
.short 0x2a5
|
||||
.short 0x806
|
||||
.short 0x8b2
|
||||
.short 0x1ae
|
||||
.short 0x22b
|
||||
.short 0x34b
|
||||
.short 0x81e
|
||||
.short 0x367
|
||||
.short 0x60e
|
||||
.short 0x69
|
||||
.short 0x1a6
|
||||
.short 0x24b
|
||||
.short 0xb1
|
||||
.short 0xc16
|
||||
.short 0xbde
|
||||
.short 0xb35
|
||||
.short 0x626
|
||||
.short 0x675
|
||||
.short 0xc0b
|
||||
.short 0x30a
|
||||
.short 0x487
|
||||
.short 0xc6e
|
||||
.short 0x9f8
|
||||
.short 0x5cb
|
||||
.short 0xaa7
|
||||
.short 0x45f
|
||||
.short 0x6cb
|
||||
.short 0x284
|
||||
.short 0x999
|
||||
.short 0x15d
|
||||
.short 0x1a2
|
||||
.short 0x149
|
||||
.short 0xc65
|
||||
.short 0xcb6
|
||||
.short 0x331
|
||||
.short 0x449
|
||||
.short 0x25b
|
||||
.short 0x262
|
||||
.short 0x52a
|
||||
.short 0x7fc
|
||||
.short 0x748
|
||||
.short 0x180
|
||||
.short 0x842
|
||||
.short 0xc79
|
||||
.short 0x4c2
|
||||
.short 0x7ca
|
||||
.short 0x997
|
||||
.short 0xdc
|
||||
.short 0x85e
|
||||
.short 0x686
|
||||
.short 0x860
|
||||
.short 0x707
|
||||
.short 0x803
|
||||
.short 0x31a
|
||||
.short 0x71b
|
||||
.short 0x9ab
|
||||
.short 0x99b
|
||||
.short 0x1de
|
||||
.short 0xc95
|
||||
.short 0xbcd
|
||||
.short 0x3e4
|
||||
.short 0x3df
|
||||
.short 0x3be
|
||||
.short 0x74d
|
||||
.short 0x5f2
|
||||
.short 0x65c
|
||||
.short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
|
||||
.short 0x0c56,0x026e,0x0629,0x00b6,0x03c2,0x084f,0x073f,0x05bc
|
||||
.short 0x023d,0x07d4,0x0108,0x017f,0x09c4,0x05b2,0x06bf,0x0c7f
|
||||
.short 0x0a58,0x03f9,0x02dc,0x0260,0x06fb,0x019b,0x0c34,0x06de
|
||||
.short 0x04c7,0x028c,0x0ad9,0x03f7,0x07f4,0x05d3,0x0be7,0x06f9
|
||||
.short 0x0204,0x0cf9,0x0bc1,0x0a67,0x06af,0x0877,0x007e,0x05bd
|
||||
.short 0x09ac,0x0ca7,0x0bf2,0x033e,0x006b,0x0774,0x0c0a,0x094a
|
||||
.short 0x0b73,0x03c1,0x071d,0x0a2c,0x01c0,0x08d8,0x02a5,0x0806
|
||||
.short 0x08b2,0x01ae,0x022b,0x034b,0x081e,0x0367,0x060e,0x0069
|
||||
.short 0x01a6,0x024b,0x00b1,0x0c16,0x0bde,0x0b35,0x0626,0x0675
|
||||
.short 0x0c0b,0x030a,0x0487,0x0c6e,0x09f8,0x05cb,0x0aa7,0x045f
|
||||
.short 0x06cb,0x0284,0x0999,0x015d,0x01a2,0x0149,0x0c65,0x0cb6
|
||||
.short 0x0331,0x0449,0x025b,0x0262,0x052a,0x07fc,0x0748,0x0180
|
||||
.short 0x0842,0x0c79,0x04c2,0x07ca,0x0997,0x00dc,0x085e,0x0686
|
||||
.short 0x0860,0x0707,0x0803,0x031a,0x071b,0x09ab,0x099b,0x01de
|
||||
.short 0x0c95,0x0bcd,0x03e4,0x03df,0x03be,0x074d,0x05f2,0x065c
|
||||
.text
|
||||
.align 4
|
||||
.globl mlkem_thumb2_basemul_mont
|
||||
@@ -3896,6 +3587,6 @@ L_mlkem_thumb2_rej_uniform_done:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,11 +41,16 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#include <wolfssl/wolfcrypt/wc_mlkem.h>
|
||||
|
||||
#ifdef WOLFSSL_WC_MLKEM
|
||||
XALIGNED(16) static const word16 L_mlkem_thumb2_ntt_zetas[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_thumb2_ntt_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714, 0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6, 0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f, 0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
@@ -74,11 +79,9 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_ntt(sword16* r)
|
||||
register sword16* r __asm__ ("r0") = (sword16*)r_p;
|
||||
register word16* L_mlkem_thumb2_ntt_zetas_c __asm__ ("r1") =
|
||||
(word16*)&L_mlkem_thumb2_ntt_zetas;
|
||||
|
||||
#else
|
||||
register word16* L_mlkem_thumb2_ntt_zetas_c =
|
||||
(word16*)&L_mlkem_thumb2_ntt_zetas;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -1360,15 +1363,21 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_ntt(sword16* r)
|
||||
"BNE.N L_mlkem_thumb2_ntt_loop_567_%=\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0x8\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r),
|
||||
[L_mlkem_thumb2_ntt_zetas] "+r" (L_mlkem_thumb2_ntt_zetas_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r),
|
||||
[L_mlkem_thumb2_ntt_zetas] "r" (L_mlkem_thumb2_ntt_zetas_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
}
|
||||
|
||||
XALIGNED(16) static const word16 L_mlkem_invntt_zetas_inv[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_invntt_zetas_inv[] = {
|
||||
0x06a5, 0x070f, 0x05b4, 0x0943, 0x0922, 0x091d, 0x0134, 0x006c,
|
||||
0x0b23, 0x0366, 0x0356, 0x05e6, 0x09e7, 0x04fe, 0x05fa, 0x04a1,
|
||||
0x067b, 0x04a3, 0x0c25, 0x036a, 0x0537, 0x083f, 0x0088, 0x04bf,
|
||||
@@ -1397,11 +1406,9 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_invntt(sword16* r)
|
||||
register sword16* r __asm__ ("r0") = (sword16*)r_p;
|
||||
register word16* L_mlkem_invntt_zetas_inv_c __asm__ ("r1") =
|
||||
(word16*)&L_mlkem_invntt_zetas_inv;
|
||||
|
||||
#else
|
||||
register word16* L_mlkem_invntt_zetas_inv_c =
|
||||
(word16*)&L_mlkem_invntt_zetas_inv;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3050,15 +3057,21 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_invntt(sword16* r)
|
||||
"BNE.N L_mlkem_invntt_loop_321_%=\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0x8\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r),
|
||||
[L_mlkem_invntt_zetas_inv] "+r" (L_mlkem_invntt_zetas_inv_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r),
|
||||
[L_mlkem_invntt_zetas_inv] "r" (L_mlkem_invntt_zetas_inv_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
}
|
||||
|
||||
XALIGNED(16) static const word16 L_mlkem_basemul_mont_zetas[] = {
|
||||
XALIGNED(4) static const word16 L_mlkem_basemul_mont_zetas[] = {
|
||||
0x08ed, 0x0a0b, 0x0b9a, 0x0714, 0x05d5, 0x058e, 0x011f, 0x00ca,
|
||||
0x0c56, 0x026e, 0x0629, 0x00b6, 0x03c2, 0x084f, 0x073f, 0x05bc,
|
||||
0x023d, 0x07d4, 0x0108, 0x017f, 0x09c4, 0x05b2, 0x06bf, 0x0c7f,
|
||||
@@ -3091,11 +3104,9 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_basemul_mont(sword16* r,
|
||||
register const sword16* b __asm__ ("r2") = (const sword16*)b_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r3") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3220,9 +3231,15 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_basemul_mont(sword16* r,
|
||||
#else
|
||||
"BNE.N L_mlkem_basemul_mont_loop_%=\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a), [b] "+r" (b),
|
||||
[L_mlkem_basemul_mont_zetas] "+r" (L_mlkem_basemul_mont_zetas_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a), [b] "r" (b),
|
||||
[L_mlkem_basemul_mont_zetas] "r" (L_mlkem_basemul_mont_zetas_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12", "lr"
|
||||
);
|
||||
@@ -3242,11 +3259,9 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_basemul_mont_add(sword16* r,
|
||||
register const sword16* b __asm__ ("r2") = (const sword16*)b_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r3") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3383,9 +3398,15 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_basemul_mont_add(sword16* r,
|
||||
#else
|
||||
"BNE.N L_mlkem_thumb2_basemul_mont_add_loop_%=\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [r] "+r" (r), [a] "+r" (a), [b] "+r" (b),
|
||||
[L_mlkem_basemul_mont_zetas] "+r" (L_mlkem_basemul_mont_zetas_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [r] "r" (r), [a] "r" (a), [b] "r" (b),
|
||||
[L_mlkem_basemul_mont_zetas] "r" (L_mlkem_basemul_mont_zetas_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12", "lr"
|
||||
);
|
||||
@@ -3401,11 +3422,9 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_csubq(sword16* p)
|
||||
register sword16* p __asm__ ("r0") = (sword16*)p_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r1") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3496,9 +3515,15 @@ WC_OMIT_FRAME_POINTER void mlkem_thumb2_csubq(sword16* p)
|
||||
#else
|
||||
"BNE.N L_mlkem_thumb2_csubq_loop_%=\n\t"
|
||||
#endif
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [p] "+r" (p),
|
||||
[L_mlkem_basemul_mont_zetas] "+r" (L_mlkem_basemul_mont_zetas_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [p] "r" (p),
|
||||
[L_mlkem_basemul_mont_zetas] "r" (L_mlkem_basemul_mont_zetas_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
@@ -3519,11 +3544,9 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_thumb2_rej_uniform(sword16* p,
|
||||
register unsigned int rLen __asm__ ("r3") = (unsigned int)rLen_p;
|
||||
register word16* L_mlkem_basemul_mont_zetas_c __asm__ ("r4") =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#else
|
||||
register word16* L_mlkem_basemul_mont_zetas_c =
|
||||
(word16*)&L_mlkem_basemul_mont_zetas;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3847,9 +3870,15 @@ WC_OMIT_FRAME_POINTER unsigned int mlkem_thumb2_rej_uniform(sword16* p,
|
||||
"L_mlkem_thumb2_rej_uniform_done_%=:\n\t"
|
||||
#endif
|
||||
"LSR r0, r9, #1\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [p] "+r" (p), [len] "+r" (len), [r] "+r" (r), [rLen] "+r" (rLen),
|
||||
[L_mlkem_basemul_mont_zetas] "+r" (L_mlkem_basemul_mont_zetas_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [p] "r" (p), [len] "r" (len), [r] "r" (r), [rLen] "r" (rLen),
|
||||
[L_mlkem_basemul_mont_zetas] "r" (L_mlkem_basemul_mont_zetas_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r5", "r6", "r7", "r8", "r9", "r10"
|
||||
);
|
||||
return (word32)(size_t)p;
|
||||
|
||||
@@ -256,15 +256,21 @@ L_poly1305_thumb2_16_done:
|
||||
POP {r4, r5, r6, r7, r8, r9, r10, r11, pc}
|
||||
/* Cycle Count = 250 */
|
||||
.size poly1305_blocks_thumb2_16,.-poly1305_blocks_thumb2_16
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_poly1305_thumb2_clamp, %object
|
||||
.size L_poly1305_thumb2_clamp, 16
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 8-byte aligned, 64-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_poly1305_thumb2_clamp:
|
||||
.word 0xfffffff
|
||||
.word 0xffffffc
|
||||
.word 0xffffffc
|
||||
.word 0xffffffc
|
||||
.long 0x0fffffff,0x0ffffffc,0x0ffffffc,0x0ffffffc
|
||||
.text
|
||||
.align 4
|
||||
.globl poly1305_set_key
|
||||
@@ -362,6 +368,6 @@ poly1305_final:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,6 +41,11 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifdef HAVE_POLY1305
|
||||
#include <wolfssl/wolfcrypt/poly1305.h>
|
||||
@@ -289,15 +294,21 @@ WC_OMIT_FRAME_POINTER void poly1305_blocks_thumb2_16(Poly1305* ctx,
|
||||
"L_poly1305_thumb2_16_done_%=:\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0x1c\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [m] "+r" (m), [len] "+r" (len),
|
||||
[notLast] "+r" (notLast)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [ctx] "r" (ctx), [m] "r" (m), [len] "r" (len),
|
||||
[notLast] "r" (notLast)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12", "lr"
|
||||
);
|
||||
}
|
||||
|
||||
XALIGNED(16) static const word32 L_poly1305_thumb2_clamp[] = {
|
||||
XALIGNED(8) static const word32 L_poly1305_thumb2_clamp[] = {
|
||||
0x0fffffff, 0x0ffffffc, 0x0ffffffc, 0x0ffffffc,
|
||||
};
|
||||
|
||||
@@ -312,11 +323,9 @@ WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx, const byte* key)
|
||||
register const byte* key __asm__ ("r1") = (const byte*)key_p;
|
||||
register word32* L_poly1305_thumb2_clamp_c __asm__ ("r2") =
|
||||
(word32*)&L_poly1305_thumb2_clamp;
|
||||
|
||||
#else
|
||||
register word32* L_poly1305_thumb2_clamp_c =
|
||||
(word32*)&L_poly1305_thumb2_clamp;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -351,9 +360,15 @@ WC_OMIT_FRAME_POINTER void poly1305_set_key(Poly1305* ctx, const byte* key)
|
||||
"STM r10, {r5, r6, r7, r8, r9}\n\t"
|
||||
/* Zero leftover */
|
||||
"STR r5, [%[ctx], #52]\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [key] "+r" (key),
|
||||
[L_poly1305_thumb2_clamp] "+r" (L_poly1305_thumb2_clamp_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [ctx] "r" (ctx), [key] "r" (key),
|
||||
[L_poly1305_thumb2_clamp] "r" (L_poly1305_thumb2_clamp_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10"
|
||||
);
|
||||
}
|
||||
@@ -413,8 +428,13 @@ WC_OMIT_FRAME_POINTER void poly1305_final(Poly1305* ctx, byte* mac)
|
||||
/* Zero out padding. */
|
||||
"ADD r11, %[ctx], #0x24\n\t"
|
||||
"STM r11, {r2, r3, r4, r5}\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [ctx] "+r" (ctx), [mac] "+r" (mac)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [ctx] "r" (ctx), [mac] "r" (mac)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11"
|
||||
);
|
||||
|
||||
@@ -34,75 +34,36 @@
|
||||
.syntax unified
|
||||
#ifndef NO_SHA256
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_transform_len_k, %object
|
||||
.size L_SHA256_transform_len_k, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 8-byte aligned, 64-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_transform_len_k:
|
||||
.word 0x428a2f98
|
||||
.word 0x71374491
|
||||
.word 0xb5c0fbcf
|
||||
.word 0xe9b5dba5
|
||||
.word 0x3956c25b
|
||||
.word 0x59f111f1
|
||||
.word 0x923f82a4
|
||||
.word 0xab1c5ed5
|
||||
.word 0xd807aa98
|
||||
.word 0x12835b01
|
||||
.word 0x243185be
|
||||
.word 0x550c7dc3
|
||||
.word 0x72be5d74
|
||||
.word 0x80deb1fe
|
||||
.word 0x9bdc06a7
|
||||
.word 0xc19bf174
|
||||
.word 0xe49b69c1
|
||||
.word 0xefbe4786
|
||||
.word 0xfc19dc6
|
||||
.word 0x240ca1cc
|
||||
.word 0x2de92c6f
|
||||
.word 0x4a7484aa
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x76f988da
|
||||
.word 0x983e5152
|
||||
.word 0xa831c66d
|
||||
.word 0xb00327c8
|
||||
.word 0xbf597fc7
|
||||
.word 0xc6e00bf3
|
||||
.word 0xd5a79147
|
||||
.word 0x6ca6351
|
||||
.word 0x14292967
|
||||
.word 0x27b70a85
|
||||
.word 0x2e1b2138
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x53380d13
|
||||
.word 0x650a7354
|
||||
.word 0x766a0abb
|
||||
.word 0x81c2c92e
|
||||
.word 0x92722c85
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xa81a664b
|
||||
.word 0xc24b8b70
|
||||
.word 0xc76c51a3
|
||||
.word 0xd192e819
|
||||
.word 0xd6990624
|
||||
.word 0xf40e3585
|
||||
.word 0x106aa070
|
||||
.word 0x19a4c116
|
||||
.word 0x1e376c08
|
||||
.word 0x2748774c
|
||||
.word 0x34b0bcb5
|
||||
.word 0x391c0cb3
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x5b9cca4f
|
||||
.word 0x682e6ff3
|
||||
.word 0x748f82ee
|
||||
.word 0x78a5636f
|
||||
.word 0x84c87814
|
||||
.word 0x8cc70208
|
||||
.word 0x90befffa
|
||||
.word 0xa4506ceb
|
||||
.word 0xbef9a3f7
|
||||
.word 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
.text
|
||||
.align 4
|
||||
.globl Transform_Sha256_Len_base
|
||||
@@ -2365,6 +2326,6 @@ L_SHA256_transform_len_blk_end_15:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,12 +41,17 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
XALIGNED(16) static const word32 L_SHA256_transform_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -65,7 +70,8 @@ XALIGNED(16) static const word32 L_SHA256_transform_len_k[] = {
|
||||
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
||||
};
|
||||
|
||||
void Transform_Sha256_Len_base(wc_Sha256* sha256, const byte* data, word32 len);
|
||||
void Transform_Sha256_Len_base(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
@@ -80,11 +86,9 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c __asm__ ("r3") =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
|
||||
#else
|
||||
register word32* L_SHA256_transform_len_k_c =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -2468,9 +2472,15 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len_base(wc_Sha256* sha256,
|
||||
"BNE.W L_SHA256_transform_len_begin_%=\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0xc0\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [sha256] "+r" (sha256), [data] "+r" (data), [len] "+r" (len),
|
||||
[L_SHA256_transform_len_k] "+r" (L_SHA256_transform_len_k_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [sha256] "r" (sha256), [data] "r" (data), [len] "r" (len),
|
||||
[L_SHA256_transform_len_k] "r" (L_SHA256_transform_len_k_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12"
|
||||
);
|
||||
|
||||
@@ -33,59 +33,32 @@
|
||||
.thumb
|
||||
.syntax unified
|
||||
#ifdef WOLFSSL_SHA3
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_sha3_thumb2_rt, %object
|
||||
.size L_sha3_thumb2_rt, 192
|
||||
.align 8
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 16-byte aligned, 128-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_thumb2_rt:
|
||||
.word 0x1
|
||||
.word 0x0
|
||||
.word 0x8082
|
||||
.word 0x0
|
||||
.word 0x808a
|
||||
.word 0x80000000
|
||||
.word 0x80008000
|
||||
.word 0x80000000
|
||||
.word 0x808b
|
||||
.word 0x0
|
||||
.word 0x80000001
|
||||
.word 0x0
|
||||
.word 0x80008081
|
||||
.word 0x80000000
|
||||
.word 0x8009
|
||||
.word 0x80000000
|
||||
.word 0x8a
|
||||
.word 0x0
|
||||
.word 0x88
|
||||
.word 0x0
|
||||
.word 0x80008009
|
||||
.word 0x0
|
||||
.word 0x8000000a
|
||||
.word 0x0
|
||||
.word 0x8000808b
|
||||
.word 0x0
|
||||
.word 0x8b
|
||||
.word 0x80000000
|
||||
.word 0x8089
|
||||
.word 0x80000000
|
||||
.word 0x8003
|
||||
.word 0x80000000
|
||||
.word 0x8002
|
||||
.word 0x80000000
|
||||
.word 0x80
|
||||
.word 0x80000000
|
||||
.word 0x800a
|
||||
.word 0x0
|
||||
.word 0x8000000a
|
||||
.word 0x80000000
|
||||
.word 0x80008081
|
||||
.word 0x80000000
|
||||
.word 0x8080
|
||||
.word 0x80000000
|
||||
.word 0x80000001
|
||||
.word 0x0
|
||||
.word 0x80008008
|
||||
.word 0x80000000
|
||||
.quad 0x0000000000000001,0x0000000000008082
|
||||
.quad 0x800000000000808a,0x8000000080008000
|
||||
.quad 0x000000000000808b,0x0000000080000001
|
||||
.quad 0x8000000080008081,0x8000000000008009
|
||||
.quad 0x000000000000008a,0x0000000000000088
|
||||
.quad 0x0000000080008009,0x000000008000000a
|
||||
.quad 0x000000008000808b,0x800000000000008b
|
||||
.quad 0x8000000000008089,0x8000000000008003
|
||||
.quad 0x8000000000008002,0x8000000000000080
|
||||
.quad 0x000000000000800a,0x800000008000000a
|
||||
.quad 0x8000000080008081,0x8000000000008080
|
||||
.quad 0x0000000080000001,0x8000000080008008
|
||||
.text
|
||||
.align 4
|
||||
.globl BlockSha3
|
||||
@@ -1169,6 +1142,6 @@ L_sha3_thumb2_begin:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,9 +41,14 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifdef WOLFSSL_SHA3
|
||||
static const word64 L_sha3_thumb2_rt[] = {
|
||||
XALIGNED(16) static const word64 L_sha3_thumb2_rt[] = {
|
||||
0x0000000000000001UL, 0x0000000000008082UL,
|
||||
0x800000000000808aUL, 0x8000000080008000UL,
|
||||
0x000000000000808bUL, 0x0000000080000001UL,
|
||||
@@ -70,10 +75,8 @@ WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
register word64* state __asm__ ("r0") = (word64*)state_p;
|
||||
register word64* L_sha3_thumb2_rt_c __asm__ ("r1") =
|
||||
(word64*)&L_sha3_thumb2_rt;
|
||||
|
||||
#else
|
||||
register word64* L_sha3_thumb2_rt_c = (word64*)&L_sha3_thumb2_rt;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -1153,8 +1156,13 @@ WC_OMIT_FRAME_POINTER void BlockSha3(word64* state)
|
||||
"BNE.W L_sha3_thumb2_begin_%=\n\t"
|
||||
#endif
|
||||
"ADD sp, sp, #0xcc\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [state] "+r" (state), [L_sha3_thumb2_rt] "+r" (L_sha3_thumb2_rt_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [state] "r" (state), [L_sha3_thumb2_rt] "r" (L_sha3_thumb2_rt_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
||||
"r11", "r12", "lr"
|
||||
);
|
||||
|
||||
@@ -34,171 +34,60 @@
|
||||
.syntax unified
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA512_transform_len_k, %object
|
||||
.size L_SHA512_transform_len_k, 640
|
||||
.align 8
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
/* 16-byte aligned, 128-bit aligned */
|
||||
#ifndef __APPLE__
|
||||
.align 4
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA512_transform_len_k:
|
||||
.word 0xd728ae22
|
||||
.word 0x428a2f98
|
||||
.word 0x23ef65cd
|
||||
.word 0x71374491
|
||||
.word 0xec4d3b2f
|
||||
.word 0xb5c0fbcf
|
||||
.word 0x8189dbbc
|
||||
.word 0xe9b5dba5
|
||||
.word 0xf348b538
|
||||
.word 0x3956c25b
|
||||
.word 0xb605d019
|
||||
.word 0x59f111f1
|
||||
.word 0xaf194f9b
|
||||
.word 0x923f82a4
|
||||
.word 0xda6d8118
|
||||
.word 0xab1c5ed5
|
||||
.word 0xa3030242
|
||||
.word 0xd807aa98
|
||||
.word 0x45706fbe
|
||||
.word 0x12835b01
|
||||
.word 0x4ee4b28c
|
||||
.word 0x243185be
|
||||
.word 0xd5ffb4e2
|
||||
.word 0x550c7dc3
|
||||
.word 0xf27b896f
|
||||
.word 0x72be5d74
|
||||
.word 0x3b1696b1
|
||||
.word 0x80deb1fe
|
||||
.word 0x25c71235
|
||||
.word 0x9bdc06a7
|
||||
.word 0xcf692694
|
||||
.word 0xc19bf174
|
||||
.word 0x9ef14ad2
|
||||
.word 0xe49b69c1
|
||||
.word 0x384f25e3
|
||||
.word 0xefbe4786
|
||||
.word 0x8b8cd5b5
|
||||
.word 0xfc19dc6
|
||||
.word 0x77ac9c65
|
||||
.word 0x240ca1cc
|
||||
.word 0x592b0275
|
||||
.word 0x2de92c6f
|
||||
.word 0x6ea6e483
|
||||
.word 0x4a7484aa
|
||||
.word 0xbd41fbd4
|
||||
.word 0x5cb0a9dc
|
||||
.word 0x831153b5
|
||||
.word 0x76f988da
|
||||
.word 0xee66dfab
|
||||
.word 0x983e5152
|
||||
.word 0x2db43210
|
||||
.word 0xa831c66d
|
||||
.word 0x98fb213f
|
||||
.word 0xb00327c8
|
||||
.word 0xbeef0ee4
|
||||
.word 0xbf597fc7
|
||||
.word 0x3da88fc2
|
||||
.word 0xc6e00bf3
|
||||
.word 0x930aa725
|
||||
.word 0xd5a79147
|
||||
.word 0xe003826f
|
||||
.word 0x6ca6351
|
||||
.word 0xa0e6e70
|
||||
.word 0x14292967
|
||||
.word 0x46d22ffc
|
||||
.word 0x27b70a85
|
||||
.word 0x5c26c926
|
||||
.word 0x2e1b2138
|
||||
.word 0x5ac42aed
|
||||
.word 0x4d2c6dfc
|
||||
.word 0x9d95b3df
|
||||
.word 0x53380d13
|
||||
.word 0x8baf63de
|
||||
.word 0x650a7354
|
||||
.word 0x3c77b2a8
|
||||
.word 0x766a0abb
|
||||
.word 0x47edaee6
|
||||
.word 0x81c2c92e
|
||||
.word 0x1482353b
|
||||
.word 0x92722c85
|
||||
.word 0x4cf10364
|
||||
.word 0xa2bfe8a1
|
||||
.word 0xbc423001
|
||||
.word 0xa81a664b
|
||||
.word 0xd0f89791
|
||||
.word 0xc24b8b70
|
||||
.word 0x654be30
|
||||
.word 0xc76c51a3
|
||||
.word 0xd6ef5218
|
||||
.word 0xd192e819
|
||||
.word 0x5565a910
|
||||
.word 0xd6990624
|
||||
.word 0x5771202a
|
||||
.word 0xf40e3585
|
||||
.word 0x32bbd1b8
|
||||
.word 0x106aa070
|
||||
.word 0xb8d2d0c8
|
||||
.word 0x19a4c116
|
||||
.word 0x5141ab53
|
||||
.word 0x1e376c08
|
||||
.word 0xdf8eeb99
|
||||
.word 0x2748774c
|
||||
.word 0xe19b48a8
|
||||
.word 0x34b0bcb5
|
||||
.word 0xc5c95a63
|
||||
.word 0x391c0cb3
|
||||
.word 0xe3418acb
|
||||
.word 0x4ed8aa4a
|
||||
.word 0x7763e373
|
||||
.word 0x5b9cca4f
|
||||
.word 0xd6b2b8a3
|
||||
.word 0x682e6ff3
|
||||
.word 0x5defb2fc
|
||||
.word 0x748f82ee
|
||||
.word 0x43172f60
|
||||
.word 0x78a5636f
|
||||
.word 0xa1f0ab72
|
||||
.word 0x84c87814
|
||||
.word 0x1a6439ec
|
||||
.word 0x8cc70208
|
||||
.word 0x23631e28
|
||||
.word 0x90befffa
|
||||
.word 0xde82bde9
|
||||
.word 0xa4506ceb
|
||||
.word 0xb2c67915
|
||||
.word 0xbef9a3f7
|
||||
.word 0xe372532b
|
||||
.word 0xc67178f2
|
||||
.word 0xea26619c
|
||||
.word 0xca273ece
|
||||
.word 0x21c0c207
|
||||
.word 0xd186b8c7
|
||||
.word 0xcde0eb1e
|
||||
.word 0xeada7dd6
|
||||
.word 0xee6ed178
|
||||
.word 0xf57d4f7f
|
||||
.word 0x72176fba
|
||||
.word 0x6f067aa
|
||||
.word 0xa2c898a6
|
||||
.word 0xa637dc5
|
||||
.word 0xbef90dae
|
||||
.word 0x113f9804
|
||||
.word 0x131c471b
|
||||
.word 0x1b710b35
|
||||
.word 0x23047d84
|
||||
.word 0x28db77f5
|
||||
.word 0x40c72493
|
||||
.word 0x32caab7b
|
||||
.word 0x15c9bebc
|
||||
.word 0x3c9ebe0a
|
||||
.word 0x9c100d4c
|
||||
.word 0x431d67c4
|
||||
.word 0xcb3e42b6
|
||||
.word 0x4cc5d4be
|
||||
.word 0xfc657e2a
|
||||
.word 0x597f299c
|
||||
.word 0x3ad6faec
|
||||
.word 0x5fcb6fab
|
||||
.word 0x4a475817
|
||||
.word 0x6c44198c
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
|
||||
.quad 0x3956c25bf348b538,0x59f111f1b605d019
|
||||
.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
|
||||
.quad 0xd807aa98a3030242,0x12835b0145706fbe
|
||||
.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
|
||||
.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
|
||||
.quad 0x9bdc06a725c71235,0xc19bf174cf692694
|
||||
.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
|
||||
.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
|
||||
.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
|
||||
.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
|
||||
.quad 0x983e5152ee66dfab,0xa831c66d2db43210
|
||||
.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
|
||||
.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
|
||||
.quad 0x06ca6351e003826f,0x142929670a0e6e70
|
||||
.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
|
||||
.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
|
||||
.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
|
||||
.quad 0x81c2c92e47edaee6,0x92722c851482353b
|
||||
.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
|
||||
.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
|
||||
.quad 0xd192e819d6ef5218,0xd69906245565a910
|
||||
.quad 0xf40e35855771202a,0x106aa07032bbd1b8
|
||||
.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
|
||||
.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
|
||||
.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
|
||||
.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
|
||||
.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
|
||||
.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
|
||||
.quad 0x90befffa23631e28,0xa4506cebde82bde9
|
||||
.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
|
||||
.quad 0xca273eceea26619c,0xd186b8c721c0c207
|
||||
.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
|
||||
.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
|
||||
.quad 0x113f9804bef90dae,0x1b710b35131c471b
|
||||
.quad 0x28db77f523047d84,0x32caab7b40c72493
|
||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||
.text
|
||||
.align 4
|
||||
.globl Transform_Sha512_Len_base
|
||||
@@ -3670,6 +3559,6 @@ L_SHA512_transform_len_start:
|
||||
#endif /* WOLFSSL_ARMASM */
|
||||
|
||||
#if defined(__linux__) && defined(__ELF__)
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
#endif
|
||||
#endif /* !WOLFSSL_ARMASM_INLINE */
|
||||
|
||||
@@ -41,12 +41,17 @@
|
||||
#define __asm__ __asm
|
||||
#define __volatile__ volatile
|
||||
#endif /* __KEIL__ */
|
||||
#ifdef __ghs__
|
||||
#define __asm__ __asm
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
|
||||
#ifdef WOLFSSL_ARMASM_NO_NEON
|
||||
static const word64 L_SHA512_transform_len_k[] = {
|
||||
XALIGNED(16) static const word64 L_SHA512_transform_len_k[] = {
|
||||
0x428a2f98d728ae22UL, 0x7137449123ef65cdUL,
|
||||
0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
|
||||
0x3956c25bf348b538UL, 0x59f111f1b605d019UL,
|
||||
@@ -89,7 +94,8 @@ static const word64 L_SHA512_transform_len_k[] = {
|
||||
0x5fcb6fab3ad6faecUL, 0x6c44198c4a475817UL,
|
||||
};
|
||||
|
||||
void Transform_Sha512_Len_base(wc_Sha512* sha512, const byte* data, word32 len);
|
||||
void Transform_Sha512_Len_base(wc_Sha512* sha512_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
@@ -104,11 +110,9 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512,
|
||||
register word32 len __asm__ ("r2") = (word32)len_p;
|
||||
register word64* L_SHA512_transform_len_k_c __asm__ ("r3") =
|
||||
(word64*)&L_SHA512_transform_len_k;
|
||||
|
||||
#else
|
||||
register word64* L_SHA512_transform_len_k_c =
|
||||
(word64*)&L_SHA512_transform_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -3582,9 +3586,15 @@ WC_OMIT_FRAME_POINTER void Transform_Sha512_Len_base(wc_Sha512* sha512,
|
||||
#endif
|
||||
"EOR r0, r0, r0\n\t"
|
||||
"ADD sp, sp, #0xc0\n\t"
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
: [sha512] "+r" (sha512), [data] "+r" (data), [len] "+r" (len),
|
||||
[L_SHA512_transform_len_k] "+r" (L_SHA512_transform_len_k_c)
|
||||
:
|
||||
#else
|
||||
:
|
||||
: [sha512] "r" (sha512), [data] "r" (data), [len] "r" (len),
|
||||
[L_SHA512_transform_len_k] "r" (L_SHA512_transform_len_k_c)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
: "memory", "cc", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11",
|
||||
"r12"
|
||||
);
|
||||
|
||||
@@ -31,76 +31,36 @@
|
||||
.machine ppc
|
||||
#ifndef NO_SHA256
|
||||
#ifdef WOLFSSL_PPC32_ASM_SPE
|
||||
.section ".text"
|
||||
.section .rodata
|
||||
.type L_SHA256_transform_spe_len_k, @object
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_transform_spe_len_k, %object
|
||||
.size L_SHA256_transform_spe_len_k, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_transform_spe_len_k:
|
||||
.long 0x428a2f98
|
||||
.long 0x71374491
|
||||
.long 0xb5c0fbcf
|
||||
.long 0xe9b5dba5
|
||||
.long 0x3956c25b
|
||||
.long 0x59f111f1
|
||||
.long 0x923f82a4
|
||||
.long 0xab1c5ed5
|
||||
.long 0xd807aa98
|
||||
.long 0x12835b01
|
||||
.long 0x243185be
|
||||
.long 0x550c7dc3
|
||||
.long 0x72be5d74
|
||||
.long 0x80deb1fe
|
||||
.long 0x9bdc06a7
|
||||
.long 0xc19bf174
|
||||
.long 0xe49b69c1
|
||||
.long 0xefbe4786
|
||||
.long 0xfc19dc6
|
||||
.long 0x240ca1cc
|
||||
.long 0x2de92c6f
|
||||
.long 0x4a7484aa
|
||||
.long 0x5cb0a9dc
|
||||
.long 0x76f988da
|
||||
.long 0x983e5152
|
||||
.long 0xa831c66d
|
||||
.long 0xb00327c8
|
||||
.long 0xbf597fc7
|
||||
.long 0xc6e00bf3
|
||||
.long 0xd5a79147
|
||||
.long 0x6ca6351
|
||||
.long 0x14292967
|
||||
.long 0x27b70a85
|
||||
.long 0x2e1b2138
|
||||
.long 0x4d2c6dfc
|
||||
.long 0x53380d13
|
||||
.long 0x650a7354
|
||||
.long 0x766a0abb
|
||||
.long 0x81c2c92e
|
||||
.long 0x92722c85
|
||||
.long 0xa2bfe8a1
|
||||
.long 0xa81a664b
|
||||
.long 0xc24b8b70
|
||||
.long 0xc76c51a3
|
||||
.long 0xd192e819
|
||||
.long 0xd6990624
|
||||
.long 0xf40e3585
|
||||
.long 0x106aa070
|
||||
.long 0x19a4c116
|
||||
.long 0x1e376c08
|
||||
.long 0x2748774c
|
||||
.long 0x34b0bcb5
|
||||
.long 0x391c0cb3
|
||||
.long 0x4ed8aa4a
|
||||
.long 0x5b9cca4f
|
||||
.long 0x682e6ff3
|
||||
.long 0x748f82ee
|
||||
.long 0x78a5636f
|
||||
.long 0x84c87814
|
||||
.long 0x8cc70208
|
||||
.long 0x90befffa
|
||||
.long 0xa4506ceb
|
||||
.long 0xbef9a3f7
|
||||
.long 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
.section ".text"
|
||||
.align 4
|
||||
.globl Transform_Sha256_Len
|
||||
@@ -1217,76 +1177,36 @@ L_SHA256_transform_spe_len_start:
|
||||
.size Transform_Sha256_Len,.-Transform_Sha256_Len
|
||||
#endif /* WOLFSSL_PPC32_ASM_SPE */
|
||||
#ifndef WOLFSSL_PPC32_ASM_SPE
|
||||
.section ".text"
|
||||
.section .rodata
|
||||
.type L_SHA256_transform_len_k, @object
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.type L_SHA256_transform_len_k, %object
|
||||
.size L_SHA256_transform_len_k, 256
|
||||
.align 4
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
# 8-byte aligned, 64-bit aligned
|
||||
#ifndef __APPLE__
|
||||
.align 3
|
||||
#else
|
||||
.p2align 3
|
||||
#endif /* __APPLE__ */
|
||||
L_SHA256_transform_len_k:
|
||||
.long 0x428a2f98
|
||||
.long 0x71374491
|
||||
.long 0xb5c0fbcf
|
||||
.long 0xe9b5dba5
|
||||
.long 0x3956c25b
|
||||
.long 0x59f111f1
|
||||
.long 0x923f82a4
|
||||
.long 0xab1c5ed5
|
||||
.long 0xd807aa98
|
||||
.long 0x12835b01
|
||||
.long 0x243185be
|
||||
.long 0x550c7dc3
|
||||
.long 0x72be5d74
|
||||
.long 0x80deb1fe
|
||||
.long 0x9bdc06a7
|
||||
.long 0xc19bf174
|
||||
.long 0xe49b69c1
|
||||
.long 0xefbe4786
|
||||
.long 0xfc19dc6
|
||||
.long 0x240ca1cc
|
||||
.long 0x2de92c6f
|
||||
.long 0x4a7484aa
|
||||
.long 0x5cb0a9dc
|
||||
.long 0x76f988da
|
||||
.long 0x983e5152
|
||||
.long 0xa831c66d
|
||||
.long 0xb00327c8
|
||||
.long 0xbf597fc7
|
||||
.long 0xc6e00bf3
|
||||
.long 0xd5a79147
|
||||
.long 0x6ca6351
|
||||
.long 0x14292967
|
||||
.long 0x27b70a85
|
||||
.long 0x2e1b2138
|
||||
.long 0x4d2c6dfc
|
||||
.long 0x53380d13
|
||||
.long 0x650a7354
|
||||
.long 0x766a0abb
|
||||
.long 0x81c2c92e
|
||||
.long 0x92722c85
|
||||
.long 0xa2bfe8a1
|
||||
.long 0xa81a664b
|
||||
.long 0xc24b8b70
|
||||
.long 0xc76c51a3
|
||||
.long 0xd192e819
|
||||
.long 0xd6990624
|
||||
.long 0xf40e3585
|
||||
.long 0x106aa070
|
||||
.long 0x19a4c116
|
||||
.long 0x1e376c08
|
||||
.long 0x2748774c
|
||||
.long 0x34b0bcb5
|
||||
.long 0x391c0cb3
|
||||
.long 0x4ed8aa4a
|
||||
.long 0x5b9cca4f
|
||||
.long 0x682e6ff3
|
||||
.long 0x748f82ee
|
||||
.long 0x78a5636f
|
||||
.long 0x84c87814
|
||||
.long 0x8cc70208
|
||||
.long 0x90befffa
|
||||
.long 0xa4506ceb
|
||||
.long 0xbef9a3f7
|
||||
.long 0xc67178f2
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
|
||||
.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
|
||||
.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
|
||||
.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
|
||||
.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
|
||||
.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
|
||||
.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
|
||||
.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
|
||||
.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
|
||||
.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
|
||||
.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
|
||||
.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
|
||||
.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
|
||||
.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
|
||||
#ifndef __PIC__
|
||||
.section ".text"
|
||||
.align 4
|
||||
|
||||
@@ -29,8 +29,6 @@
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLFSSL_PPC32_ASM
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_PPC32_ASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -47,11 +45,12 @@
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
|
||||
#ifdef WOLFSSL_PPC32_ASM_SPE
|
||||
static const word32 L_SHA256_transform_spe_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_spe_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -73,21 +72,22 @@ static const word32 L_SHA256_transform_spe_len_k[] = {
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
#else
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("4") = (const byte*)data_p;
|
||||
register word32 len asm ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_spe_len_k_c asm ("6") =
|
||||
register wc_Sha256* sha256 __asm__ ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("4") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_spe_len_k_c __asm__ ("6") =
|
||||
(word32*)&L_SHA256_transform_spe_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_spe_len_k_c =
|
||||
(word32*)&L_SHA256_transform_spe_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -104,7 +104,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"lwz 21, 28(%[sha256])\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_spe_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_spe_len_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
"lwz 22, 0(%[data])\n\t"
|
||||
"lwz 0, 4(%[data])\n\t"
|
||||
@@ -134,7 +134,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr 0\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_spe_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_spe_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"mr 9, 22\n\t"
|
||||
"rotlwi 6, 18, 26\n\t"
|
||||
@@ -1178,7 +1178,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#ifndef WOLFSSL_PPC32_ASM_SPE
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
|
||||
static const word32 L_SHA256_transform_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -1201,21 +1201,22 @@ static const word32 L_SHA256_transform_len_k[] = {
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
#else
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("4") = (const byte*)data_p;
|
||||
register word32 len asm ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c asm ("6") =
|
||||
register wc_Sha256* sha256 __asm__ ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("4") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c __asm__ ("6") =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_len_k_c =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -1234,7 +1235,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr %[len]\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz 16, 0(%[data])\n\t"
|
||||
"lwz 17, 4(%[data])\n\t"
|
||||
@@ -3625,7 +3626,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"stw %[len], 0(1)\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz 16, 0(%[data])\n\t"
|
||||
"lwz 17, 4(%[data])\n\t"
|
||||
@@ -3647,7 +3648,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr 0\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"rotlwi 0, 11, 26\n\t"
|
||||
"rotlwi %[len], 11, 21\n\t"
|
||||
@@ -3692,7 +3693,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 16, 16, 0\n\t"
|
||||
"add 16, 16, 25\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_0_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_0_%=:\n\t"
|
||||
/* Round 1 */
|
||||
"rotlwi 0, 10, 26\n\t"
|
||||
"rotlwi %[len], 10, 21\n\t"
|
||||
@@ -3737,7 +3738,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 17, 17, 0\n\t"
|
||||
"add 17, 17, 26\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_1_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_1_%=:\n\t"
|
||||
/* Round 2 */
|
||||
"rotlwi 0, 9, 26\n\t"
|
||||
"rotlwi %[len], 9, 21\n\t"
|
||||
@@ -3782,7 +3783,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 18, 18, 0\n\t"
|
||||
"add 18, 18, 27\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_2_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_2_%=:\n\t"
|
||||
/* Round 3 */
|
||||
"rotlwi 0, 8, 26\n\t"
|
||||
"rotlwi %[len], 8, 21\n\t"
|
||||
@@ -3827,7 +3828,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 19, 19, 0\n\t"
|
||||
"add 19, 19, 28\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_3_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_3_%=:\n\t"
|
||||
/* Round 4 */
|
||||
"rotlwi 0, 7, 26\n\t"
|
||||
"rotlwi %[len], 7, 21\n\t"
|
||||
@@ -3872,7 +3873,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 20, 20, 0\n\t"
|
||||
"add 20, 20, 29\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_4_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_4_%=:\n\t"
|
||||
/* Round 5 */
|
||||
"rotlwi 0, 15, 26\n\t"
|
||||
"rotlwi %[len], 15, 21\n\t"
|
||||
@@ -3917,7 +3918,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 21, 21, 0\n\t"
|
||||
"add 21, 21, 30\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_5_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_5_%=:\n\t"
|
||||
/* Round 6 */
|
||||
"rotlwi 0, 14, 26\n\t"
|
||||
"rotlwi %[len], 14, 21\n\t"
|
||||
@@ -3962,7 +3963,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 22, 22, 0\n\t"
|
||||
"add 22, 22, 31\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_6_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_6_%=:\n\t"
|
||||
/* Round 7 */
|
||||
"rotlwi 0, 12, 26\n\t"
|
||||
"rotlwi %[len], 12, 21\n\t"
|
||||
@@ -4007,7 +4008,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 23, 23, 0\n\t"
|
||||
"add 23, 23, 16\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_7_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_7_%=:\n\t"
|
||||
/* Round 8 */
|
||||
"rotlwi 0, 11, 26\n\t"
|
||||
"rotlwi %[len], 11, 21\n\t"
|
||||
@@ -4052,7 +4053,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 24, 24, 0\n\t"
|
||||
"add 24, 24, 17\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_8_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_8_%=:\n\t"
|
||||
/* Round 9 */
|
||||
"rotlwi 0, 10, 26\n\t"
|
||||
"rotlwi %[len], 10, 21\n\t"
|
||||
@@ -4097,7 +4098,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 25, 25, 0\n\t"
|
||||
"add 25, 25, 18\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_9_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_9_%=:\n\t"
|
||||
/* Round 10 */
|
||||
"rotlwi 0, 9, 26\n\t"
|
||||
"rotlwi %[len], 9, 21\n\t"
|
||||
@@ -4142,7 +4143,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 26, 26, 0\n\t"
|
||||
"add 26, 26, 19\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_10_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_10_%=:\n\t"
|
||||
/* Round 11 */
|
||||
"rotlwi 0, 8, 26\n\t"
|
||||
"rotlwi %[len], 8, 21\n\t"
|
||||
@@ -4187,7 +4188,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 27, 27, 0\n\t"
|
||||
"add 27, 27, 20\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_11_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_11_%=:\n\t"
|
||||
/* Round 12 */
|
||||
"rotlwi 0, 7, 26\n\t"
|
||||
"rotlwi %[len], 7, 21\n\t"
|
||||
@@ -4232,7 +4233,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 28, 28, 0\n\t"
|
||||
"add 28, 28, 21\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_12_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_12_%=:\n\t"
|
||||
/* Round 13 */
|
||||
"rotlwi 0, 15, 26\n\t"
|
||||
"rotlwi %[len], 15, 21\n\t"
|
||||
@@ -4277,7 +4278,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 29, 29, 0\n\t"
|
||||
"add 29, 29, 22\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_13_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_13_%=:\n\t"
|
||||
/* Round 14 */
|
||||
"rotlwi 0, 14, 26\n\t"
|
||||
"rotlwi %[len], 14, 21\n\t"
|
||||
@@ -4322,7 +4323,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 30, 30, 0\n\t"
|
||||
"add 30, 30, 23\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_14_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_14_%=:\n\t"
|
||||
/* Round 15 */
|
||||
"rotlwi 0, 12, 26\n\t"
|
||||
"rotlwi %[len], 12, 21\n\t"
|
||||
@@ -4367,7 +4368,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 31, 31, 0\n\t"
|
||||
"add 31, 31, 24\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_15_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_15_%=:\n\t"
|
||||
"addi 6, 6, 0x40\n\t"
|
||||
"bdnz L_SHA256_transform_len_start_%=\n\t"
|
||||
"subi 6, 6, 0x100\n\t"
|
||||
@@ -4424,21 +4425,22 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
#else
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("4") = (const byte*)data_p;
|
||||
register word32 len asm ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c asm ("6") =
|
||||
register wc_Sha256* sha256 __asm__ ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("4") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c __asm__ ("6") =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_len_k_c =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -4461,7 +4463,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"lwz %[sha256], 4(1)\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz 14, 0(%[sha256])\n\t"
|
||||
"lwz 15, 4(%[sha256])\n\t"
|
||||
@@ -6868,7 +6870,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"lwz %[sha256], 4(1)\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz 14, 0(%[sha256])\n\t"
|
||||
"lwz 15, 4(%[sha256])\n\t"
|
||||
@@ -6890,7 +6892,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr %[sha256]\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"rotlwi %[sha256], 9, 26\n\t"
|
||||
"rotlwi %[len], 9, 21\n\t"
|
||||
@@ -6935,7 +6937,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 14, 14, %[sha256]\n\t"
|
||||
"add 14, 14, 23\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_0_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_0_%=:\n\t"
|
||||
/* Round 1 */
|
||||
"rotlwi %[sha256], 8, 26\n\t"
|
||||
"rotlwi %[len], 8, 21\n\t"
|
||||
@@ -6980,7 +6982,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 15, 15, %[sha256]\n\t"
|
||||
"add 15, 15, 24\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_1_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_1_%=:\n\t"
|
||||
/* Round 2 */
|
||||
"rotlwi %[sha256], 7, 26\n\t"
|
||||
"rotlwi %[len], 7, 21\n\t"
|
||||
@@ -7025,7 +7027,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 16, 16, %[sha256]\n\t"
|
||||
"add 16, 16, 25\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_2_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_2_%=:\n\t"
|
||||
/* Round 3 */
|
||||
"rotlwi %[sha256], %[data], 26\n\t"
|
||||
"rotlwi %[len], %[data], 21\n\t"
|
||||
@@ -7070,7 +7072,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 17, 17, %[sha256]\n\t"
|
||||
"add 17, 17, 26\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_3_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_3_%=:\n\t"
|
||||
/* Round 4 */
|
||||
"rotlwi %[sha256], 0, 26\n\t"
|
||||
"rotlwi %[len], 0, 21\n\t"
|
||||
@@ -7115,7 +7117,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 18, 18, %[sha256]\n\t"
|
||||
"add 18, 18, 27\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_4_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_4_%=:\n\t"
|
||||
/* Round 5 */
|
||||
"rotlwi %[sha256], 12, 26\n\t"
|
||||
"rotlwi %[len], 12, 21\n\t"
|
||||
@@ -7160,7 +7162,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 19, 19, %[sha256]\n\t"
|
||||
"add 19, 19, 28\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_5_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_5_%=:\n\t"
|
||||
/* Round 6 */
|
||||
"rotlwi %[sha256], 11, 26\n\t"
|
||||
"rotlwi %[len], 11, 21\n\t"
|
||||
@@ -7205,7 +7207,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 20, 20, %[sha256]\n\t"
|
||||
"add 20, 20, 29\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_6_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_6_%=:\n\t"
|
||||
/* Round 7 */
|
||||
"rotlwi %[sha256], 10, 26\n\t"
|
||||
"rotlwi %[len], 10, 21\n\t"
|
||||
@@ -7250,7 +7252,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 21, 21, %[sha256]\n\t"
|
||||
"add 21, 21, 14\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_7_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_7_%=:\n\t"
|
||||
/* Round 8 */
|
||||
"rotlwi %[sha256], 9, 26\n\t"
|
||||
"rotlwi %[len], 9, 21\n\t"
|
||||
@@ -7295,7 +7297,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 22, 22, %[sha256]\n\t"
|
||||
"add 22, 22, 15\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_8_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_8_%=:\n\t"
|
||||
/* Round 9 */
|
||||
"rotlwi %[sha256], 8, 26\n\t"
|
||||
"rotlwi %[len], 8, 21\n\t"
|
||||
@@ -7340,7 +7342,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 23, 23, %[sha256]\n\t"
|
||||
"add 23, 23, 16\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_9_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_9_%=:\n\t"
|
||||
/* Round 10 */
|
||||
"rotlwi %[sha256], 7, 26\n\t"
|
||||
"rotlwi %[len], 7, 21\n\t"
|
||||
@@ -7385,7 +7387,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 24, 24, %[sha256]\n\t"
|
||||
"add 24, 24, 17\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_10_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_10_%=:\n\t"
|
||||
/* Round 11 */
|
||||
"rotlwi %[sha256], %[data], 26\n\t"
|
||||
"rotlwi %[len], %[data], 21\n\t"
|
||||
@@ -7430,7 +7432,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 25, 25, %[sha256]\n\t"
|
||||
"add 25, 25, 18\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_11_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_11_%=:\n\t"
|
||||
/* Round 12 */
|
||||
"rotlwi %[sha256], 0, 26\n\t"
|
||||
"rotlwi %[len], 0, 21\n\t"
|
||||
@@ -7475,7 +7477,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 26, 26, %[sha256]\n\t"
|
||||
"add 26, 26, 19\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_12_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_12_%=:\n\t"
|
||||
/* Round 13 */
|
||||
"rotlwi %[sha256], 12, 26\n\t"
|
||||
"rotlwi %[len], 12, 21\n\t"
|
||||
@@ -7520,7 +7522,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 27, 27, %[sha256]\n\t"
|
||||
"add 27, 27, 20\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_13_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_13_%=:\n\t"
|
||||
/* Round 14 */
|
||||
"rotlwi %[sha256], 11, 26\n\t"
|
||||
"rotlwi %[len], 11, 21\n\t"
|
||||
@@ -7565,7 +7567,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 28, 28, %[sha256]\n\t"
|
||||
"add 28, 28, 21\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_14_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_14_%=:\n\t"
|
||||
/* Round 15 */
|
||||
"rotlwi %[sha256], 10, 26\n\t"
|
||||
"rotlwi %[len], 10, 21\n\t"
|
||||
@@ -7610,7 +7612,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add 29, 29, %[sha256]\n\t"
|
||||
"add 29, 29, 22\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_15_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_15_%=:\n\t"
|
||||
"addi 6, 6, 0x40\n\t"
|
||||
"bdnz L_SHA256_transform_len_start_%=\n\t"
|
||||
"subi 6, 6, 0x100\n\t"
|
||||
|
||||
@@ -29,8 +29,6 @@
|
||||
#include <wolfssl/wolfcrypt/error-crypt.h>
|
||||
|
||||
#ifdef WOLFSSL_PPC32_ASM
|
||||
#include <stdint.h>
|
||||
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
|
||||
#ifdef WOLFSSL_PPC32_ASM_INLINE
|
||||
|
||||
#ifdef __IAR_SYSTEMS_ICC__
|
||||
@@ -47,11 +45,12 @@
|
||||
#define __volatile__
|
||||
#define WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
#endif /* __ghs__ */
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
|
||||
#ifdef WOLFSSL_PPC32_ASM_SPE
|
||||
static const word32 L_SHA256_transform_spe_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_spe_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -73,21 +72,22 @@ static const word32 L_SHA256_transform_spe_len_k[] = {
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
#else
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("4") = (const byte*)data_p;
|
||||
register word32 len asm ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_spe_len_k_c asm ("6") =
|
||||
register wc_Sha256* sha256 __asm__ ("r3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("r4") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_spe_len_k_c __asm__ ("r6") =
|
||||
(word32*)&L_SHA256_transform_spe_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_spe_len_k_c =
|
||||
(word32*)&L_SHA256_transform_spe_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -104,7 +104,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"lwz r21, 28(%[sha256])\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_spe_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_spe_len_begin_%=:\n\t"
|
||||
/* Load W */
|
||||
"lwz r22, 0(%[data])\n\t"
|
||||
"lwz r0, 4(%[data])\n\t"
|
||||
@@ -134,7 +134,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr r0\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_spe_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_spe_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"mr r9, r22\n\t"
|
||||
"rotlwi r6, r18, 26\n\t"
|
||||
@@ -1178,7 +1178,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#ifndef WOLFSSL_PPC32_ASM_SPE
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
|
||||
static const word32 L_SHA256_transform_len_k[] = {
|
||||
XALIGNED(8) static const word32 L_SHA256_transform_len_k[] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
@@ -1201,21 +1201,22 @@ static const word32 L_SHA256_transform_len_k[] = {
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
#else
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("4") = (const byte*)data_p;
|
||||
register word32 len asm ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c asm ("6") =
|
||||
register wc_Sha256* sha256 __asm__ ("r3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("r4") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c __asm__ ("r6") =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_len_k_c =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -1234,7 +1235,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr %[len]\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz r16, 0(%[data])\n\t"
|
||||
"lwz r17, 4(%[data])\n\t"
|
||||
@@ -3625,7 +3626,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"stw %[len], 0(r1)\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz r16, 0(%[data])\n\t"
|
||||
"lwz r17, 4(%[data])\n\t"
|
||||
@@ -3647,7 +3648,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr r0\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"rotlwi r0, r11, 26\n\t"
|
||||
"rotlwi %[len], r11, 21\n\t"
|
||||
@@ -3692,7 +3693,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r16, r16, r0\n\t"
|
||||
"add r16, r16, r25\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_0_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_0_%=:\n\t"
|
||||
/* Round 1 */
|
||||
"rotlwi r0, r10, 26\n\t"
|
||||
"rotlwi %[len], r10, 21\n\t"
|
||||
@@ -3737,7 +3738,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r17, r17, r0\n\t"
|
||||
"add r17, r17, r26\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_1_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_1_%=:\n\t"
|
||||
/* Round 2 */
|
||||
"rotlwi r0, r9, 26\n\t"
|
||||
"rotlwi %[len], r9, 21\n\t"
|
||||
@@ -3782,7 +3783,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r18, r18, r0\n\t"
|
||||
"add r18, r18, r27\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_2_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_2_%=:\n\t"
|
||||
/* Round 3 */
|
||||
"rotlwi r0, r8, 26\n\t"
|
||||
"rotlwi %[len], r8, 21\n\t"
|
||||
@@ -3827,7 +3828,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r19, r19, r0\n\t"
|
||||
"add r19, r19, r28\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_3_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_3_%=:\n\t"
|
||||
/* Round 4 */
|
||||
"rotlwi r0, r7, 26\n\t"
|
||||
"rotlwi %[len], r7, 21\n\t"
|
||||
@@ -3872,7 +3873,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r20, r20, r0\n\t"
|
||||
"add r20, r20, r29\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_4_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_4_%=:\n\t"
|
||||
/* Round 5 */
|
||||
"rotlwi r0, r15, 26\n\t"
|
||||
"rotlwi %[len], r15, 21\n\t"
|
||||
@@ -3917,7 +3918,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r21, r21, r0\n\t"
|
||||
"add r21, r21, r30\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_5_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_5_%=:\n\t"
|
||||
/* Round 6 */
|
||||
"rotlwi r0, r14, 26\n\t"
|
||||
"rotlwi %[len], r14, 21\n\t"
|
||||
@@ -3962,7 +3963,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r22, r22, r0\n\t"
|
||||
"add r22, r22, r31\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_6_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_6_%=:\n\t"
|
||||
/* Round 7 */
|
||||
"rotlwi r0, r12, 26\n\t"
|
||||
"rotlwi %[len], r12, 21\n\t"
|
||||
@@ -4007,7 +4008,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r23, r23, r0\n\t"
|
||||
"add r23, r23, r16\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_7_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_7_%=:\n\t"
|
||||
/* Round 8 */
|
||||
"rotlwi r0, r11, 26\n\t"
|
||||
"rotlwi %[len], r11, 21\n\t"
|
||||
@@ -4052,7 +4053,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r24, r24, r0\n\t"
|
||||
"add r24, r24, r17\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_8_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_8_%=:\n\t"
|
||||
/* Round 9 */
|
||||
"rotlwi r0, r10, 26\n\t"
|
||||
"rotlwi %[len], r10, 21\n\t"
|
||||
@@ -4097,7 +4098,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r25, r25, r0\n\t"
|
||||
"add r25, r25, r18\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_9_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_9_%=:\n\t"
|
||||
/* Round 10 */
|
||||
"rotlwi r0, r9, 26\n\t"
|
||||
"rotlwi %[len], r9, 21\n\t"
|
||||
@@ -4142,7 +4143,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r26, r26, r0\n\t"
|
||||
"add r26, r26, r19\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_10_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_10_%=:\n\t"
|
||||
/* Round 11 */
|
||||
"rotlwi r0, r8, 26\n\t"
|
||||
"rotlwi %[len], r8, 21\n\t"
|
||||
@@ -4187,7 +4188,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r27, r27, r0\n\t"
|
||||
"add r27, r27, r20\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_11_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_11_%=:\n\t"
|
||||
/* Round 12 */
|
||||
"rotlwi r0, r7, 26\n\t"
|
||||
"rotlwi %[len], r7, 21\n\t"
|
||||
@@ -4232,7 +4233,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r28, r28, r0\n\t"
|
||||
"add r28, r28, r21\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_12_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_12_%=:\n\t"
|
||||
/* Round 13 */
|
||||
"rotlwi r0, r15, 26\n\t"
|
||||
"rotlwi %[len], r15, 21\n\t"
|
||||
@@ -4277,7 +4278,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r29, r29, r0\n\t"
|
||||
"add r29, r29, r22\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_13_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_13_%=:\n\t"
|
||||
/* Round 14 */
|
||||
"rotlwi r0, r14, 26\n\t"
|
||||
"rotlwi %[len], r14, 21\n\t"
|
||||
@@ -4322,7 +4323,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r30, r30, r0\n\t"
|
||||
"add r30, r30, r23\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_14_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_14_%=:\n\t"
|
||||
/* Round 15 */
|
||||
"rotlwi r0, r12, 26\n\t"
|
||||
"rotlwi %[len], r12, 21\n\t"
|
||||
@@ -4367,7 +4368,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r31, r31, r0\n\t"
|
||||
"add r31, r31, r24\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_15_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_15_%=:\n\t"
|
||||
"addi r6, r6, 0x40\n\t"
|
||||
"bdnz L_SHA256_transform_len_start_%=\n\t"
|
||||
"subi r6, r6, 0x100\n\t"
|
||||
@@ -4424,21 +4425,22 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p,
|
||||
word32 len_p);
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p)
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256_p,
|
||||
const byte* data_p, word32 len_p)
|
||||
#else
|
||||
void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
#endif /* WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256,
|
||||
const byte* data, word32 len)
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
{
|
||||
#ifndef WOLFSSL_NO_VAR_ASSIGN_REG
|
||||
register wc_Sha256* sha256 asm ("3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data asm ("4") = (const byte*)data_p;
|
||||
register word32 len asm ("5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c asm ("6") =
|
||||
register wc_Sha256* sha256 __asm__ ("r3") = (wc_Sha256*)sha256_p;
|
||||
register const byte* data __asm__ ("r4") = (const byte*)data_p;
|
||||
register word32 len __asm__ ("r5") = (word32)len_p;
|
||||
register word32* L_SHA256_transform_len_k_c __asm__ ("r6") =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
#else
|
||||
register word32* L_SHA256_transform_len_k_c =
|
||||
(word32*)&L_SHA256_transform_len_k;
|
||||
|
||||
#endif /* !WOLFSSL_NO_VAR_ASSIGN_REG */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
@@ -4461,7 +4463,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"lwz %[sha256], 4(r1)\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz r14, 0(%[sha256])\n\t"
|
||||
"lwz r15, 4(%[sha256])\n\t"
|
||||
@@ -6868,7 +6870,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"lwz %[sha256], 4(r1)\n\t"
|
||||
/* Start of loop processing a block */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_begin_%=: \n\t"
|
||||
"L_SHA256_transform_len_begin_%=:\n\t"
|
||||
/* Load W - 64 bytes */
|
||||
"lwz r14, 0(%[sha256])\n\t"
|
||||
"lwz r15, 4(%[sha256])\n\t"
|
||||
@@ -6890,7 +6892,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"mtctr %[sha256]\n\t"
|
||||
/* Start of 16 rounds */
|
||||
"\n"
|
||||
"L_SHA256_transform_len_start_%=: \n\t"
|
||||
"L_SHA256_transform_len_start_%=:\n\t"
|
||||
/* Round 0 */
|
||||
"rotlwi %[sha256], r9, 26\n\t"
|
||||
"rotlwi %[len], r9, 21\n\t"
|
||||
@@ -6935,7 +6937,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r14, r14, %[sha256]\n\t"
|
||||
"add r14, r14, r23\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_0_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_0_%=:\n\t"
|
||||
/* Round 1 */
|
||||
"rotlwi %[sha256], r8, 26\n\t"
|
||||
"rotlwi %[len], r8, 21\n\t"
|
||||
@@ -6980,7 +6982,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r15, r15, %[sha256]\n\t"
|
||||
"add r15, r15, r24\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_1_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_1_%=:\n\t"
|
||||
/* Round 2 */
|
||||
"rotlwi %[sha256], r7, 26\n\t"
|
||||
"rotlwi %[len], r7, 21\n\t"
|
||||
@@ -7025,7 +7027,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r16, r16, %[sha256]\n\t"
|
||||
"add r16, r16, r25\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_2_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_2_%=:\n\t"
|
||||
/* Round 3 */
|
||||
"rotlwi %[sha256], %[data], 26\n\t"
|
||||
"rotlwi %[len], %[data], 21\n\t"
|
||||
@@ -7070,7 +7072,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r17, r17, %[sha256]\n\t"
|
||||
"add r17, r17, r26\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_3_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_3_%=:\n\t"
|
||||
/* Round 4 */
|
||||
"rotlwi %[sha256], r0, 26\n\t"
|
||||
"rotlwi %[len], r0, 21\n\t"
|
||||
@@ -7115,7 +7117,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r18, r18, %[sha256]\n\t"
|
||||
"add r18, r18, r27\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_4_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_4_%=:\n\t"
|
||||
/* Round 5 */
|
||||
"rotlwi %[sha256], r12, 26\n\t"
|
||||
"rotlwi %[len], r12, 21\n\t"
|
||||
@@ -7160,7 +7162,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r19, r19, %[sha256]\n\t"
|
||||
"add r19, r19, r28\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_5_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_5_%=:\n\t"
|
||||
/* Round 6 */
|
||||
"rotlwi %[sha256], r11, 26\n\t"
|
||||
"rotlwi %[len], r11, 21\n\t"
|
||||
@@ -7205,7 +7207,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r20, r20, %[sha256]\n\t"
|
||||
"add r20, r20, r29\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_6_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_6_%=:\n\t"
|
||||
/* Round 7 */
|
||||
"rotlwi %[sha256], r10, 26\n\t"
|
||||
"rotlwi %[len], r10, 21\n\t"
|
||||
@@ -7250,7 +7252,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r21, r21, %[sha256]\n\t"
|
||||
"add r21, r21, r14\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_7_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_7_%=:\n\t"
|
||||
/* Round 8 */
|
||||
"rotlwi %[sha256], r9, 26\n\t"
|
||||
"rotlwi %[len], r9, 21\n\t"
|
||||
@@ -7295,7 +7297,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r22, r22, %[sha256]\n\t"
|
||||
"add r22, r22, r15\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_8_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_8_%=:\n\t"
|
||||
/* Round 9 */
|
||||
"rotlwi %[sha256], r8, 26\n\t"
|
||||
"rotlwi %[len], r8, 21\n\t"
|
||||
@@ -7340,7 +7342,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r23, r23, %[sha256]\n\t"
|
||||
"add r23, r23, r16\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_9_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_9_%=:\n\t"
|
||||
/* Round 10 */
|
||||
"rotlwi %[sha256], r7, 26\n\t"
|
||||
"rotlwi %[len], r7, 21\n\t"
|
||||
@@ -7385,7 +7387,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r24, r24, %[sha256]\n\t"
|
||||
"add r24, r24, r17\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_10_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_10_%=:\n\t"
|
||||
/* Round 11 */
|
||||
"rotlwi %[sha256], %[data], 26\n\t"
|
||||
"rotlwi %[len], %[data], 21\n\t"
|
||||
@@ -7430,7 +7432,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r25, r25, %[sha256]\n\t"
|
||||
"add r25, r25, r18\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_11_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_11_%=:\n\t"
|
||||
/* Round 12 */
|
||||
"rotlwi %[sha256], r0, 26\n\t"
|
||||
"rotlwi %[len], r0, 21\n\t"
|
||||
@@ -7475,7 +7477,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r26, r26, %[sha256]\n\t"
|
||||
"add r26, r26, r19\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_12_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_12_%=:\n\t"
|
||||
/* Round 13 */
|
||||
"rotlwi %[sha256], r12, 26\n\t"
|
||||
"rotlwi %[len], r12, 21\n\t"
|
||||
@@ -7520,7 +7522,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r27, r27, %[sha256]\n\t"
|
||||
"add r27, r27, r20\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_13_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_13_%=:\n\t"
|
||||
/* Round 14 */
|
||||
"rotlwi %[sha256], r11, 26\n\t"
|
||||
"rotlwi %[len], r11, 21\n\t"
|
||||
@@ -7565,7 +7567,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r28, r28, %[sha256]\n\t"
|
||||
"add r28, r28, r21\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_14_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_14_%=:\n\t"
|
||||
/* Round 15 */
|
||||
"rotlwi %[sha256], r10, 26\n\t"
|
||||
"rotlwi %[len], r10, 21\n\t"
|
||||
@@ -7610,7 +7612,7 @@ void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data, word32 len)
|
||||
"add r29, r29, %[sha256]\n\t"
|
||||
"add r29, r29, r22\n\t"
|
||||
"\n"
|
||||
"L_SHA256_transform_len_after_blk_15_%=: \n\t"
|
||||
"L_SHA256_transform_len_after_blk_15_%=:\n\t"
|
||||
"addi r6, r6, 0x40\n\t"
|
||||
"bdnz L_SHA256_transform_len_start_%=\n\t"
|
||||
"subi r6, r6, 0x100\n\t"
|
||||
|
||||
+50
-20
@@ -53,6 +53,11 @@
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sse2_sha256_sha_k:
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
@@ -81,7 +86,7 @@ L_sse2_sha256_sha_k:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sse2_sha256_shuf_mask:
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_SSE2_Sha
|
||||
@@ -487,6 +492,11 @@ L_sha256_sha_len_sse2_start:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha256_k:
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
@@ -515,7 +525,7 @@ L_avx1_sha256_k:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha256_shuf_00BA:
|
||||
.quad 0xb0a090803020100, 0xffffffffffffffff
|
||||
.quad 0x0b0a090803020100,0xffffffffffffffff
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -527,7 +537,7 @@ L_avx1_sha256_shuf_00BA:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha256_shuf_DC00:
|
||||
.quad 0xffffffffffffffff, 0xb0a090803020100
|
||||
.quad 0xffffffffffffffff,0x0b0a090803020100
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -539,7 +549,7 @@ L_avx1_sha256_shuf_DC00:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha256_flip_mask:
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_AVX1
|
||||
@@ -5342,6 +5352,11 @@ L_sha256_len_avx1_start:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_rorx_sha256_k:
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
@@ -5370,7 +5385,7 @@ L_avx1_rorx_sha256_k:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_rorx_sha256_shuf_00BA:
|
||||
.quad 0xb0a090803020100, 0xffffffffffffffff
|
||||
.quad 0x0b0a090803020100,0xffffffffffffffff
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -5382,7 +5397,7 @@ L_avx1_rorx_sha256_shuf_00BA:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_rorx_sha256_shuf_DC00:
|
||||
.quad 0xffffffffffffffff, 0xb0a090803020100
|
||||
.quad 0xffffffffffffffff,0x0b0a090803020100
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -5394,7 +5409,7 @@ L_avx1_rorx_sha256_shuf_DC00:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_rorx_sha256_flip_mask:
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_AVX1_RORX
|
||||
@@ -10114,6 +10129,11 @@ L_sha256_len_avx1_len_rorx_start:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha256_sha_k:
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
|
||||
@@ -10142,7 +10162,7 @@ L_avx1_sha256_sha_k:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha256_shuf_mask:
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_AVX1_Sha
|
||||
@@ -10493,6 +10513,11 @@ L_sha256_sha_len_avx1_start:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha256_k:
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
@@ -10537,8 +10562,8 @@ L_avx2_sha256_k:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha256_shuf_00BA:
|
||||
.quad 0xb0a090803020100, 0xffffffffffffffff
|
||||
.quad 0xb0a090803020100, 0xffffffffffffffff
|
||||
.quad 0x0b0a090803020100,0xffffffffffffffff
|
||||
.quad 0x0b0a090803020100,0xffffffffffffffff
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -10550,8 +10575,8 @@ L_avx2_sha256_shuf_00BA:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha256_shuf_DC00:
|
||||
.quad 0xffffffffffffffff, 0xb0a090803020100
|
||||
.quad 0xffffffffffffffff, 0xb0a090803020100
|
||||
.quad 0xffffffffffffffff,0x0b0a090803020100
|
||||
.quad 0xffffffffffffffff,0x0b0a090803020100
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -10563,8 +10588,8 @@ L_avx2_sha256_shuf_DC00:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha256_flip_mask:
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_AVX2
|
||||
@@ -17092,6 +17117,11 @@ L_sha256_len_avx2_done:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha256_k:
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
|
||||
@@ -17136,8 +17166,8 @@ L_avx2_rorx_sha256_k:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha256_flip_mask:
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x405060700010203, 0xc0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
.quad 0x0405060700010203,0x0c0d0e0f08090a0b
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -17149,8 +17179,8 @@ L_avx2_rorx_sha256_flip_mask:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha256_shuf_00BA:
|
||||
.quad 0xb0a090803020100, 0xffffffffffffffff
|
||||
.quad 0xb0a090803020100, 0xffffffffffffffff
|
||||
.quad 0x0b0a090803020100,0xffffffffffffffff
|
||||
.quad 0x0b0a090803020100,0xffffffffffffffff
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
@@ -17162,8 +17192,8 @@ L_avx2_rorx_sha256_shuf_00BA:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha256_shuf_DC00:
|
||||
.quad 0xffffffffffffffff, 0xb0a090803020100
|
||||
.quad 0xffffffffffffffff, 0xb0a090803020100
|
||||
.quad 0xffffffffffffffff,0x0b0a090803020100
|
||||
.quad 0xffffffffffffffff,0x0b0a090803020100
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha256_AVX2_RORX
|
||||
|
||||
+18
-18
@@ -53,9 +53,9 @@
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_avx2_r:
|
||||
.quad 0x0000000000000001,0x0000000000000001
|
||||
@@ -112,9 +112,9 @@ L_sha3_avx2_r:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_x4_avx2_r:
|
||||
.quad 0x0000000000000001,0x0000000000000001
|
||||
@@ -9314,9 +9314,9 @@ L_sha3_block_n_bmi2_rounds:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_block_avx2_rotl:
|
||||
.quad 0x0000000000000001,0x000000000000003e
|
||||
@@ -9337,9 +9337,9 @@ L_sha3_block_avx2_rotl:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_block_avx2_rotr:
|
||||
.quad 0x000000000000003f,0x0000000000000002
|
||||
@@ -9533,9 +9533,9 @@ L_sha3_block_avx2_start:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_block_n_avx2_rotl:
|
||||
.quad 0x0000000000000001,0x000000000000003e
|
||||
@@ -9556,9 +9556,9 @@ L_sha3_block_n_avx2_rotl:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_block_n_avx2_rotr:
|
||||
.quad 0x000000000000003f,0x0000000000000002
|
||||
@@ -15298,8 +15298,8 @@ _sha3_blocksx4_avx2:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_128_blockx4_seed_avx2_end_mark:
|
||||
.quad 0x8000000000000000, 0x8000000000000000
|
||||
.quad 0x8000000000000000, 0x8000000000000000
|
||||
.quad 0x8000000000000000,0x8000000000000000
|
||||
.quad 0x8000000000000000,0x8000000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl sha3_128_blocksx4_seed_avx2
|
||||
@@ -20677,8 +20677,8 @@ _sha3_128_blocksx4_seed_avx2:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_256_blockx4_seed_avx2_end_mark:
|
||||
.quad 0x8000000000000000, 0x8000000000000000
|
||||
.quad 0x8000000000000000, 0x8000000000000000
|
||||
.quad 0x8000000000000000,0x8000000000000000
|
||||
.quad 0x8000000000000000,0x8000000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl sha3_256_blocksx4_seed_avx2
|
||||
@@ -26057,8 +26057,8 @@ _sha3_256_blocksx4_seed_avx2:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sha3_256_blockx4_seed_64_avx2_end_mark:
|
||||
.quad 0x8000000000000000, 0x8000000000000000
|
||||
.quad 0x8000000000000000, 0x8000000000000000
|
||||
.quad 0x8000000000000000,0x8000000000000000
|
||||
.quad 0x8000000000000000,0x8000000000000000
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl sha3_256_blocksx4_seed_64_avx2
|
||||
|
||||
+23
-23
@@ -54,9 +54,9 @@
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha512_k:
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
@@ -110,7 +110,7 @@ L_avx1_sha512_k:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_sha512_flip_mask:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha512_AVX1
|
||||
@@ -2682,9 +2682,9 @@ L_sha512_len_avx1_start:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_rorx_sha512_k:
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
@@ -2738,7 +2738,7 @@ L_avx1_rorx_sha512_k:
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_avx1_rorx_sha512_flip_mask:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha512_AVX1_RORX
|
||||
@@ -5186,9 +5186,9 @@ L_sha512_len_avx1_rorx_start:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha512_k:
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
@@ -5237,9 +5237,9 @@ L_avx2_sha512_k:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha512_k_2:
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
@@ -5345,8 +5345,8 @@ L_avx2_sha512_k_2_end:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_sha512_flip_mask:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha512_AVX2
|
||||
@@ -6430,11 +6430,11 @@ _Transform_Sha512_AVX2_Len:
|
||||
movq %rsi, %rbp
|
||||
testb $0x80, %bpl
|
||||
je L_sha512_len_avx2_block
|
||||
movq 224(%rdi), %rcx
|
||||
vmovdqu (%rcx), %ymm0
|
||||
vmovdqu 32(%rcx), %ymm1
|
||||
vmovdqu 64(%rcx), %ymm2
|
||||
vmovdqu 96(%rcx), %ymm3
|
||||
movq 224(%rdi), %rbx
|
||||
vmovdqu (%rbx), %ymm0
|
||||
vmovdqu 32(%rbx), %ymm1
|
||||
vmovdqu 64(%rbx), %ymm2
|
||||
vmovdqu 96(%rbx), %ymm3
|
||||
vmovups %ymm0, 64(%rdi)
|
||||
vmovups %ymm1, 96(%rdi)
|
||||
vmovups %ymm2, 128(%rdi)
|
||||
@@ -8043,9 +8043,9 @@ L_sha512_len_avx2_done:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha512_k:
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
@@ -8094,9 +8094,9 @@ L_avx2_rorx_sha512_k:
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
.align 32
|
||||
#else
|
||||
.p2align 4
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha512_k_2:
|
||||
.quad 0x428a2f98d728ae22,0x7137449123ef65cd
|
||||
@@ -8202,8 +8202,8 @@ L_avx2_rorx_sha512_k_2_end:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_avx2_rorx_sha512_flip_mask:
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x1020304050607, 0x8090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
.quad 0x0001020304050607,0x08090a0b0c0d0e0f
|
||||
#ifndef __APPLE__
|
||||
.text
|
||||
.globl Transform_Sha512_AVX2_RORX
|
||||
|
||||
+1325
-1325
File diff suppressed because it is too large
Load Diff
+816
-529
File diff suppressed because it is too large
Load Diff
+1363
-158
File diff suppressed because it is too large
Load Diff
+179
-144
@@ -56771,10 +56771,10 @@ _sp_256_mont_div2_4:
|
||||
adcq %r10, %r8
|
||||
movq $0x00, %r11
|
||||
adcq $0x00, %r11
|
||||
shrdq $0x01, %rax, %rdx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r11, %r8
|
||||
shrdq $1, %rax, %rdx
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r11, %r8
|
||||
movq %rdx, (%rdi)
|
||||
movq %rax, 8(%rdi)
|
||||
movq %rcx, 16(%rdi)
|
||||
@@ -57615,10 +57615,10 @@ _sp_256_mont_div2_avx2_4:
|
||||
adcq %r10, %r8
|
||||
movq $0x00, %r11
|
||||
adcq $0x00, %r11
|
||||
shrdq $0x01, %rax, %rdx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r11, %r8
|
||||
shrdq $1, %rax, %rdx
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r11, %r8
|
||||
movq %rdx, (%rdi)
|
||||
movq %rax, 8(%rdi)
|
||||
movq %rcx, 16(%rdi)
|
||||
@@ -58754,10 +58754,10 @@ _sp_256_mod_inv_4:
|
||||
testb $0x01, %r11b
|
||||
jnz L_256_mod_inv_4_v_even_end
|
||||
L_256_mod_inv_4_v_even_start:
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
movb $0x01, (%rsp,%r15,1)
|
||||
incq %r15
|
||||
testb $0x01, %r11b
|
||||
@@ -58782,17 +58782,17 @@ L_256_mod_inv_4_uv_u:
|
||||
sbbq %r12, %r8
|
||||
sbbq %r13, %r9
|
||||
sbbq %r14, %r10
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrq $0x01, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrq $1, %r10
|
||||
testb $0x01, %cl
|
||||
jnz L_256_mod_inv_4_usubv_even_end
|
||||
L_256_mod_inv_4_usubv_even_start:
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrq $0x01, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrq $1, %r10
|
||||
movb $0x00, (%rsp,%r15,1)
|
||||
incq %r15
|
||||
testb $0x01, %cl
|
||||
@@ -58814,17 +58814,17 @@ L_256_mod_inv_4_uv_v:
|
||||
sbbq %r8, %r12
|
||||
sbbq %r9, %r13
|
||||
sbbq %r10, %r14
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
testb $0x01, %r11b
|
||||
jnz L_256_mod_inv_4_vsubu_even_end
|
||||
L_256_mod_inv_4_vsubu_even_start:
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrq $0x01, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrq $1, %r14
|
||||
movb $0x01, (%rsp,%r15,1)
|
||||
incq %r15
|
||||
testb $0x01, %r11b
|
||||
@@ -58877,10 +58877,10 @@ L_256_mod_inv_4_op_div2_b:
|
||||
adcq 24(%rdx), %r10
|
||||
adcq $0x00, %rsi
|
||||
L_256_mod_inv_4_op_div2_b_mod:
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $0x01, %rsi, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrdq $1, %rsi, %r10
|
||||
movb (%rsp,%r15,1), %sil
|
||||
incq %r15
|
||||
cmpb $0x01, %sil
|
||||
@@ -58910,10 +58910,10 @@ L_256_mod_inv_4_op_div2_d:
|
||||
adcq 24(%rdx), %r14
|
||||
adcq $0x00, %rsi
|
||||
L_256_mod_inv_4_op_div2_d_mod:
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrdq $0x01, %r14, %r13
|
||||
shrdq $0x01, %rsi, %r14
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrdq $1, %r14, %r13
|
||||
shrdq $1, %rsi, %r14
|
||||
movb (%rsp,%r15,1), %sil
|
||||
incq %r15
|
||||
cmpb $0x01, %sil
|
||||
@@ -58951,6 +58951,11 @@ L_256_mod_inv_4_store_end:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_order:
|
||||
.long 0x00632551,0x01e84f3b,0x03bce6fa,0x03ffffff
|
||||
.long 0x03ff0000,0x00000000,0x00000000,0x00000000
|
||||
@@ -58967,13 +58972,18 @@ L_sp256_mod_inv_avx2_4_order:
|
||||
.p2align 5
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_one:
|
||||
.quad 0x1, 0x0
|
||||
.quad 0x0, 0x0
|
||||
.quad 0x0000000000000001,0x0000000000000000
|
||||
.quad 0x0000000000000000,0x0000000000000000
|
||||
#ifndef __APPLE__
|
||||
.data
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_all_one:
|
||||
.long 0x00000001,0x00000001,0x00000001,0x00000001
|
||||
.long 0x00000001,0x00000001,0x00000001,0x00000001
|
||||
@@ -58982,6 +58992,11 @@ L_sp256_mod_inv_avx2_4_all_one:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_mask01111:
|
||||
.long 0x00000000,0x00000001,0x00000001,0x00000001
|
||||
.long 0x00000001,0x00000000,0x00000000,0x00000000
|
||||
@@ -58990,6 +59005,11 @@ L_sp256_mod_inv_avx2_4_mask01111:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_down_one_dword:
|
||||
.long 0x00000001,0x00000002,0x00000003,0x00000004
|
||||
.long 0x00000005,0x00000006,0x00000007,0x00000007
|
||||
@@ -58998,6 +59018,11 @@ L_sp256_mod_inv_avx2_4_down_one_dword:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_neg:
|
||||
.long 0x00000000,0x00000000,0x00000000,0x00000000
|
||||
.long 0x80000000,0x00000000,0x00000000,0x00000000
|
||||
@@ -59006,6 +59031,11 @@ L_sp256_mod_inv_avx2_4_neg:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_up_one_dword:
|
||||
.long 0x00000007,0x00000000,0x00000001,0x00000002
|
||||
.long 0x00000003,0x00000007,0x00000007,0x00000007
|
||||
@@ -59014,6 +59044,11 @@ L_sp256_mod_inv_avx2_4_up_one_dword:
|
||||
#else
|
||||
.section __DATA,__data
|
||||
#endif /* __APPLE__ */
|
||||
#ifndef __APPLE__
|
||||
.align 16
|
||||
#else
|
||||
.p2align 4
|
||||
#endif /* __APPLE__ */
|
||||
L_sp256_mod_inv_avx2_4_mask26:
|
||||
.long 0x03ffffff,0x03ffffff,0x03ffffff,0x03ffffff
|
||||
.long 0x03ffffff,0x00000000,0x00000000,0x00000000
|
||||
@@ -59073,10 +59108,10 @@ _sp_256_mod_inv_avx2_4:
|
||||
testb $0x01, %r10b
|
||||
jnz L_256_mod_inv_avx2_4_v_even_end
|
||||
L_256_mod_inv_avx2_4_v_even_start:
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrq $0x01, %r13
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrq $1, %r13
|
||||
vptest %ymm8, %ymm2
|
||||
jz L_256_mod_inv_avx2_4_v_even_shr1
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
@@ -59119,10 +59154,10 @@ L_256_mod_inv_avx2_4_uv_u:
|
||||
vpaddd %ymm7, %ymm1, %ymm1
|
||||
L_256_mod_inv_avx2_4_usubv_done_neg:
|
||||
L_256_mod_inv_avx2_4_usubv_shr1:
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrq $0x01, %r9
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrq $1, %r9
|
||||
vptest %ymm8, %ymm0
|
||||
jz L_256_mod_inv_avx2_4_usubv_sub_shr1
|
||||
vpaddd %ymm6, %ymm0, %ymm0
|
||||
@@ -59172,10 +59207,10 @@ L_256_mod_inv_avx2_4_uv_v:
|
||||
vpaddd %ymm7, %ymm3, %ymm3
|
||||
L_256_mod_inv_avx2_4_vsubu_done_neg:
|
||||
L_256_mod_inv_avx2_4_vsubu_shr1:
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrq $0x01, %r13
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrq $1, %r13
|
||||
vptest %ymm8, %ymm2
|
||||
jz L_256_mod_inv_avx2_4_vsubu_sub_shr1
|
||||
vpaddd %ymm6, %ymm2, %ymm2
|
||||
@@ -59268,7 +59303,7 @@ L_256_mod_inv_avx2_4_store_done:
|
||||
adcq %r13, %r12
|
||||
movslq %r14d, %r14
|
||||
adcq %r15, %r14
|
||||
jge L_256_mod_inv_avx2_4_3_no_add_order
|
||||
jge L_256_mod_inv_avx2_4_no_add_order
|
||||
movq $0x9cac2fc632551, %rcx
|
||||
movq $0xada7179e84f3b, %r9
|
||||
movq $0xfffffffbce6fa, %r11
|
||||
@@ -59296,7 +59331,7 @@ L_256_mod_inv_avx2_4_store_done:
|
||||
andq %rsi, %r12
|
||||
sarq $52, %r13
|
||||
addq %r13, %r14
|
||||
L_256_mod_inv_avx2_4_3_no_add_order:
|
||||
L_256_mod_inv_avx2_4_no_add_order:
|
||||
movq %r8, %rcx
|
||||
movq %r10, %r9
|
||||
movq %r12, %r11
|
||||
@@ -61148,21 +61183,21 @@ _sp_384_mont_div2_6:
|
||||
adcq $0x00, %r10
|
||||
movq (%rsp), %rax
|
||||
movq 8(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, (%rdi)
|
||||
movq 16(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 8(%rdi)
|
||||
movq 24(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 16(%rdi)
|
||||
movq 32(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 24(%rdi)
|
||||
movq 40(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 32(%rdi)
|
||||
shrdq $0x01, %r10, %rcx
|
||||
shrdq $1, %r10, %rcx
|
||||
movq %rcx, 40(%rdi)
|
||||
addq $48, %rsp
|
||||
repz retq
|
||||
@@ -61783,21 +61818,21 @@ _sp_384_mont_div2_avx2_6:
|
||||
adcq $0x00, %r10
|
||||
movq (%rdi), %r8
|
||||
movq 8(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, (%rdi)
|
||||
movq 16(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 8(%rdi)
|
||||
movq 24(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 16(%rdi)
|
||||
movq 32(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 24(%rdi)
|
||||
movq 40(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 32(%rdi)
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $1, %r10, %r9
|
||||
movq %r9, 40(%rdi)
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
@@ -62565,12 +62600,12 @@ _sp_384_rshift1_6:
|
||||
movq 24(%rsi), %r8
|
||||
movq 32(%rsi), %r9
|
||||
movq 40(%rsi), %r10
|
||||
shrdq $0x01, %rax, %rdx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrq $0x01, %r10
|
||||
shrdq $1, %rax, %rdx
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrq $1, %r10
|
||||
movq %rdx, (%rdi)
|
||||
movq %rax, 8(%rdi)
|
||||
movq %rcx, 16(%rdi)
|
||||
@@ -62629,12 +62664,12 @@ _sp_384_div2_mod_6:
|
||||
movq $0x00, %rdx
|
||||
adcq $0x00, %rdx
|
||||
L_384_mod_inv_6_div2_mod_no_add:
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %rdx, %r11
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %rdx, %r11
|
||||
movq %rax, (%rdi)
|
||||
movq %rcx, 8(%rdi)
|
||||
movq %r8, 16(%rdi)
|
||||
@@ -66688,15 +66723,15 @@ _sp_521_mont_div2_9:
|
||||
sbbq $0x00, %r13
|
||||
shlq $9, %r14
|
||||
addq %r14, %r13
|
||||
shrdq $0x01, %rax, %rdx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrq $0x01, %r13
|
||||
shrdq $1, %rax, %rdx
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrq $1, %r13
|
||||
movq %rdx, (%rdi)
|
||||
movq %rax, 8(%rdi)
|
||||
movq %rcx, 16(%rdi)
|
||||
@@ -68454,15 +68489,15 @@ _sp_521_mont_div2_avx2_9:
|
||||
sbbq $0x00, %r13
|
||||
shlq $9, %r14
|
||||
addq %r14, %r13
|
||||
shrdq $0x01, %rax, %rdx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $0x01, %r11, %r10
|
||||
shrdq $0x01, %r12, %r11
|
||||
shrdq $0x01, %r13, %r12
|
||||
shrq $0x01, %r13
|
||||
shrdq $1, %rax, %rdx
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
shrdq $1, %r11, %r10
|
||||
shrdq $1, %r12, %r11
|
||||
shrdq $1, %r13, %r12
|
||||
shrq $1, %r13
|
||||
movq %rdx, (%rdi)
|
||||
movq %rax, 8(%rdi)
|
||||
movq %rcx, 16(%rdi)
|
||||
@@ -69634,10 +69669,10 @@ _sp_521_rshift1_9:
|
||||
movq 16(%rsi), %rcx
|
||||
movq 24(%rsi), %r8
|
||||
movq 32(%rsi), %r10
|
||||
shrdq $0x01, %rax, %rdx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r10, %r8
|
||||
shrdq $1, %rax, %rdx
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r10, %r8
|
||||
movq %rdx, (%rdi)
|
||||
movq %rax, 8(%rdi)
|
||||
movq %rcx, 16(%rdi)
|
||||
@@ -69646,15 +69681,15 @@ _sp_521_rshift1_9:
|
||||
movq 48(%rsi), %rcx
|
||||
movq 56(%rsi), %r8
|
||||
movq 64(%rsi), %rdx
|
||||
shrdq $0x01, %rax, %r10
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %rdx, %r8
|
||||
shrdq $1, %rax, %r10
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %rdx, %r8
|
||||
movq %r10, 32(%rdi)
|
||||
movq %rax, 40(%rdi)
|
||||
movq %rcx, 48(%rdi)
|
||||
movq %r8, 56(%rdi)
|
||||
shrq $0x01, %rdx
|
||||
shrq $1, %rdx
|
||||
movq %rdx, 64(%rdi)
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
@@ -69723,10 +69758,10 @@ L_521_mod_inv_9_div2_mod_no_add:
|
||||
movq 16(%rsi), %r8
|
||||
movq 24(%rsi), %r9
|
||||
movq 32(%rsi), %r10
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $1, %rcx, %rax
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %r10, %r9
|
||||
movq %rax, (%rdi)
|
||||
movq %rcx, 8(%rdi)
|
||||
movq %r8, 16(%rdi)
|
||||
@@ -69735,15 +69770,15 @@ L_521_mod_inv_9_div2_mod_no_add:
|
||||
movq 48(%rsi), %r8
|
||||
movq 56(%rsi), %r9
|
||||
movq 64(%rsi), %rax
|
||||
shrdq $0x01, %rcx, %r10
|
||||
shrdq $0x01, %r8, %rcx
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $0x01, %rax, %r9
|
||||
shrdq $1, %rcx, %r10
|
||||
shrdq $1, %r8, %rcx
|
||||
shrdq $1, %r9, %r8
|
||||
shrdq $1, %rax, %r9
|
||||
movq %r10, 32(%rdi)
|
||||
movq %rcx, 40(%rdi)
|
||||
movq %r8, 48(%rdi)
|
||||
movq %r9, 56(%rdi)
|
||||
shrq $0x01, %rax
|
||||
shrq $1, %rax
|
||||
movq %rax, 64(%rdi)
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
@@ -77428,51 +77463,51 @@ _sp_1024_mont_div2_16:
|
||||
adcq $0x00, %r10
|
||||
movq (%rsp), %rax
|
||||
movq 8(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, (%rdi)
|
||||
movq 16(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 8(%rdi)
|
||||
movq 24(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 16(%rdi)
|
||||
movq 32(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 24(%rdi)
|
||||
movq 40(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 32(%rdi)
|
||||
movq 48(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 40(%rdi)
|
||||
movq 56(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 48(%rdi)
|
||||
movq 64(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 56(%rdi)
|
||||
movq 72(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 64(%rdi)
|
||||
movq 80(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 72(%rdi)
|
||||
movq 88(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 80(%rdi)
|
||||
movq 96(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 88(%rdi)
|
||||
movq 104(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 96(%rdi)
|
||||
movq 112(%rsp), %rax
|
||||
shrdq $0x01, %rax, %rcx
|
||||
shrdq $1, %rax, %rcx
|
||||
movq %rcx, 104(%rdi)
|
||||
movq 120(%rsp), %rcx
|
||||
shrdq $0x01, %rcx, %rax
|
||||
shrdq $1, %rcx, %rax
|
||||
movq %rax, 112(%rdi)
|
||||
shrdq $0x01, %r10, %rcx
|
||||
shrdq $1, %r10, %rcx
|
||||
movq %rcx, 120(%rdi)
|
||||
addq $0x80, %rsp
|
||||
repz retq
|
||||
@@ -78692,51 +78727,51 @@ _sp_1024_mont_div2_avx2_16:
|
||||
adcq $0x00, %r10
|
||||
movq (%rdi), %r8
|
||||
movq 8(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, (%rdi)
|
||||
movq 16(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 8(%rdi)
|
||||
movq 24(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 16(%rdi)
|
||||
movq 32(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 24(%rdi)
|
||||
movq 40(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 32(%rdi)
|
||||
movq 48(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 40(%rdi)
|
||||
movq 56(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 48(%rdi)
|
||||
movq 64(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 56(%rdi)
|
||||
movq 72(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 64(%rdi)
|
||||
movq 80(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 72(%rdi)
|
||||
movq 88(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 80(%rdi)
|
||||
movq 96(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 88(%rdi)
|
||||
movq 104(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 96(%rdi)
|
||||
movq 112(%rdi), %r8
|
||||
shrdq $0x01, %r8, %r9
|
||||
shrdq $1, %r8, %r9
|
||||
movq %r9, 104(%rdi)
|
||||
movq 120(%rdi), %r9
|
||||
shrdq $0x01, %r9, %r8
|
||||
shrdq $1, %r9, %r8
|
||||
movq %r8, 112(%rdi)
|
||||
shrdq $0x01, %r10, %r9
|
||||
shrdq $1, %r10, %r9
|
||||
movq %r9, 120(%rdi)
|
||||
repz retq
|
||||
#ifndef __APPLE__
|
||||
|
||||
+553
-535
File diff suppressed because it is too large
Load Diff
+538
-470
File diff suppressed because it is too large
Load Diff
+554
-1764
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user