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