[TEST] x86_64: Use Plantard reduction - #1871
Conversation
Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
oqs-bot
left a comment
There was a problem hiding this comment.
Mac Mini (M1, 2020) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
12322 cycles |
12322 cycles |
1 |
ML-KEM-512 encaps |
14757 cycles |
14758 cycles |
1.00 |
ML-KEM-512 decaps |
19315 cycles |
19315 cycles |
1 |
ML-KEM-768 keypair |
21179 cycles |
21179 cycles |
1 |
ML-KEM-768 encaps |
23515 cycles |
23513 cycles |
1.00 |
ML-KEM-768 decaps |
30058 cycles |
30054 cycles |
1.00 |
ML-KEM-1024 keypair |
30331 cycles |
30331 cycles |
1 |
ML-KEM-1024 encaps |
34109 cycles |
34112 cycles |
1.00 |
ML-KEM-1024 decaps |
43668 cycles |
43668 cycles |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
ppc64le (POWER10) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
38790 cycles |
38538 cycles |
1.01 |
ML-KEM-512 encaps |
43688 cycles |
43318 cycles |
1.01 |
ML-KEM-512 decaps |
54274 cycles |
53838 cycles |
1.01 |
ML-KEM-768 keypair |
67589 cycles |
68035 cycles |
0.99 |
ML-KEM-768 encaps |
76425 cycles |
76846 cycles |
0.99 |
ML-KEM-768 decaps |
90698 cycles |
91282 cycles |
0.99 |
ML-KEM-1024 keypair |
114107 cycles |
113586 cycles |
1.00 |
ML-KEM-1024 encaps |
124618 cycles |
124287 cycles |
1.00 |
ML-KEM-1024 decaps |
143304 cycles |
142943 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton5
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
13434 cycles |
13463 cycles |
1.00 |
ML-KEM-512 encaps |
15787 cycles |
15776 cycles |
1.00 |
ML-KEM-512 decaps |
21299 cycles |
21331 cycles |
1.00 |
ML-KEM-768 keypair |
22875 cycles |
22838 cycles |
1.00 |
ML-KEM-768 encaps |
25296 cycles |
25303 cycles |
1.00 |
ML-KEM-768 decaps |
33171 cycles |
33124 cycles |
1.00 |
ML-KEM-1024 keypair |
33287 cycles |
33226 cycles |
1.00 |
ML-KEM-1024 encaps |
36932 cycles |
37038 cycles |
1.00 |
ML-KEM-1024 decaps |
47156 cycles |
47155 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-A72 (Raspberry Pi 4) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
52536 cycles |
52580 cycles |
1.00 |
ML-KEM-512 encaps |
60402 cycles |
60439 cycles |
1.00 |
ML-KEM-512 decaps |
76863 cycles |
76532 cycles |
1.00 |
ML-KEM-768 keypair |
87637 cycles |
88666 cycles |
0.99 |
ML-KEM-768 encaps |
95783 cycles |
97336 cycles |
0.98 |
ML-KEM-768 decaps |
119523 cycles |
121395 cycles |
0.98 |
ML-KEM-1024 keypair |
133351 cycles |
132943 cycles |
1.00 |
ML-KEM-1024 encaps |
145589 cycles |
145722 cycles |
1.00 |
ML-KEM-1024 decaps |
178446 cycles |
180073 cycles |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-A76 (Raspberry Pi 5) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
28246 cycles |
28243 cycles |
1.00 |
ML-KEM-512 encaps |
34127 cycles |
34119 cycles |
1.00 |
ML-KEM-512 decaps |
44531 cycles |
44481 cycles |
1.00 |
ML-KEM-768 keypair |
47566 cycles |
47617 cycles |
1.00 |
ML-KEM-768 encaps |
53875 cycles |
53856 cycles |
1.00 |
ML-KEM-768 decaps |
68530 cycles |
68499 cycles |
1.00 |
ML-KEM-1024 keypair |
70152 cycles |
70190 cycles |
1.00 |
ML-KEM-1024 encaps |
78501 cycles |
78569 cycles |
1.00 |
ML-KEM-1024 decaps |
98288 cycles |
98321 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton3
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
18638 cycles |
18655 cycles |
1.00 |
ML-KEM-512 encaps |
21833 cycles |
21836 cycles |
1.00 |
ML-KEM-512 decaps |
28840 cycles |
28877 cycles |
1.00 |
ML-KEM-768 keypair |
31535 cycles |
31504 cycles |
1.00 |
ML-KEM-768 encaps |
34749 cycles |
34746 cycles |
1.00 |
ML-KEM-768 decaps |
44804 cycles |
44735 cycles |
1.00 |
ML-KEM-1024 keypair |
46145 cycles |
46085 cycles |
1.00 |
ML-KEM-1024 encaps |
51439 cycles |
51517 cycles |
1.00 |
ML-KEM-1024 decaps |
64928 cycles |
64942 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton5 (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
27343 cycles |
27362 cycles |
1.00 |
ML-KEM-512 encaps |
31715 cycles |
31620 cycles |
1.00 |
ML-KEM-512 decaps |
40426 cycles |
40535 cycles |
1.00 |
ML-KEM-768 keypair |
44008 cycles |
44091 cycles |
1.00 |
ML-KEM-768 encaps |
50702 cycles |
50594 cycles |
1.00 |
ML-KEM-768 decaps |
62140 cycles |
62271 cycles |
1.00 |
ML-KEM-1024 keypair |
68272 cycles |
68282 cycles |
1.00 |
ML-KEM-1024 encaps |
75988 cycles |
76085 cycles |
1.00 |
ML-KEM-1024 decaps |
90663 cycles |
90625 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 4th gen (c7i)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
11870 cycles |
11798 cycles |
1.01 |
ML-KEM-512 encaps |
13113 cycles |
13069 cycles |
1.00 |
ML-KEM-512 decaps |
16994 cycles |
17171 cycles |
0.99 |
ML-KEM-768 keypair |
19400 cycles |
19388 cycles |
1.00 |
ML-KEM-768 encaps |
20643 cycles |
20700 cycles |
1.00 |
ML-KEM-768 decaps |
26307 cycles |
26389 cycles |
1.00 |
ML-KEM-1024 keypair |
28092 cycles |
28192 cycles |
1.00 |
ML-KEM-1024 encaps |
29986 cycles |
30153 cycles |
0.99 |
ML-KEM-1024 decaps |
37461 cycles |
37577 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton3 (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
38772 cycles |
38739 cycles |
1.00 |
ML-KEM-512 encaps |
44450 cycles |
44436 cycles |
1.00 |
ML-KEM-512 decaps |
56102 cycles |
56164 cycles |
1.00 |
ML-KEM-768 keypair |
62346 cycles |
62264 cycles |
1.00 |
ML-KEM-768 encaps |
70577 cycles |
70509 cycles |
1.00 |
ML-KEM-768 decaps |
86248 cycles |
86285 cycles |
1.00 |
ML-KEM-1024 keypair |
95594 cycles |
95852 cycles |
1.00 |
ML-KEM-1024 encaps |
105883 cycles |
105903 cycles |
1.00 |
ML-KEM-1024 decaps |
126037 cycles |
125765 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 4th gen (c7i) (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
27569 cycles |
27515 cycles |
1.00 |
ML-KEM-512 encaps |
34312 cycles |
34207 cycles |
1.00 |
ML-KEM-512 decaps |
43940 cycles |
43827 cycles |
1.00 |
ML-KEM-768 keypair |
44250 cycles |
44287 cycles |
1.00 |
ML-KEM-768 encaps |
54979 cycles |
54814 cycles |
1.00 |
ML-KEM-768 decaps |
68202 cycles |
68225 cycles |
1.00 |
ML-KEM-1024 keypair |
67521 cycles |
67427 cycles |
1.00 |
ML-KEM-1024 encaps |
78756 cycles |
78750 cycles |
1.00 |
ML-KEM-1024 decaps |
96062 cycles |
96113 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton4
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
17667 cycles |
17688 cycles |
1.00 |
ML-KEM-512 encaps |
20547 cycles |
20546 cycles |
1.00 |
ML-KEM-512 decaps |
26995 cycles |
27033 cycles |
1.00 |
ML-KEM-768 keypair |
29870 cycles |
29832 cycles |
1.00 |
ML-KEM-768 encaps |
32701 cycles |
32722 cycles |
1.00 |
ML-KEM-768 decaps |
41918 cycles |
41866 cycles |
1.00 |
ML-KEM-1024 keypair |
43719 cycles |
43685 cycles |
1.00 |
ML-KEM-1024 encaps |
48637 cycles |
48702 cycles |
1.00 |
ML-KEM-1024 decaps |
61396 cycles |
61368 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 3rd gen (c6a)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
14368 cycles |
14429 cycles |
1.00 |
ML-KEM-512 encaps |
15900 cycles |
15946 cycles |
1.00 |
ML-KEM-512 decaps |
21291 cycles |
21331 cycles |
1.00 |
ML-KEM-768 keypair |
23536 cycles |
23603 cycles |
1.00 |
ML-KEM-768 encaps |
24949 cycles |
25013 cycles |
1.00 |
ML-KEM-768 decaps |
32783 cycles |
32948 cycles |
0.99 |
ML-KEM-1024 keypair |
33473 cycles |
33493 cycles |
1.00 |
ML-KEM-1024 encaps |
35775 cycles |
35840 cycles |
1.00 |
ML-KEM-1024 decaps |
46215 cycles |
46267 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton4 (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
35215 cycles |
35183 cycles |
1.00 |
ML-KEM-512 encaps |
40028 cycles |
39969 cycles |
1.00 |
ML-KEM-512 decaps |
50563 cycles |
50602 cycles |
1.00 |
ML-KEM-768 keypair |
56692 cycles |
56650 cycles |
1.00 |
ML-KEM-768 encaps |
64081 cycles |
63981 cycles |
1.00 |
ML-KEM-768 decaps |
78445 cycles |
78485 cycles |
1.00 |
ML-KEM-1024 keypair |
87372 cycles |
87509 cycles |
1.00 |
ML-KEM-1024 encaps |
96558 cycles |
96613 cycles |
1.00 |
ML-KEM-1024 decaps |
114871 cycles |
114678 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 4th gen (c7a)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
12765 cycles |
12822 cycles |
1.00 |
ML-KEM-512 encaps |
14180 cycles |
14217 cycles |
1.00 |
ML-KEM-512 decaps |
18947 cycles |
18985 cycles |
1.00 |
ML-KEM-768 keypair |
21565 cycles |
21613 cycles |
1.00 |
ML-KEM-768 encaps |
22681 cycles |
22677 cycles |
1.00 |
ML-KEM-768 decaps |
29636 cycles |
29688 cycles |
1.00 |
ML-KEM-1024 keypair |
30391 cycles |
30443 cycles |
1.00 |
ML-KEM-1024 encaps |
32556 cycles |
32629 cycles |
1.00 |
ML-KEM-1024 decaps |
42035 cycles |
42042 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 3rd gen (c6a) (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
39829 cycles |
39879 cycles |
1.00 |
ML-KEM-512 encaps |
48164 cycles |
48246 cycles |
1.00 |
ML-KEM-512 decaps |
61635 cycles |
61724 cycles |
1.00 |
ML-KEM-768 keypair |
62541 cycles |
62560 cycles |
1.00 |
ML-KEM-768 encaps |
75061 cycles |
74791 cycles |
1.00 |
ML-KEM-768 decaps |
92286 cycles |
92376 cycles |
1.00 |
ML-KEM-1024 keypair |
95102 cycles |
95217 cycles |
1.00 |
ML-KEM-1024 encaps |
110240 cycles |
110082 cycles |
1.00 |
ML-KEM-1024 decaps |
132655 cycles |
132637 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 4th gen (c7a) (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
36724 cycles |
36751 cycles |
1.00 |
ML-KEM-512 encaps |
42850 cycles |
42805 cycles |
1.00 |
ML-KEM-512 decaps |
55524 cycles |
55557 cycles |
1.00 |
ML-KEM-768 keypair |
58371 cycles |
58383 cycles |
1.00 |
ML-KEM-768 encaps |
67156 cycles |
67012 cycles |
1.00 |
ML-KEM-768 decaps |
83911 cycles |
83974 cycles |
1.00 |
ML-KEM-1024 keypair |
88490 cycles |
88506 cycles |
1.00 |
ML-KEM-1024 encaps |
98941 cycles |
99034 cycles |
1.00 |
ML-KEM-1024 decaps |
120418 cycles |
120490 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 3rd gen (c6i)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
17918 cycles |
17947 cycles |
1.00 |
ML-KEM-512 encaps |
20085 cycles |
20118 cycles |
1.00 |
ML-KEM-512 decaps |
26739 cycles |
26823 cycles |
1.00 |
ML-KEM-768 keypair |
30014 cycles |
30079 cycles |
1.00 |
ML-KEM-768 encaps |
31808 cycles |
31884 cycles |
1.00 |
ML-KEM-768 decaps |
41437 cycles |
41523 cycles |
1.00 |
ML-KEM-1024 keypair |
44431 cycles |
42190 cycles |
1.05 |
ML-KEM-1024 encaps |
44998 cycles |
45298 cycles |
0.99 |
ML-KEM-1024 decaps |
58004 cycles |
58302 cycles |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Intel Xeon 3rd gen (c6i)'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.03.
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-1024 keypair |
44431 cycles |
42190 cycles |
1.05 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 3rd gen (c6i) (no-opt)
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
46958 cycles |
46968 cycles |
1.00 |
ML-KEM-512 encaps |
55677 cycles |
55707 cycles |
1.00 |
ML-KEM-512 decaps |
71370 cycles |
71408 cycles |
1.00 |
ML-KEM-768 keypair |
74327 cycles |
74383 cycles |
1.00 |
ML-KEM-768 encaps |
86064 cycles |
85946 cycles |
1.00 |
ML-KEM-768 decaps |
106957 cycles |
106930 cycles |
1.00 |
ML-KEM-1024 keypair |
111389 cycles |
111331 cycles |
1.00 |
ML-KEM-1024 encaps |
126115 cycles |
126009 cycles |
1.00 |
ML-KEM-1024 decaps |
152125 cycles |
152070 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-M55 (NUCLEO-N657X0-Q) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
647367 cycles |
647367 cycles |
1 |
ML-KEM-512 encaps |
728024 cycles |
728024 cycles |
1 |
ML-KEM-512 decaps |
928692 cycles |
928692 cycles |
1 |
ML-KEM-768 keypair |
1032214 cycles |
1032214 cycles |
1 |
ML-KEM-768 encaps |
1162339 cycles |
1162339 cycles |
1 |
ML-KEM-768 decaps |
1433590 cycles |
1433590 cycles |
1 |
ML-KEM-1024 keypair |
1594936 cycles |
1594936 cycles |
1 |
ML-KEM-1024 encaps |
1747347 cycles |
1747347 cycles |
1 |
ML-KEM-1024 decaps |
2094866 cycles |
2094866 cycles |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-A55 (Snapdragon 888) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
59815 cycles |
59783 cycles |
1.00 |
ML-KEM-512 encaps |
67496 cycles |
67444 cycles |
1.00 |
ML-KEM-512 decaps |
86482 cycles |
86410 cycles |
1.00 |
ML-KEM-768 keypair |
97550 cycles |
97468 cycles |
1.00 |
ML-KEM-768 encaps |
111114 cycles |
111015 cycles |
1.00 |
ML-KEM-768 decaps |
138412 cycles |
138144 cycles |
1.00 |
ML-KEM-1024 keypair |
155175 cycles |
154627 cycles |
1.00 |
ML-KEM-1024 encaps |
171950 cycles |
171103 cycles |
1.00 |
ML-KEM-1024 decaps |
209844 cycles |
207755 cycles |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
CBMC Results (ML-KEM-1024)
Full Results (191 proofs)
|
CBMC Results (ML-KEM-768)
Full Results (191 proofs)
|
CBMC Results (ML-KEM-512)
Full Results (191 proofs)
|
oqs-bot
left a comment
There was a problem hiding this comment.
SpacemiT K1 8 (Banana Pi F3) benchmarks
Details
| Benchmark suite | Current: af9abd7 | Previous: 69d24e3 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
143635 cycles |
143641 cycles |
1.00 |
ML-KEM-512 encaps |
151967 cycles |
151977 cycles |
1.00 |
ML-KEM-512 decaps |
190396 cycles |
190397 cycles |
1.00 |
ML-KEM-768 keypair |
233958 cycles |
233991 cycles |
1.00 |
ML-KEM-768 encaps |
251113 cycles |
251136 cycles |
1.00 |
ML-KEM-768 decaps |
306473 cycles |
306055 cycles |
1.00 |
ML-KEM-1024 keypair |
365615 cycles |
365553 cycles |
1.00 |
ML-KEM-1024 encaps |
388948 cycles |
387979 cycles |
1.00 |
ML-KEM-1024 decaps |
459221 cycles |
458363 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
af9abd7 to
7317123
Compare
Barrett reduction followed by a conditional subtraction needs 8 instructions per vector to map an int16 to [0,q). The sequence vpmulhw t,a,L vpmullw u,a,H vpaddw m,t,u vpaddw x,m,S vpmulhuw z,x,Q needs 5. Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
7317123 to
8289f9a
Compare
Bo-Yin Yang suggested a five-instruction AVX2 sequence that multiplies a
coefficient by a compile-time constant modulo
qand returns the canonicalrepresentative,
z = (a*w) mod qwith0 <= z < q:The constants come from
w:b = (-2^32 * w) mod q,W = (b * q^-1) mod 2^32split as
H*2^16 + L, biass = 2.The only place I was able to make use of it so far is
mlk_reduce_avx2_asm,i.e., multiplying by
w = 1, replacing Barrett reduction plus conditionalsubtraction: 5 instructions per vector instead of 8.
Performance
poly_reducepolyvec_reduce(k=3)Unfortunately, we don't spend much time in reduction overall, so scheme benchmarks don't really reflect it.
Verification
The new sequence is proven against the same HOL-Light specification as before: each output coefficient is
ival(x) rem 3329.However, we also prove the modmul sequence more generally, as
PLANTARD_MULCONSTinproofs/hol_light/x86_64/proofs/mlkem_reduce_avx2_asm.ml:plantard_seqis the five instructions on one 16-bit lane.Beyond the proof: the routine was checked exhaustively against the reference
over all 2^16 inputs.