Skip to content

Commit d706cfc

Browse files
1 parent 71cc40b commit d706cfc

9 files changed

+2052
-403
lines changed

src/crypto_kem/mlkem/mlkem768/amd64/avx2/fips202.jinc

+65-268
Large diffs are not rendered by default.

src/crypto_kem/mlkem/mlkem768/amd64/avx2/gen_matrix.jinc

+782-110
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
require "params.jinc"
2+
3+
u8[32] sample_load_shuffle = {
4+
0, 1, 1, 2, 3, 4, 4, 5,
5+
6, 7, 7, 8, 9, 10, 10, 11,
6+
4, 5, 5, 6, 7, 8, 8, 9,
7+
10, 11, 11, 12, 13, 14, 14, 15
8+
};
9+
10+
u256 sample_ones = (32u8)
11+
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
12+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
13+
14+
u256 sample_mask = (16u16)
15+
[ 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF,
16+
0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF, 0x0FFF];
17+
18+
u256 sample_q = (16u16)
19+
[ MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q,
20+
MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q, MLKEM_Q];
21+
22+
u8[256*8] sample_shuffle_table =
23+
{
24+
-1, -1, -1, -1, -1, -1, -1, -1, // 0 - _0000 -- no good, upper bit 1, set to zero
25+
0, -1, -1, -1, -1, -1, -1, -1, // 1 - _0001 -- only one good at (byte) offset 0
26+
2, -1, -1, -1, -1, -1, -1, -1, // 2 - _0010 -- only one good at (byte) offset 2
27+
0, 2, -1, -1, -1, -1, -1, -1, // 3 - _0011 -- two good at (byte) offset 0 and 2
28+
4, -1, -1, -1, -1, -1, -1, -1, // 4 - _0100 -- only one good at (byte) offset 4
29+
0, 4, -1, -1, -1, -1, -1, -1, // 5 - _0101 -- ...
30+
2, 4, -1, -1, -1, -1, -1, -1, // 6 - _0110
31+
0, 2, 4, -1, -1, -1, -1, -1, // ...
32+
6, -1, -1, -1, -1, -1, -1, -1,
33+
0, 6, -1, -1, -1, -1, -1, -1,
34+
2, 6, -1, -1, -1, -1, -1, -1,
35+
0, 2, 6, -1, -1, -1, -1, -1,
36+
4, 6, -1, -1, -1, -1, -1, -1,
37+
0, 4, 6, -1, -1, -1, -1, -1,
38+
2, 4, 6, -1, -1, -1, -1, -1,
39+
0, 2, 4, 6, -1, -1, -1, -1,
40+
8, -1, -1, -1, -1, -1, -1, -1,
41+
0, 8, -1, -1, -1, -1, -1, -1,
42+
2, 8, -1, -1, -1, -1, -1, -1,
43+
0, 2, 8, -1, -1, -1, -1, -1,
44+
4, 8, -1, -1, -1, -1, -1, -1,
45+
0, 4, 8, -1, -1, -1, -1, -1,
46+
2, 4, 8, -1, -1, -1, -1, -1,
47+
0, 2, 4, 8, -1, -1, -1, -1,
48+
6, 8, -1, -1, -1, -1, -1, -1,
49+
0, 6, 8, -1, -1, -1, -1, -1,
50+
2, 6, 8, -1, -1, -1, -1, -1,
51+
0, 2, 6, 8, -1, -1, -1, -1,
52+
4, 6, 8, -1, -1, -1, -1, -1,
53+
0, 4, 6, 8, -1, -1, -1, -1,
54+
2, 4, 6, 8, -1, -1, -1, -1,
55+
0, 2, 4, 6, 8, -1, -1, -1,
56+
57+
//
58+
59+
10, -1, -1, -1, -1, -1, -1, -1,
60+
0, 10, -1, -1, -1, -1, -1, -1,
61+
2, 10, -1, -1, -1, -1, -1, -1,
62+
0, 2, 10, -1, -1, -1, -1, -1,
63+
4, 10, -1, -1, -1, -1, -1, -1,
64+
0, 4, 10, -1, -1, -1, -1, -1,
65+
2, 4, 10, -1, -1, -1, -1, -1,
66+
0, 2, 4, 10, -1, -1, -1, -1,
67+
6, 10, -1, -1, -1, -1, -1, -1,
68+
0, 6, 10, -1, -1, -1, -1, -1,
69+
2, 6, 10, -1, -1, -1, -1, -1,
70+
0, 2, 6, 10, -1, -1, -1, -1,
71+
4, 6, 10, -1, -1, -1, -1, -1,
72+
0, 4, 6, 10, -1, -1, -1, -1,
73+
2, 4, 6, 10, -1, -1, -1, -1,
74+
0, 2, 4, 6, 10, -1, -1, -1,
75+
8, 10, -1, -1, -1, -1, -1, -1,
76+
0, 8, 10, -1, -1, -1, -1, -1,
77+
2, 8, 10, -1, -1, -1, -1, -1,
78+
0, 2, 8, 10, -1, -1, -1, -1,
79+
4, 8, 10, -1, -1, -1, -1, -1,
80+
0, 4, 8, 10, -1, -1, -1, -1,
81+
2, 4, 8, 10, -1, -1, -1, -1,
82+
0, 2, 4, 8, 10, -1, -1, -1,
83+
6, 8, 10, -1, -1, -1, -1, -1,
84+
0, 6, 8, 10, -1, -1, -1, -1,
85+
2, 6, 8, 10, -1, -1, -1, -1,
86+
0, 2, 6, 8, 10, -1, -1, -1,
87+
4, 6, 8, 10, -1, -1, -1, -1,
88+
0, 4, 6, 8, 10, -1, -1, -1,
89+
2, 4, 6, 8, 10, -1, -1, -1,
90+
0, 2, 4, 6, 8, 10, -1, -1,
91+
92+
//
93+
94+
12,-1, -1, -1, -1, -1, -1, -1,
95+
0, 12, -1, -1, -1, -1, -1, -1,
96+
2, 12, -1, -1, -1, -1, -1, -1,
97+
0, 2, 12, -1, -1, -1, -1, -1,
98+
4, 12, -1, -1, -1, -1, -1, -1,
99+
0, 4, 12, -1, -1, -1, -1, -1,
100+
2, 4, 12, -1, -1, -1, -1, -1,
101+
0, 2, 4, 12, -1, -1, -1, -1,
102+
6, 12, -1, -1, -1, -1, -1, -1,
103+
0, 6, 12, -1, -1, -1, -1, -1,
104+
2, 6, 12, -1, -1, -1, -1, -1,
105+
0, 2, 6, 12, -1, -1, -1, -1,
106+
4, 6, 12, -1, -1, -1, -1, -1,
107+
0, 4, 6, 12, -1, -1, -1, -1,
108+
2, 4, 6, 12, -1, -1, -1, -1,
109+
0, 2, 4, 6, 12, -1, -1, -1,
110+
8, 12, -1, -1, -1, -1, -1, -1,
111+
0, 8, 12, -1, -1, -1, -1, -1,
112+
2, 8, 12, -1, -1, -1, -1, -1,
113+
0, 2, 8, 12, -1, -1, -1, -1,
114+
4, 8, 12, -1, -1, -1, -1, -1,
115+
0, 4, 8, 12, -1, -1, -1, -1,
116+
2, 4, 8, 12, -1, -1, -1, -1,
117+
0, 2, 4, 8, 12, -1, -1, -1,
118+
6, 8, 12, -1, -1, -1, -1, -1,
119+
0, 6, 8, 12, -1, -1, -1, -1,
120+
2, 6, 8, 12, -1, -1, -1, -1,
121+
0, 2, 6, 8, 12, -1, -1, -1,
122+
4, 6, 8, 12, -1, -1, -1, -1,
123+
0, 4, 6, 8, 12, -1, -1, -1,
124+
2, 4, 6, 8, 12, -1, -1, -1,
125+
0, 2, 4, 6, 8, 12, -1, -1,
126+
10, 12, -1, -1, -1, -1, -1, -1,
127+
0, 10, 12, -1, -1, -1, -1, -1,
128+
2, 10, 12, -1, -1, -1, -1, -1,
129+
0, 2, 10, 12, -1, -1, -1, -1,
130+
4, 10, 12, -1, -1, -1, -1, -1,
131+
0, 4, 10, 12, -1, -1, -1, -1,
132+
2, 4, 10, 12, -1, -1, -1, -1,
133+
0, 2, 4, 10, 12, -1, -1, -1,
134+
6, 10, 12, -1, -1, -1, -1, -1,
135+
0, 6, 10, 12, -1, -1, -1, -1,
136+
2, 6, 10, 12, -1, -1, -1, -1,
137+
0, 2, 6, 10, 12, -1, -1, -1,
138+
4, 6, 10, 12, -1, -1, -1, -1,
139+
0, 4, 6, 10, 12, -1, -1, -1,
140+
2, 4, 6, 10, 12, -1, -1, -1,
141+
0, 2, 4, 6, 10, 12, -1, -1,
142+
8, 10, 12, -1, -1, -1, -1, -1,
143+
0, 8, 10, 12, -1, -1, -1, -1,
144+
2, 8, 10, 12, -1, -1, -1, -1,
145+
0, 2, 8, 10, 12, -1, -1, -1,
146+
4, 8, 10, 12, -1, -1, -1, -1,
147+
0, 4, 8, 10, 12, -1, -1, -1,
148+
2, 4, 8, 10, 12, -1, -1, -1,
149+
0, 2, 4, 8, 10, 12, -1, -1,
150+
6, 8, 10, 12, -1, -1, -1, -1,
151+
0, 6, 8, 10, 12, -1, -1, -1,
152+
2, 6, 8, 10, 12, -1, -1, -1,
153+
0, 2, 6, 8, 10, 12, -1, -1,
154+
4, 6, 8, 10, 12, -1, -1, -1,
155+
0, 4, 6, 8, 10, 12, -1, -1,
156+
2, 4, 6, 8, 10, 12, -1, -1,
157+
0, 2, 4, 6, 8, 10, 12, -1,
158+
14, -1, -1, -1, -1, -1, -1, -1,
159+
0, 14, -1, -1, -1, -1, -1, -1,
160+
2, 14, -1, -1, -1, -1, -1, -1,
161+
0, 2, 14, -1, -1, -1, -1, -1,
162+
4, 14, -1, -1, -1, -1, -1, -1,
163+
0, 4, 14, -1, -1, -1, -1, -1,
164+
2, 4, 14, -1, -1, -1, -1, -1,
165+
0, 2, 4, 14, -1, -1, -1, -1,
166+
6, 14, -1, -1, -1, -1, -1, -1,
167+
0, 6, 14, -1, -1, -1, -1, -1,
168+
2, 6, 14, -1, -1, -1, -1, -1,
169+
0, 2, 6, 14, -1, -1, -1, -1,
170+
4, 6, 14, -1, -1, -1, -1, -1,
171+
0, 4, 6, 14, -1, -1, -1, -1,
172+
2, 4, 6, 14, -1, -1, -1, -1,
173+
0, 2, 4, 6, 14, -1, -1, -1,
174+
8, 14, -1, -1, -1, -1, -1, -1,
175+
0, 8, 14, -1, -1, -1, -1, -1,
176+
2, 8, 14, -1, -1, -1, -1, -1,
177+
0, 2, 8, 14, -1, -1, -1, -1,
178+
4, 8, 14, -1, -1, -1, -1, -1,
179+
0, 4, 8, 14, -1, -1, -1, -1,
180+
2, 4, 8, 14, -1, -1, -1, -1,
181+
0, 2, 4, 8, 14, -1, -1, -1,
182+
6, 8, 14, -1, -1, -1, -1, -1,
183+
0, 6, 8, 14, -1, -1, -1, -1,
184+
2, 6, 8, 14, -1, -1, -1, -1,
185+
0, 2, 6, 8, 14, -1, -1, -1,
186+
4, 6, 8, 14, -1, -1, -1, -1,
187+
0, 4, 6, 8, 14, -1, -1, -1,
188+
2, 4, 6, 8, 14, -1, -1, -1,
189+
0, 2, 4, 6, 8, 14, -1, -1,
190+
10, 14, -1, -1, -1, -1, -1, -1,
191+
0, 10, 14, -1, -1, -1, -1, -1,
192+
2, 10, 14, -1, -1, -1, -1, -1,
193+
0, 2, 10, 14, -1, -1, -1, -1,
194+
4, 10, 14, -1, -1, -1, -1, -1,
195+
0, 4, 10, 14, -1, -1, -1, -1,
196+
2, 4, 10, 14, -1, -1, -1, -1,
197+
0, 2, 4, 10, 14, -1, -1, -1,
198+
6, 10, 14, -1, -1, -1, -1, -1,
199+
0, 6, 10, 14, -1, -1, -1, -1,
200+
2, 6, 10, 14, -1, -1, -1, -1,
201+
0, 2, 6, 10, 14, -1, -1, -1,
202+
4, 6, 10, 14, -1, -1, -1, -1,
203+
0, 4, 6, 10, 14, -1, -1, -1,
204+
2, 4, 6, 10, 14, -1, -1, -1,
205+
0, 2, 4, 6, 10, 14, -1, -1,
206+
8, 10, 14, -1, -1, -1, -1, -1,
207+
0, 8, 10, 14, -1, -1, -1, -1,
208+
2, 8, 10, 14, -1, -1, -1, -1,
209+
0, 2, 8, 10, 14, -1, -1, -1,
210+
4, 8, 10, 14, -1, -1, -1, -1,
211+
0, 4, 8, 10, 14, -1, -1, -1,
212+
2, 4, 8, 10, 14, -1, -1, -1,
213+
0, 2, 4, 8, 10, 14, -1, -1,
214+
6, 8, 10, 14, -1, -1, -1, -1,
215+
0, 6, 8, 10, 14, -1, -1, -1,
216+
2, 6, 8, 10, 14, -1, -1, -1,
217+
0, 2, 6, 8, 10, 14, -1, -1,
218+
4, 6, 8, 10, 14, -1, -1, -1,
219+
0, 4, 6, 8, 10, 14, -1, -1,
220+
2, 4, 6, 8, 10, 14, -1, -1,
221+
0, 2, 4, 6, 8, 10, 14, -1,
222+
12, 14, -1, -1, -1, -1, -1, -1,
223+
0, 12, 14, -1, -1, -1, -1, -1,
224+
2, 12, 14, -1, -1, -1, -1, -1,
225+
0, 2, 12, 14, -1, -1, -1, -1,
226+
4, 12, 14, -1, -1, -1, -1, -1,
227+
0, 4, 12, 14, -1, -1, -1, -1,
228+
2, 4, 12, 14, -1, -1, -1, -1,
229+
0, 2, 4, 12, 14, -1, -1, -1,
230+
6, 12, 14, -1, -1, -1, -1, -1,
231+
0, 6, 12, 14, -1, -1, -1, -1,
232+
2, 6, 12, 14, -1, -1, -1, -1,
233+
0, 2, 6, 12, 14, -1, -1, -1,
234+
4, 6, 12, 14, -1, -1, -1, -1,
235+
0, 4, 6, 12, 14, -1, -1, -1,
236+
2, 4, 6, 12, 14, -1, -1, -1,
237+
0, 2, 4, 6, 12, 14, -1, -1,
238+
8, 12, 14, -1, -1, -1, -1, -1,
239+
0, 8, 12, 14, -1, -1, -1, -1,
240+
2, 8, 12, 14, -1, -1, -1, -1,
241+
0, 2, 8, 12, 14, -1, -1, -1,
242+
4, 8, 12, 14, -1, -1, -1, -1,
243+
0, 4, 8, 12, 14, -1, -1, -1,
244+
2, 4, 8, 12, 14, -1, -1, -1,
245+
0, 2, 4, 8, 12, 14, -1, -1,
246+
6, 8, 12, 14, -1, -1, -1, -1,
247+
0, 6, 8, 12, 14, -1, -1, -1,
248+
2, 6, 8, 12, 14, -1, -1, -1,
249+
0, 2, 6, 8, 12, 14, -1, -1,
250+
4, 6, 8, 12, 14, -1, -1, -1,
251+
0, 4, 6, 8, 12, 14, -1, -1,
252+
2, 4, 6, 8, 12, 14, -1, -1,
253+
0, 2, 4, 6, 8, 12, 14, -1,
254+
10, 12, 14, -1, -1, -1, -1, -1,
255+
0, 10, 12, 14, -1, -1, -1, -1,
256+
2, 10, 12, 14, -1, -1, -1, -1,
257+
0, 2, 10, 12, 14, -1, -1, -1,
258+
4, 10, 12, 14, -1, -1, -1, -1,
259+
0, 4, 10, 12, 14, -1, -1, -1,
260+
2, 4, 10, 12, 14, -1, -1, -1,
261+
0, 2, 4, 10, 12, 14, -1, -1,
262+
6, 10, 12, 14, -1, -1, -1, -1,
263+
0, 6, 10, 12, 14, -1, -1, -1,
264+
2, 6, 10, 12, 14, -1, -1, -1,
265+
0, 2, 6, 10, 12, 14, -1, -1,
266+
4, 6, 10, 12, 14, -1, -1, -1,
267+
0, 4, 6, 10, 12, 14, -1, -1,
268+
2, 4, 6, 10, 12, 14, -1, -1,
269+
0, 2, 4, 6, 10, 12, 14, -1,
270+
8, 10, 12, 14, -1, -1, -1, -1,
271+
0, 8, 10, 12, 14, -1, -1, -1,
272+
2, 8, 10, 12, 14, -1, -1, -1,
273+
0, 2, 8, 10, 12, 14, -1, -1,
274+
4, 8, 10, 12, 14, -1, -1, -1,
275+
0, 4, 8, 10, 12, 14, -1, -1,
276+
2, 4, 8, 10, 12, 14, -1, -1,
277+
0, 2, 4, 8, 10, 12, 14, -1,
278+
6, 8, 10, 12, 14, -1, -1, -1,
279+
0, 6, 8, 10, 12, 14, -1, -1,
280+
2, 6, 8, 10, 12, 14, -1, -1,
281+
0, 2, 6, 8, 10, 12, 14, -1,
282+
4, 6, 8, 10, 12, 14, -1, -1,
283+
0, 4, 6, 8, 10, 12, 14, -1,
284+
2, 4, 6, 8, 10, 12, 14, -1,
285+
0, 2, 4, 6, 8, 10, 12, 14
286+
};
287+

0 commit comments

Comments
 (0)