Skip to content

Commit ab9e792

Browse files
committed
ML-KEM assembly: AVX512F and AVX512VBMI.
New assembly for ML-KEM for Intel x64 machines that support AVX512 extensions. Update how much is added to the stack of others.
1 parent e6d86b4 commit ab9e792

27 files changed

Lines changed: 60664 additions & 2265 deletions

wolfcrypt/src/aes_gcm_asm.S

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10190,7 +10190,7 @@ _AES_GCM_init_avx1:
1019010190
movq %rdx, %r10
1019110191
movl %ecx, %r11d
1019210192
movq 24(%rsp), %rax
10193-
subq $16, %rsp
10193+
subq $24, %rsp
1019410194
vpxor %xmm4, %xmm4, %xmm4
1019510195
movl %r11d, %edx
1019610196
cmpl $12, %edx
@@ -10483,7 +10483,7 @@ L_AES_GCM_init_avx1_iv_done:
1048310483
vpaddd L_avx1_aes_gcm_one(%rip), %xmm4, %xmm4
1048410484
vmovdqa %xmm5, (%r8)
1048510485
vmovdqa %xmm4, (%r9)
10486-
addq $16, %rsp
10486+
addq $24, %rsp
1048710487
popq %r13
1048810488
popq %r12
1048910489
repz retq
@@ -11811,7 +11811,7 @@ _AES_GCM_decrypt_update_avx1:
1181111811
movq %rcx, %r11
1181211812
movq 32(%rsp), %rax
1181311813
movq 40(%rsp), %r12
11814-
subq $0xa8, %rsp
11814+
subq $0xb0, %rsp
1181511815
vmovdqa (%r9), %xmm6
1181611816
vmovdqa (%rax), %xmm5
1181711817
vpsrlq $63, %xmm5, %xmm9
@@ -12393,7 +12393,7 @@ L_AES_GCM_decrypt_update_avx1_last_block_done:
1239312393
L_AES_GCM_decrypt_update_avx1_done_dec:
1239412394
vmovdqa %xmm6, (%r9)
1239512395
vzeroupper
12396-
addq $0xa8, %rsp
12396+
addq $0xb0, %rsp
1239712397
popq %r14
1239812398
popq %r12
1239912399
popq %r13
@@ -13379,7 +13379,7 @@ _AES_GCM_encrypt_avx2:
1337913379
movl 64(%rsp), %r14d
1338013380
movq 72(%rsp), %rsi
1338113381
movl 80(%rsp), %r9d
13382-
subq $0xb8, %rsp
13382+
subq $0xc0, %rsp
1338313383
vpxor %xmm4, %xmm4, %xmm4
1338413384
vpxor %xmm6, %xmm6, %xmm6
1338513385
movl %ebx, %edx
@@ -14825,7 +14825,7 @@ L_AES_GCM_encrypt_avx2_store_tag_16:
1482514825
vmovdqu %xmm0, (%r15)
1482614826
L_AES_GCM_encrypt_avx2_store_tag_done:
1482714827
vzeroupper
14828-
addq $0xb8, %rsp
14828+
addq $0xc0, %rsp
1482914829
popq %r14
1483014830
popq %rbx
1483114831
popq %r15
@@ -15999,7 +15999,7 @@ _AES_GCM_init_avx2:
1599915999
movq %rdx, %r10
1600016000
movl %ecx, %r11d
1600116001
movq 24(%rsp), %rax
16002-
subq $16, %rsp
16002+
subq $24, %rsp
1600316003
vpxor %xmm4, %xmm4, %xmm4
1600416004
movl %r11d, %edx
1600516005
cmpl $12, %edx
@@ -16248,7 +16248,7 @@ L_AES_GCM_init_avx2_iv_done:
1624816248
vmovdqu %xmm5, (%r8)
1624916249
vmovdqu %xmm4, (%r9)
1625016250
vzeroupper
16251-
addq $16, %rsp
16251+
addq $24, %rsp
1625216252
popq %r12
1625316253
popq %rbx
1625416254
repz retq
@@ -16451,7 +16451,7 @@ _AES_GCM_encrypt_update_avx2:
1645116451
movq %rcx, %r11
1645216452
movq 32(%rsp), %rax
1645316453
movq 40(%rsp), %r12
16454-
subq $0x98, %rsp
16454+
subq $0xa0, %rsp
1645516455
vmovdqu (%r9), %xmm6
1645616456
vmovdqu (%rax), %xmm5
1645716457
vmovdqu (%r12), %xmm4
@@ -17282,7 +17282,7 @@ L_AES_GCM_encrypt_update_avx2_done_enc:
1728217282
vmovdqu %xmm6, (%r9)
1728317283
vmovdqu %xmm4, (%r12)
1728417284
vzeroupper
17285-
addq $0x98, %rsp
17285+
addq $0xa0, %rsp
1728617286
popq %r14
1728717287
popq %r13
1728817288
popq %r12
@@ -17303,7 +17303,7 @@ AES_GCM_encrypt_final_avx2:
1730317303
_AES_GCM_encrypt_final_avx2:
1730417304
#endif /* __APPLE__ */
1730517305
movq 8(%rsp), %rax
17306-
subq $16, %rsp
17306+
subq $24, %rsp
1730717307
vmovdqu (%rdi), %xmm4
1730817308
vmovdqu (%r9), %xmm5
1730917309
vmovdqu (%rax), %xmm6
@@ -17357,7 +17357,7 @@ L_AES_GCM_encrypt_final_avx2_store_tag_16:
1735717357
vmovdqu %xmm0, (%rsi)
1735817358
L_AES_GCM_encrypt_final_avx2_store_tag_done:
1735917359
vzeroupper
17360-
addq $16, %rsp
17360+
addq $24, %rsp
1736117361
repz retq
1736217362
#ifndef __APPLE__
1736317363
.size AES_GCM_encrypt_final_avx2,.-AES_GCM_encrypt_final_avx2
@@ -17381,7 +17381,7 @@ _AES_GCM_decrypt_update_avx2:
1738117381
movq %rcx, %r11
1738217382
movq 32(%rsp), %rax
1738317383
movq 40(%rsp), %r12
17384-
subq $0xa8, %rsp
17384+
subq $0xb0, %rsp
1738517385
vmovdqu (%r9), %xmm6
1738617386
vmovdqu (%rax), %xmm5
1738717387
vmovdqu (%r12), %xmm4
@@ -17865,7 +17865,7 @@ L_AES_GCM_decrypt_update_avx2_done_dec:
1786517865
vmovdqu %xmm6, (%r9)
1786617866
vmovdqu %xmm4, (%r12)
1786717867
vzeroupper
17868-
addq $0xa8, %rsp
17868+
addq $0xb0, %rsp
1786917869
popq %r14
1787017870
popq %r12
1787117871
popq %r13
@@ -20407,7 +20407,7 @@ _AES_GCM_decrypt_vaes:
2040720407
movq 80(%rsp), %r15
2040820408
movl 88(%rsp), %r10d
2040920409
movq 96(%rsp), %rbp
20410-
subq $0x250, %rsp
20410+
subq $0x258, %rsp
2041120411
vpxor %xmm5, %xmm5, %xmm5
2041220412
vpxor %xmm15, %xmm15, %xmm15
2041320413
cmpl $12, %ebx
@@ -22328,7 +22328,7 @@ L_AES_GCM_decrypt_vaes_cmp_tag_16:
2232822328
L_AES_GCM_decrypt_vaes_cmp_tag_done:
2232922329
movl %ebx, (%rbp)
2233022330
vzeroupper
22331-
addq $0x250, %rsp
22331+
addq $0x258, %rsp
2233222332
popq %rbp
2233322333
popq %r15
2233422334
popq %r14
@@ -22357,7 +22357,7 @@ _AES_GCM_init_vaes:
2235722357
movq %rdx, %r10
2235822358
movl %ecx, %r11d
2235922359
movq 24(%rsp), %rax
22360-
subq $16, %rsp
22360+
subq $24, %rsp
2236122361
vpxor %xmm4, %xmm4, %xmm4
2236222362
movl %r11d, %edx
2236322363
cmpl $12, %edx
@@ -22650,7 +22650,7 @@ L_AES_GCM_init_vaes_iv_done:
2265022650
vpaddd L_vaes_aes_gcm_one(%rip), %xmm4, %xmm4
2265122651
vmovdqa %xmm5, (%r8)
2265222652
vmovdqa %xmm4, (%r9)
22653-
addq $16, %rsp
22653+
addq $24, %rsp
2265422654
popq %r13
2265522655
popq %r12
2265622656
repz retq
@@ -22671,7 +22671,7 @@ _AES_GCM_aad_update_vaes:
2267122671
#endif /* __APPLE__ */
2267222672
movq %rdx, %r8
2267322673
movq %rcx, %r9
22674-
subq $0x200, %rsp
22674+
subq $0x208, %rsp
2267522675
vmovdqa (%r8), %xmm15
2267622676
vmovdqa (%r9), %xmm6
2267722677
xorl %edx, %edx
@@ -23185,7 +23185,7 @@ L_AES_GCM_aad_update_vaes_tail:
2318523185
L_AES_GCM_aad_update_vaes_done:
2318623186
vmovdqa %xmm15, (%r8)
2318723187
vzeroupper
23188-
addq $0x200, %rsp
23188+
addq $0x208, %rsp
2318923189
repz retq
2319023190
#ifndef __APPLE__
2319123191
.size AES_GCM_aad_update_vaes,.-AES_GCM_aad_update_vaes
@@ -29305,7 +29305,7 @@ _AES_GCM_decrypt_avx512:
2930529305
movq 80(%rsp), %r15
2930629306
movl 88(%rsp), %r10d
2930729307
movq 96(%rsp), %rbp
29308-
subq $0x460, %rsp
29308+
subq $0x468, %rsp
2930929309
vpxor %xmm4, %xmm4, %xmm4
2931029310
vpxor %xmm6, %xmm6, %xmm6
2931129311
cmpl $12, %ebx
@@ -31770,7 +31770,7 @@ L_AES_GCM_decrypt_avx512_cmp_tag_16:
3177031770
L_AES_GCM_decrypt_avx512_cmp_tag_done:
3177131771
movl %ebx, (%rbp)
3177231772
vzeroupper
31773-
addq $0x460, %rsp
31773+
addq $0x468, %rsp
3177431774
popq %rbp
3177531775
popq %r15
3177631776
popq %r14
@@ -31799,7 +31799,7 @@ _AES_GCM_init_avx512:
3179931799
movq %rdx, %r10
3180031800
movl %ecx, %r11d
3180131801
movq 24(%rsp), %rax
31802-
subq $16, %rsp
31802+
subq $24, %rsp
3180331803
vpxor %xmm4, %xmm4, %xmm4
3180431804
movl %r11d, %edx
3180531805
cmpl $12, %edx
@@ -32092,7 +32092,7 @@ L_AES_GCM_init_avx512_iv_done:
3209232092
vpaddd L_avx512_aes_gcm_one(%rip), %xmm4, %xmm4
3209332093
vmovdqa %xmm5, (%r8)
3209432094
vmovdqa %xmm4, (%r9)
32095-
addq $16, %rsp
32095+
addq $24, %rsp
3209632096
popq %r13
3209732097
popq %r12
3209832098
repz retq
@@ -32113,7 +32113,7 @@ _AES_GCM_aad_update_avx512:
3211332113
#endif /* __APPLE__ */
3211432114
movq %rdx, %r8
3211532115
movq %rcx, %r9
32116-
subq $0x100, %rsp
32116+
subq $0x108, %rsp
3211732117
vmovdqa (%r8), %xmm6
3211832118
vmovdqa (%r9), %xmm7
3211932119
xorl %edx, %edx
@@ -32526,7 +32526,7 @@ L_AES_GCM_aad_update_avx512_tail:
3252632526
L_AES_GCM_aad_update_avx512_done:
3252732527
vmovdqa %xmm6, (%r8)
3252832528
vzeroupper
32529-
addq $0x100, %rsp
32529+
addq $0x108, %rsp
3253032530
repz retq
3253132531
#ifndef __APPLE__
3253232532
.size AES_GCM_aad_update_avx512,.-AES_GCM_aad_update_avx512
@@ -32669,7 +32669,7 @@ _AES_GCM_encrypt_update_avx512:
3266932669
movq %rcx, %r11
3267032670
movq 56(%rsp), %rax
3267132671
movq 64(%rsp), %r12
32672-
subq $0x410, %rsp
32672+
subq $0x418, %rsp
3267332673
vmovdqa (%r9), %xmm6
3267432674
vmovdqa (%rax), %xmm5
3267532675
vpsrlq $63, %xmm5, %xmm9
@@ -34389,7 +34389,7 @@ L_AES_GCM_encrypt_update_avx512_last_block_done:
3438934389
L_AES_GCM_encrypt_update_avx512_done_enc:
3439034390
vmovdqa %xmm6, (%r9)
3439134391
vzeroupper
34392-
addq $0x410, %rsp
34392+
addq $0x418, %rsp
3439334393
popq %rbp
3439434394
popq %rbx
3439534395
popq %r15

0 commit comments

Comments
 (0)