2 /* Do not modify. This file is auto-generated from ghash-x86_64.pl. */
7 .type gcm_gmult_4bit,@function
16 leaq .Lrem_4bit(%rip),%r11
23 movq 8(%rsi,%rax,1),%r8
24 movq (%rsi,%rax,1),%r9
34 movb (%rdi,%rcx,1),%al
36 xorq 8(%rsi,%rbx,1),%r8
38 xorq (%rsi,%rbx,1),%r9
40 xorq (%r11,%rdx,8),%r9
51 xorq 8(%rsi,%rax,1),%r8
53 xorq (%rsi,%rax,1),%r9
55 xorq (%r11,%rdx,8),%r9
66 xorq 8(%rsi,%rax,1),%r8
68 xorq (%rsi,%rax,1),%r9
70 xorq (%r11,%rdx,8),%r9
78 xorq 8(%rsi,%rbx,1),%r8
80 xorq (%rsi,%rbx,1),%r9
82 xorq (%r11,%rdx,8),%r9
93 .size gcm_gmult_4bit,.-gcm_gmult_4bit
95 .type gcm_ghash_4bit,@function
109 leaq 16+128(%rsp),%rbp
111 movq 0+0-128(%rsi),%r8
112 movq 0+8-128(%rsi),%rax
117 movq 16+0-128(%rsi),%r9
119 movq 16+8-128(%rsi),%rbx
128 movq 32+0-128(%rsi),%r8
130 movq %rax,0-128(%rbp)
131 movq 32+8-128(%rsi),%rax
140 movq 48+0-128(%rsi),%r9
142 movq %rbx,8-128(%rbp)
143 movq 48+8-128(%rsi),%rbx
152 movq 64+0-128(%rsi),%r8
154 movq %rax,16-128(%rbp)
155 movq 64+8-128(%rsi),%rax
164 movq 80+0-128(%rsi),%r9
166 movq %rbx,24-128(%rbp)
167 movq 80+8-128(%rsi),%rbx
176 movq 96+0-128(%rsi),%r8
178 movq %rax,32-128(%rbp)
179 movq 96+8-128(%rsi),%rax
188 movq 112+0-128(%rsi),%r9
190 movq %rbx,40-128(%rbp)
191 movq 112+8-128(%rsi),%rbx
200 movq 128+0-128(%rsi),%r8
202 movq %rax,48-128(%rbp)
203 movq 128+8-128(%rsi),%rax
212 movq 144+0-128(%rsi),%r9
214 movq %rbx,56-128(%rbp)
215 movq 144+8-128(%rsi),%rbx
224 movq 160+0-128(%rsi),%r8
226 movq %rax,64-128(%rbp)
227 movq 160+8-128(%rsi),%rax
236 movq 176+0-128(%rsi),%r9
238 movq %rbx,72-128(%rbp)
239 movq 176+8-128(%rsi),%rbx
248 movq 192+0-128(%rsi),%r8
250 movq %rax,80-128(%rbp)
251 movq 192+8-128(%rsi),%rax
260 movq 208+0-128(%rsi),%r9
262 movq %rbx,88-128(%rbp)
263 movq 208+8-128(%rsi),%rbx
272 movq 224+0-128(%rsi),%r8
274 movq %rax,96-128(%rbp)
275 movq 224+8-128(%rsi),%rax
284 movq 240+0-128(%rsi),%r9
286 movq %rbx,104-128(%rbp)
287 movq 240+8-128(%rsi),%rbx
297 movq %rax,112-128(%rbp)
302 movq %rbx,120-128(%rbp)
307 leaq .Lrem_8bit(%rip),%r11
325 movq 8(%rsi,%rax,1),%r8
326 movq (%rsi,%rax,1),%r9
330 movzbq (%rsp,%rbx,1),%r12
337 xorq -128(%rbp,%rbx,8),%r8
339 xorq (%rbp,%rbx,8),%r9
341 xorq 8(%rsi,%rax,1),%r8
342 xorq (%rsi,%rax,1),%r9
345 movzwq (%r11,%r12,2),%r12
348 movzbq (%rsp,%rcx,1),%r13
357 xorq -128(%rbp,%rcx,8),%r8
359 xorq (%rbp,%rcx,8),%r9
361 xorq 8(%rsi,%rax,1),%r8
362 xorq (%rsi,%rax,1),%r9
365 movzwq (%r11,%r13,2),%r13
368 movzbq (%rsp,%rbx,1),%r12
378 xorq -128(%rbp,%rbx,8),%r8
380 xorq (%rbp,%rbx,8),%r9
382 xorq 8(%rsi,%rax,1),%r8
383 xorq (%rsi,%rax,1),%r9
386 movzwq (%r11,%r12,2),%r12
389 movzbq (%rsp,%rcx,1),%r13
398 xorq -128(%rbp,%rcx,8),%r8
400 xorq (%rbp,%rcx,8),%r9
402 xorq 8(%rsi,%rax,1),%r8
403 xorq (%rsi,%rax,1),%r9
406 movzwq (%r11,%r13,2),%r13
409 movzbq (%rsp,%rbx,1),%r12
418 xorq -128(%rbp,%rbx,8),%r8
420 xorq (%rbp,%rbx,8),%r9
422 xorq 8(%rsi,%rax,1),%r8
423 xorq (%rsi,%rax,1),%r9
426 movzwq (%r11,%r12,2),%r12
429 movzbq (%rsp,%rcx,1),%r13
438 xorq -128(%rbp,%rcx,8),%r8
440 xorq (%rbp,%rcx,8),%r9
442 xorq 8(%rsi,%rax,1),%r8
443 xorq (%rsi,%rax,1),%r9
446 movzwq (%r11,%r13,2),%r13
449 movzbq (%rsp,%rbx,1),%r12
459 xorq -128(%rbp,%rbx,8),%r8
461 xorq (%rbp,%rbx,8),%r9
463 xorq 8(%rsi,%rax,1),%r8
464 xorq (%rsi,%rax,1),%r9
467 movzwq (%r11,%r12,2),%r12
470 movzbq (%rsp,%rcx,1),%r13
479 xorq -128(%rbp,%rcx,8),%r8
481 xorq (%rbp,%rcx,8),%r9
483 xorq 8(%rsi,%rax,1),%r8
484 xorq (%rsi,%rax,1),%r9
487 movzwq (%r11,%r13,2),%r13
490 movzbq (%rsp,%rbx,1),%r12
499 xorq -128(%rbp,%rbx,8),%r8
501 xorq (%rbp,%rbx,8),%r9
503 xorq 8(%rsi,%rax,1),%r8
504 xorq (%rsi,%rax,1),%r9
507 movzwq (%r11,%r12,2),%r12
510 movzbq (%rsp,%rcx,1),%r13
519 xorq -128(%rbp,%rcx,8),%r8
521 xorq (%rbp,%rcx,8),%r9
523 xorq 8(%rsi,%rax,1),%r8
524 xorq (%rsi,%rax,1),%r9
527 movzwq (%r11,%r13,2),%r13
530 movzbq (%rsp,%rbx,1),%r12
540 xorq -128(%rbp,%rbx,8),%r8
542 xorq (%rbp,%rbx,8),%r9
544 xorq 8(%rsi,%rax,1),%r8
545 xorq (%rsi,%rax,1),%r9
548 movzwq (%r11,%r12,2),%r12
551 movzbq (%rsp,%rcx,1),%r13
560 xorq -128(%rbp,%rcx,8),%r8
562 xorq (%rbp,%rcx,8),%r9
564 xorq 8(%rsi,%rax,1),%r8
565 xorq (%rsi,%rax,1),%r9
568 movzwq (%r11,%r13,2),%r13
571 movzbq (%rsp,%rbx,1),%r12
580 xorq -128(%rbp,%rbx,8),%r8
582 xorq (%rbp,%rbx,8),%r9
584 xorq 8(%rsi,%rax,1),%r8
585 xorq (%rsi,%rax,1),%r9
588 movzwq (%r11,%r12,2),%r12
591 movzbq (%rsp,%rcx,1),%r13
600 xorq -128(%rbp,%rcx,8),%r8
602 xorq (%rbp,%rcx,8),%r9
604 xorq 8(%rsi,%rax,1),%r8
605 xorq (%rsi,%rax,1),%r9
608 movzwq (%r11,%r13,2),%r13
611 movzbq (%rsp,%rbx,1),%r12
621 xorq -128(%rbp,%rbx,8),%r8
623 xorq (%rbp,%rbx,8),%r9
624 movzwq (%r11,%r12,2),%r12
625 xorq 8(%rsi,%rax,1),%r8
626 xorq (%rsi,%rax,1),%r9
635 xorq 8(%rsi,%rcx,1),%r8
636 movzwq (%r11,%r13,2),%r13
638 xorq (%rsi,%rcx,1),%r9
659 .size gcm_ghash_4bit,.-gcm_ghash_4bit
660 .globl gcm_init_clmul
661 .type gcm_init_clmul,@function
666 pshufd $78,%xmm2,%xmm2
669 pshufd $255,%xmm2,%xmm4
679 pand .L0x1c2_polynomial(%rip),%xmm5
683 pshufd $78,%xmm2,%xmm6
687 pshufd $78,%xmm0,%xmm3
689 .byte 102,15,58,68,194,0
690 .byte 102,15,58,68,202,17
691 .byte 102,15,58,68,222,0
723 pshufd $78,%xmm2,%xmm3
724 pshufd $78,%xmm0,%xmm4
728 movdqu %xmm0,16(%rdi)
729 .byte 102,15,58,15,227,8
730 movdqu %xmm4,32(%rdi)
732 pshufd $78,%xmm0,%xmm3
734 .byte 102,15,58,68,194,0
735 .byte 102,15,58,68,202,17
736 .byte 102,15,58,68,222,0
770 pshufd $78,%xmm0,%xmm3
772 .byte 102,15,58,68,194,0
773 .byte 102,15,58,68,202,17
774 .byte 102,15,58,68,222,0
806 pshufd $78,%xmm5,%xmm3
807 pshufd $78,%xmm0,%xmm4
809 movdqu %xmm5,48(%rdi)
811 movdqu %xmm0,64(%rdi)
812 .byte 102,15,58,15,227,8
813 movdqu %xmm4,80(%rdi)
815 .size gcm_init_clmul,.-gcm_init_clmul
816 .globl gcm_gmult_clmul
817 .type gcm_gmult_clmul,@function
822 movdqa .Lbswap_mask(%rip),%xmm5
824 movdqu 32(%rsi),%xmm4
825 .byte 102,15,56,0,197
827 pshufd $78,%xmm0,%xmm3
829 .byte 102,15,58,68,194,0
830 .byte 102,15,58,68,202,17
831 .byte 102,15,58,68,220,0
863 .byte 102,15,56,0,197
866 .size gcm_gmult_clmul,.-gcm_gmult_clmul
867 .globl gcm_ghash_clmul
868 .type gcm_ghash_clmul,@function
872 movdqa .Lbswap_mask(%rip),%xmm10
876 movdqu 32(%rsi),%xmm7
877 .byte 102,65,15,56,0,194
882 movdqu 16(%rsi),%xmm6
883 movl OPENSSL_ia32cap_P+4(%rip),%eax
892 movq $0xA040608020C0E000,%rax
893 movdqu 48(%rsi),%xmm14
894 movdqu 64(%rsi),%xmm15
899 movdqu 48(%rdx),%xmm3
900 movdqu 32(%rdx),%xmm11
901 .byte 102,65,15,56,0,218
902 .byte 102,69,15,56,0,218
904 pshufd $78,%xmm3,%xmm4
906 .byte 102,15,58,68,218,0
907 .byte 102,15,58,68,234,17
908 .byte 102,15,58,68,231,0
911 pshufd $78,%xmm11,%xmm12
913 .byte 102,68,15,58,68,222,0
914 .byte 102,68,15,58,68,238,17
915 .byte 102,68,15,58,68,231,16
918 movups 80(%rsi),%xmm7
921 movdqu 16(%rdx),%xmm11
923 .byte 102,69,15,56,0,218
924 .byte 102,69,15,56,0,194
926 pshufd $78,%xmm11,%xmm12
929 .byte 102,69,15,58,68,222,0
931 pshufd $78,%xmm0,%xmm8
933 .byte 102,69,15,58,68,238,17
934 .byte 102,68,15,58,68,231,0
945 .byte 102,65,15,58,68,199,0
947 movdqu 48(%rdx),%xmm11
948 .byte 102,69,15,56,0,218
949 .byte 102,65,15,58,68,207,17
951 movdqu 32(%rdx),%xmm3
953 .byte 102,68,15,58,68,199,16
954 pshufd $78,%xmm11,%xmm12
957 .byte 102,65,15,56,0,218
958 movups 32(%rsi),%xmm7
960 .byte 102,68,15,58,68,218,0
961 pshufd $78,%xmm3,%xmm4
968 .byte 102,68,15,58,68,234,17
972 movdqa .L7_mask(%rip),%xmm8
974 .byte 102,76,15,110,200
977 .byte 102,69,15,56,0,200
979 .byte 102,68,15,58,68,231,0
983 .byte 102,15,58,68,222,0
991 .byte 102,15,58,68,238,17
993 movdqu 16(%rdx),%xmm11
994 .byte 102,69,15,56,0,218
995 .byte 102,15,58,68,231,16
997 movups 80(%rsi),%xmm7
998 .byte 102,69,15,56,0,194
1003 movdqa %xmm11,%xmm13
1005 pshufd $78,%xmm11,%xmm12
1009 .byte 102,69,15,58,68,222,0
1013 .byte 102,69,15,58,68,238,17
1015 pshufd $78,%xmm0,%xmm8
1018 .byte 102,68,15,58,68,231,0
1026 .byte 102,65,15,58,68,199,0
1027 .byte 102,65,15,58,68,207,17
1028 .byte 102,68,15,58,68,199,16
1068 movdqu 32(%rsi),%xmm7
1078 movdqu 16(%rdx),%xmm3
1079 .byte 102,69,15,56,0,194
1080 .byte 102,65,15,56,0,218
1084 pshufd $78,%xmm3,%xmm4
1086 .byte 102,15,58,68,218,0
1087 .byte 102,15,58,68,234,17
1088 .byte 102,15,58,68,231,0
1101 pshufd $78,%xmm0,%xmm4
1104 .byte 102,15,58,68,198,0
1105 .byte 102,15,58,68,206,17
1106 .byte 102,15,58,68,231,16
1112 .byte 102,69,15,56,0,202
1113 movdqu 16(%rdx),%xmm3
1118 .byte 102,65,15,56,0,218
1131 .byte 102,15,58,68,218,0
1139 pshufd $78,%xmm5,%xmm4
1145 .byte 102,15,58,68,234,17
1152 .byte 102,15,58,68,231,0
1161 pshufd $78,%xmm0,%xmm4
1164 .byte 102,15,58,68,198,0
1165 .byte 102,15,58,68,206,17
1166 .byte 102,15,58,68,231,16
1206 .byte 102,69,15,56,0,194
1209 pshufd $78,%xmm0,%xmm3
1211 .byte 102,15,58,68,194,0
1212 .byte 102,15,58,68,202,17
1213 .byte 102,15,58,68,223,0
1246 .byte 102,65,15,56,0,194
1249 .size gcm_ghash_clmul,.-gcm_ghash_clmul
1251 .type gcm_init_avx,@function
1256 vmovdqu (%rsi),%xmm2
1257 vpshufd $78,%xmm2,%xmm2
1260 vpshufd $255,%xmm2,%xmm4
1261 vpsrlq $63,%xmm2,%xmm3
1262 vpsllq $1,%xmm2,%xmm2
1263 vpxor %xmm5,%xmm5,%xmm5
1264 vpcmpgtd %xmm4,%xmm5,%xmm5
1265 vpslldq $8,%xmm3,%xmm3
1266 vpor %xmm3,%xmm2,%xmm2
1269 vpand .L0x1c2_polynomial(%rip),%xmm5,%xmm5
1270 vpxor %xmm5,%xmm2,%xmm2
1272 vpunpckhqdq %xmm2,%xmm2,%xmm6
1274 vpxor %xmm2,%xmm6,%xmm6
1276 jmp .Linit_start_avx
1279 vpalignr $8,%xmm3,%xmm4,%xmm5
1280 vmovdqu %xmm5,-16(%rdi)
1281 vpunpckhqdq %xmm0,%xmm0,%xmm3
1282 vpxor %xmm0,%xmm3,%xmm3
1283 vpclmulqdq $0x11,%xmm2,%xmm0,%xmm1
1284 vpclmulqdq $0x00,%xmm2,%xmm0,%xmm0
1285 vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3
1286 vpxor %xmm0,%xmm1,%xmm4
1287 vpxor %xmm4,%xmm3,%xmm3
1289 vpslldq $8,%xmm3,%xmm4
1290 vpsrldq $8,%xmm3,%xmm3
1291 vpxor %xmm4,%xmm0,%xmm0
1292 vpxor %xmm3,%xmm1,%xmm1
1293 vpsllq $57,%xmm0,%xmm3
1294 vpsllq $62,%xmm0,%xmm4
1295 vpxor %xmm3,%xmm4,%xmm4
1296 vpsllq $63,%xmm0,%xmm3
1297 vpxor %xmm3,%xmm4,%xmm4
1298 vpslldq $8,%xmm4,%xmm3
1299 vpsrldq $8,%xmm4,%xmm4
1300 vpxor %xmm3,%xmm0,%xmm0
1301 vpxor %xmm4,%xmm1,%xmm1
1303 vpsrlq $1,%xmm0,%xmm4
1304 vpxor %xmm0,%xmm1,%xmm1
1305 vpxor %xmm4,%xmm0,%xmm0
1306 vpsrlq $5,%xmm4,%xmm4
1307 vpxor %xmm4,%xmm0,%xmm0
1308 vpsrlq $1,%xmm0,%xmm0
1309 vpxor %xmm1,%xmm0,%xmm0
1312 vpunpckhqdq %xmm0,%xmm0,%xmm3
1313 vpxor %xmm0,%xmm3,%xmm3
1314 vpclmulqdq $0x11,%xmm2,%xmm0,%xmm1
1315 vpclmulqdq $0x00,%xmm2,%xmm0,%xmm0
1316 vpclmulqdq $0x00,%xmm6,%xmm3,%xmm3
1317 vpxor %xmm0,%xmm1,%xmm4
1318 vpxor %xmm4,%xmm3,%xmm3
1320 vpslldq $8,%xmm3,%xmm4
1321 vpsrldq $8,%xmm3,%xmm3
1322 vpxor %xmm4,%xmm0,%xmm0
1323 vpxor %xmm3,%xmm1,%xmm1
1324 vpsllq $57,%xmm0,%xmm3
1325 vpsllq $62,%xmm0,%xmm4
1326 vpxor %xmm3,%xmm4,%xmm4
1327 vpsllq $63,%xmm0,%xmm3
1328 vpxor %xmm3,%xmm4,%xmm4
1329 vpslldq $8,%xmm4,%xmm3
1330 vpsrldq $8,%xmm4,%xmm4
1331 vpxor %xmm3,%xmm0,%xmm0
1332 vpxor %xmm4,%xmm1,%xmm1
1334 vpsrlq $1,%xmm0,%xmm4
1335 vpxor %xmm0,%xmm1,%xmm1
1336 vpxor %xmm4,%xmm0,%xmm0
1337 vpsrlq $5,%xmm4,%xmm4
1338 vpxor %xmm4,%xmm0,%xmm0
1339 vpsrlq $1,%xmm0,%xmm0
1340 vpxor %xmm1,%xmm0,%xmm0
1341 vpshufd $78,%xmm5,%xmm3
1342 vpshufd $78,%xmm0,%xmm4
1343 vpxor %xmm5,%xmm3,%xmm3
1344 vmovdqu %xmm5,0(%rdi)
1345 vpxor %xmm0,%xmm4,%xmm4
1346 vmovdqu %xmm0,16(%rdi)
1351 vpalignr $8,%xmm4,%xmm3,%xmm5
1352 vmovdqu %xmm5,-16(%rdi)
1356 .size gcm_init_avx,.-gcm_init_avx
1357 .globl gcm_gmult_avx
1358 .type gcm_gmult_avx,@function
1362 .size gcm_gmult_avx,.-gcm_gmult_avx
1363 .globl gcm_ghash_avx
1364 .type gcm_ghash_avx,@function
1369 vmovdqu (%rdi),%xmm10
1370 leaq .L0x1c2_polynomial(%rip),%r10
1372 vmovdqu .Lbswap_mask(%rip),%xmm13
1373 vpshufb %xmm13,%xmm10,%xmm10
1378 vmovdqu 112(%rdx),%xmm14
1379 vmovdqu 0-64(%rsi),%xmm6
1380 vpshufb %xmm13,%xmm14,%xmm14
1381 vmovdqu 32-64(%rsi),%xmm7
1383 vpunpckhqdq %xmm14,%xmm14,%xmm9
1384 vmovdqu 96(%rdx),%xmm15
1385 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1386 vpxor %xmm14,%xmm9,%xmm9
1387 vpshufb %xmm13,%xmm15,%xmm15
1388 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1389 vmovdqu 16-64(%rsi),%xmm6
1390 vpunpckhqdq %xmm15,%xmm15,%xmm8
1391 vmovdqu 80(%rdx),%xmm14
1392 vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2
1393 vpxor %xmm15,%xmm8,%xmm8
1395 vpshufb %xmm13,%xmm14,%xmm14
1396 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3
1397 vpunpckhqdq %xmm14,%xmm14,%xmm9
1398 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4
1399 vmovdqu 48-64(%rsi),%xmm6
1400 vpxor %xmm14,%xmm9,%xmm9
1401 vmovdqu 64(%rdx),%xmm15
1402 vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5
1403 vmovdqu 80-64(%rsi),%xmm7
1405 vpshufb %xmm13,%xmm15,%xmm15
1406 vpxor %xmm0,%xmm3,%xmm3
1407 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1408 vpxor %xmm1,%xmm4,%xmm4
1409 vpunpckhqdq %xmm15,%xmm15,%xmm8
1410 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1411 vmovdqu 64-64(%rsi),%xmm6
1412 vpxor %xmm2,%xmm5,%xmm5
1413 vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2
1414 vpxor %xmm15,%xmm8,%xmm8
1416 vmovdqu 48(%rdx),%xmm14
1417 vpxor %xmm3,%xmm0,%xmm0
1418 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3
1419 vpxor %xmm4,%xmm1,%xmm1
1420 vpshufb %xmm13,%xmm14,%xmm14
1421 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4
1422 vmovdqu 96-64(%rsi),%xmm6
1423 vpxor %xmm5,%xmm2,%xmm2
1424 vpunpckhqdq %xmm14,%xmm14,%xmm9
1425 vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5
1426 vmovdqu 128-64(%rsi),%xmm7
1427 vpxor %xmm14,%xmm9,%xmm9
1429 vmovdqu 32(%rdx),%xmm15
1430 vpxor %xmm0,%xmm3,%xmm3
1431 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1432 vpxor %xmm1,%xmm4,%xmm4
1433 vpshufb %xmm13,%xmm15,%xmm15
1434 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1435 vmovdqu 112-64(%rsi),%xmm6
1436 vpxor %xmm2,%xmm5,%xmm5
1437 vpunpckhqdq %xmm15,%xmm15,%xmm8
1438 vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2
1439 vpxor %xmm15,%xmm8,%xmm8
1441 vmovdqu 16(%rdx),%xmm14
1442 vpxor %xmm3,%xmm0,%xmm0
1443 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3
1444 vpxor %xmm4,%xmm1,%xmm1
1445 vpshufb %xmm13,%xmm14,%xmm14
1446 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4
1447 vmovdqu 144-64(%rsi),%xmm6
1448 vpxor %xmm5,%xmm2,%xmm2
1449 vpunpckhqdq %xmm14,%xmm14,%xmm9
1450 vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5
1451 vmovdqu 176-64(%rsi),%xmm7
1452 vpxor %xmm14,%xmm9,%xmm9
1454 vmovdqu (%rdx),%xmm15
1455 vpxor %xmm0,%xmm3,%xmm3
1456 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1457 vpxor %xmm1,%xmm4,%xmm4
1458 vpshufb %xmm13,%xmm15,%xmm15
1459 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1460 vmovdqu 160-64(%rsi),%xmm6
1461 vpxor %xmm2,%xmm5,%xmm5
1462 vpclmulqdq $0x10,%xmm7,%xmm9,%xmm2
1468 vpxor %xmm10,%xmm15,%xmm15
1474 vpunpckhqdq %xmm15,%xmm15,%xmm8
1475 vmovdqu 112(%rdx),%xmm14
1476 vpxor %xmm0,%xmm3,%xmm3
1477 vpxor %xmm15,%xmm8,%xmm8
1478 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm10
1479 vpshufb %xmm13,%xmm14,%xmm14
1480 vpxor %xmm1,%xmm4,%xmm4
1481 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm11
1482 vmovdqu 0-64(%rsi),%xmm6
1483 vpunpckhqdq %xmm14,%xmm14,%xmm9
1484 vpxor %xmm2,%xmm5,%xmm5
1485 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm12
1486 vmovdqu 32-64(%rsi),%xmm7
1487 vpxor %xmm14,%xmm9,%xmm9
1489 vmovdqu 96(%rdx),%xmm15
1490 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1491 vpxor %xmm3,%xmm10,%xmm10
1492 vpshufb %xmm13,%xmm15,%xmm15
1493 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1494 vxorps %xmm4,%xmm11,%xmm11
1495 vmovdqu 16-64(%rsi),%xmm6
1496 vpunpckhqdq %xmm15,%xmm15,%xmm8
1497 vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2
1498 vpxor %xmm5,%xmm12,%xmm12
1499 vxorps %xmm15,%xmm8,%xmm8
1501 vmovdqu 80(%rdx),%xmm14
1502 vpxor %xmm10,%xmm12,%xmm12
1503 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3
1504 vpxor %xmm11,%xmm12,%xmm12
1505 vpslldq $8,%xmm12,%xmm9
1506 vpxor %xmm0,%xmm3,%xmm3
1507 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4
1508 vpsrldq $8,%xmm12,%xmm12
1509 vpxor %xmm9,%xmm10,%xmm10
1510 vmovdqu 48-64(%rsi),%xmm6
1511 vpshufb %xmm13,%xmm14,%xmm14
1512 vxorps %xmm12,%xmm11,%xmm11
1513 vpxor %xmm1,%xmm4,%xmm4
1514 vpunpckhqdq %xmm14,%xmm14,%xmm9
1515 vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5
1516 vmovdqu 80-64(%rsi),%xmm7
1517 vpxor %xmm14,%xmm9,%xmm9
1518 vpxor %xmm2,%xmm5,%xmm5
1520 vmovdqu 64(%rdx),%xmm15
1521 vpalignr $8,%xmm10,%xmm10,%xmm12
1522 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1523 vpshufb %xmm13,%xmm15,%xmm15
1524 vpxor %xmm3,%xmm0,%xmm0
1525 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1526 vmovdqu 64-64(%rsi),%xmm6
1527 vpunpckhqdq %xmm15,%xmm15,%xmm8
1528 vpxor %xmm4,%xmm1,%xmm1
1529 vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2
1530 vxorps %xmm15,%xmm8,%xmm8
1531 vpxor %xmm5,%xmm2,%xmm2
1533 vmovdqu 48(%rdx),%xmm14
1534 vpclmulqdq $0x10,(%r10),%xmm10,%xmm10
1535 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3
1536 vpshufb %xmm13,%xmm14,%xmm14
1537 vpxor %xmm0,%xmm3,%xmm3
1538 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4
1539 vmovdqu 96-64(%rsi),%xmm6
1540 vpunpckhqdq %xmm14,%xmm14,%xmm9
1541 vpxor %xmm1,%xmm4,%xmm4
1542 vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5
1543 vmovdqu 128-64(%rsi),%xmm7
1544 vpxor %xmm14,%xmm9,%xmm9
1545 vpxor %xmm2,%xmm5,%xmm5
1547 vmovdqu 32(%rdx),%xmm15
1548 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1549 vpshufb %xmm13,%xmm15,%xmm15
1550 vpxor %xmm3,%xmm0,%xmm0
1551 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1552 vmovdqu 112-64(%rsi),%xmm6
1553 vpunpckhqdq %xmm15,%xmm15,%xmm8
1554 vpxor %xmm4,%xmm1,%xmm1
1555 vpclmulqdq $0x00,%xmm7,%xmm9,%xmm2
1556 vpxor %xmm15,%xmm8,%xmm8
1557 vpxor %xmm5,%xmm2,%xmm2
1558 vxorps %xmm12,%xmm10,%xmm10
1560 vmovdqu 16(%rdx),%xmm14
1561 vpalignr $8,%xmm10,%xmm10,%xmm12
1562 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm3
1563 vpshufb %xmm13,%xmm14,%xmm14
1564 vpxor %xmm0,%xmm3,%xmm3
1565 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm4
1566 vmovdqu 144-64(%rsi),%xmm6
1567 vpclmulqdq $0x10,(%r10),%xmm10,%xmm10
1568 vxorps %xmm11,%xmm12,%xmm12
1569 vpunpckhqdq %xmm14,%xmm14,%xmm9
1570 vpxor %xmm1,%xmm4,%xmm4
1571 vpclmulqdq $0x10,%xmm7,%xmm8,%xmm5
1572 vmovdqu 176-64(%rsi),%xmm7
1573 vpxor %xmm14,%xmm9,%xmm9
1574 vpxor %xmm2,%xmm5,%xmm5
1576 vmovdqu (%rdx),%xmm15
1577 vpclmulqdq $0x00,%xmm6,%xmm14,%xmm0
1578 vpshufb %xmm13,%xmm15,%xmm15
1579 vpclmulqdq $0x11,%xmm6,%xmm14,%xmm1
1580 vmovdqu 160-64(%rsi),%xmm6
1581 vpxor %xmm12,%xmm15,%xmm15
1582 vpclmulqdq $0x10,%xmm7,%xmm9,%xmm2
1583 vpxor %xmm10,%xmm15,%xmm15
1590 jmp .Ltail_no_xor_avx
1594 vmovdqu -16(%rdx,%rcx,1),%xmm14
1595 leaq (%rdx,%rcx,1),%rdx
1596 vmovdqu 0-64(%rsi),%xmm6
1597 vmovdqu 32-64(%rsi),%xmm7
1598 vpshufb %xmm13,%xmm14,%xmm15
1606 vpunpckhqdq %xmm15,%xmm15,%xmm8
1607 vpxor %xmm0,%xmm3,%xmm3
1608 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1609 vpxor %xmm15,%xmm8,%xmm8
1610 vmovdqu -32(%rdx),%xmm14
1611 vpxor %xmm1,%xmm4,%xmm4
1612 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1613 vmovdqu 16-64(%rsi),%xmm6
1614 vpshufb %xmm13,%xmm14,%xmm15
1615 vpxor %xmm2,%xmm5,%xmm5
1616 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1617 vpsrldq $8,%xmm7,%xmm7
1621 vpunpckhqdq %xmm15,%xmm15,%xmm8
1622 vpxor %xmm0,%xmm3,%xmm3
1623 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1624 vpxor %xmm15,%xmm8,%xmm8
1625 vmovdqu -48(%rdx),%xmm14
1626 vpxor %xmm1,%xmm4,%xmm4
1627 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1628 vmovdqu 48-64(%rsi),%xmm6
1629 vpshufb %xmm13,%xmm14,%xmm15
1630 vpxor %xmm2,%xmm5,%xmm5
1631 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1632 vmovdqu 80-64(%rsi),%xmm7
1636 vpunpckhqdq %xmm15,%xmm15,%xmm8
1637 vpxor %xmm0,%xmm3,%xmm3
1638 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1639 vpxor %xmm15,%xmm8,%xmm8
1640 vmovdqu -64(%rdx),%xmm14
1641 vpxor %xmm1,%xmm4,%xmm4
1642 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1643 vmovdqu 64-64(%rsi),%xmm6
1644 vpshufb %xmm13,%xmm14,%xmm15
1645 vpxor %xmm2,%xmm5,%xmm5
1646 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1647 vpsrldq $8,%xmm7,%xmm7
1651 vpunpckhqdq %xmm15,%xmm15,%xmm8
1652 vpxor %xmm0,%xmm3,%xmm3
1653 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1654 vpxor %xmm15,%xmm8,%xmm8
1655 vmovdqu -80(%rdx),%xmm14
1656 vpxor %xmm1,%xmm4,%xmm4
1657 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1658 vmovdqu 96-64(%rsi),%xmm6
1659 vpshufb %xmm13,%xmm14,%xmm15
1660 vpxor %xmm2,%xmm5,%xmm5
1661 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1662 vmovdqu 128-64(%rsi),%xmm7
1666 vpunpckhqdq %xmm15,%xmm15,%xmm8
1667 vpxor %xmm0,%xmm3,%xmm3
1668 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1669 vpxor %xmm15,%xmm8,%xmm8
1670 vmovdqu -96(%rdx),%xmm14
1671 vpxor %xmm1,%xmm4,%xmm4
1672 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1673 vmovdqu 112-64(%rsi),%xmm6
1674 vpshufb %xmm13,%xmm14,%xmm15
1675 vpxor %xmm2,%xmm5,%xmm5
1676 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1677 vpsrldq $8,%xmm7,%xmm7
1681 vpunpckhqdq %xmm15,%xmm15,%xmm8
1682 vpxor %xmm0,%xmm3,%xmm3
1683 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1684 vpxor %xmm15,%xmm8,%xmm8
1685 vmovdqu -112(%rdx),%xmm14
1686 vpxor %xmm1,%xmm4,%xmm4
1687 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1688 vmovdqu 144-64(%rsi),%xmm6
1689 vpshufb %xmm13,%xmm14,%xmm15
1690 vpxor %xmm2,%xmm5,%xmm5
1691 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1692 vmovq 184-64(%rsi),%xmm7
1698 vpxor %xmm10,%xmm15,%xmm15
1700 vpunpckhqdq %xmm15,%xmm15,%xmm8
1701 vpxor %xmm0,%xmm3,%xmm3
1702 vpclmulqdq $0x00,%xmm6,%xmm15,%xmm0
1703 vpxor %xmm15,%xmm8,%xmm8
1704 vpxor %xmm1,%xmm4,%xmm4
1705 vpclmulqdq $0x11,%xmm6,%xmm15,%xmm1
1706 vpxor %xmm2,%xmm5,%xmm5
1707 vpclmulqdq $0x00,%xmm7,%xmm8,%xmm2
1709 vmovdqu (%r10),%xmm12
1711 vpxor %xmm0,%xmm3,%xmm10
1712 vpxor %xmm1,%xmm4,%xmm11
1713 vpxor %xmm2,%xmm5,%xmm5
1715 vpxor %xmm10,%xmm5,%xmm5
1716 vpxor %xmm11,%xmm5,%xmm5
1717 vpslldq $8,%xmm5,%xmm9
1718 vpsrldq $8,%xmm5,%xmm5
1719 vpxor %xmm9,%xmm10,%xmm10
1720 vpxor %xmm5,%xmm11,%xmm11
1722 vpclmulqdq $0x10,%xmm12,%xmm10,%xmm9
1723 vpalignr $8,%xmm10,%xmm10,%xmm10
1724 vpxor %xmm9,%xmm10,%xmm10
1726 vpclmulqdq $0x10,%xmm12,%xmm10,%xmm9
1727 vpalignr $8,%xmm10,%xmm10,%xmm10
1728 vpxor %xmm11,%xmm10,%xmm10
1729 vpxor %xmm9,%xmm10,%xmm10
1734 vpshufb %xmm13,%xmm10,%xmm10
1735 vmovdqu %xmm10,(%rdi)
1738 .size gcm_ghash_avx,.-gcm_ghash_avx
1741 .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
1743 .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
1749 .type .Lrem_4bit,@object
1751 .long 0,0,0,471859200,0,943718400,0,610271232
1752 .long 0,1887436800,0,1822425088,0,1220542464,0,1423966208
1753 .long 0,3774873600,0,4246732800,0,3644850176,0,3311403008
1754 .long 0,2441084928,0,2376073216,0,2847932416,0,3051356160
1755 .type .Lrem_8bit,@object
1757 .value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E
1758 .value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E
1759 .value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E
1760 .value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E
1761 .value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E
1762 .value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E
1763 .value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E
1764 .value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E
1765 .value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE
1766 .value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE
1767 .value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE
1768 .value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE
1769 .value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E
1770 .value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E
1771 .value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE
1772 .value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE
1773 .value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E
1774 .value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E
1775 .value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E
1776 .value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E
1777 .value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E
1778 .value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E
1779 .value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E
1780 .value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E
1781 .value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE
1782 .value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE
1783 .value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE
1784 .value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE
1785 .value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E
1786 .value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E
1787 .value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE
1788 .value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE
1790 .byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0