Express alignment portably with alignas (C23) / _Alignas (C11/C17) - #1407
Express alignment portably with alignas (C23) / _Alignas (C11/C17)#1407mkannwischer wants to merge 1 commit into
Conversation
CBMC Results (ML-DSA-44, REDUCE-RAM)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-65, REDUCE-RAM)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-44)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-87, REDUCE-RAM)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-65)
Full Results (210 proofs)
|
CBMC Results (ML-DSA-87)
Full Results (210 proofs)
|
MLD_ALIGN had no portable definition: __attribute__((aligned)) for GCC/Clang, __declspec(align) for MSVC, and on anything else it expanded to nothing at all. A toolchain outside those two families therefore silently dropped the 32-byte alignment. C11 added _Alignas and C23 renamed it to alignas, so any compiler claiming either standard can express the constraint without an extension. Prefer those when __STDC_VERSION__ advertises them and keep the extensions as the fallback for C90 and C99. An alignment specifier belongs to the declaration specifiers, so unlike an attribute it cannot be attached to a typedef or a struct tag. Pavona has MLD_ALIGN on the typedefs of its empty SHAKE contexts; a new integration patch drops it there. - Resolve #1378 Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
fdc7753 to
0437594
Compare
| * library's own buffers are equally unaligned, so we are no worse off. */ | ||
| #if defined(__GNUC__) | ||
| #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L | ||
| #define EXAMPLE_ALIGN alignas(EXAMPLE_ALLOC_ALIGN) |
There was a problem hiding this comment.
Have you confirmed that this works as expected?
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 4th gen (c7i)
Details
| Benchmark suite | Current: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
43338 cycles |
43406 cycles |
1.00 |
ML-DSA-44 sign |
130063 cycles |
130328 cycles |
1.00 |
ML-DSA-44 verify |
45179 cycles |
45394 cycles |
1.00 |
ML-DSA-65 keypair |
75825 cycles |
75716 cycles |
1.00 |
ML-DSA-65 sign |
213691 cycles |
213428 cycles |
1.00 |
ML-DSA-65 verify |
74364 cycles |
74401 cycles |
1.00 |
ML-DSA-87 keypair |
123229 cycles |
122967 cycles |
1.00 |
ML-DSA-87 sign |
271105 cycles |
271422 cycles |
1.00 |
ML-DSA-87 verify |
120802 cycles |
120745 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
91696 cycles |
91577 cycles |
1.00 |
ML-DSA-44 sign |
351502 cycles |
350445 cycles |
1.00 |
ML-DSA-44 verify |
99280 cycles |
99260 cycles |
1.00 |
ML-DSA-65 keypair |
154014 cycles |
153794 cycles |
1.00 |
ML-DSA-65 sign |
568402 cycles |
567121 cycles |
1.00 |
ML-DSA-65 verify |
159668 cycles |
159672 cycles |
1.00 |
ML-DSA-87 keypair |
254998 cycles |
254960 cycles |
1.00 |
ML-DSA-87 sign |
720568 cycles |
719634 cycles |
1.00 |
ML-DSA-87 verify |
264194 cycles |
264044 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
48762 cycles |
46742 cycles |
1.04 |
ML-DSA-44 sign |
142043 cycles |
138904 cycles |
1.02 |
ML-DSA-44 verify |
50147 cycles |
49395 cycles |
1.02 |
ML-DSA-65 keypair |
82987 cycles |
82443 cycles |
1.01 |
ML-DSA-65 sign |
227319 cycles |
225922 cycles |
1.01 |
ML-DSA-65 verify |
82350 cycles |
82394 cycles |
1.00 |
ML-DSA-87 keypair |
130455 cycles |
129220 cycles |
1.01 |
ML-DSA-87 sign |
281195 cycles |
278748 cycles |
1.01 |
ML-DSA-87 verify |
128647 cycles |
128767 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.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'AMD EPYC 4th gen (c7a)'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.03.
| Benchmark suite | Current: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
48762 cycles |
46742 cycles |
1.04 |
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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
51462 cycles |
51549 cycles |
1.00 |
ML-DSA-44 sign |
161898 cycles |
162124 cycles |
1.00 |
ML-DSA-44 verify |
54816 cycles |
54699 cycles |
1.00 |
ML-DSA-65 keypair |
90205 cycles |
90153 cycles |
1.00 |
ML-DSA-65 sign |
268050 cycles |
267449 cycles |
1.00 |
ML-DSA-65 verify |
89991 cycles |
89813 cycles |
1.00 |
ML-DSA-87 keypair |
145915 cycles |
145750 cycles |
1.00 |
ML-DSA-87 sign |
335745 cycles |
336113 cycles |
1.00 |
ML-DSA-87 verify |
144858 cycles |
145412 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
52162 cycles |
52599 cycles |
0.99 |
ML-DSA-44 sign |
155158 cycles |
156313 cycles |
0.99 |
ML-DSA-44 verify |
54512 cycles |
54739 cycles |
1.00 |
ML-DSA-65 keypair |
89650 cycles |
90550 cycles |
0.99 |
ML-DSA-65 sign |
254163 cycles |
254859 cycles |
1.00 |
ML-DSA-65 verify |
89342 cycles |
89593 cycles |
1.00 |
ML-DSA-87 keypair |
144149 cycles |
144983 cycles |
0.99 |
ML-DSA-87 sign |
311823 cycles |
312830 cycles |
1.00 |
ML-DSA-87 verify |
139927 cycles |
140308 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
118765 cycles |
118151 cycles |
1.01 |
ML-DSA-44 sign |
459610 cycles |
458576 cycles |
1.00 |
ML-DSA-44 verify |
130980 cycles |
130511 cycles |
1.00 |
ML-DSA-65 keypair |
201279 cycles |
200941 cycles |
1.00 |
ML-DSA-65 sign |
747175 cycles |
743760 cycles |
1.00 |
ML-DSA-65 verify |
210143 cycles |
208994 cycles |
1.01 |
ML-DSA-87 keypair |
330091 cycles |
328922 cycles |
1.00 |
ML-DSA-87 sign |
936528 cycles |
933671 cycles |
1.00 |
ML-DSA-87 verify |
342477 cycles |
342058 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
100419 cycles |
100427 cycles |
1.00 |
ML-DSA-44 sign |
369327 cycles |
368917 cycles |
1.00 |
ML-DSA-44 verify |
110447 cycles |
110269 cycles |
1.00 |
ML-DSA-65 keypair |
174737 cycles |
175489 cycles |
1.00 |
ML-DSA-65 sign |
598278 cycles |
596736 cycles |
1.00 |
ML-DSA-65 verify |
177827 cycles |
177498 cycles |
1.00 |
ML-DSA-87 keypair |
285265 cycles |
286619 cycles |
1.00 |
ML-DSA-87 sign |
758762 cycles |
757665 cycles |
1.00 |
ML-DSA-87 verify |
297026 cycles |
295682 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
62378 cycles |
61484 cycles |
1.01 |
ML-DSA-44 sign |
188395 cycles |
187734 cycles |
1.00 |
ML-DSA-44 verify |
66118 cycles |
66224 cycles |
1.00 |
ML-DSA-65 keypair |
108838 cycles |
109368 cycles |
1.00 |
ML-DSA-65 sign |
311838 cycles |
314007 cycles |
0.99 |
ML-DSA-65 verify |
109661 cycles |
110752 cycles |
0.99 |
ML-DSA-87 keypair |
170738 cycles |
169955 cycles |
1.00 |
ML-DSA-87 sign |
377275 cycles |
378115 cycles |
1.00 |
ML-DSA-87 verify |
170252 cycles |
170410 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
133582 cycles |
133189 cycles |
1.00 |
ML-DSA-44 sign |
518781 cycles |
517874 cycles |
1.00 |
ML-DSA-44 verify |
146348 cycles |
146808 cycles |
1.00 |
ML-DSA-65 keypair |
224908 cycles |
224813 cycles |
1.00 |
ML-DSA-65 sign |
846246 cycles |
844406 cycles |
1.00 |
ML-DSA-65 verify |
234454 cycles |
234567 cycles |
1.00 |
ML-DSA-87 keypair |
368072 cycles |
371767 cycles |
0.99 |
ML-DSA-87 sign |
1060596 cycles |
1070444 cycles |
0.99 |
ML-DSA-87 verify |
381692 cycles |
384562 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.
Intel Xeon 3rd gen (c6i) (no-opt)
Details
| Benchmark suite | Current: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
154180 cycles |
153939 cycles |
1.00 |
ML-DSA-44 sign |
587448 cycles |
587344 cycles |
1.00 |
ML-DSA-44 verify |
169043 cycles |
169095 cycles |
1.00 |
ML-DSA-65 keypair |
262503 cycles |
261913 cycles |
1.00 |
ML-DSA-65 sign |
964162 cycles |
964236 cycles |
1.00 |
ML-DSA-65 verify |
272247 cycles |
271621 cycles |
1.00 |
ML-DSA-87 keypair |
430918 cycles |
432466 cycles |
1.00 |
ML-DSA-87 sign |
1209934 cycles |
1215350 cycles |
1.00 |
ML-DSA-87 verify |
446475 cycles |
447567 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
67448 cycles |
67353 cycles |
1.00 |
ML-DSA-44 sign |
198090 cycles |
198392 cycles |
1.00 |
ML-DSA-44 verify |
70389 cycles |
70244 cycles |
1.00 |
ML-DSA-65 keypair |
119410 cycles |
119333 cycles |
1.00 |
ML-DSA-65 sign |
326318 cycles |
325716 cycles |
1.00 |
ML-DSA-65 verify |
116932 cycles |
116636 cycles |
1.00 |
ML-DSA-87 keypair |
196598 cycles |
196579 cycles |
1.00 |
ML-DSA-87 sign |
421514 cycles |
422722 cycles |
1.00 |
ML-DSA-87 verify |
193036 cycles |
193349 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
128045 cycles |
128032 cycles |
1.00 |
ML-DSA-44 sign |
441407 cycles |
441067 cycles |
1.00 |
ML-DSA-44 verify |
136467 cycles |
136441 cycles |
1.00 |
ML-DSA-65 keypair |
221697 cycles |
221712 cycles |
1.00 |
ML-DSA-65 sign |
715046 cycles |
714329 cycles |
1.00 |
ML-DSA-65 verify |
221149 cycles |
220869 cycles |
1.00 |
ML-DSA-87 keypair |
364939 cycles |
364984 cycles |
1.00 |
ML-DSA-87 sign |
916618 cycles |
916434 cycles |
1.00 |
ML-DSA-87 verify |
371338 cycles |
371375 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
71529 cycles |
71605 cycles |
1.00 |
ML-DSA-44 sign |
209170 cycles |
209407 cycles |
1.00 |
ML-DSA-44 verify |
75128 cycles |
74975 cycles |
1.00 |
ML-DSA-65 keypair |
126162 cycles |
126075 cycles |
1.00 |
ML-DSA-65 sign |
345663 cycles |
345704 cycles |
1.00 |
ML-DSA-65 verify |
124348 cycles |
124156 cycles |
1.00 |
ML-DSA-87 keypair |
206905 cycles |
206384 cycles |
1.00 |
ML-DSA-87 sign |
444540 cycles |
439764 cycles |
1.01 |
ML-DSA-87 verify |
204299 cycles |
204682 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: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
138648 cycles |
138735 cycles |
1.00 |
ML-DSA-44 sign |
487560 cycles |
486987 cycles |
1.00 |
ML-DSA-44 verify |
149564 cycles |
149555 cycles |
1.00 |
ML-DSA-65 keypair |
242376 cycles |
242521 cycles |
1.00 |
ML-DSA-65 sign |
793817 cycles |
794003 cycles |
1.00 |
ML-DSA-65 verify |
242345 cycles |
242185 cycles |
1.00 |
ML-DSA-87 keypair |
396084 cycles |
395897 cycles |
1.00 |
ML-DSA-87 sign |
1016723 cycles |
1016651 cycles |
1.00 |
ML-DSA-87 verify |
404583 cycles |
405058 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.
Graviton2
Details
| Benchmark suite | Current: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
112577 cycles |
112473 cycles |
1.00 |
ML-DSA-44 sign |
354041 cycles |
353898 cycles |
1.00 |
ML-DSA-44 verify |
117469 cycles |
117228 cycles |
1.00 |
ML-DSA-65 keypair |
194932 cycles |
194828 cycles |
1.00 |
ML-DSA-65 sign |
584289 cycles |
584065 cycles |
1.00 |
ML-DSA-65 verify |
193358 cycles |
193089 cycles |
1.00 |
ML-DSA-87 keypair |
321660 cycles |
322483 cycles |
1.00 |
ML-DSA-87 sign |
748126 cycles |
751038 cycles |
1.00 |
ML-DSA-87 verify |
319368 cycles |
320239 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.
Graviton2 (no-opt)
Details
| Benchmark suite | Current: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
220494 cycles |
212354 cycles |
1.04 |
ML-DSA-44 sign |
761434 cycles |
761222 cycles |
1.00 |
ML-DSA-44 verify |
230185 cycles |
230023 cycles |
1.00 |
ML-DSA-65 keypair |
376592 cycles |
376527 cycles |
1.00 |
ML-DSA-65 sign |
1248255 cycles |
1248654 cycles |
1.00 |
ML-DSA-65 verify |
372446 cycles |
372533 cycles |
1.00 |
ML-DSA-87 keypair |
603009 cycles |
601749 cycles |
1.00 |
ML-DSA-87 sign |
1587128 cycles |
1585220 cycles |
1.00 |
ML-DSA-87 verify |
618752 cycles |
617838 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.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Graviton2 (no-opt)'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.03.
| Benchmark suite | Current: 0437594 | Previous: c030803 | Ratio |
|---|---|---|---|
ML-DSA-44 keypair |
220494 cycles |
212354 cycles |
1.04 |
This comment was automatically generated by workflow using github-action-benchmark.
MLD_ALIGN had no portable definition:
__attribute__((aligned))for GCC/Clang,__declspec(align)for MSVC, and on anything else it expanded to nothing at all. A toolchain outside those two families therefore silently dropped the 32-byte alignment.C11 added _Alignas and C23 renamed it to alignas, so any compiler claiming either standard can express the constraint without an extension. Prefer those when
__STDC_VERSION__advertises them and keep the extensions as the fallback for C90 and C99.An alignment specifier belongs to the declaration specifiers, so unlike an attribute it cannot be attached to a typedef or a struct tag.
alignas(C23) and_Alignas(C11/C17) #1378