blob: 42e25f4817af75168dd53e516944ca2aa43a4ffa [file] [log] [blame]
Robert Sloan8ff03552017-06-14 12:40:58 -07001#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
2.data
3
4.align 16
5one:
6.quad 1,0
7two:
8.quad 2,0
9three:
10.quad 3,0
11four:
12.quad 4,0
13five:
14.quad 5,0
15six:
16.quad 6,0
17seven:
18.quad 7,0
19eight:
20.quad 8,0
21
22OR_MASK:
23.long 0x00000000,0x00000000,0x00000000,0x80000000
24poly:
25.quad 0x1, 0xc200000000000000
26mask:
27.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
28con1:
29.long 1,1,1,1
30con2:
31.long 0x1b,0x1b,0x1b,0x1b
32con3:
33.byte -1,-1,-1,-1,-1,-1,-1,-1,4,5,6,7,4,5,6,7
34and_mask:
35.long 0,0xffffffff, 0xffffffff, 0xffffffff
36.text
37.type GFMUL,@function
38.align 16
39GFMUL:
40.cfi_startproc
41 vpclmulqdq $0x00,%xmm1,%xmm0,%xmm2
42 vpclmulqdq $0x11,%xmm1,%xmm0,%xmm5
43 vpclmulqdq $0x10,%xmm1,%xmm0,%xmm3
44 vpclmulqdq $0x01,%xmm1,%xmm0,%xmm4
45 vpxor %xmm4,%xmm3,%xmm3
46 vpslldq $8,%xmm3,%xmm4
47 vpsrldq $8,%xmm3,%xmm3
48 vpxor %xmm4,%xmm2,%xmm2
49 vpxor %xmm3,%xmm5,%xmm5
50
51 vpclmulqdq $0x10,poly(%rip),%xmm2,%xmm3
52 vpshufd $78,%xmm2,%xmm4
53 vpxor %xmm4,%xmm3,%xmm2
54
55 vpclmulqdq $0x10,poly(%rip),%xmm2,%xmm3
56 vpshufd $78,%xmm2,%xmm4
57 vpxor %xmm4,%xmm3,%xmm2
58
59 vpxor %xmm5,%xmm2,%xmm0
60 .byte 0xf3,0xc3
61.cfi_endproc
62.size GFMUL, .-GFMUL
63.globl aesgcmsiv_htable_init
64.hidden aesgcmsiv_htable_init
65.type aesgcmsiv_htable_init,@function
66.align 16
67aesgcmsiv_htable_init:
68.cfi_startproc
69 vmovdqa (%rsi),%xmm0
70 vmovdqa %xmm0,%xmm1
71 vmovdqa %xmm0,(%rdi)
72 call GFMUL
73 vmovdqa %xmm0,16(%rdi)
74 call GFMUL
75 vmovdqa %xmm0,32(%rdi)
76 call GFMUL
77 vmovdqa %xmm0,48(%rdi)
78 call GFMUL
79 vmovdqa %xmm0,64(%rdi)
80 call GFMUL
81 vmovdqa %xmm0,80(%rdi)
82 call GFMUL
83 vmovdqa %xmm0,96(%rdi)
84 call GFMUL
85 vmovdqa %xmm0,112(%rdi)
86 .byte 0xf3,0xc3
87.cfi_endproc
88.size aesgcmsiv_htable_init, .-aesgcmsiv_htable_init
89.globl aesgcmsiv_htable6_init
90.hidden aesgcmsiv_htable6_init
91.type aesgcmsiv_htable6_init,@function
92.align 16
93aesgcmsiv_htable6_init:
94.cfi_startproc
95 vmovdqa (%rsi),%xmm0
96 vmovdqa %xmm0,%xmm1
97 vmovdqa %xmm0,(%rdi)
98 call GFMUL
99 vmovdqa %xmm0,16(%rdi)
100 call GFMUL
101 vmovdqa %xmm0,32(%rdi)
102 call GFMUL
103 vmovdqa %xmm0,48(%rdi)
104 call GFMUL
105 vmovdqa %xmm0,64(%rdi)
106 call GFMUL
107 vmovdqa %xmm0,80(%rdi)
108 .byte 0xf3,0xc3
109.cfi_endproc
110.size aesgcmsiv_htable6_init, .-aesgcmsiv_htable6_init
111.globl aesgcmsiv_htable_polyval
112.hidden aesgcmsiv_htable_polyval
113.type aesgcmsiv_htable_polyval,@function
114.align 16
115aesgcmsiv_htable_polyval:
116.cfi_startproc
117 testq %rdx,%rdx
118 jnz .Lhtable_polyval_start
119 .byte 0xf3,0xc3
120
121.Lhtable_polyval_start:
122 vzeroall
123
124
125
126 movq %rdx,%r11
127 andq $127,%r11
128
129 jz .Lhtable_polyval_no_prefix
130
131 vpxor %xmm9,%xmm9,%xmm9
132 vmovdqa (%rcx),%xmm1
133 subq %r11,%rdx
134
135 subq $16,%r11
136
137
138 vmovdqu (%rsi),%xmm0
139 vpxor %xmm1,%xmm0,%xmm0
140
141 vpclmulqdq $0x01,(%rdi,%r11,1),%xmm0,%xmm5
142 vpclmulqdq $0x00,(%rdi,%r11,1),%xmm0,%xmm3
143 vpclmulqdq $0x11,(%rdi,%r11,1),%xmm0,%xmm4
144 vpclmulqdq $0x10,(%rdi,%r11,1),%xmm0,%xmm6
145 vpxor %xmm6,%xmm5,%xmm5
146
147 leaq 16(%rsi),%rsi
148 testq %r11,%r11
149 jnz .Lhtable_polyval_prefix_loop
150 jmp .Lhtable_polyval_prefix_complete
151
152
153.align 64
154.Lhtable_polyval_prefix_loop:
155 subq $16,%r11
156
157 vmovdqu (%rsi),%xmm0
158
159 vpclmulqdq $0x00,(%rdi,%r11,1),%xmm0,%xmm6
160 vpxor %xmm6,%xmm3,%xmm3
161 vpclmulqdq $0x11,(%rdi,%r11,1),%xmm0,%xmm6
162 vpxor %xmm6,%xmm4,%xmm4
163 vpclmulqdq $0x01,(%rdi,%r11,1),%xmm0,%xmm6
164 vpxor %xmm6,%xmm5,%xmm5
165 vpclmulqdq $0x10,(%rdi,%r11,1),%xmm0,%xmm6
166 vpxor %xmm6,%xmm5,%xmm5
167
168 testq %r11,%r11
169
170 leaq 16(%rsi),%rsi
171
172 jnz .Lhtable_polyval_prefix_loop
173
174.Lhtable_polyval_prefix_complete:
175 vpsrldq $8,%xmm5,%xmm6
176 vpslldq $8,%xmm5,%xmm5
177
178 vpxor %xmm6,%xmm4,%xmm9
179 vpxor %xmm5,%xmm3,%xmm1
180
181 jmp .Lhtable_polyval_main_loop
182
183.Lhtable_polyval_no_prefix:
184
185
186
187
188 vpxor %xmm1,%xmm1,%xmm1
189 vmovdqa (%rcx),%xmm9
190
191.align 64
192.Lhtable_polyval_main_loop:
193 subq $0x80,%rdx
194 jb .Lhtable_polyval_out
195
196 vmovdqu 112(%rsi),%xmm0
197
198 vpclmulqdq $0x01,(%rdi),%xmm0,%xmm5
199 vpclmulqdq $0x00,(%rdi),%xmm0,%xmm3
200 vpclmulqdq $0x11,(%rdi),%xmm0,%xmm4
201 vpclmulqdq $0x10,(%rdi),%xmm0,%xmm6
202 vpxor %xmm6,%xmm5,%xmm5
203
204
205 vmovdqu 96(%rsi),%xmm0
206 vpclmulqdq $0x01,16(%rdi),%xmm0,%xmm6
207 vpxor %xmm6,%xmm5,%xmm5
208 vpclmulqdq $0x00,16(%rdi),%xmm0,%xmm6
209 vpxor %xmm6,%xmm3,%xmm3
210 vpclmulqdq $0x11,16(%rdi),%xmm0,%xmm6
211 vpxor %xmm6,%xmm4,%xmm4
212 vpclmulqdq $0x10,16(%rdi),%xmm0,%xmm6
213 vpxor %xmm6,%xmm5,%xmm5
214
215
216
217 vmovdqu 80(%rsi),%xmm0
218
219 vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm7
220 vpalignr $8,%xmm1,%xmm1,%xmm1
221
222 vpclmulqdq $0x01,32(%rdi),%xmm0,%xmm6
223 vpxor %xmm6,%xmm5,%xmm5
224 vpclmulqdq $0x00,32(%rdi),%xmm0,%xmm6
225 vpxor %xmm6,%xmm3,%xmm3
226 vpclmulqdq $0x11,32(%rdi),%xmm0,%xmm6
227 vpxor %xmm6,%xmm4,%xmm4
228 vpclmulqdq $0x10,32(%rdi),%xmm0,%xmm6
229 vpxor %xmm6,%xmm5,%xmm5
230
231
232 vpxor %xmm7,%xmm1,%xmm1
233
234 vmovdqu 64(%rsi),%xmm0
235
236 vpclmulqdq $0x01,48(%rdi),%xmm0,%xmm6
237 vpxor %xmm6,%xmm5,%xmm5
238 vpclmulqdq $0x00,48(%rdi),%xmm0,%xmm6
239 vpxor %xmm6,%xmm3,%xmm3
240 vpclmulqdq $0x11,48(%rdi),%xmm0,%xmm6
241 vpxor %xmm6,%xmm4,%xmm4
242 vpclmulqdq $0x10,48(%rdi),%xmm0,%xmm6
243 vpxor %xmm6,%xmm5,%xmm5
244
245
246 vmovdqu 48(%rsi),%xmm0
247
248 vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm7
249 vpalignr $8,%xmm1,%xmm1,%xmm1
250
251 vpclmulqdq $0x01,64(%rdi),%xmm0,%xmm6
252 vpxor %xmm6,%xmm5,%xmm5
253 vpclmulqdq $0x00,64(%rdi),%xmm0,%xmm6
254 vpxor %xmm6,%xmm3,%xmm3
255 vpclmulqdq $0x11,64(%rdi),%xmm0,%xmm6
256 vpxor %xmm6,%xmm4,%xmm4
257 vpclmulqdq $0x10,64(%rdi),%xmm0,%xmm6
258 vpxor %xmm6,%xmm5,%xmm5
259
260
261 vpxor %xmm7,%xmm1,%xmm1
262
263 vmovdqu 32(%rsi),%xmm0
264
265 vpclmulqdq $0x01,80(%rdi),%xmm0,%xmm6
266 vpxor %xmm6,%xmm5,%xmm5
267 vpclmulqdq $0x00,80(%rdi),%xmm0,%xmm6
268 vpxor %xmm6,%xmm3,%xmm3
269 vpclmulqdq $0x11,80(%rdi),%xmm0,%xmm6
270 vpxor %xmm6,%xmm4,%xmm4
271 vpclmulqdq $0x10,80(%rdi),%xmm0,%xmm6
272 vpxor %xmm6,%xmm5,%xmm5
273
274
275 vpxor %xmm9,%xmm1,%xmm1
276
277 vmovdqu 16(%rsi),%xmm0
278
279 vpclmulqdq $0x01,96(%rdi),%xmm0,%xmm6
280 vpxor %xmm6,%xmm5,%xmm5
281 vpclmulqdq $0x00,96(%rdi),%xmm0,%xmm6
282 vpxor %xmm6,%xmm3,%xmm3
283 vpclmulqdq $0x11,96(%rdi),%xmm0,%xmm6
284 vpxor %xmm6,%xmm4,%xmm4
285 vpclmulqdq $0x10,96(%rdi),%xmm0,%xmm6
286 vpxor %xmm6,%xmm5,%xmm5
287
288
289 vmovdqu 0(%rsi),%xmm0
290 vpxor %xmm1,%xmm0,%xmm0
291
292 vpclmulqdq $0x01,112(%rdi),%xmm0,%xmm6
293 vpxor %xmm6,%xmm5,%xmm5
294 vpclmulqdq $0x00,112(%rdi),%xmm0,%xmm6
295 vpxor %xmm6,%xmm3,%xmm3
296 vpclmulqdq $0x11,112(%rdi),%xmm0,%xmm6
297 vpxor %xmm6,%xmm4,%xmm4
298 vpclmulqdq $0x10,112(%rdi),%xmm0,%xmm6
299 vpxor %xmm6,%xmm5,%xmm5
300
301
302 vpsrldq $8,%xmm5,%xmm6
303 vpslldq $8,%xmm5,%xmm5
304
305 vpxor %xmm6,%xmm4,%xmm9
306 vpxor %xmm5,%xmm3,%xmm1
307
308 leaq 128(%rsi),%rsi
309 jmp .Lhtable_polyval_main_loop
310
311
312
313.Lhtable_polyval_out:
314 vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm6
315 vpalignr $8,%xmm1,%xmm1,%xmm1
316 vpxor %xmm6,%xmm1,%xmm1
317
318 vpclmulqdq $0x10,poly(%rip),%xmm1,%xmm6
319 vpalignr $8,%xmm1,%xmm1,%xmm1
320 vpxor %xmm6,%xmm1,%xmm1
321 vpxor %xmm9,%xmm1,%xmm1
322
323 vmovdqu %xmm1,(%rcx)
324 vzeroupper
325 .byte 0xf3,0xc3
326.cfi_endproc
327.size aesgcmsiv_htable_polyval,.-aesgcmsiv_htable_polyval
328.globl aesgcmsiv_polyval_horner
329.hidden aesgcmsiv_polyval_horner
330.type aesgcmsiv_polyval_horner,@function
331.align 16
332aesgcmsiv_polyval_horner:
333.cfi_startproc
334 testq %rcx,%rcx
335 jnz .Lpolyval_horner_start
336 .byte 0xf3,0xc3
337
338.Lpolyval_horner_start:
339
340
341
342 xorq %r10,%r10
343 shlq $4,%rcx
344
345 vmovdqa (%rsi),%xmm1
346 vmovdqa (%rdi),%xmm0
347
348.Lpolyval_horner_loop:
349 vpxor (%rdx,%r10,1),%xmm0,%xmm0
350 call GFMUL
351
352 addq $16,%r10
353 cmpq %r10,%rcx
354 jne .Lpolyval_horner_loop
355
356
357 vmovdqa %xmm0,(%rdi)
358 .byte 0xf3,0xc3
359.cfi_endproc
360.size aesgcmsiv_polyval_horner,.-aesgcmsiv_polyval_horner
361.globl aes128gcmsiv_aes_ks
362.hidden aes128gcmsiv_aes_ks
363.type aes128gcmsiv_aes_ks,@function
364.align 16
365aes128gcmsiv_aes_ks:
366.cfi_startproc
367 vmovdqu (%rdi),%xmm1
368 vmovdqa %xmm1,(%rsi)
369
370 vmovdqa con1(%rip),%xmm0
371 vmovdqa mask(%rip),%xmm15
372
373 movq $8,%rax
374
375.Lks128_loop:
376 addq $16,%rsi
377 subq $1,%rax
378 vpshufb %xmm15,%xmm1,%xmm2
379 vaesenclast %xmm0,%xmm2,%xmm2
380 vpslld $1,%xmm0,%xmm0
381 vpslldq $4,%xmm1,%xmm3
382 vpxor %xmm3,%xmm1,%xmm1
383 vpslldq $4,%xmm3,%xmm3
384 vpxor %xmm3,%xmm1,%xmm1
385 vpslldq $4,%xmm3,%xmm3
386 vpxor %xmm3,%xmm1,%xmm1
387 vpxor %xmm2,%xmm1,%xmm1
388 vmovdqa %xmm1,(%rsi)
389 jne .Lks128_loop
390
391 vmovdqa con2(%rip),%xmm0
392 vpshufb %xmm15,%xmm1,%xmm2
393 vaesenclast %xmm0,%xmm2,%xmm2
394 vpslld $1,%xmm0,%xmm0
395 vpslldq $4,%xmm1,%xmm3
396 vpxor %xmm3,%xmm1,%xmm1
397 vpslldq $4,%xmm3,%xmm3
398 vpxor %xmm3,%xmm1,%xmm1
399 vpslldq $4,%xmm3,%xmm3
400 vpxor %xmm3,%xmm1,%xmm1
401 vpxor %xmm2,%xmm1,%xmm1
402 vmovdqa %xmm1,16(%rsi)
403
404 vpshufb %xmm15,%xmm1,%xmm2
405 vaesenclast %xmm0,%xmm2,%xmm2
406 vpslldq $4,%xmm1,%xmm3
407 vpxor %xmm3,%xmm1,%xmm1
408 vpslldq $4,%xmm3,%xmm3
409 vpxor %xmm3,%xmm1,%xmm1
410 vpslldq $4,%xmm3,%xmm3
411 vpxor %xmm3,%xmm1,%xmm1
412 vpxor %xmm2,%xmm1,%xmm1
413 vmovdqa %xmm1,32(%rsi)
414 .byte 0xf3,0xc3
415.cfi_endproc
416.size aes128gcmsiv_aes_ks,.-aes128gcmsiv_aes_ks
417.globl aes256gcmsiv_aes_ks
418.hidden aes256gcmsiv_aes_ks
419.type aes256gcmsiv_aes_ks,@function
420.align 16
421aes256gcmsiv_aes_ks:
422.cfi_startproc
423 vmovdqu (%rdi),%xmm1
424 vmovdqu 16(%rdi),%xmm3
425 vmovdqa %xmm1,(%rsi)
426 vmovdqa %xmm3,16(%rsi)
427 vmovdqa con1(%rip),%xmm0
428 vmovdqa mask(%rip),%xmm15
429 vpxor %xmm14,%xmm14,%xmm14
430 movq $6,%rax
431
432.Lks256_loop:
433 addq $32,%rsi
434 subq $1,%rax
435 vpshufb %xmm15,%xmm3,%xmm2
436 vaesenclast %xmm0,%xmm2,%xmm2
437 vpslld $1,%xmm0,%xmm0
438 vpsllq $32,%xmm1,%xmm4
439 vpxor %xmm4,%xmm1,%xmm1
440 vpshufb con3(%rip),%xmm1,%xmm4
441 vpxor %xmm4,%xmm1,%xmm1
442 vpxor %xmm2,%xmm1,%xmm1
443 vmovdqa %xmm1,(%rsi)
444 vpshufd $0xff,%xmm1,%xmm2
445 vaesenclast %xmm14,%xmm2,%xmm2
446 vpsllq $32,%xmm3,%xmm4
447 vpxor %xmm4,%xmm3,%xmm3
448 vpshufb con3(%rip),%xmm3,%xmm4
449 vpxor %xmm4,%xmm3,%xmm3
450 vpxor %xmm2,%xmm3,%xmm3
451 vmovdqa %xmm3,16(%rsi)
452 jne .Lks256_loop
453
454 vpshufb %xmm15,%xmm3,%xmm2
455 vaesenclast %xmm0,%xmm2,%xmm2
456 vpsllq $32,%xmm1,%xmm4
457 vpxor %xmm4,%xmm1,%xmm1
458 vpshufb con3(%rip),%xmm1,%xmm4
459 vpxor %xmm4,%xmm1,%xmm1
460 vpxor %xmm2,%xmm1,%xmm1
461 vmovdqa %xmm1,32(%rsi)
462 .byte 0xf3,0xc3
463.cfi_endproc
464.globl aes128gcmsiv_aes_ks_enc_x1
465.hidden aes128gcmsiv_aes_ks_enc_x1
466.type aes128gcmsiv_aes_ks_enc_x1,@function
467.align 16
468aes128gcmsiv_aes_ks_enc_x1:
469.cfi_startproc
470 vmovdqa (%rcx),%xmm1
471 vmovdqa 0(%rdi),%xmm4
472
473 vmovdqa %xmm1,(%rdx)
474 vpxor %xmm1,%xmm4,%xmm4
475
476 vmovdqa con1(%rip),%xmm0
477 vmovdqa mask(%rip),%xmm15
478
479 vpshufb %xmm15,%xmm1,%xmm2
480 vaesenclast %xmm0,%xmm2,%xmm2
481 vpslld $1,%xmm0,%xmm0
482 vpsllq $32,%xmm1,%xmm3
483 vpxor %xmm3,%xmm1,%xmm1
484 vpshufb con3(%rip),%xmm1,%xmm3
485 vpxor %xmm3,%xmm1,%xmm1
486 vpxor %xmm2,%xmm1,%xmm1
487
488 vaesenc %xmm1,%xmm4,%xmm4
489 vmovdqa %xmm1,16(%rdx)
490
491 vpshufb %xmm15,%xmm1,%xmm2
492 vaesenclast %xmm0,%xmm2,%xmm2
493 vpslld $1,%xmm0,%xmm0
494 vpsllq $32,%xmm1,%xmm3
495 vpxor %xmm3,%xmm1,%xmm1
496 vpshufb con3(%rip),%xmm1,%xmm3
497 vpxor %xmm3,%xmm1,%xmm1
498 vpxor %xmm2,%xmm1,%xmm1
499
500 vaesenc %xmm1,%xmm4,%xmm4
501 vmovdqa %xmm1,32(%rdx)
502
503 vpshufb %xmm15,%xmm1,%xmm2
504 vaesenclast %xmm0,%xmm2,%xmm2
505 vpslld $1,%xmm0,%xmm0
506 vpsllq $32,%xmm1,%xmm3
507 vpxor %xmm3,%xmm1,%xmm1
508 vpshufb con3(%rip),%xmm1,%xmm3
509 vpxor %xmm3,%xmm1,%xmm1
510 vpxor %xmm2,%xmm1,%xmm1
511
512 vaesenc %xmm1,%xmm4,%xmm4
513 vmovdqa %xmm1,48(%rdx)
514
515 vpshufb %xmm15,%xmm1,%xmm2
516 vaesenclast %xmm0,%xmm2,%xmm2
517 vpslld $1,%xmm0,%xmm0
518 vpsllq $32,%xmm1,%xmm3
519 vpxor %xmm3,%xmm1,%xmm1
520 vpshufb con3(%rip),%xmm1,%xmm3
521 vpxor %xmm3,%xmm1,%xmm1
522 vpxor %xmm2,%xmm1,%xmm1
523
524 vaesenc %xmm1,%xmm4,%xmm4
525 vmovdqa %xmm1,64(%rdx)
526
527 vpshufb %xmm15,%xmm1,%xmm2
528 vaesenclast %xmm0,%xmm2,%xmm2
529 vpslld $1,%xmm0,%xmm0
530 vpsllq $32,%xmm1,%xmm3
531 vpxor %xmm3,%xmm1,%xmm1
532 vpshufb con3(%rip),%xmm1,%xmm3
533 vpxor %xmm3,%xmm1,%xmm1
534 vpxor %xmm2,%xmm1,%xmm1
535
536 vaesenc %xmm1,%xmm4,%xmm4
537 vmovdqa %xmm1,80(%rdx)
538
539 vpshufb %xmm15,%xmm1,%xmm2
540 vaesenclast %xmm0,%xmm2,%xmm2
541 vpslld $1,%xmm0,%xmm0
542 vpsllq $32,%xmm1,%xmm3
543 vpxor %xmm3,%xmm1,%xmm1
544 vpshufb con3(%rip),%xmm1,%xmm3
545 vpxor %xmm3,%xmm1,%xmm1
546 vpxor %xmm2,%xmm1,%xmm1
547
548 vaesenc %xmm1,%xmm4,%xmm4
549 vmovdqa %xmm1,96(%rdx)
550
551 vpshufb %xmm15,%xmm1,%xmm2
552 vaesenclast %xmm0,%xmm2,%xmm2
553 vpslld $1,%xmm0,%xmm0
554 vpsllq $32,%xmm1,%xmm3
555 vpxor %xmm3,%xmm1,%xmm1
556 vpshufb con3(%rip),%xmm1,%xmm3
557 vpxor %xmm3,%xmm1,%xmm1
558 vpxor %xmm2,%xmm1,%xmm1
559
560 vaesenc %xmm1,%xmm4,%xmm4
561 vmovdqa %xmm1,112(%rdx)
562
563 vpshufb %xmm15,%xmm1,%xmm2
564 vaesenclast %xmm0,%xmm2,%xmm2
565 vpslld $1,%xmm0,%xmm0
566 vpsllq $32,%xmm1,%xmm3
567 vpxor %xmm3,%xmm1,%xmm1
568 vpshufb con3(%rip),%xmm1,%xmm3
569 vpxor %xmm3,%xmm1,%xmm1
570 vpxor %xmm2,%xmm1,%xmm1
571
572 vaesenc %xmm1,%xmm4,%xmm4
573 vmovdqa %xmm1,128(%rdx)
574
575
576 vmovdqa con2(%rip),%xmm0
577
578 vpshufb %xmm15,%xmm1,%xmm2
579 vaesenclast %xmm0,%xmm2,%xmm2
580 vpslld $1,%xmm0,%xmm0
581 vpsllq $32,%xmm1,%xmm3
582 vpxor %xmm3,%xmm1,%xmm1
583 vpshufb con3(%rip),%xmm1,%xmm3
584 vpxor %xmm3,%xmm1,%xmm1
585 vpxor %xmm2,%xmm1,%xmm1
586
587 vaesenc %xmm1,%xmm4,%xmm4
588 vmovdqa %xmm1,144(%rdx)
589
590 vpshufb %xmm15,%xmm1,%xmm2
591 vaesenclast %xmm0,%xmm2,%xmm2
592 vpsllq $32,%xmm1,%xmm3
593 vpxor %xmm3,%xmm1,%xmm1
594 vpshufb con3(%rip),%xmm1,%xmm3
595 vpxor %xmm3,%xmm1,%xmm1
596 vpxor %xmm2,%xmm1,%xmm1
597
598 vaesenclast %xmm1,%xmm4,%xmm4
599 vmovdqa %xmm1,160(%rdx)
600
601
602 vmovdqa %xmm4,0(%rsi)
603 .byte 0xf3,0xc3
604.cfi_endproc
605.size aes128gcmsiv_aes_ks_enc_x1,.-aes128gcmsiv_aes_ks_enc_x1
606.globl aes128gcmsiv_kdf
607.hidden aes128gcmsiv_kdf
608.type aes128gcmsiv_kdf,@function
609.align 16
610aes128gcmsiv_kdf:
611.cfi_startproc
612
613
614
615
616 vmovdqa (%rdx),%xmm1
617 vmovdqa 0(%rdi),%xmm9
618 vmovdqa and_mask(%rip),%xmm12
619 vmovdqa one(%rip),%xmm13
620 vpshufd $0x90,%xmm9,%xmm9
621 vpand %xmm12,%xmm9,%xmm9
622 vpaddd %xmm13,%xmm9,%xmm10
623 vpaddd %xmm13,%xmm10,%xmm11
624 vpaddd %xmm13,%xmm11,%xmm12
625
626 vpxor %xmm1,%xmm9,%xmm9
627 vpxor %xmm1,%xmm10,%xmm10
628 vpxor %xmm1,%xmm11,%xmm11
629 vpxor %xmm1,%xmm12,%xmm12
630
631 vmovdqa 16(%rdx),%xmm1
632 vaesenc %xmm1,%xmm9,%xmm9
633 vaesenc %xmm1,%xmm10,%xmm10
634 vaesenc %xmm1,%xmm11,%xmm11
635 vaesenc %xmm1,%xmm12,%xmm12
636
637 vmovdqa 32(%rdx),%xmm2
638 vaesenc %xmm2,%xmm9,%xmm9
639 vaesenc %xmm2,%xmm10,%xmm10
640 vaesenc %xmm2,%xmm11,%xmm11
641 vaesenc %xmm2,%xmm12,%xmm12
642
643 vmovdqa 48(%rdx),%xmm1
644 vaesenc %xmm1,%xmm9,%xmm9
645 vaesenc %xmm1,%xmm10,%xmm10
646 vaesenc %xmm1,%xmm11,%xmm11
647 vaesenc %xmm1,%xmm12,%xmm12
648
649 vmovdqa 64(%rdx),%xmm2
650 vaesenc %xmm2,%xmm9,%xmm9
651 vaesenc %xmm2,%xmm10,%xmm10
652 vaesenc %xmm2,%xmm11,%xmm11
653 vaesenc %xmm2,%xmm12,%xmm12
654
655 vmovdqa 80(%rdx),%xmm1
656 vaesenc %xmm1,%xmm9,%xmm9
657 vaesenc %xmm1,%xmm10,%xmm10
658 vaesenc %xmm1,%xmm11,%xmm11
659 vaesenc %xmm1,%xmm12,%xmm12
660
661 vmovdqa 96(%rdx),%xmm2
662 vaesenc %xmm2,%xmm9,%xmm9
663 vaesenc %xmm2,%xmm10,%xmm10
664 vaesenc %xmm2,%xmm11,%xmm11
665 vaesenc %xmm2,%xmm12,%xmm12
666
667 vmovdqa 112(%rdx),%xmm1
668 vaesenc %xmm1,%xmm9,%xmm9
669 vaesenc %xmm1,%xmm10,%xmm10
670 vaesenc %xmm1,%xmm11,%xmm11
671 vaesenc %xmm1,%xmm12,%xmm12
672
673 vmovdqa 128(%rdx),%xmm2
674 vaesenc %xmm2,%xmm9,%xmm9
675 vaesenc %xmm2,%xmm10,%xmm10
676 vaesenc %xmm2,%xmm11,%xmm11
677 vaesenc %xmm2,%xmm12,%xmm12
678
679 vmovdqa 144(%rdx),%xmm1
680 vaesenc %xmm1,%xmm9,%xmm9
681 vaesenc %xmm1,%xmm10,%xmm10
682 vaesenc %xmm1,%xmm11,%xmm11
683 vaesenc %xmm1,%xmm12,%xmm12
684
685 vmovdqa 160(%rdx),%xmm2
686 vaesenclast %xmm2,%xmm9,%xmm9
687 vaesenclast %xmm2,%xmm10,%xmm10
688 vaesenclast %xmm2,%xmm11,%xmm11
689 vaesenclast %xmm2,%xmm12,%xmm12
690
691
692 vmovdqa %xmm9,0(%rsi)
693 vmovdqa %xmm10,16(%rsi)
694 vmovdqa %xmm11,32(%rsi)
695 vmovdqa %xmm12,48(%rsi)
696 .byte 0xf3,0xc3
697.cfi_endproc
698.size aes128gcmsiv_kdf,.-aes128gcmsiv_kdf
699.globl aes128gcmsiv_enc_msg_x4
700.hidden aes128gcmsiv_enc_msg_x4
701.type aes128gcmsiv_enc_msg_x4,@function
702.align 16
703aes128gcmsiv_enc_msg_x4:
704.cfi_startproc
705 testq %r8,%r8
706 jnz .L128_enc_msg_x4_start
707 .byte 0xf3,0xc3
708
709.L128_enc_msg_x4_start:
710 pushq %r12
711.cfi_adjust_cfa_offset 8
712.cfi_offset %r12,-16
713 pushq %r13
714.cfi_adjust_cfa_offset 8
715.cfi_offset %r13,-24
716
717 shrq $4,%r8
718 movq %r8,%r10
719 shlq $62,%r10
720 shrq $62,%r10
721
722
723 vmovdqa (%rdx),%xmm15
724 vpor OR_MASK(%rip),%xmm15,%xmm15
725
726 vmovdqu four(%rip),%xmm4
727 vmovdqa %xmm15,%xmm0
728 vpaddd one(%rip),%xmm15,%xmm1
729 vpaddd two(%rip),%xmm15,%xmm2
730 vpaddd three(%rip),%xmm15,%xmm3
731
732 shrq $2,%r8
733 je .L128_enc_msg_x4_check_remainder
734
735 subq $64,%rsi
736 subq $64,%rdi
737
738.L128_enc_msg_x4_loop1:
739 addq $64,%rsi
740 addq $64,%rdi
741
742 vmovdqa %xmm0,%xmm5
743 vmovdqa %xmm1,%xmm6
744 vmovdqa %xmm2,%xmm7
745 vmovdqa %xmm3,%xmm8
746
747 vpxor (%rcx),%xmm5,%xmm5
748 vpxor (%rcx),%xmm6,%xmm6
749 vpxor (%rcx),%xmm7,%xmm7
750 vpxor (%rcx),%xmm8,%xmm8
751
752 vmovdqu 16(%rcx),%xmm12
753 vaesenc %xmm12,%xmm5,%xmm5
754 vaesenc %xmm12,%xmm6,%xmm6
755 vaesenc %xmm12,%xmm7,%xmm7
756 vaesenc %xmm12,%xmm8,%xmm8
757
758 vpaddd %xmm4,%xmm0,%xmm0
759 vmovdqu 32(%rcx),%xmm12
760 vaesenc %xmm12,%xmm5,%xmm5
761 vaesenc %xmm12,%xmm6,%xmm6
762 vaesenc %xmm12,%xmm7,%xmm7
763 vaesenc %xmm12,%xmm8,%xmm8
764
765 vpaddd %xmm4,%xmm1,%xmm1
766 vmovdqu 48(%rcx),%xmm12
767 vaesenc %xmm12,%xmm5,%xmm5
768 vaesenc %xmm12,%xmm6,%xmm6
769 vaesenc %xmm12,%xmm7,%xmm7
770 vaesenc %xmm12,%xmm8,%xmm8
771
772 vpaddd %xmm4,%xmm2,%xmm2
773 vmovdqu 64(%rcx),%xmm12
774 vaesenc %xmm12,%xmm5,%xmm5
775 vaesenc %xmm12,%xmm6,%xmm6
776 vaesenc %xmm12,%xmm7,%xmm7
777 vaesenc %xmm12,%xmm8,%xmm8
778
779 vpaddd %xmm4,%xmm3,%xmm3
780
781 vmovdqu 80(%rcx),%xmm12
782 vaesenc %xmm12,%xmm5,%xmm5
783 vaesenc %xmm12,%xmm6,%xmm6
784 vaesenc %xmm12,%xmm7,%xmm7
785 vaesenc %xmm12,%xmm8,%xmm8
786
787 vmovdqu 96(%rcx),%xmm12
788 vaesenc %xmm12,%xmm5,%xmm5
789 vaesenc %xmm12,%xmm6,%xmm6
790 vaesenc %xmm12,%xmm7,%xmm7
791 vaesenc %xmm12,%xmm8,%xmm8
792
793 vmovdqu 112(%rcx),%xmm12
794 vaesenc %xmm12,%xmm5,%xmm5
795 vaesenc %xmm12,%xmm6,%xmm6
796 vaesenc %xmm12,%xmm7,%xmm7
797 vaesenc %xmm12,%xmm8,%xmm8
798
799 vmovdqu 128(%rcx),%xmm12
800 vaesenc %xmm12,%xmm5,%xmm5
801 vaesenc %xmm12,%xmm6,%xmm6
802 vaesenc %xmm12,%xmm7,%xmm7
803 vaesenc %xmm12,%xmm8,%xmm8
804
805 vmovdqu 144(%rcx),%xmm12
806 vaesenc %xmm12,%xmm5,%xmm5
807 vaesenc %xmm12,%xmm6,%xmm6
808 vaesenc %xmm12,%xmm7,%xmm7
809 vaesenc %xmm12,%xmm8,%xmm8
810
811 vmovdqu 160(%rcx),%xmm12
812 vaesenclast %xmm12,%xmm5,%xmm5
813 vaesenclast %xmm12,%xmm6,%xmm6
814 vaesenclast %xmm12,%xmm7,%xmm7
815 vaesenclast %xmm12,%xmm8,%xmm8
816
817
818
819 vpxor 0(%rdi),%xmm5,%xmm5
820 vpxor 16(%rdi),%xmm6,%xmm6
821 vpxor 32(%rdi),%xmm7,%xmm7
822 vpxor 48(%rdi),%xmm8,%xmm8
823
824 subq $1,%r8
825
826 vmovdqu %xmm5,0(%rsi)
827 vmovdqu %xmm6,16(%rsi)
828 vmovdqu %xmm7,32(%rsi)
829 vmovdqu %xmm8,48(%rsi)
830
831 jne .L128_enc_msg_x4_loop1
832
833 addq $64,%rsi
834 addq $64,%rdi
835
836.L128_enc_msg_x4_check_remainder:
837 cmpq $0,%r10
838 je .L128_enc_msg_x4_out
839
840.L128_enc_msg_x4_loop2:
841
842
843 vmovdqa %xmm0,%xmm5
844 vpaddd one(%rip),%xmm0,%xmm0
845
846 vpxor (%rcx),%xmm5,%xmm5
847 vaesenc 16(%rcx),%xmm5,%xmm5
848 vaesenc 32(%rcx),%xmm5,%xmm5
849 vaesenc 48(%rcx),%xmm5,%xmm5
850 vaesenc 64(%rcx),%xmm5,%xmm5
851 vaesenc 80(%rcx),%xmm5,%xmm5
852 vaesenc 96(%rcx),%xmm5,%xmm5
853 vaesenc 112(%rcx),%xmm5,%xmm5
854 vaesenc 128(%rcx),%xmm5,%xmm5
855 vaesenc 144(%rcx),%xmm5,%xmm5
856 vaesenclast 160(%rcx),%xmm5,%xmm5
857
858
859 vpxor (%rdi),%xmm5,%xmm5
860 vmovdqu %xmm5,(%rsi)
861
862 addq $16,%rdi
863 addq $16,%rsi
864
865 subq $1,%r10
866 jne .L128_enc_msg_x4_loop2
867
868.L128_enc_msg_x4_out:
869 popq %r13
870.cfi_adjust_cfa_offset -8
871.cfi_restore %r13
872 popq %r12
873.cfi_adjust_cfa_offset -8
874.cfi_restore %r12
875 .byte 0xf3,0xc3
876.cfi_endproc
877.size aes128gcmsiv_enc_msg_x4,.-aes128gcmsiv_enc_msg_x4
878.globl aes128gcmsiv_enc_msg_x8
879.hidden aes128gcmsiv_enc_msg_x8
880.type aes128gcmsiv_enc_msg_x8,@function
881.align 16
882aes128gcmsiv_enc_msg_x8:
883.cfi_startproc
884 testq %r8,%r8
885 jnz .L128_enc_msg_x8_start
886 .byte 0xf3,0xc3
887
888.L128_enc_msg_x8_start:
889 pushq %r12
890.cfi_adjust_cfa_offset 8
891.cfi_offset %r12,-16
892 pushq %r13
893.cfi_adjust_cfa_offset 8
894.cfi_offset %r13,-24
895 pushq %rbp
896.cfi_adjust_cfa_offset 8
897.cfi_offset %rbp,-32
898 movq %rsp,%rbp
899.cfi_def_cfa_register rbp
900
901
902 subq $128,%rsp
903 andq $-64,%rsp
904
905 shrq $4,%r8
906 movq %r8,%r10
907 shlq $61,%r10
908 shrq $61,%r10
909
910
911 vmovdqu (%rdx),%xmm1
912 vpor OR_MASK(%rip),%xmm1,%xmm1
913
914
915 vpaddd seven(%rip),%xmm1,%xmm0
916 vmovdqu %xmm0,(%rsp)
917 vpaddd one(%rip),%xmm1,%xmm9
918 vpaddd two(%rip),%xmm1,%xmm10
919 vpaddd three(%rip),%xmm1,%xmm11
920 vpaddd four(%rip),%xmm1,%xmm12
921 vpaddd five(%rip),%xmm1,%xmm13
922 vpaddd six(%rip),%xmm1,%xmm14
923 vmovdqa %xmm1,%xmm0
924
925 shrq $3,%r8
926 je .L128_enc_msg_x8_check_remainder
927
928 subq $128,%rsi
929 subq $128,%rdi
930
931.L128_enc_msg_x8_loop1:
932 addq $128,%rsi
933 addq $128,%rdi
934
935 vmovdqa %xmm0,%xmm1
936 vmovdqa %xmm9,%xmm2
937 vmovdqa %xmm10,%xmm3
938 vmovdqa %xmm11,%xmm4
939 vmovdqa %xmm12,%xmm5
940 vmovdqa %xmm13,%xmm6
941 vmovdqa %xmm14,%xmm7
942
943 vmovdqu (%rsp),%xmm8
944
945 vpxor (%rcx),%xmm1,%xmm1
946 vpxor (%rcx),%xmm2,%xmm2
947 vpxor (%rcx),%xmm3,%xmm3
948 vpxor (%rcx),%xmm4,%xmm4
949 vpxor (%rcx),%xmm5,%xmm5
950 vpxor (%rcx),%xmm6,%xmm6
951 vpxor (%rcx),%xmm7,%xmm7
952 vpxor (%rcx),%xmm8,%xmm8
953
954 vmovdqu 16(%rcx),%xmm15
955 vaesenc %xmm15,%xmm1,%xmm1
956 vaesenc %xmm15,%xmm2,%xmm2
957 vaesenc %xmm15,%xmm3,%xmm3
958 vaesenc %xmm15,%xmm4,%xmm4
959 vaesenc %xmm15,%xmm5,%xmm5
960 vaesenc %xmm15,%xmm6,%xmm6
961 vaesenc %xmm15,%xmm7,%xmm7
962 vaesenc %xmm15,%xmm8,%xmm8
963
964 vmovdqu (%rsp),%xmm14
965 vpaddd eight(%rip),%xmm14,%xmm14
966 vmovdqu %xmm14,(%rsp)
967 vmovdqu 32(%rcx),%xmm15
968 vaesenc %xmm15,%xmm1,%xmm1
969 vaesenc %xmm15,%xmm2,%xmm2
970 vaesenc %xmm15,%xmm3,%xmm3
971 vaesenc %xmm15,%xmm4,%xmm4
972 vaesenc %xmm15,%xmm5,%xmm5
973 vaesenc %xmm15,%xmm6,%xmm6
974 vaesenc %xmm15,%xmm7,%xmm7
975 vaesenc %xmm15,%xmm8,%xmm8
976
977 vpsubd one(%rip),%xmm14,%xmm14
978 vmovdqu 48(%rcx),%xmm15
979 vaesenc %xmm15,%xmm1,%xmm1
980 vaesenc %xmm15,%xmm2,%xmm2
981 vaesenc %xmm15,%xmm3,%xmm3
982 vaesenc %xmm15,%xmm4,%xmm4
983 vaesenc %xmm15,%xmm5,%xmm5
984 vaesenc %xmm15,%xmm6,%xmm6
985 vaesenc %xmm15,%xmm7,%xmm7
986 vaesenc %xmm15,%xmm8,%xmm8
987
988 vpaddd eight(%rip),%xmm0,%xmm0
989 vmovdqu 64(%rcx),%xmm15
990 vaesenc %xmm15,%xmm1,%xmm1
991 vaesenc %xmm15,%xmm2,%xmm2
992 vaesenc %xmm15,%xmm3,%xmm3
993 vaesenc %xmm15,%xmm4,%xmm4
994 vaesenc %xmm15,%xmm5,%xmm5
995 vaesenc %xmm15,%xmm6,%xmm6
996 vaesenc %xmm15,%xmm7,%xmm7
997 vaesenc %xmm15,%xmm8,%xmm8
998
999 vpaddd eight(%rip),%xmm9,%xmm9
1000 vmovdqu 80(%rcx),%xmm15
1001 vaesenc %xmm15,%xmm1,%xmm1
1002 vaesenc %xmm15,%xmm2,%xmm2
1003 vaesenc %xmm15,%xmm3,%xmm3
1004 vaesenc %xmm15,%xmm4,%xmm4
1005 vaesenc %xmm15,%xmm5,%xmm5
1006 vaesenc %xmm15,%xmm6,%xmm6
1007 vaesenc %xmm15,%xmm7,%xmm7
1008 vaesenc %xmm15,%xmm8,%xmm8
1009
1010 vpaddd eight(%rip),%xmm10,%xmm10
1011 vmovdqu 96(%rcx),%xmm15
1012 vaesenc %xmm15,%xmm1,%xmm1
1013 vaesenc %xmm15,%xmm2,%xmm2
1014 vaesenc %xmm15,%xmm3,%xmm3
1015 vaesenc %xmm15,%xmm4,%xmm4
1016 vaesenc %xmm15,%xmm5,%xmm5
1017 vaesenc %xmm15,%xmm6,%xmm6
1018 vaesenc %xmm15,%xmm7,%xmm7
1019 vaesenc %xmm15,%xmm8,%xmm8
1020
1021 vpaddd eight(%rip),%xmm11,%xmm11
1022 vmovdqu 112(%rcx),%xmm15
1023 vaesenc %xmm15,%xmm1,%xmm1
1024 vaesenc %xmm15,%xmm2,%xmm2
1025 vaesenc %xmm15,%xmm3,%xmm3
1026 vaesenc %xmm15,%xmm4,%xmm4
1027 vaesenc %xmm15,%xmm5,%xmm5
1028 vaesenc %xmm15,%xmm6,%xmm6
1029 vaesenc %xmm15,%xmm7,%xmm7
1030 vaesenc %xmm15,%xmm8,%xmm8
1031
1032 vpaddd eight(%rip),%xmm12,%xmm12
1033 vmovdqu 128(%rcx),%xmm15
1034 vaesenc %xmm15,%xmm1,%xmm1
1035 vaesenc %xmm15,%xmm2,%xmm2
1036 vaesenc %xmm15,%xmm3,%xmm3
1037 vaesenc %xmm15,%xmm4,%xmm4
1038 vaesenc %xmm15,%xmm5,%xmm5
1039 vaesenc %xmm15,%xmm6,%xmm6
1040 vaesenc %xmm15,%xmm7,%xmm7
1041 vaesenc %xmm15,%xmm8,%xmm8
1042
1043 vpaddd eight(%rip),%xmm13,%xmm13
1044 vmovdqu 144(%rcx),%xmm15
1045 vaesenc %xmm15,%xmm1,%xmm1
1046 vaesenc %xmm15,%xmm2,%xmm2
1047 vaesenc %xmm15,%xmm3,%xmm3
1048 vaesenc %xmm15,%xmm4,%xmm4
1049 vaesenc %xmm15,%xmm5,%xmm5
1050 vaesenc %xmm15,%xmm6,%xmm6
1051 vaesenc %xmm15,%xmm7,%xmm7
1052 vaesenc %xmm15,%xmm8,%xmm8
1053
1054 vmovdqu 160(%rcx),%xmm15
1055 vaesenclast %xmm15,%xmm1,%xmm1
1056 vaesenclast %xmm15,%xmm2,%xmm2
1057 vaesenclast %xmm15,%xmm3,%xmm3
1058 vaesenclast %xmm15,%xmm4,%xmm4
1059 vaesenclast %xmm15,%xmm5,%xmm5
1060 vaesenclast %xmm15,%xmm6,%xmm6
1061 vaesenclast %xmm15,%xmm7,%xmm7
1062 vaesenclast %xmm15,%xmm8,%xmm8
1063
1064
1065
1066 vpxor 0(%rdi),%xmm1,%xmm1
1067 vpxor 16(%rdi),%xmm2,%xmm2
1068 vpxor 32(%rdi),%xmm3,%xmm3
1069 vpxor 48(%rdi),%xmm4,%xmm4
1070 vpxor 64(%rdi),%xmm5,%xmm5
1071 vpxor 80(%rdi),%xmm6,%xmm6
1072 vpxor 96(%rdi),%xmm7,%xmm7
1073 vpxor 112(%rdi),%xmm8,%xmm8
1074
1075 decq %r8
1076
1077 vmovdqu %xmm1,0(%rsi)
1078 vmovdqu %xmm2,16(%rsi)
1079 vmovdqu %xmm3,32(%rsi)
1080 vmovdqu %xmm4,48(%rsi)
1081 vmovdqu %xmm5,64(%rsi)
1082 vmovdqu %xmm6,80(%rsi)
1083 vmovdqu %xmm7,96(%rsi)
1084 vmovdqu %xmm8,112(%rsi)
1085
1086 jne .L128_enc_msg_x8_loop1
1087
1088 addq $128,%rsi
1089 addq $128,%rdi
1090
1091.L128_enc_msg_x8_check_remainder:
1092 cmpq $0,%r10
1093 je .L128_enc_msg_x8_out
1094
1095.L128_enc_msg_x8_loop2:
1096
1097
1098 vmovdqa %xmm0,%xmm1
1099 vpaddd one(%rip),%xmm0,%xmm0
1100
1101 vpxor (%rcx),%xmm1,%xmm1
1102 vaesenc 16(%rcx),%xmm1,%xmm1
1103 vaesenc 32(%rcx),%xmm1,%xmm1
1104 vaesenc 48(%rcx),%xmm1,%xmm1
1105 vaesenc 64(%rcx),%xmm1,%xmm1
1106 vaesenc 80(%rcx),%xmm1,%xmm1
1107 vaesenc 96(%rcx),%xmm1,%xmm1
1108 vaesenc 112(%rcx),%xmm1,%xmm1
1109 vaesenc 128(%rcx),%xmm1,%xmm1
1110 vaesenc 144(%rcx),%xmm1,%xmm1
1111 vaesenclast 160(%rcx),%xmm1,%xmm1
1112
1113
1114 vpxor (%rdi),%xmm1,%xmm1
1115
1116 vmovdqu %xmm1,(%rsi)
1117
1118 addq $16,%rdi
1119 addq $16,%rsi
1120
1121 decq %r10
1122 jne .L128_enc_msg_x8_loop2
1123
1124.L128_enc_msg_x8_out:
1125 movq %rbp,%rsp
1126.cfi_def_cfa_register %rsp
1127 popq %rbp
1128.cfi_adjust_cfa_offset -8
1129.cfi_restore %rbp
1130 popq %r13
1131.cfi_adjust_cfa_offset -8
1132.cfi_restore %r13
1133 popq %r12
1134.cfi_adjust_cfa_offset -8
1135.cfi_restore %r12
1136 .byte 0xf3,0xc3
1137.cfi_endproc
1138.size aes128gcmsiv_enc_msg_x8,.-aes128gcmsiv_enc_msg_x8
1139.globl aes128gcmsiv_dec
1140.hidden aes128gcmsiv_dec
1141.type aes128gcmsiv_dec,@function
1142.align 16
1143aes128gcmsiv_dec:
1144.cfi_startproc
1145 testq $~15,%r9
1146 jnz .L128_dec_start
1147 .byte 0xf3,0xc3
1148
1149.L128_dec_start:
1150 vzeroupper
1151 vmovdqa (%rdx),%xmm0
1152 movq %rdx,%rax
1153
1154 leaq 32(%rax),%rax
1155 leaq 32(%rcx),%rcx
1156
1157
1158 vmovdqu (%rdi,%r9,1),%xmm15
1159 vpor OR_MASK(%rip),%xmm15,%xmm15
1160 andq $~15,%r9
1161
1162
1163 cmpq $96,%r9
1164 jb .L128_dec_loop2
1165
1166
1167 subq $96,%r9
1168 vmovdqa %xmm15,%xmm7
1169 vpaddd one(%rip),%xmm7,%xmm8
1170 vpaddd two(%rip),%xmm7,%xmm9
1171 vpaddd one(%rip),%xmm9,%xmm10
1172 vpaddd two(%rip),%xmm9,%xmm11
1173 vpaddd one(%rip),%xmm11,%xmm12
1174 vpaddd two(%rip),%xmm11,%xmm15
1175
1176 vpxor (%r8),%xmm7,%xmm7
1177 vpxor (%r8),%xmm8,%xmm8
1178 vpxor (%r8),%xmm9,%xmm9
1179 vpxor (%r8),%xmm10,%xmm10
1180 vpxor (%r8),%xmm11,%xmm11
1181 vpxor (%r8),%xmm12,%xmm12
1182
1183 vmovdqu 16(%r8),%xmm4
1184 vaesenc %xmm4,%xmm7,%xmm7
1185 vaesenc %xmm4,%xmm8,%xmm8
1186 vaesenc %xmm4,%xmm9,%xmm9
1187 vaesenc %xmm4,%xmm10,%xmm10
1188 vaesenc %xmm4,%xmm11,%xmm11
1189 vaesenc %xmm4,%xmm12,%xmm12
1190
1191 vmovdqu 32(%r8),%xmm4
1192 vaesenc %xmm4,%xmm7,%xmm7
1193 vaesenc %xmm4,%xmm8,%xmm8
1194 vaesenc %xmm4,%xmm9,%xmm9
1195 vaesenc %xmm4,%xmm10,%xmm10
1196 vaesenc %xmm4,%xmm11,%xmm11
1197 vaesenc %xmm4,%xmm12,%xmm12
1198
1199 vmovdqu 48(%r8),%xmm4
1200 vaesenc %xmm4,%xmm7,%xmm7
1201 vaesenc %xmm4,%xmm8,%xmm8
1202 vaesenc %xmm4,%xmm9,%xmm9
1203 vaesenc %xmm4,%xmm10,%xmm10
1204 vaesenc %xmm4,%xmm11,%xmm11
1205 vaesenc %xmm4,%xmm12,%xmm12
1206
1207 vmovdqu 64(%r8),%xmm4
1208 vaesenc %xmm4,%xmm7,%xmm7
1209 vaesenc %xmm4,%xmm8,%xmm8
1210 vaesenc %xmm4,%xmm9,%xmm9
1211 vaesenc %xmm4,%xmm10,%xmm10
1212 vaesenc %xmm4,%xmm11,%xmm11
1213 vaesenc %xmm4,%xmm12,%xmm12
1214
1215 vmovdqu 80(%r8),%xmm4
1216 vaesenc %xmm4,%xmm7,%xmm7
1217 vaesenc %xmm4,%xmm8,%xmm8
1218 vaesenc %xmm4,%xmm9,%xmm9
1219 vaesenc %xmm4,%xmm10,%xmm10
1220 vaesenc %xmm4,%xmm11,%xmm11
1221 vaesenc %xmm4,%xmm12,%xmm12
1222
1223 vmovdqu 96(%r8),%xmm4
1224 vaesenc %xmm4,%xmm7,%xmm7
1225 vaesenc %xmm4,%xmm8,%xmm8
1226 vaesenc %xmm4,%xmm9,%xmm9
1227 vaesenc %xmm4,%xmm10,%xmm10
1228 vaesenc %xmm4,%xmm11,%xmm11
1229 vaesenc %xmm4,%xmm12,%xmm12
1230
1231 vmovdqu 112(%r8),%xmm4
1232 vaesenc %xmm4,%xmm7,%xmm7
1233 vaesenc %xmm4,%xmm8,%xmm8
1234 vaesenc %xmm4,%xmm9,%xmm9
1235 vaesenc %xmm4,%xmm10,%xmm10
1236 vaesenc %xmm4,%xmm11,%xmm11
1237 vaesenc %xmm4,%xmm12,%xmm12
1238
1239 vmovdqu 128(%r8),%xmm4
1240 vaesenc %xmm4,%xmm7,%xmm7
1241 vaesenc %xmm4,%xmm8,%xmm8
1242 vaesenc %xmm4,%xmm9,%xmm9
1243 vaesenc %xmm4,%xmm10,%xmm10
1244 vaesenc %xmm4,%xmm11,%xmm11
1245 vaesenc %xmm4,%xmm12,%xmm12
1246
1247 vmovdqu 144(%r8),%xmm4
1248 vaesenc %xmm4,%xmm7,%xmm7
1249 vaesenc %xmm4,%xmm8,%xmm8
1250 vaesenc %xmm4,%xmm9,%xmm9
1251 vaesenc %xmm4,%xmm10,%xmm10
1252 vaesenc %xmm4,%xmm11,%xmm11
1253 vaesenc %xmm4,%xmm12,%xmm12
1254
1255 vmovdqu 160(%r8),%xmm4
1256 vaesenclast %xmm4,%xmm7,%xmm7
1257 vaesenclast %xmm4,%xmm8,%xmm8
1258 vaesenclast %xmm4,%xmm9,%xmm9
1259 vaesenclast %xmm4,%xmm10,%xmm10
1260 vaesenclast %xmm4,%xmm11,%xmm11
1261 vaesenclast %xmm4,%xmm12,%xmm12
1262
1263
1264 vpxor 0(%rdi),%xmm7,%xmm7
1265 vpxor 16(%rdi),%xmm8,%xmm8
1266 vpxor 32(%rdi),%xmm9,%xmm9
1267 vpxor 48(%rdi),%xmm10,%xmm10
1268 vpxor 64(%rdi),%xmm11,%xmm11
1269 vpxor 80(%rdi),%xmm12,%xmm12
1270
1271 vmovdqu %xmm7,0(%rsi)
1272 vmovdqu %xmm8,16(%rsi)
1273 vmovdqu %xmm9,32(%rsi)
1274 vmovdqu %xmm10,48(%rsi)
1275 vmovdqu %xmm11,64(%rsi)
1276 vmovdqu %xmm12,80(%rsi)
1277
1278 addq $96,%rdi
1279 addq $96,%rsi
1280 jmp .L128_dec_loop1
1281
1282
1283.align 64
1284.L128_dec_loop1:
1285 cmpq $96,%r9
1286 jb .L128_dec_finish_96
1287 subq $96,%r9
1288
1289 vmovdqa %xmm12,%xmm6
1290 vmovdqa %xmm11,16-32(%rax)
1291 vmovdqa %xmm10,32-32(%rax)
1292 vmovdqa %xmm9,48-32(%rax)
1293 vmovdqa %xmm8,64-32(%rax)
1294 vmovdqa %xmm7,80-32(%rax)
1295
1296 vmovdqa %xmm15,%xmm7
1297 vpaddd one(%rip),%xmm7,%xmm8
1298 vpaddd two(%rip),%xmm7,%xmm9
1299 vpaddd one(%rip),%xmm9,%xmm10
1300 vpaddd two(%rip),%xmm9,%xmm11
1301 vpaddd one(%rip),%xmm11,%xmm12
1302 vpaddd two(%rip),%xmm11,%xmm15
1303
1304 vmovdqa (%r8),%xmm4
1305 vpxor %xmm4,%xmm7,%xmm7
1306 vpxor %xmm4,%xmm8,%xmm8
1307 vpxor %xmm4,%xmm9,%xmm9
1308 vpxor %xmm4,%xmm10,%xmm10
1309 vpxor %xmm4,%xmm11,%xmm11
1310 vpxor %xmm4,%xmm12,%xmm12
1311
1312 vmovdqu 0-32(%rcx),%xmm4
1313 vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
1314 vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
1315 vpclmulqdq $0x01,%xmm4,%xmm6,%xmm1
1316 vpclmulqdq $0x10,%xmm4,%xmm6,%xmm4
1317 vpxor %xmm4,%xmm1,%xmm1
1318
1319 vmovdqu 16(%r8),%xmm4
1320 vaesenc %xmm4,%xmm7,%xmm7
1321 vaesenc %xmm4,%xmm8,%xmm8
1322 vaesenc %xmm4,%xmm9,%xmm9
1323 vaesenc %xmm4,%xmm10,%xmm10
1324 vaesenc %xmm4,%xmm11,%xmm11
1325 vaesenc %xmm4,%xmm12,%xmm12
1326
1327 vmovdqu -16(%rax),%xmm6
1328 vmovdqu -16(%rcx),%xmm13
1329
1330 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1331 vpxor %xmm4,%xmm1,%xmm1
1332 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1333 vpxor %xmm4,%xmm2,%xmm2
1334 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1335 vpxor %xmm4,%xmm3,%xmm3
1336 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1337 vpxor %xmm4,%xmm1,%xmm1
1338
1339
1340 vmovdqu 32(%r8),%xmm4
1341 vaesenc %xmm4,%xmm7,%xmm7
1342 vaesenc %xmm4,%xmm8,%xmm8
1343 vaesenc %xmm4,%xmm9,%xmm9
1344 vaesenc %xmm4,%xmm10,%xmm10
1345 vaesenc %xmm4,%xmm11,%xmm11
1346 vaesenc %xmm4,%xmm12,%xmm12
1347
1348 vmovdqu 0(%rax),%xmm6
1349 vmovdqu 0(%rcx),%xmm13
1350
1351 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1352 vpxor %xmm4,%xmm1,%xmm1
1353 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1354 vpxor %xmm4,%xmm2,%xmm2
1355 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1356 vpxor %xmm4,%xmm3,%xmm3
1357 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1358 vpxor %xmm4,%xmm1,%xmm1
1359
1360
1361 vmovdqu 48(%r8),%xmm4
1362 vaesenc %xmm4,%xmm7,%xmm7
1363 vaesenc %xmm4,%xmm8,%xmm8
1364 vaesenc %xmm4,%xmm9,%xmm9
1365 vaesenc %xmm4,%xmm10,%xmm10
1366 vaesenc %xmm4,%xmm11,%xmm11
1367 vaesenc %xmm4,%xmm12,%xmm12
1368
1369 vmovdqu 16(%rax),%xmm6
1370 vmovdqu 16(%rcx),%xmm13
1371
1372 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1373 vpxor %xmm4,%xmm1,%xmm1
1374 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1375 vpxor %xmm4,%xmm2,%xmm2
1376 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1377 vpxor %xmm4,%xmm3,%xmm3
1378 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1379 vpxor %xmm4,%xmm1,%xmm1
1380
1381
1382 vmovdqu 64(%r8),%xmm4
1383 vaesenc %xmm4,%xmm7,%xmm7
1384 vaesenc %xmm4,%xmm8,%xmm8
1385 vaesenc %xmm4,%xmm9,%xmm9
1386 vaesenc %xmm4,%xmm10,%xmm10
1387 vaesenc %xmm4,%xmm11,%xmm11
1388 vaesenc %xmm4,%xmm12,%xmm12
1389
1390 vmovdqu 32(%rax),%xmm6
1391 vmovdqu 32(%rcx),%xmm13
1392
1393 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1394 vpxor %xmm4,%xmm1,%xmm1
1395 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1396 vpxor %xmm4,%xmm2,%xmm2
1397 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1398 vpxor %xmm4,%xmm3,%xmm3
1399 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1400 vpxor %xmm4,%xmm1,%xmm1
1401
1402
1403 vmovdqu 80(%r8),%xmm4
1404 vaesenc %xmm4,%xmm7,%xmm7
1405 vaesenc %xmm4,%xmm8,%xmm8
1406 vaesenc %xmm4,%xmm9,%xmm9
1407 vaesenc %xmm4,%xmm10,%xmm10
1408 vaesenc %xmm4,%xmm11,%xmm11
1409 vaesenc %xmm4,%xmm12,%xmm12
1410
1411 vmovdqu 96(%r8),%xmm4
1412 vaesenc %xmm4,%xmm7,%xmm7
1413 vaesenc %xmm4,%xmm8,%xmm8
1414 vaesenc %xmm4,%xmm9,%xmm9
1415 vaesenc %xmm4,%xmm10,%xmm10
1416 vaesenc %xmm4,%xmm11,%xmm11
1417 vaesenc %xmm4,%xmm12,%xmm12
1418
1419 vmovdqu 112(%r8),%xmm4
1420 vaesenc %xmm4,%xmm7,%xmm7
1421 vaesenc %xmm4,%xmm8,%xmm8
1422 vaesenc %xmm4,%xmm9,%xmm9
1423 vaesenc %xmm4,%xmm10,%xmm10
1424 vaesenc %xmm4,%xmm11,%xmm11
1425 vaesenc %xmm4,%xmm12,%xmm12
1426
1427
1428 vmovdqa 80-32(%rax),%xmm6
1429 vpxor %xmm0,%xmm6,%xmm6
1430 vmovdqu 80-32(%rcx),%xmm5
1431
1432 vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
1433 vpxor %xmm4,%xmm1,%xmm1
1434 vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
1435 vpxor %xmm4,%xmm2,%xmm2
1436 vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
1437 vpxor %xmm4,%xmm3,%xmm3
1438 vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
1439 vpxor %xmm4,%xmm1,%xmm1
1440
1441 vmovdqu 128(%r8),%xmm4
1442 vaesenc %xmm4,%xmm7,%xmm7
1443 vaesenc %xmm4,%xmm8,%xmm8
1444 vaesenc %xmm4,%xmm9,%xmm9
1445 vaesenc %xmm4,%xmm10,%xmm10
1446 vaesenc %xmm4,%xmm11,%xmm11
1447 vaesenc %xmm4,%xmm12,%xmm12
1448
1449
1450 vpsrldq $8,%xmm1,%xmm4
1451 vpxor %xmm4,%xmm2,%xmm5
1452 vpslldq $8,%xmm1,%xmm4
1453 vpxor %xmm4,%xmm3,%xmm0
1454
1455 vmovdqa poly(%rip),%xmm3
1456
1457 vmovdqu 144(%r8),%xmm4
1458 vaesenc %xmm4,%xmm7,%xmm7
1459 vaesenc %xmm4,%xmm8,%xmm8
1460 vaesenc %xmm4,%xmm9,%xmm9
1461 vaesenc %xmm4,%xmm10,%xmm10
1462 vaesenc %xmm4,%xmm11,%xmm11
1463 vaesenc %xmm4,%xmm12,%xmm12
1464
1465 vmovdqu 160(%r8),%xmm6
1466 vpalignr $8,%xmm0,%xmm0,%xmm2
1467 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1468 vpxor %xmm0,%xmm2,%xmm0
1469
1470 vpxor 0(%rdi),%xmm6,%xmm4
1471 vaesenclast %xmm4,%xmm7,%xmm7
1472 vpxor 16(%rdi),%xmm6,%xmm4
1473 vaesenclast %xmm4,%xmm8,%xmm8
1474 vpxor 32(%rdi),%xmm6,%xmm4
1475 vaesenclast %xmm4,%xmm9,%xmm9
1476 vpxor 48(%rdi),%xmm6,%xmm4
1477 vaesenclast %xmm4,%xmm10,%xmm10
1478 vpxor 64(%rdi),%xmm6,%xmm4
1479 vaesenclast %xmm4,%xmm11,%xmm11
1480 vpxor 80(%rdi),%xmm6,%xmm4
1481 vaesenclast %xmm4,%xmm12,%xmm12
1482
1483 vpalignr $8,%xmm0,%xmm0,%xmm2
1484 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1485 vpxor %xmm0,%xmm2,%xmm0
1486
1487 vmovdqu %xmm7,0(%rsi)
1488 vmovdqu %xmm8,16(%rsi)
1489 vmovdqu %xmm9,32(%rsi)
1490 vmovdqu %xmm10,48(%rsi)
1491 vmovdqu %xmm11,64(%rsi)
1492 vmovdqu %xmm12,80(%rsi)
1493
1494 vpxor %xmm5,%xmm0,%xmm0
1495
1496 leaq 96(%rdi),%rdi
1497 leaq 96(%rsi),%rsi
1498 jmp .L128_dec_loop1
1499
1500.L128_dec_finish_96:
1501 vmovdqa %xmm12,%xmm6
1502 vmovdqa %xmm11,16-32(%rax)
1503 vmovdqa %xmm10,32-32(%rax)
1504 vmovdqa %xmm9,48-32(%rax)
1505 vmovdqa %xmm8,64-32(%rax)
1506 vmovdqa %xmm7,80-32(%rax)
1507
1508 vmovdqu 0-32(%rcx),%xmm4
1509 vpclmulqdq $0x10,%xmm4,%xmm6,%xmm1
1510 vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
1511 vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
1512 vpclmulqdq $0x01,%xmm4,%xmm6,%xmm4
1513 vpxor %xmm4,%xmm1,%xmm1
1514
1515 vmovdqu -16(%rax),%xmm6
1516 vmovdqu -16(%rcx),%xmm13
1517
1518 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1519 vpxor %xmm4,%xmm1,%xmm1
1520 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1521 vpxor %xmm4,%xmm2,%xmm2
1522 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1523 vpxor %xmm4,%xmm3,%xmm3
1524 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1525 vpxor %xmm4,%xmm1,%xmm1
1526
1527 vmovdqu 0(%rax),%xmm6
1528 vmovdqu 0(%rcx),%xmm13
1529
1530 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1531 vpxor %xmm4,%xmm1,%xmm1
1532 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1533 vpxor %xmm4,%xmm2,%xmm2
1534 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1535 vpxor %xmm4,%xmm3,%xmm3
1536 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1537 vpxor %xmm4,%xmm1,%xmm1
1538
1539 vmovdqu 16(%rax),%xmm6
1540 vmovdqu 16(%rcx),%xmm13
1541
1542 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1543 vpxor %xmm4,%xmm1,%xmm1
1544 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1545 vpxor %xmm4,%xmm2,%xmm2
1546 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1547 vpxor %xmm4,%xmm3,%xmm3
1548 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1549 vpxor %xmm4,%xmm1,%xmm1
1550
1551 vmovdqu 32(%rax),%xmm6
1552 vmovdqu 32(%rcx),%xmm13
1553
1554 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
1555 vpxor %xmm4,%xmm1,%xmm1
1556 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
1557 vpxor %xmm4,%xmm2,%xmm2
1558 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
1559 vpxor %xmm4,%xmm3,%xmm3
1560 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
1561 vpxor %xmm4,%xmm1,%xmm1
1562
1563
1564 vmovdqu 80-32(%rax),%xmm6
1565 vpxor %xmm0,%xmm6,%xmm6
1566 vmovdqu 80-32(%rcx),%xmm5
1567 vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
1568 vpxor %xmm4,%xmm2,%xmm2
1569 vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
1570 vpxor %xmm4,%xmm3,%xmm3
1571 vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
1572 vpxor %xmm4,%xmm1,%xmm1
1573 vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
1574 vpxor %xmm4,%xmm1,%xmm1
1575
1576 vpsrldq $8,%xmm1,%xmm4
1577 vpxor %xmm4,%xmm2,%xmm5
1578 vpslldq $8,%xmm1,%xmm4
1579 vpxor %xmm4,%xmm3,%xmm0
1580
1581 vmovdqa poly(%rip),%xmm3
1582
1583 vpalignr $8,%xmm0,%xmm0,%xmm2
1584 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1585 vpxor %xmm0,%xmm2,%xmm0
1586
1587 vpalignr $8,%xmm0,%xmm0,%xmm2
1588 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
1589 vpxor %xmm0,%xmm2,%xmm0
1590
1591 vpxor %xmm5,%xmm0,%xmm0
1592
1593.L128_dec_loop2:
1594
1595
1596
1597 cmpq $16,%r9
1598 jb .L128_dec_out
1599 subq $16,%r9
1600
1601 vmovdqa %xmm15,%xmm2
1602 vpaddd one(%rip),%xmm15,%xmm15
1603
1604 vpxor 0(%r8),%xmm2,%xmm2
1605 vaesenc 16(%r8),%xmm2,%xmm2
1606 vaesenc 32(%r8),%xmm2,%xmm2
1607 vaesenc 48(%r8),%xmm2,%xmm2
1608 vaesenc 64(%r8),%xmm2,%xmm2
1609 vaesenc 80(%r8),%xmm2,%xmm2
1610 vaesenc 96(%r8),%xmm2,%xmm2
1611 vaesenc 112(%r8),%xmm2,%xmm2
1612 vaesenc 128(%r8),%xmm2,%xmm2
1613 vaesenc 144(%r8),%xmm2,%xmm2
1614 vaesenclast 160(%r8),%xmm2,%xmm2
1615 vpxor (%rdi),%xmm2,%xmm2
1616 vmovdqu %xmm2,(%rsi)
1617 addq $16,%rdi
1618 addq $16,%rsi
1619
1620 vpxor %xmm2,%xmm0,%xmm0
1621 vmovdqa -32(%rcx),%xmm1
1622 call GFMUL
1623
1624 jmp .L128_dec_loop2
1625
1626.L128_dec_out:
1627 vmovdqu %xmm0,(%rdx)
1628 .byte 0xf3,0xc3
1629.cfi_endproc
1630.size aes128gcmsiv_dec, .-aes128gcmsiv_dec
1631.globl aes128gcmsiv_ecb_enc_block
1632.hidden aes128gcmsiv_ecb_enc_block
1633.type aes128gcmsiv_ecb_enc_block,@function
1634.align 16
1635aes128gcmsiv_ecb_enc_block:
1636.cfi_startproc
1637 vmovdqa (%rdi),%xmm1
1638
1639 vpxor (%rdx),%xmm1,%xmm1
1640 vaesenc 16(%rdx),%xmm1,%xmm1
1641 vaesenc 32(%rdx),%xmm1,%xmm1
1642 vaesenc 48(%rdx),%xmm1,%xmm1
1643 vaesenc 64(%rdx),%xmm1,%xmm1
1644 vaesenc 80(%rdx),%xmm1,%xmm1
1645 vaesenc 96(%rdx),%xmm1,%xmm1
1646 vaesenc 112(%rdx),%xmm1,%xmm1
1647 vaesenc 128(%rdx),%xmm1,%xmm1
1648 vaesenc 144(%rdx),%xmm1,%xmm1
1649 vaesenclast 160(%rdx),%xmm1,%xmm1
1650
1651 vmovdqa %xmm1,(%rsi)
1652
1653 .byte 0xf3,0xc3
1654.cfi_endproc
1655.size aes128gcmsiv_ecb_enc_block,.-aes128gcmsiv_ecb_enc_block
1656.globl aes256gcmsiv_aes_ks_enc_x1
1657.hidden aes256gcmsiv_aes_ks_enc_x1
1658.type aes256gcmsiv_aes_ks_enc_x1,@function
1659.align 16
1660aes256gcmsiv_aes_ks_enc_x1:
1661.cfi_startproc
1662 vmovdqa con1(%rip),%xmm0
1663 vmovdqa mask(%rip),%xmm15
1664 vmovdqa (%rdi),%xmm8
1665 vmovdqa (%rcx),%xmm1
1666 vmovdqa 16(%rcx),%xmm3
1667 vpxor %xmm1,%xmm8,%xmm8
1668 vaesenc %xmm3,%xmm8,%xmm8
1669 vmovdqu %xmm1,(%rdx)
1670 vmovdqu %xmm3,16(%rdx)
1671 vpxor %xmm14,%xmm14,%xmm14
1672
1673 vpshufb %xmm15,%xmm3,%xmm2
1674 vaesenclast %xmm0,%xmm2,%xmm2
1675 vpslld $1,%xmm0,%xmm0
1676 vpslldq $4,%xmm1,%xmm4
1677 vpxor %xmm4,%xmm1,%xmm1
1678 vpslldq $4,%xmm4,%xmm4
1679 vpxor %xmm4,%xmm1,%xmm1
1680 vpslldq $4,%xmm4,%xmm4
1681 vpxor %xmm4,%xmm1,%xmm1
1682 vpxor %xmm2,%xmm1,%xmm1
1683 vaesenc %xmm1,%xmm8,%xmm8
1684 vmovdqu %xmm1,32(%rdx)
1685
1686 vpshufd $0xff,%xmm1,%xmm2
1687 vaesenclast %xmm14,%xmm2,%xmm2
1688 vpslldq $4,%xmm3,%xmm4
1689 vpxor %xmm4,%xmm3,%xmm3
1690 vpslldq $4,%xmm4,%xmm4
1691 vpxor %xmm4,%xmm3,%xmm3
1692 vpslldq $4,%xmm4,%xmm4
1693 vpxor %xmm4,%xmm3,%xmm3
1694 vpxor %xmm2,%xmm3,%xmm3
1695 vaesenc %xmm3,%xmm8,%xmm8
1696 vmovdqu %xmm3,48(%rdx)
1697
1698 vpshufb %xmm15,%xmm3,%xmm2
1699 vaesenclast %xmm0,%xmm2,%xmm2
1700 vpslld $1,%xmm0,%xmm0
1701 vpslldq $4,%xmm1,%xmm4
1702 vpxor %xmm4,%xmm1,%xmm1
1703 vpslldq $4,%xmm4,%xmm4
1704 vpxor %xmm4,%xmm1,%xmm1
1705 vpslldq $4,%xmm4,%xmm4
1706 vpxor %xmm4,%xmm1,%xmm1
1707 vpxor %xmm2,%xmm1,%xmm1
1708 vaesenc %xmm1,%xmm8,%xmm8
1709 vmovdqu %xmm1,64(%rdx)
1710
1711 vpshufd $0xff,%xmm1,%xmm2
1712 vaesenclast %xmm14,%xmm2,%xmm2
1713 vpslldq $4,%xmm3,%xmm4
1714 vpxor %xmm4,%xmm3,%xmm3
1715 vpslldq $4,%xmm4,%xmm4
1716 vpxor %xmm4,%xmm3,%xmm3
1717 vpslldq $4,%xmm4,%xmm4
1718 vpxor %xmm4,%xmm3,%xmm3
1719 vpxor %xmm2,%xmm3,%xmm3
1720 vaesenc %xmm3,%xmm8,%xmm8
1721 vmovdqu %xmm3,80(%rdx)
1722
1723 vpshufb %xmm15,%xmm3,%xmm2
1724 vaesenclast %xmm0,%xmm2,%xmm2
1725 vpslld $1,%xmm0,%xmm0
1726 vpslldq $4,%xmm1,%xmm4
1727 vpxor %xmm4,%xmm1,%xmm1
1728 vpslldq $4,%xmm4,%xmm4
1729 vpxor %xmm4,%xmm1,%xmm1
1730 vpslldq $4,%xmm4,%xmm4
1731 vpxor %xmm4,%xmm1,%xmm1
1732 vpxor %xmm2,%xmm1,%xmm1
1733 vaesenc %xmm1,%xmm8,%xmm8
1734 vmovdqu %xmm1,96(%rdx)
1735
1736 vpshufd $0xff,%xmm1,%xmm2
1737 vaesenclast %xmm14,%xmm2,%xmm2
1738 vpslldq $4,%xmm3,%xmm4
1739 vpxor %xmm4,%xmm3,%xmm3
1740 vpslldq $4,%xmm4,%xmm4
1741 vpxor %xmm4,%xmm3,%xmm3
1742 vpslldq $4,%xmm4,%xmm4
1743 vpxor %xmm4,%xmm3,%xmm3
1744 vpxor %xmm2,%xmm3,%xmm3
1745 vaesenc %xmm3,%xmm8,%xmm8
1746 vmovdqu %xmm3,112(%rdx)
1747
1748 vpshufb %xmm15,%xmm3,%xmm2
1749 vaesenclast %xmm0,%xmm2,%xmm2
1750 vpslld $1,%xmm0,%xmm0
1751 vpslldq $4,%xmm1,%xmm4
1752 vpxor %xmm4,%xmm1,%xmm1
1753 vpslldq $4,%xmm4,%xmm4
1754 vpxor %xmm4,%xmm1,%xmm1
1755 vpslldq $4,%xmm4,%xmm4
1756 vpxor %xmm4,%xmm1,%xmm1
1757 vpxor %xmm2,%xmm1,%xmm1
1758 vaesenc %xmm1,%xmm8,%xmm8
1759 vmovdqu %xmm1,128(%rdx)
1760
1761 vpshufd $0xff,%xmm1,%xmm2
1762 vaesenclast %xmm14,%xmm2,%xmm2
1763 vpslldq $4,%xmm3,%xmm4
1764 vpxor %xmm4,%xmm3,%xmm3
1765 vpslldq $4,%xmm4,%xmm4
1766 vpxor %xmm4,%xmm3,%xmm3
1767 vpslldq $4,%xmm4,%xmm4
1768 vpxor %xmm4,%xmm3,%xmm3
1769 vpxor %xmm2,%xmm3,%xmm3
1770 vaesenc %xmm3,%xmm8,%xmm8
1771 vmovdqu %xmm3,144(%rdx)
1772
1773 vpshufb %xmm15,%xmm3,%xmm2
1774 vaesenclast %xmm0,%xmm2,%xmm2
1775 vpslld $1,%xmm0,%xmm0
1776 vpslldq $4,%xmm1,%xmm4
1777 vpxor %xmm4,%xmm1,%xmm1
1778 vpslldq $4,%xmm4,%xmm4
1779 vpxor %xmm4,%xmm1,%xmm1
1780 vpslldq $4,%xmm4,%xmm4
1781 vpxor %xmm4,%xmm1,%xmm1
1782 vpxor %xmm2,%xmm1,%xmm1
1783 vaesenc %xmm1,%xmm8,%xmm8
1784 vmovdqu %xmm1,160(%rdx)
1785
1786 vpshufd $0xff,%xmm1,%xmm2
1787 vaesenclast %xmm14,%xmm2,%xmm2
1788 vpslldq $4,%xmm3,%xmm4
1789 vpxor %xmm4,%xmm3,%xmm3
1790 vpslldq $4,%xmm4,%xmm4
1791 vpxor %xmm4,%xmm3,%xmm3
1792 vpslldq $4,%xmm4,%xmm4
1793 vpxor %xmm4,%xmm3,%xmm3
1794 vpxor %xmm2,%xmm3,%xmm3
1795 vaesenc %xmm3,%xmm8,%xmm8
1796 vmovdqu %xmm3,176(%rdx)
1797
1798 vpshufb %xmm15,%xmm3,%xmm2
1799 vaesenclast %xmm0,%xmm2,%xmm2
1800 vpslld $1,%xmm0,%xmm0
1801 vpslldq $4,%xmm1,%xmm4
1802 vpxor %xmm4,%xmm1,%xmm1
1803 vpslldq $4,%xmm4,%xmm4
1804 vpxor %xmm4,%xmm1,%xmm1
1805 vpslldq $4,%xmm4,%xmm4
1806 vpxor %xmm4,%xmm1,%xmm1
1807 vpxor %xmm2,%xmm1,%xmm1
1808 vaesenc %xmm1,%xmm8,%xmm8
1809 vmovdqu %xmm1,192(%rdx)
1810
1811 vpshufd $0xff,%xmm1,%xmm2
1812 vaesenclast %xmm14,%xmm2,%xmm2
1813 vpslldq $4,%xmm3,%xmm4
1814 vpxor %xmm4,%xmm3,%xmm3
1815 vpslldq $4,%xmm4,%xmm4
1816 vpxor %xmm4,%xmm3,%xmm3
1817 vpslldq $4,%xmm4,%xmm4
1818 vpxor %xmm4,%xmm3,%xmm3
1819 vpxor %xmm2,%xmm3,%xmm3
1820 vaesenc %xmm3,%xmm8,%xmm8
1821 vmovdqu %xmm3,208(%rdx)
1822
1823 vpshufb %xmm15,%xmm3,%xmm2
1824 vaesenclast %xmm0,%xmm2,%xmm2
1825 vpslldq $4,%xmm1,%xmm4
1826 vpxor %xmm4,%xmm1,%xmm1
1827 vpslldq $4,%xmm4,%xmm4
1828 vpxor %xmm4,%xmm1,%xmm1
1829 vpslldq $4,%xmm4,%xmm4
1830 vpxor %xmm4,%xmm1,%xmm1
1831 vpxor %xmm2,%xmm1,%xmm1
1832 vaesenclast %xmm1,%xmm8,%xmm8
1833 vmovdqu %xmm1,224(%rdx)
1834
1835 vmovdqa %xmm8,(%rsi)
1836 .byte 0xf3,0xc3
1837.cfi_endproc
1838.size aes256gcmsiv_aes_ks_enc_x1,.-aes256gcmsiv_aes_ks_enc_x1
1839.globl aes256gcmsiv_ecb_enc_block
1840.hidden aes256gcmsiv_ecb_enc_block
1841.type aes256gcmsiv_ecb_enc_block,@function
1842.align 16
1843aes256gcmsiv_ecb_enc_block:
1844.cfi_startproc
1845 vmovdqa (%rdi),%xmm1
1846 vpxor (%rdx),%xmm1,%xmm1
1847 vaesenc 16(%rdx),%xmm1,%xmm1
1848 vaesenc 32(%rdx),%xmm1,%xmm1
1849 vaesenc 48(%rdx),%xmm1,%xmm1
1850 vaesenc 64(%rdx),%xmm1,%xmm1
1851 vaesenc 80(%rdx),%xmm1,%xmm1
1852 vaesenc 96(%rdx),%xmm1,%xmm1
1853 vaesenc 112(%rdx),%xmm1,%xmm1
1854 vaesenc 128(%rdx),%xmm1,%xmm1
1855 vaesenc 144(%rdx),%xmm1,%xmm1
1856 vaesenc 160(%rdx),%xmm1,%xmm1
1857 vaesenc 176(%rdx),%xmm1,%xmm1
1858 vaesenc 192(%rdx),%xmm1,%xmm1
1859 vaesenc 208(%rdx),%xmm1,%xmm1
1860 vaesenclast 224(%rdx),%xmm1,%xmm1
1861 vmovdqa %xmm1,(%rsi)
1862 .byte 0xf3,0xc3
1863.cfi_endproc
1864.size aes256gcmsiv_ecb_enc_block,.-aes256gcmsiv_ecb_enc_block
1865.globl aes256gcmsiv_enc_msg_x4
1866.hidden aes256gcmsiv_enc_msg_x4
1867.type aes256gcmsiv_enc_msg_x4,@function
1868.align 16
1869aes256gcmsiv_enc_msg_x4:
1870.cfi_startproc
1871 testq %r8,%r8
1872 jnz .L256_enc_msg_x4_start
1873 .byte 0xf3,0xc3
1874
1875.L256_enc_msg_x4_start:
1876 movq %r8,%r10
1877 shrq $4,%r8
1878 shlq $60,%r10
1879 jz .L256_enc_msg_x4_start2
1880 addq $1,%r8
1881
1882.L256_enc_msg_x4_start2:
1883 movq %r8,%r10
1884 shlq $62,%r10
1885 shrq $62,%r10
1886
1887
1888 vmovdqa (%rdx),%xmm15
1889 vpor OR_MASK(%rip),%xmm15,%xmm15
1890
1891 vmovdqa four(%rip),%xmm4
1892 vmovdqa %xmm15,%xmm0
1893 vpaddd one(%rip),%xmm15,%xmm1
1894 vpaddd two(%rip),%xmm15,%xmm2
1895 vpaddd three(%rip),%xmm15,%xmm3
1896
1897 shrq $2,%r8
1898 je .L256_enc_msg_x4_check_remainder
1899
1900 subq $64,%rsi
1901 subq $64,%rdi
1902
1903.L256_enc_msg_x4_loop1:
1904 addq $64,%rsi
1905 addq $64,%rdi
1906
1907 vmovdqa %xmm0,%xmm5
1908 vmovdqa %xmm1,%xmm6
1909 vmovdqa %xmm2,%xmm7
1910 vmovdqa %xmm3,%xmm8
1911
1912 vpxor (%rcx),%xmm5,%xmm5
1913 vpxor (%rcx),%xmm6,%xmm6
1914 vpxor (%rcx),%xmm7,%xmm7
1915 vpxor (%rcx),%xmm8,%xmm8
1916
1917 vmovdqu 16(%rcx),%xmm12
1918 vaesenc %xmm12,%xmm5,%xmm5
1919 vaesenc %xmm12,%xmm6,%xmm6
1920 vaesenc %xmm12,%xmm7,%xmm7
1921 vaesenc %xmm12,%xmm8,%xmm8
1922
1923 vpaddd %xmm4,%xmm0,%xmm0
1924 vmovdqu 32(%rcx),%xmm12
1925 vaesenc %xmm12,%xmm5,%xmm5
1926 vaesenc %xmm12,%xmm6,%xmm6
1927 vaesenc %xmm12,%xmm7,%xmm7
1928 vaesenc %xmm12,%xmm8,%xmm8
1929
1930 vpaddd %xmm4,%xmm1,%xmm1
1931 vmovdqu 48(%rcx),%xmm12
1932 vaesenc %xmm12,%xmm5,%xmm5
1933 vaesenc %xmm12,%xmm6,%xmm6
1934 vaesenc %xmm12,%xmm7,%xmm7
1935 vaesenc %xmm12,%xmm8,%xmm8
1936
1937 vpaddd %xmm4,%xmm2,%xmm2
1938 vmovdqu 64(%rcx),%xmm12
1939 vaesenc %xmm12,%xmm5,%xmm5
1940 vaesenc %xmm12,%xmm6,%xmm6
1941 vaesenc %xmm12,%xmm7,%xmm7
1942 vaesenc %xmm12,%xmm8,%xmm8
1943
1944 vpaddd %xmm4,%xmm3,%xmm3
1945
1946 vmovdqu 80(%rcx),%xmm12
1947 vaesenc %xmm12,%xmm5,%xmm5
1948 vaesenc %xmm12,%xmm6,%xmm6
1949 vaesenc %xmm12,%xmm7,%xmm7
1950 vaesenc %xmm12,%xmm8,%xmm8
1951
1952 vmovdqu 96(%rcx),%xmm12
1953 vaesenc %xmm12,%xmm5,%xmm5
1954 vaesenc %xmm12,%xmm6,%xmm6
1955 vaesenc %xmm12,%xmm7,%xmm7
1956 vaesenc %xmm12,%xmm8,%xmm8
1957
1958 vmovdqu 112(%rcx),%xmm12
1959 vaesenc %xmm12,%xmm5,%xmm5
1960 vaesenc %xmm12,%xmm6,%xmm6
1961 vaesenc %xmm12,%xmm7,%xmm7
1962 vaesenc %xmm12,%xmm8,%xmm8
1963
1964 vmovdqu 128(%rcx),%xmm12
1965 vaesenc %xmm12,%xmm5,%xmm5
1966 vaesenc %xmm12,%xmm6,%xmm6
1967 vaesenc %xmm12,%xmm7,%xmm7
1968 vaesenc %xmm12,%xmm8,%xmm8
1969
1970 vmovdqu 144(%rcx),%xmm12
1971 vaesenc %xmm12,%xmm5,%xmm5
1972 vaesenc %xmm12,%xmm6,%xmm6
1973 vaesenc %xmm12,%xmm7,%xmm7
1974 vaesenc %xmm12,%xmm8,%xmm8
1975
1976 vmovdqu 160(%rcx),%xmm12
1977 vaesenc %xmm12,%xmm5,%xmm5
1978 vaesenc %xmm12,%xmm6,%xmm6
1979 vaesenc %xmm12,%xmm7,%xmm7
1980 vaesenc %xmm12,%xmm8,%xmm8
1981
1982 vmovdqu 176(%rcx),%xmm12
1983 vaesenc %xmm12,%xmm5,%xmm5
1984 vaesenc %xmm12,%xmm6,%xmm6
1985 vaesenc %xmm12,%xmm7,%xmm7
1986 vaesenc %xmm12,%xmm8,%xmm8
1987
1988 vmovdqu 192(%rcx),%xmm12
1989 vaesenc %xmm12,%xmm5,%xmm5
1990 vaesenc %xmm12,%xmm6,%xmm6
1991 vaesenc %xmm12,%xmm7,%xmm7
1992 vaesenc %xmm12,%xmm8,%xmm8
1993
1994 vmovdqu 208(%rcx),%xmm12
1995 vaesenc %xmm12,%xmm5,%xmm5
1996 vaesenc %xmm12,%xmm6,%xmm6
1997 vaesenc %xmm12,%xmm7,%xmm7
1998 vaesenc %xmm12,%xmm8,%xmm8
1999
2000 vmovdqu 224(%rcx),%xmm12
2001 vaesenclast %xmm12,%xmm5,%xmm5
2002 vaesenclast %xmm12,%xmm6,%xmm6
2003 vaesenclast %xmm12,%xmm7,%xmm7
2004 vaesenclast %xmm12,%xmm8,%xmm8
2005
2006
2007
2008 vpxor 0(%rdi),%xmm5,%xmm5
2009 vpxor 16(%rdi),%xmm6,%xmm6
2010 vpxor 32(%rdi),%xmm7,%xmm7
2011 vpxor 48(%rdi),%xmm8,%xmm8
2012
2013 subq $1,%r8
2014
2015 vmovdqu %xmm5,0(%rsi)
2016 vmovdqu %xmm6,16(%rsi)
2017 vmovdqu %xmm7,32(%rsi)
2018 vmovdqu %xmm8,48(%rsi)
2019
2020 jne .L256_enc_msg_x4_loop1
2021
2022 addq $64,%rsi
2023 addq $64,%rdi
2024
2025.L256_enc_msg_x4_check_remainder:
2026 cmpq $0,%r10
2027 je .L256_enc_msg_x4_out
2028
2029.L256_enc_msg_x4_loop2:
2030
2031
2032
2033 vmovdqa %xmm0,%xmm5
2034 vpaddd one(%rip),%xmm0,%xmm0
2035 vpxor (%rcx),%xmm5,%xmm5
2036 vaesenc 16(%rcx),%xmm5,%xmm5
2037 vaesenc 32(%rcx),%xmm5,%xmm5
2038 vaesenc 48(%rcx),%xmm5,%xmm5
2039 vaesenc 64(%rcx),%xmm5,%xmm5
2040 vaesenc 80(%rcx),%xmm5,%xmm5
2041 vaesenc 96(%rcx),%xmm5,%xmm5
2042 vaesenc 112(%rcx),%xmm5,%xmm5
2043 vaesenc 128(%rcx),%xmm5,%xmm5
2044 vaesenc 144(%rcx),%xmm5,%xmm5
2045 vaesenc 160(%rcx),%xmm5,%xmm5
2046 vaesenc 176(%rcx),%xmm5,%xmm5
2047 vaesenc 192(%rcx),%xmm5,%xmm5
2048 vaesenc 208(%rcx),%xmm5,%xmm5
2049 vaesenclast 224(%rcx),%xmm5,%xmm5
2050
2051
2052 vpxor (%rdi),%xmm5,%xmm5
2053
2054 vmovdqu %xmm5,(%rsi)
2055
2056 addq $16,%rdi
2057 addq $16,%rsi
2058
2059 subq $1,%r10
2060 jne .L256_enc_msg_x4_loop2
2061
2062.L256_enc_msg_x4_out:
2063 .byte 0xf3,0xc3
2064.cfi_endproc
2065.size aes256gcmsiv_enc_msg_x4,.-aes256gcmsiv_enc_msg_x4
2066.globl aes256gcmsiv_enc_msg_x8
2067.hidden aes256gcmsiv_enc_msg_x8
2068.type aes256gcmsiv_enc_msg_x8,@function
2069.align 16
2070aes256gcmsiv_enc_msg_x8:
2071.cfi_startproc
2072 testq %r8,%r8
2073 jnz .L256_enc_msg_x8_start
2074 .byte 0xf3,0xc3
2075
2076.L256_enc_msg_x8_start:
2077
2078 movq %rsp,%r11
2079 subq $16,%r11
2080 andq $-64,%r11
2081
2082 movq %r8,%r10
2083 shrq $4,%r8
2084 shlq $60,%r10
2085 jz .L256_enc_msg_x8_start2
2086 addq $1,%r8
2087
2088.L256_enc_msg_x8_start2:
2089 movq %r8,%r10
2090 shlq $61,%r10
2091 shrq $61,%r10
2092
2093
2094 vmovdqa (%rdx),%xmm1
2095 vpor OR_MASK(%rip),%xmm1,%xmm1
2096
2097
2098 vpaddd seven(%rip),%xmm1,%xmm0
2099 vmovdqa %xmm0,(%r11)
2100 vpaddd one(%rip),%xmm1,%xmm9
2101 vpaddd two(%rip),%xmm1,%xmm10
2102 vpaddd three(%rip),%xmm1,%xmm11
2103 vpaddd four(%rip),%xmm1,%xmm12
2104 vpaddd five(%rip),%xmm1,%xmm13
2105 vpaddd six(%rip),%xmm1,%xmm14
2106 vmovdqa %xmm1,%xmm0
2107
2108 shrq $3,%r8
2109 jz .L256_enc_msg_x8_check_remainder
2110
2111 subq $128,%rsi
2112 subq $128,%rdi
2113
2114.L256_enc_msg_x8_loop1:
2115 addq $128,%rsi
2116 addq $128,%rdi
2117
2118 vmovdqa %xmm0,%xmm1
2119 vmovdqa %xmm9,%xmm2
2120 vmovdqa %xmm10,%xmm3
2121 vmovdqa %xmm11,%xmm4
2122 vmovdqa %xmm12,%xmm5
2123 vmovdqa %xmm13,%xmm6
2124 vmovdqa %xmm14,%xmm7
2125
2126 vmovdqa (%r11),%xmm8
2127
2128 vpxor (%rcx),%xmm1,%xmm1
2129 vpxor (%rcx),%xmm2,%xmm2
2130 vpxor (%rcx),%xmm3,%xmm3
2131 vpxor (%rcx),%xmm4,%xmm4
2132 vpxor (%rcx),%xmm5,%xmm5
2133 vpxor (%rcx),%xmm6,%xmm6
2134 vpxor (%rcx),%xmm7,%xmm7
2135 vpxor (%rcx),%xmm8,%xmm8
2136
2137 vmovdqu 16(%rcx),%xmm15
2138 vaesenc %xmm15,%xmm1,%xmm1
2139 vaesenc %xmm15,%xmm2,%xmm2
2140 vaesenc %xmm15,%xmm3,%xmm3
2141 vaesenc %xmm15,%xmm4,%xmm4
2142 vaesenc %xmm15,%xmm5,%xmm5
2143 vaesenc %xmm15,%xmm6,%xmm6
2144 vaesenc %xmm15,%xmm7,%xmm7
2145 vaesenc %xmm15,%xmm8,%xmm8
2146
2147 vmovdqa (%r11),%xmm14
2148 vpaddd eight(%rip),%xmm14,%xmm14
2149 vmovdqa %xmm14,(%r11)
2150 vmovdqu 32(%rcx),%xmm15
2151 vaesenc %xmm15,%xmm1,%xmm1
2152 vaesenc %xmm15,%xmm2,%xmm2
2153 vaesenc %xmm15,%xmm3,%xmm3
2154 vaesenc %xmm15,%xmm4,%xmm4
2155 vaesenc %xmm15,%xmm5,%xmm5
2156 vaesenc %xmm15,%xmm6,%xmm6
2157 vaesenc %xmm15,%xmm7,%xmm7
2158 vaesenc %xmm15,%xmm8,%xmm8
2159
2160 vpsubd one(%rip),%xmm14,%xmm14
2161 vmovdqu 48(%rcx),%xmm15
2162 vaesenc %xmm15,%xmm1,%xmm1
2163 vaesenc %xmm15,%xmm2,%xmm2
2164 vaesenc %xmm15,%xmm3,%xmm3
2165 vaesenc %xmm15,%xmm4,%xmm4
2166 vaesenc %xmm15,%xmm5,%xmm5
2167 vaesenc %xmm15,%xmm6,%xmm6
2168 vaesenc %xmm15,%xmm7,%xmm7
2169 vaesenc %xmm15,%xmm8,%xmm8
2170
2171 vpaddd eight(%rip),%xmm0,%xmm0
2172 vmovdqu 64(%rcx),%xmm15
2173 vaesenc %xmm15,%xmm1,%xmm1
2174 vaesenc %xmm15,%xmm2,%xmm2
2175 vaesenc %xmm15,%xmm3,%xmm3
2176 vaesenc %xmm15,%xmm4,%xmm4
2177 vaesenc %xmm15,%xmm5,%xmm5
2178 vaesenc %xmm15,%xmm6,%xmm6
2179 vaesenc %xmm15,%xmm7,%xmm7
2180 vaesenc %xmm15,%xmm8,%xmm8
2181
2182 vpaddd eight(%rip),%xmm9,%xmm9
2183 vmovdqu 80(%rcx),%xmm15
2184 vaesenc %xmm15,%xmm1,%xmm1
2185 vaesenc %xmm15,%xmm2,%xmm2
2186 vaesenc %xmm15,%xmm3,%xmm3
2187 vaesenc %xmm15,%xmm4,%xmm4
2188 vaesenc %xmm15,%xmm5,%xmm5
2189 vaesenc %xmm15,%xmm6,%xmm6
2190 vaesenc %xmm15,%xmm7,%xmm7
2191 vaesenc %xmm15,%xmm8,%xmm8
2192
2193 vpaddd eight(%rip),%xmm10,%xmm10
2194 vmovdqu 96(%rcx),%xmm15
2195 vaesenc %xmm15,%xmm1,%xmm1
2196 vaesenc %xmm15,%xmm2,%xmm2
2197 vaesenc %xmm15,%xmm3,%xmm3
2198 vaesenc %xmm15,%xmm4,%xmm4
2199 vaesenc %xmm15,%xmm5,%xmm5
2200 vaesenc %xmm15,%xmm6,%xmm6
2201 vaesenc %xmm15,%xmm7,%xmm7
2202 vaesenc %xmm15,%xmm8,%xmm8
2203
2204 vpaddd eight(%rip),%xmm11,%xmm11
2205 vmovdqu 112(%rcx),%xmm15
2206 vaesenc %xmm15,%xmm1,%xmm1
2207 vaesenc %xmm15,%xmm2,%xmm2
2208 vaesenc %xmm15,%xmm3,%xmm3
2209 vaesenc %xmm15,%xmm4,%xmm4
2210 vaesenc %xmm15,%xmm5,%xmm5
2211 vaesenc %xmm15,%xmm6,%xmm6
2212 vaesenc %xmm15,%xmm7,%xmm7
2213 vaesenc %xmm15,%xmm8,%xmm8
2214
2215 vpaddd eight(%rip),%xmm12,%xmm12
2216 vmovdqu 128(%rcx),%xmm15
2217 vaesenc %xmm15,%xmm1,%xmm1
2218 vaesenc %xmm15,%xmm2,%xmm2
2219 vaesenc %xmm15,%xmm3,%xmm3
2220 vaesenc %xmm15,%xmm4,%xmm4
2221 vaesenc %xmm15,%xmm5,%xmm5
2222 vaesenc %xmm15,%xmm6,%xmm6
2223 vaesenc %xmm15,%xmm7,%xmm7
2224 vaesenc %xmm15,%xmm8,%xmm8
2225
2226 vpaddd eight(%rip),%xmm13,%xmm13
2227 vmovdqu 144(%rcx),%xmm15
2228 vaesenc %xmm15,%xmm1,%xmm1
2229 vaesenc %xmm15,%xmm2,%xmm2
2230 vaesenc %xmm15,%xmm3,%xmm3
2231 vaesenc %xmm15,%xmm4,%xmm4
2232 vaesenc %xmm15,%xmm5,%xmm5
2233 vaesenc %xmm15,%xmm6,%xmm6
2234 vaesenc %xmm15,%xmm7,%xmm7
2235 vaesenc %xmm15,%xmm8,%xmm8
2236
2237 vmovdqu 160(%rcx),%xmm15
2238 vaesenc %xmm15,%xmm1,%xmm1
2239 vaesenc %xmm15,%xmm2,%xmm2
2240 vaesenc %xmm15,%xmm3,%xmm3
2241 vaesenc %xmm15,%xmm4,%xmm4
2242 vaesenc %xmm15,%xmm5,%xmm5
2243 vaesenc %xmm15,%xmm6,%xmm6
2244 vaesenc %xmm15,%xmm7,%xmm7
2245 vaesenc %xmm15,%xmm8,%xmm8
2246
2247 vmovdqu 176(%rcx),%xmm15
2248 vaesenc %xmm15,%xmm1,%xmm1
2249 vaesenc %xmm15,%xmm2,%xmm2
2250 vaesenc %xmm15,%xmm3,%xmm3
2251 vaesenc %xmm15,%xmm4,%xmm4
2252 vaesenc %xmm15,%xmm5,%xmm5
2253 vaesenc %xmm15,%xmm6,%xmm6
2254 vaesenc %xmm15,%xmm7,%xmm7
2255 vaesenc %xmm15,%xmm8,%xmm8
2256
2257 vmovdqu 192(%rcx),%xmm15
2258 vaesenc %xmm15,%xmm1,%xmm1
2259 vaesenc %xmm15,%xmm2,%xmm2
2260 vaesenc %xmm15,%xmm3,%xmm3
2261 vaesenc %xmm15,%xmm4,%xmm4
2262 vaesenc %xmm15,%xmm5,%xmm5
2263 vaesenc %xmm15,%xmm6,%xmm6
2264 vaesenc %xmm15,%xmm7,%xmm7
2265 vaesenc %xmm15,%xmm8,%xmm8
2266
2267 vmovdqu 208(%rcx),%xmm15
2268 vaesenc %xmm15,%xmm1,%xmm1
2269 vaesenc %xmm15,%xmm2,%xmm2
2270 vaesenc %xmm15,%xmm3,%xmm3
2271 vaesenc %xmm15,%xmm4,%xmm4
2272 vaesenc %xmm15,%xmm5,%xmm5
2273 vaesenc %xmm15,%xmm6,%xmm6
2274 vaesenc %xmm15,%xmm7,%xmm7
2275 vaesenc %xmm15,%xmm8,%xmm8
2276
2277 vmovdqu 224(%rcx),%xmm15
2278 vaesenclast %xmm15,%xmm1,%xmm1
2279 vaesenclast %xmm15,%xmm2,%xmm2
2280 vaesenclast %xmm15,%xmm3,%xmm3
2281 vaesenclast %xmm15,%xmm4,%xmm4
2282 vaesenclast %xmm15,%xmm5,%xmm5
2283 vaesenclast %xmm15,%xmm6,%xmm6
2284 vaesenclast %xmm15,%xmm7,%xmm7
2285 vaesenclast %xmm15,%xmm8,%xmm8
2286
2287
2288
2289 vpxor 0(%rdi),%xmm1,%xmm1
2290 vpxor 16(%rdi),%xmm2,%xmm2
2291 vpxor 32(%rdi),%xmm3,%xmm3
2292 vpxor 48(%rdi),%xmm4,%xmm4
2293 vpxor 64(%rdi),%xmm5,%xmm5
2294 vpxor 80(%rdi),%xmm6,%xmm6
2295 vpxor 96(%rdi),%xmm7,%xmm7
2296 vpxor 112(%rdi),%xmm8,%xmm8
2297
2298 subq $1,%r8
2299
2300 vmovdqu %xmm1,0(%rsi)
2301 vmovdqu %xmm2,16(%rsi)
2302 vmovdqu %xmm3,32(%rsi)
2303 vmovdqu %xmm4,48(%rsi)
2304 vmovdqu %xmm5,64(%rsi)
2305 vmovdqu %xmm6,80(%rsi)
2306 vmovdqu %xmm7,96(%rsi)
2307 vmovdqu %xmm8,112(%rsi)
2308
2309 jne .L256_enc_msg_x8_loop1
2310
2311 addq $128,%rsi
2312 addq $128,%rdi
2313
2314.L256_enc_msg_x8_check_remainder:
2315 cmpq $0,%r10
2316 je .L256_enc_msg_x8_out
2317
2318.L256_enc_msg_x8_loop2:
2319
2320
2321 vmovdqa %xmm0,%xmm1
2322 vpaddd one(%rip),%xmm0,%xmm0
2323
2324 vpxor (%rcx),%xmm1,%xmm1
2325 vaesenc 16(%rcx),%xmm1,%xmm1
2326 vaesenc 32(%rcx),%xmm1,%xmm1
2327 vaesenc 48(%rcx),%xmm1,%xmm1
2328 vaesenc 64(%rcx),%xmm1,%xmm1
2329 vaesenc 80(%rcx),%xmm1,%xmm1
2330 vaesenc 96(%rcx),%xmm1,%xmm1
2331 vaesenc 112(%rcx),%xmm1,%xmm1
2332 vaesenc 128(%rcx),%xmm1,%xmm1
2333 vaesenc 144(%rcx),%xmm1,%xmm1
2334 vaesenc 160(%rcx),%xmm1,%xmm1
2335 vaesenc 176(%rcx),%xmm1,%xmm1
2336 vaesenc 192(%rcx),%xmm1,%xmm1
2337 vaesenc 208(%rcx),%xmm1,%xmm1
2338 vaesenclast 224(%rcx),%xmm1,%xmm1
2339
2340
2341 vpxor (%rdi),%xmm1,%xmm1
2342
2343 vmovdqu %xmm1,(%rsi)
2344
2345 addq $16,%rdi
2346 addq $16,%rsi
2347 subq $1,%r10
2348 jnz .L256_enc_msg_x8_loop2
2349
2350.L256_enc_msg_x8_out:
2351 .byte 0xf3,0xc3
2352
2353.cfi_endproc
2354.size aes256gcmsiv_enc_msg_x8,.-aes256gcmsiv_enc_msg_x8
2355.globl aes256gcmsiv_dec
2356.hidden aes256gcmsiv_dec
2357.type aes256gcmsiv_dec,@function
2358.align 16
2359aes256gcmsiv_dec:
2360.cfi_startproc
2361 testq $~15,%r9
2362 jnz .L256_dec_start
2363 .byte 0xf3,0xc3
2364
2365.L256_dec_start:
2366 vzeroupper
2367 vmovdqa (%rdx),%xmm0
2368 movq %rdx,%rax
2369
2370 leaq 32(%rax),%rax
2371 leaq 32(%rcx),%rcx
2372
2373
2374 vmovdqu (%rdi,%r9,1),%xmm15
2375 vpor OR_MASK(%rip),%xmm15,%xmm15
2376 andq $~15,%r9
2377
2378
2379 cmpq $96,%r9
2380 jb .L256_dec_loop2
2381
2382
2383 subq $96,%r9
2384 vmovdqa %xmm15,%xmm7
2385 vpaddd one(%rip),%xmm7,%xmm8
2386 vpaddd two(%rip),%xmm7,%xmm9
2387 vpaddd one(%rip),%xmm9,%xmm10
2388 vpaddd two(%rip),%xmm9,%xmm11
2389 vpaddd one(%rip),%xmm11,%xmm12
2390 vpaddd two(%rip),%xmm11,%xmm15
2391
2392 vpxor (%r8),%xmm7,%xmm7
2393 vpxor (%r8),%xmm8,%xmm8
2394 vpxor (%r8),%xmm9,%xmm9
2395 vpxor (%r8),%xmm10,%xmm10
2396 vpxor (%r8),%xmm11,%xmm11
2397 vpxor (%r8),%xmm12,%xmm12
2398
2399 vmovdqu 16(%r8),%xmm4
2400 vaesenc %xmm4,%xmm7,%xmm7
2401 vaesenc %xmm4,%xmm8,%xmm8
2402 vaesenc %xmm4,%xmm9,%xmm9
2403 vaesenc %xmm4,%xmm10,%xmm10
2404 vaesenc %xmm4,%xmm11,%xmm11
2405 vaesenc %xmm4,%xmm12,%xmm12
2406
2407 vmovdqu 32(%r8),%xmm4
2408 vaesenc %xmm4,%xmm7,%xmm7
2409 vaesenc %xmm4,%xmm8,%xmm8
2410 vaesenc %xmm4,%xmm9,%xmm9
2411 vaesenc %xmm4,%xmm10,%xmm10
2412 vaesenc %xmm4,%xmm11,%xmm11
2413 vaesenc %xmm4,%xmm12,%xmm12
2414
2415 vmovdqu 48(%r8),%xmm4
2416 vaesenc %xmm4,%xmm7,%xmm7
2417 vaesenc %xmm4,%xmm8,%xmm8
2418 vaesenc %xmm4,%xmm9,%xmm9
2419 vaesenc %xmm4,%xmm10,%xmm10
2420 vaesenc %xmm4,%xmm11,%xmm11
2421 vaesenc %xmm4,%xmm12,%xmm12
2422
2423 vmovdqu 64(%r8),%xmm4
2424 vaesenc %xmm4,%xmm7,%xmm7
2425 vaesenc %xmm4,%xmm8,%xmm8
2426 vaesenc %xmm4,%xmm9,%xmm9
2427 vaesenc %xmm4,%xmm10,%xmm10
2428 vaesenc %xmm4,%xmm11,%xmm11
2429 vaesenc %xmm4,%xmm12,%xmm12
2430
2431 vmovdqu 80(%r8),%xmm4
2432 vaesenc %xmm4,%xmm7,%xmm7
2433 vaesenc %xmm4,%xmm8,%xmm8
2434 vaesenc %xmm4,%xmm9,%xmm9
2435 vaesenc %xmm4,%xmm10,%xmm10
2436 vaesenc %xmm4,%xmm11,%xmm11
2437 vaesenc %xmm4,%xmm12,%xmm12
2438
2439 vmovdqu 96(%r8),%xmm4
2440 vaesenc %xmm4,%xmm7,%xmm7
2441 vaesenc %xmm4,%xmm8,%xmm8
2442 vaesenc %xmm4,%xmm9,%xmm9
2443 vaesenc %xmm4,%xmm10,%xmm10
2444 vaesenc %xmm4,%xmm11,%xmm11
2445 vaesenc %xmm4,%xmm12,%xmm12
2446
2447 vmovdqu 112(%r8),%xmm4
2448 vaesenc %xmm4,%xmm7,%xmm7
2449 vaesenc %xmm4,%xmm8,%xmm8
2450 vaesenc %xmm4,%xmm9,%xmm9
2451 vaesenc %xmm4,%xmm10,%xmm10
2452 vaesenc %xmm4,%xmm11,%xmm11
2453 vaesenc %xmm4,%xmm12,%xmm12
2454
2455 vmovdqu 128(%r8),%xmm4
2456 vaesenc %xmm4,%xmm7,%xmm7
2457 vaesenc %xmm4,%xmm8,%xmm8
2458 vaesenc %xmm4,%xmm9,%xmm9
2459 vaesenc %xmm4,%xmm10,%xmm10
2460 vaesenc %xmm4,%xmm11,%xmm11
2461 vaesenc %xmm4,%xmm12,%xmm12
2462
2463 vmovdqu 144(%r8),%xmm4
2464 vaesenc %xmm4,%xmm7,%xmm7
2465 vaesenc %xmm4,%xmm8,%xmm8
2466 vaesenc %xmm4,%xmm9,%xmm9
2467 vaesenc %xmm4,%xmm10,%xmm10
2468 vaesenc %xmm4,%xmm11,%xmm11
2469 vaesenc %xmm4,%xmm12,%xmm12
2470
2471 vmovdqu 160(%r8),%xmm4
2472 vaesenc %xmm4,%xmm7,%xmm7
2473 vaesenc %xmm4,%xmm8,%xmm8
2474 vaesenc %xmm4,%xmm9,%xmm9
2475 vaesenc %xmm4,%xmm10,%xmm10
2476 vaesenc %xmm4,%xmm11,%xmm11
2477 vaesenc %xmm4,%xmm12,%xmm12
2478
2479 vmovdqu 176(%r8),%xmm4
2480 vaesenc %xmm4,%xmm7,%xmm7
2481 vaesenc %xmm4,%xmm8,%xmm8
2482 vaesenc %xmm4,%xmm9,%xmm9
2483 vaesenc %xmm4,%xmm10,%xmm10
2484 vaesenc %xmm4,%xmm11,%xmm11
2485 vaesenc %xmm4,%xmm12,%xmm12
2486
2487 vmovdqu 192(%r8),%xmm4
2488 vaesenc %xmm4,%xmm7,%xmm7
2489 vaesenc %xmm4,%xmm8,%xmm8
2490 vaesenc %xmm4,%xmm9,%xmm9
2491 vaesenc %xmm4,%xmm10,%xmm10
2492 vaesenc %xmm4,%xmm11,%xmm11
2493 vaesenc %xmm4,%xmm12,%xmm12
2494
2495 vmovdqu 208(%r8),%xmm4
2496 vaesenc %xmm4,%xmm7,%xmm7
2497 vaesenc %xmm4,%xmm8,%xmm8
2498 vaesenc %xmm4,%xmm9,%xmm9
2499 vaesenc %xmm4,%xmm10,%xmm10
2500 vaesenc %xmm4,%xmm11,%xmm11
2501 vaesenc %xmm4,%xmm12,%xmm12
2502
2503 vmovdqu 224(%r8),%xmm4
2504 vaesenclast %xmm4,%xmm7,%xmm7
2505 vaesenclast %xmm4,%xmm8,%xmm8
2506 vaesenclast %xmm4,%xmm9,%xmm9
2507 vaesenclast %xmm4,%xmm10,%xmm10
2508 vaesenclast %xmm4,%xmm11,%xmm11
2509 vaesenclast %xmm4,%xmm12,%xmm12
2510
2511
2512 vpxor 0(%rdi),%xmm7,%xmm7
2513 vpxor 16(%rdi),%xmm8,%xmm8
2514 vpxor 32(%rdi),%xmm9,%xmm9
2515 vpxor 48(%rdi),%xmm10,%xmm10
2516 vpxor 64(%rdi),%xmm11,%xmm11
2517 vpxor 80(%rdi),%xmm12,%xmm12
2518
2519 vmovdqu %xmm7,0(%rsi)
2520 vmovdqu %xmm8,16(%rsi)
2521 vmovdqu %xmm9,32(%rsi)
2522 vmovdqu %xmm10,48(%rsi)
2523 vmovdqu %xmm11,64(%rsi)
2524 vmovdqu %xmm12,80(%rsi)
2525
2526 addq $96,%rdi
2527 addq $96,%rsi
2528 jmp .L256_dec_loop1
2529
2530
2531.align 64
2532.L256_dec_loop1:
2533 cmpq $96,%r9
2534 jb .L256_dec_finish_96
2535 subq $96,%r9
2536
2537 vmovdqa %xmm12,%xmm6
2538 vmovdqa %xmm11,16-32(%rax)
2539 vmovdqa %xmm10,32-32(%rax)
2540 vmovdqa %xmm9,48-32(%rax)
2541 vmovdqa %xmm8,64-32(%rax)
2542 vmovdqa %xmm7,80-32(%rax)
2543
2544 vmovdqa %xmm15,%xmm7
2545 vpaddd one(%rip),%xmm7,%xmm8
2546 vpaddd two(%rip),%xmm7,%xmm9
2547 vpaddd one(%rip),%xmm9,%xmm10
2548 vpaddd two(%rip),%xmm9,%xmm11
2549 vpaddd one(%rip),%xmm11,%xmm12
2550 vpaddd two(%rip),%xmm11,%xmm15
2551
2552 vmovdqa (%r8),%xmm4
2553 vpxor %xmm4,%xmm7,%xmm7
2554 vpxor %xmm4,%xmm8,%xmm8
2555 vpxor %xmm4,%xmm9,%xmm9
2556 vpxor %xmm4,%xmm10,%xmm10
2557 vpxor %xmm4,%xmm11,%xmm11
2558 vpxor %xmm4,%xmm12,%xmm12
2559
2560 vmovdqu 0-32(%rcx),%xmm4
2561 vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
2562 vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
2563 vpclmulqdq $0x01,%xmm4,%xmm6,%xmm1
2564 vpclmulqdq $0x10,%xmm4,%xmm6,%xmm4
2565 vpxor %xmm4,%xmm1,%xmm1
2566
2567 vmovdqu 16(%r8),%xmm4
2568 vaesenc %xmm4,%xmm7,%xmm7
2569 vaesenc %xmm4,%xmm8,%xmm8
2570 vaesenc %xmm4,%xmm9,%xmm9
2571 vaesenc %xmm4,%xmm10,%xmm10
2572 vaesenc %xmm4,%xmm11,%xmm11
2573 vaesenc %xmm4,%xmm12,%xmm12
2574
2575 vmovdqu -16(%rax),%xmm6
2576 vmovdqu -16(%rcx),%xmm13
2577
2578 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2579 vpxor %xmm4,%xmm1,%xmm1
2580 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2581 vpxor %xmm4,%xmm2,%xmm2
2582 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2583 vpxor %xmm4,%xmm3,%xmm3
2584 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2585 vpxor %xmm4,%xmm1,%xmm1
2586
2587
2588 vmovdqu 32(%r8),%xmm4
2589 vaesenc %xmm4,%xmm7,%xmm7
2590 vaesenc %xmm4,%xmm8,%xmm8
2591 vaesenc %xmm4,%xmm9,%xmm9
2592 vaesenc %xmm4,%xmm10,%xmm10
2593 vaesenc %xmm4,%xmm11,%xmm11
2594 vaesenc %xmm4,%xmm12,%xmm12
2595
2596 vmovdqu 0(%rax),%xmm6
2597 vmovdqu 0(%rcx),%xmm13
2598
2599 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2600 vpxor %xmm4,%xmm1,%xmm1
2601 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2602 vpxor %xmm4,%xmm2,%xmm2
2603 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2604 vpxor %xmm4,%xmm3,%xmm3
2605 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2606 vpxor %xmm4,%xmm1,%xmm1
2607
2608
2609 vmovdqu 48(%r8),%xmm4
2610 vaesenc %xmm4,%xmm7,%xmm7
2611 vaesenc %xmm4,%xmm8,%xmm8
2612 vaesenc %xmm4,%xmm9,%xmm9
2613 vaesenc %xmm4,%xmm10,%xmm10
2614 vaesenc %xmm4,%xmm11,%xmm11
2615 vaesenc %xmm4,%xmm12,%xmm12
2616
2617 vmovdqu 16(%rax),%xmm6
2618 vmovdqu 16(%rcx),%xmm13
2619
2620 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2621 vpxor %xmm4,%xmm1,%xmm1
2622 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2623 vpxor %xmm4,%xmm2,%xmm2
2624 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2625 vpxor %xmm4,%xmm3,%xmm3
2626 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2627 vpxor %xmm4,%xmm1,%xmm1
2628
2629
2630 vmovdqu 64(%r8),%xmm4
2631 vaesenc %xmm4,%xmm7,%xmm7
2632 vaesenc %xmm4,%xmm8,%xmm8
2633 vaesenc %xmm4,%xmm9,%xmm9
2634 vaesenc %xmm4,%xmm10,%xmm10
2635 vaesenc %xmm4,%xmm11,%xmm11
2636 vaesenc %xmm4,%xmm12,%xmm12
2637
2638 vmovdqu 32(%rax),%xmm6
2639 vmovdqu 32(%rcx),%xmm13
2640
2641 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2642 vpxor %xmm4,%xmm1,%xmm1
2643 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2644 vpxor %xmm4,%xmm2,%xmm2
2645 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2646 vpxor %xmm4,%xmm3,%xmm3
2647 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2648 vpxor %xmm4,%xmm1,%xmm1
2649
2650
2651 vmovdqu 80(%r8),%xmm4
2652 vaesenc %xmm4,%xmm7,%xmm7
2653 vaesenc %xmm4,%xmm8,%xmm8
2654 vaesenc %xmm4,%xmm9,%xmm9
2655 vaesenc %xmm4,%xmm10,%xmm10
2656 vaesenc %xmm4,%xmm11,%xmm11
2657 vaesenc %xmm4,%xmm12,%xmm12
2658
2659 vmovdqu 96(%r8),%xmm4
2660 vaesenc %xmm4,%xmm7,%xmm7
2661 vaesenc %xmm4,%xmm8,%xmm8
2662 vaesenc %xmm4,%xmm9,%xmm9
2663 vaesenc %xmm4,%xmm10,%xmm10
2664 vaesenc %xmm4,%xmm11,%xmm11
2665 vaesenc %xmm4,%xmm12,%xmm12
2666
2667 vmovdqu 112(%r8),%xmm4
2668 vaesenc %xmm4,%xmm7,%xmm7
2669 vaesenc %xmm4,%xmm8,%xmm8
2670 vaesenc %xmm4,%xmm9,%xmm9
2671 vaesenc %xmm4,%xmm10,%xmm10
2672 vaesenc %xmm4,%xmm11,%xmm11
2673 vaesenc %xmm4,%xmm12,%xmm12
2674
2675
2676 vmovdqa 80-32(%rax),%xmm6
2677 vpxor %xmm0,%xmm6,%xmm6
2678 vmovdqu 80-32(%rcx),%xmm5
2679
2680 vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
2681 vpxor %xmm4,%xmm1,%xmm1
2682 vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
2683 vpxor %xmm4,%xmm2,%xmm2
2684 vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
2685 vpxor %xmm4,%xmm3,%xmm3
2686 vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
2687 vpxor %xmm4,%xmm1,%xmm1
2688
2689 vmovdqu 128(%r8),%xmm4
2690 vaesenc %xmm4,%xmm7,%xmm7
2691 vaesenc %xmm4,%xmm8,%xmm8
2692 vaesenc %xmm4,%xmm9,%xmm9
2693 vaesenc %xmm4,%xmm10,%xmm10
2694 vaesenc %xmm4,%xmm11,%xmm11
2695 vaesenc %xmm4,%xmm12,%xmm12
2696
2697
2698 vpsrldq $8,%xmm1,%xmm4
2699 vpxor %xmm4,%xmm2,%xmm5
2700 vpslldq $8,%xmm1,%xmm4
2701 vpxor %xmm4,%xmm3,%xmm0
2702
2703 vmovdqa poly(%rip),%xmm3
2704
2705 vmovdqu 144(%r8),%xmm4
2706 vaesenc %xmm4,%xmm7,%xmm7
2707 vaesenc %xmm4,%xmm8,%xmm8
2708 vaesenc %xmm4,%xmm9,%xmm9
2709 vaesenc %xmm4,%xmm10,%xmm10
2710 vaesenc %xmm4,%xmm11,%xmm11
2711 vaesenc %xmm4,%xmm12,%xmm12
2712
2713 vmovdqu 160(%r8),%xmm4
2714 vaesenc %xmm4,%xmm7,%xmm7
2715 vaesenc %xmm4,%xmm8,%xmm8
2716 vaesenc %xmm4,%xmm9,%xmm9
2717 vaesenc %xmm4,%xmm10,%xmm10
2718 vaesenc %xmm4,%xmm11,%xmm11
2719 vaesenc %xmm4,%xmm12,%xmm12
2720
2721 vmovdqu 176(%r8),%xmm4
2722 vaesenc %xmm4,%xmm7,%xmm7
2723 vaesenc %xmm4,%xmm8,%xmm8
2724 vaesenc %xmm4,%xmm9,%xmm9
2725 vaesenc %xmm4,%xmm10,%xmm10
2726 vaesenc %xmm4,%xmm11,%xmm11
2727 vaesenc %xmm4,%xmm12,%xmm12
2728
2729 vmovdqu 192(%r8),%xmm4
2730 vaesenc %xmm4,%xmm7,%xmm7
2731 vaesenc %xmm4,%xmm8,%xmm8
2732 vaesenc %xmm4,%xmm9,%xmm9
2733 vaesenc %xmm4,%xmm10,%xmm10
2734 vaesenc %xmm4,%xmm11,%xmm11
2735 vaesenc %xmm4,%xmm12,%xmm12
2736
2737 vmovdqu 208(%r8),%xmm4
2738 vaesenc %xmm4,%xmm7,%xmm7
2739 vaesenc %xmm4,%xmm8,%xmm8
2740 vaesenc %xmm4,%xmm9,%xmm9
2741 vaesenc %xmm4,%xmm10,%xmm10
2742 vaesenc %xmm4,%xmm11,%xmm11
2743 vaesenc %xmm4,%xmm12,%xmm12
2744
2745 vmovdqu 224(%r8),%xmm6
2746 vpalignr $8,%xmm0,%xmm0,%xmm2
2747 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2748 vpxor %xmm0,%xmm2,%xmm0
2749
2750 vpxor 0(%rdi),%xmm6,%xmm4
2751 vaesenclast %xmm4,%xmm7,%xmm7
2752 vpxor 16(%rdi),%xmm6,%xmm4
2753 vaesenclast %xmm4,%xmm8,%xmm8
2754 vpxor 32(%rdi),%xmm6,%xmm4
2755 vaesenclast %xmm4,%xmm9,%xmm9
2756 vpxor 48(%rdi),%xmm6,%xmm4
2757 vaesenclast %xmm4,%xmm10,%xmm10
2758 vpxor 64(%rdi),%xmm6,%xmm4
2759 vaesenclast %xmm4,%xmm11,%xmm11
2760 vpxor 80(%rdi),%xmm6,%xmm4
2761 vaesenclast %xmm4,%xmm12,%xmm12
2762
2763 vpalignr $8,%xmm0,%xmm0,%xmm2
2764 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2765 vpxor %xmm0,%xmm2,%xmm0
2766
2767 vmovdqu %xmm7,0(%rsi)
2768 vmovdqu %xmm8,16(%rsi)
2769 vmovdqu %xmm9,32(%rsi)
2770 vmovdqu %xmm10,48(%rsi)
2771 vmovdqu %xmm11,64(%rsi)
2772 vmovdqu %xmm12,80(%rsi)
2773
2774 vpxor %xmm5,%xmm0,%xmm0
2775
2776 leaq 96(%rdi),%rdi
2777 leaq 96(%rsi),%rsi
2778 jmp .L256_dec_loop1
2779
2780.L256_dec_finish_96:
2781 vmovdqa %xmm12,%xmm6
2782 vmovdqa %xmm11,16-32(%rax)
2783 vmovdqa %xmm10,32-32(%rax)
2784 vmovdqa %xmm9,48-32(%rax)
2785 vmovdqa %xmm8,64-32(%rax)
2786 vmovdqa %xmm7,80-32(%rax)
2787
2788 vmovdqu 0-32(%rcx),%xmm4
2789 vpclmulqdq $0x10,%xmm4,%xmm6,%xmm1
2790 vpclmulqdq $0x11,%xmm4,%xmm6,%xmm2
2791 vpclmulqdq $0x00,%xmm4,%xmm6,%xmm3
2792 vpclmulqdq $0x01,%xmm4,%xmm6,%xmm4
2793 vpxor %xmm4,%xmm1,%xmm1
2794
2795 vmovdqu -16(%rax),%xmm6
2796 vmovdqu -16(%rcx),%xmm13
2797
2798 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2799 vpxor %xmm4,%xmm1,%xmm1
2800 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2801 vpxor %xmm4,%xmm2,%xmm2
2802 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2803 vpxor %xmm4,%xmm3,%xmm3
2804 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2805 vpxor %xmm4,%xmm1,%xmm1
2806
2807 vmovdqu 0(%rax),%xmm6
2808 vmovdqu 0(%rcx),%xmm13
2809
2810 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2811 vpxor %xmm4,%xmm1,%xmm1
2812 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2813 vpxor %xmm4,%xmm2,%xmm2
2814 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2815 vpxor %xmm4,%xmm3,%xmm3
2816 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2817 vpxor %xmm4,%xmm1,%xmm1
2818
2819 vmovdqu 16(%rax),%xmm6
2820 vmovdqu 16(%rcx),%xmm13
2821
2822 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2823 vpxor %xmm4,%xmm1,%xmm1
2824 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2825 vpxor %xmm4,%xmm2,%xmm2
2826 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2827 vpxor %xmm4,%xmm3,%xmm3
2828 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2829 vpxor %xmm4,%xmm1,%xmm1
2830
2831 vmovdqu 32(%rax),%xmm6
2832 vmovdqu 32(%rcx),%xmm13
2833
2834 vpclmulqdq $0x10,%xmm13,%xmm6,%xmm4
2835 vpxor %xmm4,%xmm1,%xmm1
2836 vpclmulqdq $0x11,%xmm13,%xmm6,%xmm4
2837 vpxor %xmm4,%xmm2,%xmm2
2838 vpclmulqdq $0x00,%xmm13,%xmm6,%xmm4
2839 vpxor %xmm4,%xmm3,%xmm3
2840 vpclmulqdq $0x01,%xmm13,%xmm6,%xmm4
2841 vpxor %xmm4,%xmm1,%xmm1
2842
2843
2844 vmovdqu 80-32(%rax),%xmm6
2845 vpxor %xmm0,%xmm6,%xmm6
2846 vmovdqu 80-32(%rcx),%xmm5
2847 vpclmulqdq $0x11,%xmm5,%xmm6,%xmm4
2848 vpxor %xmm4,%xmm2,%xmm2
2849 vpclmulqdq $0x00,%xmm5,%xmm6,%xmm4
2850 vpxor %xmm4,%xmm3,%xmm3
2851 vpclmulqdq $0x10,%xmm5,%xmm6,%xmm4
2852 vpxor %xmm4,%xmm1,%xmm1
2853 vpclmulqdq $0x01,%xmm5,%xmm6,%xmm4
2854 vpxor %xmm4,%xmm1,%xmm1
2855
2856 vpsrldq $8,%xmm1,%xmm4
2857 vpxor %xmm4,%xmm2,%xmm5
2858 vpslldq $8,%xmm1,%xmm4
2859 vpxor %xmm4,%xmm3,%xmm0
2860
2861 vmovdqa poly(%rip),%xmm3
2862
2863 vpalignr $8,%xmm0,%xmm0,%xmm2
2864 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2865 vpxor %xmm0,%xmm2,%xmm0
2866
2867 vpalignr $8,%xmm0,%xmm0,%xmm2
2868 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm0
2869 vpxor %xmm0,%xmm2,%xmm0
2870
2871 vpxor %xmm5,%xmm0,%xmm0
2872
2873.L256_dec_loop2:
2874
2875
2876
2877 cmpq $16,%r9
2878 jb .L256_dec_out
2879 subq $16,%r9
2880
2881 vmovdqa %xmm15,%xmm2
2882 vpaddd one(%rip),%xmm15,%xmm15
2883
2884 vpxor 0(%r8),%xmm2,%xmm2
2885 vaesenc 16(%r8),%xmm2,%xmm2
2886 vaesenc 32(%r8),%xmm2,%xmm2
2887 vaesenc 48(%r8),%xmm2,%xmm2
2888 vaesenc 64(%r8),%xmm2,%xmm2
2889 vaesenc 80(%r8),%xmm2,%xmm2
2890 vaesenc 96(%r8),%xmm2,%xmm2
2891 vaesenc 112(%r8),%xmm2,%xmm2
2892 vaesenc 128(%r8),%xmm2,%xmm2
2893 vaesenc 144(%r8),%xmm2,%xmm2
2894 vaesenc 160(%r8),%xmm2,%xmm2
2895 vaesenc 176(%r8),%xmm2,%xmm2
2896 vaesenc 192(%r8),%xmm2,%xmm2
2897 vaesenc 208(%r8),%xmm2,%xmm2
2898 vaesenclast 224(%r8),%xmm2,%xmm2
2899 vpxor (%rdi),%xmm2,%xmm2
2900 vmovdqu %xmm2,(%rsi)
2901 addq $16,%rdi
2902 addq $16,%rsi
2903
2904 vpxor %xmm2,%xmm0,%xmm0
2905 vmovdqa -32(%rcx),%xmm1
2906 call GFMUL
2907
2908 jmp .L256_dec_loop2
2909
2910.L256_dec_out:
2911 vmovdqu %xmm0,(%rdx)
2912 .byte 0xf3,0xc3
2913.cfi_endproc
2914.size aes256gcmsiv_dec, .-aes256gcmsiv_dec
2915.globl aes256gcmsiv_kdf
2916.hidden aes256gcmsiv_kdf
2917.type aes256gcmsiv_kdf,@function
2918.align 16
2919aes256gcmsiv_kdf:
2920.cfi_startproc
2921
2922
2923
2924
2925 vmovdqa (%rdx),%xmm1
2926 vmovdqa 0(%rdi),%xmm4
2927 vmovdqa and_mask(%rip),%xmm11
2928 vmovdqa one(%rip),%xmm8
2929 vpshufd $0x90,%xmm4,%xmm4
2930 vpand %xmm11,%xmm4,%xmm4
2931 vpaddd %xmm8,%xmm4,%xmm6
2932 vpaddd %xmm8,%xmm6,%xmm7
2933 vpaddd %xmm8,%xmm7,%xmm11
2934 vpaddd %xmm8,%xmm11,%xmm12
2935 vpaddd %xmm8,%xmm12,%xmm13
2936
2937 vpxor %xmm1,%xmm4,%xmm4
2938 vpxor %xmm1,%xmm6,%xmm6
2939 vpxor %xmm1,%xmm7,%xmm7
2940 vpxor %xmm1,%xmm11,%xmm11
2941 vpxor %xmm1,%xmm12,%xmm12
2942 vpxor %xmm1,%xmm13,%xmm13
2943
2944 vmovdqa 16(%rdx),%xmm1
2945 vaesenc %xmm1,%xmm4,%xmm4
2946 vaesenc %xmm1,%xmm6,%xmm6
2947 vaesenc %xmm1,%xmm7,%xmm7
2948 vaesenc %xmm1,%xmm11,%xmm11
2949 vaesenc %xmm1,%xmm12,%xmm12
2950 vaesenc %xmm1,%xmm13,%xmm13
2951
2952 vmovdqa 32(%rdx),%xmm2
2953 vaesenc %xmm2,%xmm4,%xmm4
2954 vaesenc %xmm2,%xmm6,%xmm6
2955 vaesenc %xmm2,%xmm7,%xmm7
2956 vaesenc %xmm2,%xmm11,%xmm11
2957 vaesenc %xmm2,%xmm12,%xmm12
2958 vaesenc %xmm2,%xmm13,%xmm13
2959
2960 vmovdqa 48(%rdx),%xmm1
2961 vaesenc %xmm1,%xmm4,%xmm4
2962 vaesenc %xmm1,%xmm6,%xmm6
2963 vaesenc %xmm1,%xmm7,%xmm7
2964 vaesenc %xmm1,%xmm11,%xmm11
2965 vaesenc %xmm1,%xmm12,%xmm12
2966 vaesenc %xmm1,%xmm13,%xmm13
2967
2968 vmovdqa 64(%rdx),%xmm2
2969 vaesenc %xmm2,%xmm4,%xmm4
2970 vaesenc %xmm2,%xmm6,%xmm6
2971 vaesenc %xmm2,%xmm7,%xmm7
2972 vaesenc %xmm2,%xmm11,%xmm11
2973 vaesenc %xmm2,%xmm12,%xmm12
2974 vaesenc %xmm2,%xmm13,%xmm13
2975
2976 vmovdqa 80(%rdx),%xmm1
2977 vaesenc %xmm1,%xmm4,%xmm4
2978 vaesenc %xmm1,%xmm6,%xmm6
2979 vaesenc %xmm1,%xmm7,%xmm7
2980 vaesenc %xmm1,%xmm11,%xmm11
2981 vaesenc %xmm1,%xmm12,%xmm12
2982 vaesenc %xmm1,%xmm13,%xmm13
2983
2984 vmovdqa 96(%rdx),%xmm2
2985 vaesenc %xmm2,%xmm4,%xmm4
2986 vaesenc %xmm2,%xmm6,%xmm6
2987 vaesenc %xmm2,%xmm7,%xmm7
2988 vaesenc %xmm2,%xmm11,%xmm11
2989 vaesenc %xmm2,%xmm12,%xmm12
2990 vaesenc %xmm2,%xmm13,%xmm13
2991
2992 vmovdqa 112(%rdx),%xmm1
2993 vaesenc %xmm1,%xmm4,%xmm4
2994 vaesenc %xmm1,%xmm6,%xmm6
2995 vaesenc %xmm1,%xmm7,%xmm7
2996 vaesenc %xmm1,%xmm11,%xmm11
2997 vaesenc %xmm1,%xmm12,%xmm12
2998 vaesenc %xmm1,%xmm13,%xmm13
2999
3000 vmovdqa 128(%rdx),%xmm2
3001 vaesenc %xmm2,%xmm4,%xmm4
3002 vaesenc %xmm2,%xmm6,%xmm6
3003 vaesenc %xmm2,%xmm7,%xmm7
3004 vaesenc %xmm2,%xmm11,%xmm11
3005 vaesenc %xmm2,%xmm12,%xmm12
3006 vaesenc %xmm2,%xmm13,%xmm13
3007
3008 vmovdqa 144(%rdx),%xmm1
3009 vaesenc %xmm1,%xmm4,%xmm4
3010 vaesenc %xmm1,%xmm6,%xmm6
3011 vaesenc %xmm1,%xmm7,%xmm7
3012 vaesenc %xmm1,%xmm11,%xmm11
3013 vaesenc %xmm1,%xmm12,%xmm12
3014 vaesenc %xmm1,%xmm13,%xmm13
3015
3016 vmovdqa 160(%rdx),%xmm2
3017 vaesenc %xmm2,%xmm4,%xmm4
3018 vaesenc %xmm2,%xmm6,%xmm6
3019 vaesenc %xmm2,%xmm7,%xmm7
3020 vaesenc %xmm2,%xmm11,%xmm11
3021 vaesenc %xmm2,%xmm12,%xmm12
3022 vaesenc %xmm2,%xmm13,%xmm13
3023
3024 vmovdqa 176(%rdx),%xmm1
3025 vaesenc %xmm1,%xmm4,%xmm4
3026 vaesenc %xmm1,%xmm6,%xmm6
3027 vaesenc %xmm1,%xmm7,%xmm7
3028 vaesenc %xmm1,%xmm11,%xmm11
3029 vaesenc %xmm1,%xmm12,%xmm12
3030 vaesenc %xmm1,%xmm13,%xmm13
3031
3032 vmovdqa 192(%rdx),%xmm2
3033 vaesenc %xmm2,%xmm4,%xmm4
3034 vaesenc %xmm2,%xmm6,%xmm6
3035 vaesenc %xmm2,%xmm7,%xmm7
3036 vaesenc %xmm2,%xmm11,%xmm11
3037 vaesenc %xmm2,%xmm12,%xmm12
3038 vaesenc %xmm2,%xmm13,%xmm13
3039
3040 vmovdqa 208(%rdx),%xmm1
3041 vaesenc %xmm1,%xmm4,%xmm4
3042 vaesenc %xmm1,%xmm6,%xmm6
3043 vaesenc %xmm1,%xmm7,%xmm7
3044 vaesenc %xmm1,%xmm11,%xmm11
3045 vaesenc %xmm1,%xmm12,%xmm12
3046 vaesenc %xmm1,%xmm13,%xmm13
3047
3048 vmovdqa 224(%rdx),%xmm2
3049 vaesenclast %xmm2,%xmm4,%xmm4
3050 vaesenclast %xmm2,%xmm6,%xmm6
3051 vaesenclast %xmm2,%xmm7,%xmm7
3052 vaesenclast %xmm2,%xmm11,%xmm11
3053 vaesenclast %xmm2,%xmm12,%xmm12
3054 vaesenclast %xmm2,%xmm13,%xmm13
3055
3056
3057 vmovdqa %xmm4,0(%rsi)
3058 vmovdqa %xmm6,16(%rsi)
3059 vmovdqa %xmm7,32(%rsi)
3060 vmovdqa %xmm11,48(%rsi)
3061 vmovdqa %xmm12,64(%rsi)
3062 vmovdqa %xmm13,80(%rsi)
3063 .byte 0xf3,0xc3
3064.cfi_endproc
3065.size aes256gcmsiv_kdf, .-aes256gcmsiv_kdf
3066#endif