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 <ring-core/asm_base.h> 5 6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) 7.text 8 9 10.p2align 5 11_aesni_ctr32_ghash_6x: 12 13 vmovdqu 32(%r11),%xmm2 14 subq $6,%rdx 15 vpxor %xmm4,%xmm4,%xmm4 16 vmovdqu 0-128(%rcx),%xmm15 17 vpaddb %xmm2,%xmm1,%xmm10 18 vpaddb %xmm2,%xmm10,%xmm11 19 vpaddb %xmm2,%xmm11,%xmm12 20 vpaddb %xmm2,%xmm12,%xmm13 21 vpaddb %xmm2,%xmm13,%xmm14 22 vpxor %xmm15,%xmm1,%xmm9 23 vmovdqu %xmm4,16+8(%rsp) 24 jmp L$oop6x 25 26.p2align 5 27L$oop6x: 28 addl $100663296,%ebx 29 jc L$handle_ctr32 30 vmovdqu 0-32(%r9),%xmm3 31 vpaddb %xmm2,%xmm14,%xmm1 32 vpxor %xmm15,%xmm10,%xmm10 33 vpxor %xmm15,%xmm11,%xmm11 34 35L$resume_ctr32: 36 vmovdqu %xmm1,(%r8) 37 vpclmulqdq $0x10,%xmm3,%xmm7,%xmm5 38 vpxor %xmm15,%xmm12,%xmm12 39 vmovups 16-128(%rcx),%xmm2 40 vpclmulqdq $0x01,%xmm3,%xmm7,%xmm6 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 xorq %r12,%r12 59 cmpq %r14,%r15 60 61 vaesenc %xmm2,%xmm9,%xmm9 62 vmovdqu 48+8(%rsp),%xmm0 63 vpxor %xmm15,%xmm13,%xmm13 64 vpclmulqdq $0x00,%xmm3,%xmm7,%xmm1 65 vaesenc %xmm2,%xmm10,%xmm10 66 vpxor %xmm15,%xmm14,%xmm14 67 setnc %r12b 68 vpclmulqdq $0x11,%xmm3,%xmm7,%xmm7 69 vaesenc %xmm2,%xmm11,%xmm11 70 vmovdqu 16-32(%r9),%xmm3 71 negq %r12 72 vaesenc %xmm2,%xmm12,%xmm12 73 vpxor %xmm5,%xmm6,%xmm6 74 vpclmulqdq $0x00,%xmm3,%xmm0,%xmm5 75 vpxor %xmm4,%xmm8,%xmm8 76 vaesenc %xmm2,%xmm13,%xmm13 77 vpxor %xmm5,%xmm1,%xmm4 78 andq $0x60,%r12 79 vmovups 32-128(%rcx),%xmm15 80 vpclmulqdq $0x10,%xmm3,%xmm0,%xmm1 81 vaesenc %xmm2,%xmm14,%xmm14 82 83 vpclmulqdq $0x01,%xmm3,%xmm0,%xmm2 84 leaq (%r14,%r12,1),%r14 85 vaesenc %xmm15,%xmm9,%xmm9 86 vpxor 16+8(%rsp),%xmm8,%xmm8 87 vpclmulqdq $0x11,%xmm3,%xmm0,%xmm3 88 vmovdqu 64+8(%rsp),%xmm0 89 vaesenc %xmm15,%xmm10,%xmm10 90 movbeq 88(%r14),%r13 91 vaesenc %xmm15,%xmm11,%xmm11 92 movbeq 80(%r14),%r12 93 vaesenc %xmm15,%xmm12,%xmm12 94 movq %r13,32+8(%rsp) 95 vaesenc %xmm15,%xmm13,%xmm13 96 movq %r12,40+8(%rsp) 97 vmovdqu 48-32(%r9),%xmm5 98 vaesenc %xmm15,%xmm14,%xmm14 99 100 vmovups 48-128(%rcx),%xmm15 101 vpxor %xmm1,%xmm6,%xmm6 102 vpclmulqdq $0x00,%xmm5,%xmm0,%xmm1 103 vaesenc %xmm15,%xmm9,%xmm9 104 vpxor %xmm2,%xmm6,%xmm6 105 vpclmulqdq $0x10,%xmm5,%xmm0,%xmm2 106 vaesenc %xmm15,%xmm10,%xmm10 107 vpxor %xmm3,%xmm7,%xmm7 108 vpclmulqdq $0x01,%xmm5,%xmm0,%xmm3 109 vaesenc %xmm15,%xmm11,%xmm11 110 vpclmulqdq $0x11,%xmm5,%xmm0,%xmm5 111 vmovdqu 80+8(%rsp),%xmm0 112 vaesenc %xmm15,%xmm12,%xmm12 113 vaesenc %xmm15,%xmm13,%xmm13 114 vpxor %xmm1,%xmm4,%xmm4 115 vmovdqu 64-32(%r9),%xmm1 116 vaesenc %xmm15,%xmm14,%xmm14 117 118 vmovups 64-128(%rcx),%xmm15 119 vpxor %xmm2,%xmm6,%xmm6 120 vpclmulqdq $0x00,%xmm1,%xmm0,%xmm2 121 vaesenc %xmm15,%xmm9,%xmm9 122 vpxor %xmm3,%xmm6,%xmm6 123 vpclmulqdq $0x10,%xmm1,%xmm0,%xmm3 124 vaesenc %xmm15,%xmm10,%xmm10 125 movbeq 72(%r14),%r13 126 vpxor %xmm5,%xmm7,%xmm7 127 vpclmulqdq $0x01,%xmm1,%xmm0,%xmm5 128 vaesenc %xmm15,%xmm11,%xmm11 129 movbeq 64(%r14),%r12 130 vpclmulqdq $0x11,%xmm1,%xmm0,%xmm1 131 vmovdqu 96+8(%rsp),%xmm0 132 vaesenc %xmm15,%xmm12,%xmm12 133 movq %r13,48+8(%rsp) 134 vaesenc %xmm15,%xmm13,%xmm13 135 movq %r12,56+8(%rsp) 136 vpxor %xmm2,%xmm4,%xmm4 137 vmovdqu 96-32(%r9),%xmm2 138 vaesenc %xmm15,%xmm14,%xmm14 139 140 vmovups 80-128(%rcx),%xmm15 141 vpxor %xmm3,%xmm6,%xmm6 142 vpclmulqdq $0x00,%xmm2,%xmm0,%xmm3 143 vaesenc %xmm15,%xmm9,%xmm9 144 vpxor %xmm5,%xmm6,%xmm6 145 vpclmulqdq $0x10,%xmm2,%xmm0,%xmm5 146 vaesenc %xmm15,%xmm10,%xmm10 147 movbeq 56(%r14),%r13 148 vpxor %xmm1,%xmm7,%xmm7 149 vpclmulqdq $0x01,%xmm2,%xmm0,%xmm1 150 vpxor 112+8(%rsp),%xmm8,%xmm8 151 vaesenc %xmm15,%xmm11,%xmm11 152 movbeq 48(%r14),%r12 153 vpclmulqdq $0x11,%xmm2,%xmm0,%xmm2 154 vaesenc %xmm15,%xmm12,%xmm12 155 movq %r13,64+8(%rsp) 156 vaesenc %xmm15,%xmm13,%xmm13 157 movq %r12,72+8(%rsp) 158 vpxor %xmm3,%xmm4,%xmm4 159 vmovdqu 112-32(%r9),%xmm3 160 vaesenc %xmm15,%xmm14,%xmm14 161 162 vmovups 96-128(%rcx),%xmm15 163 vpxor %xmm5,%xmm6,%xmm6 164 vpclmulqdq $0x10,%xmm3,%xmm8,%xmm5 165 vaesenc %xmm15,%xmm9,%xmm9 166 vpxor %xmm1,%xmm6,%xmm6 167 vpclmulqdq $0x01,%xmm3,%xmm8,%xmm1 168 vaesenc %xmm15,%xmm10,%xmm10 169 movbeq 40(%r14),%r13 170 vpxor %xmm2,%xmm7,%xmm7 171 vpclmulqdq $0x00,%xmm3,%xmm8,%xmm2 172 vaesenc %xmm15,%xmm11,%xmm11 173 movbeq 32(%r14),%r12 174 vpclmulqdq $0x11,%xmm3,%xmm8,%xmm8 175 vaesenc %xmm15,%xmm12,%xmm12 176 movq %r13,80+8(%rsp) 177 vaesenc %xmm15,%xmm13,%xmm13 178 movq %r12,88+8(%rsp) 179 vpxor %xmm5,%xmm6,%xmm6 180 vaesenc %xmm15,%xmm14,%xmm14 181 vpxor %xmm1,%xmm6,%xmm6 182 183 vmovups 112-128(%rcx),%xmm15 184 vpslldq $8,%xmm6,%xmm5 185 vpxor %xmm2,%xmm4,%xmm4 186 vmovdqu 16(%r11),%xmm3 187 188 vaesenc %xmm15,%xmm9,%xmm9 189 vpxor %xmm8,%xmm7,%xmm7 190 vaesenc %xmm15,%xmm10,%xmm10 191 vpxor %xmm5,%xmm4,%xmm4 192 movbeq 24(%r14),%r13 193 vaesenc %xmm15,%xmm11,%xmm11 194 movbeq 16(%r14),%r12 195 vpalignr $8,%xmm4,%xmm4,%xmm0 196 vpclmulqdq $0x10,%xmm3,%xmm4,%xmm4 197 movq %r13,96+8(%rsp) 198 vaesenc %xmm15,%xmm12,%xmm12 199 movq %r12,104+8(%rsp) 200 vaesenc %xmm15,%xmm13,%xmm13 201 vmovups 128-128(%rcx),%xmm1 202 vaesenc %xmm15,%xmm14,%xmm14 203 204 vaesenc %xmm1,%xmm9,%xmm9 205 vmovups 144-128(%rcx),%xmm15 206 vaesenc %xmm1,%xmm10,%xmm10 207 vpsrldq $8,%xmm6,%xmm6 208 vaesenc %xmm1,%xmm11,%xmm11 209 vpxor %xmm6,%xmm7,%xmm7 210 vaesenc %xmm1,%xmm12,%xmm12 211 vpxor %xmm0,%xmm4,%xmm4 212 movbeq 8(%r14),%r13 213 vaesenc %xmm1,%xmm13,%xmm13 214 movbeq 0(%r14),%r12 215 vaesenc %xmm1,%xmm14,%xmm14 216 vmovups 160-128(%rcx),%xmm1 217 cmpl $11,%r10d 218 jb L$enc_tail 219 220 vaesenc %xmm15,%xmm9,%xmm9 221 vaesenc %xmm15,%xmm10,%xmm10 222 vaesenc %xmm15,%xmm11,%xmm11 223 vaesenc %xmm15,%xmm12,%xmm12 224 vaesenc %xmm15,%xmm13,%xmm13 225 vaesenc %xmm15,%xmm14,%xmm14 226 227 vaesenc %xmm1,%xmm9,%xmm9 228 vaesenc %xmm1,%xmm10,%xmm10 229 vaesenc %xmm1,%xmm11,%xmm11 230 vaesenc %xmm1,%xmm12,%xmm12 231 vaesenc %xmm1,%xmm13,%xmm13 232 vmovups 176-128(%rcx),%xmm15 233 vaesenc %xmm1,%xmm14,%xmm14 234 vmovups 192-128(%rcx),%xmm1 235 236 237 vaesenc %xmm15,%xmm9,%xmm9 238 vaesenc %xmm15,%xmm10,%xmm10 239 vaesenc %xmm15,%xmm11,%xmm11 240 vaesenc %xmm15,%xmm12,%xmm12 241 vaesenc %xmm15,%xmm13,%xmm13 242 vaesenc %xmm15,%xmm14,%xmm14 243 244 vaesenc %xmm1,%xmm9,%xmm9 245 vaesenc %xmm1,%xmm10,%xmm10 246 vaesenc %xmm1,%xmm11,%xmm11 247 vaesenc %xmm1,%xmm12,%xmm12 248 vaesenc %xmm1,%xmm13,%xmm13 249 vmovups 208-128(%rcx),%xmm15 250 vaesenc %xmm1,%xmm14,%xmm14 251 vmovups 224-128(%rcx),%xmm1 252 jmp L$enc_tail 253 254.p2align 5 255L$handle_ctr32: 256 vmovdqu (%r11),%xmm0 257 vpshufb %xmm0,%xmm1,%xmm6 258 vmovdqu 48(%r11),%xmm5 259 vpaddd 64(%r11),%xmm6,%xmm10 260 vpaddd %xmm5,%xmm6,%xmm11 261 vmovdqu 0-32(%r9),%xmm3 262 vpaddd %xmm5,%xmm10,%xmm12 263 vpshufb %xmm0,%xmm10,%xmm10 264 vpaddd %xmm5,%xmm11,%xmm13 265 vpshufb %xmm0,%xmm11,%xmm11 266 vpxor %xmm15,%xmm10,%xmm10 267 vpaddd %xmm5,%xmm12,%xmm14 268 vpshufb %xmm0,%xmm12,%xmm12 269 vpxor %xmm15,%xmm11,%xmm11 270 vpaddd %xmm5,%xmm13,%xmm1 271 vpshufb %xmm0,%xmm13,%xmm13 272 vpshufb %xmm0,%xmm14,%xmm14 273 vpshufb %xmm0,%xmm1,%xmm1 274 jmp L$resume_ctr32 275 276.p2align 5 277L$enc_tail: 278 vaesenc %xmm15,%xmm9,%xmm9 279 vmovdqu %xmm7,16+8(%rsp) 280 vpalignr $8,%xmm4,%xmm4,%xmm8 281 vaesenc %xmm15,%xmm10,%xmm10 282 vpclmulqdq $0x10,%xmm3,%xmm4,%xmm4 283 vpxor 0(%rdi),%xmm1,%xmm2 284 vaesenc %xmm15,%xmm11,%xmm11 285 vpxor 16(%rdi),%xmm1,%xmm0 286 vaesenc %xmm15,%xmm12,%xmm12 287 vpxor 32(%rdi),%xmm1,%xmm5 288 vaesenc %xmm15,%xmm13,%xmm13 289 vpxor 48(%rdi),%xmm1,%xmm6 290 vaesenc %xmm15,%xmm14,%xmm14 291 vpxor 64(%rdi),%xmm1,%xmm7 292 vpxor 80(%rdi),%xmm1,%xmm3 293 vmovdqu (%r8),%xmm1 294 295 vaesenclast %xmm2,%xmm9,%xmm9 296 vmovdqu 32(%r11),%xmm2 297 vaesenclast %xmm0,%xmm10,%xmm10 298 vpaddb %xmm2,%xmm1,%xmm0 299 movq %r13,112+8(%rsp) 300 leaq 96(%rdi),%rdi 301 302 prefetcht0 512(%rdi) 303 prefetcht0 576(%rdi) 304 vaesenclast %xmm5,%xmm11,%xmm11 305 vpaddb %xmm2,%xmm0,%xmm5 306 movq %r12,120+8(%rsp) 307 leaq 96(%rsi),%rsi 308 vmovdqu 0-128(%rcx),%xmm15 309 vaesenclast %xmm6,%xmm12,%xmm12 310 vpaddb %xmm2,%xmm5,%xmm6 311 vaesenclast %xmm7,%xmm13,%xmm13 312 vpaddb %xmm2,%xmm6,%xmm7 313 vaesenclast %xmm3,%xmm14,%xmm14 314 vpaddb %xmm2,%xmm7,%xmm3 315 316 addq $0x60,%rax 317 subq $0x6,%rdx 318 jc L$6x_done 319 320 vmovups %xmm9,-96(%rsi) 321 vpxor %xmm15,%xmm1,%xmm9 322 vmovups %xmm10,-80(%rsi) 323 vmovdqa %xmm0,%xmm10 324 vmovups %xmm11,-64(%rsi) 325 vmovdqa %xmm5,%xmm11 326 vmovups %xmm12,-48(%rsi) 327 vmovdqa %xmm6,%xmm12 328 vmovups %xmm13,-32(%rsi) 329 vmovdqa %xmm7,%xmm13 330 vmovups %xmm14,-16(%rsi) 331 vmovdqa %xmm3,%xmm14 332 vmovdqu 32+8(%rsp),%xmm7 333 jmp L$oop6x 334 335L$6x_done: 336 vpxor 16+8(%rsp),%xmm8,%xmm8 337 vpxor %xmm4,%xmm8,%xmm8 338 339 ret 340 341 342.globl _aesni_gcm_decrypt 343.private_extern _aesni_gcm_decrypt 344 345.p2align 5 346_aesni_gcm_decrypt: 347 348 349_CET_ENDBR 350 xorq %rax,%rax 351 352 353 354 cmpq $0x60,%rdx 355 jb L$gcm_dec_abort 356 357 pushq %rbp 358 359 360 movq %rsp,%rbp 361 362 pushq %rbx 363 364 365 pushq %r12 366 367 368 pushq %r13 369 370 371 pushq %r14 372 373 374 pushq %r15 375 376 377 vzeroupper 378 379 movq 16(%rbp),%r12 380 vmovdqu (%r8),%xmm1 381 addq $-128,%rsp 382 movl 12(%r8),%ebx 383 leaq L$bswap_mask(%rip),%r11 384 leaq -128(%rcx),%r14 385 movq $0xf80,%r15 386 vmovdqu (%r12),%xmm8 387 andq $-128,%rsp 388 vmovdqu (%r11),%xmm0 389 leaq 128(%rcx),%rcx 390 leaq 32(%r9),%r9 391 movl 240-128(%rcx),%r10d 392 vpshufb %xmm0,%xmm8,%xmm8 393 394 andq %r15,%r14 395 andq %rsp,%r15 396 subq %r14,%r15 397 jc L$dec_no_key_aliasing 398 cmpq $768,%r15 399 jnc L$dec_no_key_aliasing 400 subq %r15,%rsp 401L$dec_no_key_aliasing: 402 403 vmovdqu 80(%rdi),%xmm7 404 movq %rdi,%r14 405 vmovdqu 64(%rdi),%xmm4 406 407 408 409 410 411 412 413 leaq -192(%rdi,%rdx,1),%r15 414 415 vmovdqu 48(%rdi),%xmm5 416 shrq $4,%rdx 417 xorq %rax,%rax 418 vmovdqu 32(%rdi),%xmm6 419 vpshufb %xmm0,%xmm7,%xmm7 420 vmovdqu 16(%rdi),%xmm2 421 vpshufb %xmm0,%xmm4,%xmm4 422 vmovdqu (%rdi),%xmm3 423 vpshufb %xmm0,%xmm5,%xmm5 424 vmovdqu %xmm4,48(%rsp) 425 vpshufb %xmm0,%xmm6,%xmm6 426 vmovdqu %xmm5,64(%rsp) 427 vpshufb %xmm0,%xmm2,%xmm2 428 vmovdqu %xmm6,80(%rsp) 429 vpshufb %xmm0,%xmm3,%xmm3 430 vmovdqu %xmm2,96(%rsp) 431 vmovdqu %xmm3,112(%rsp) 432 433 call _aesni_ctr32_ghash_6x 434 435 movq 16(%rbp),%r12 436 vmovups %xmm9,-96(%rsi) 437 vmovups %xmm10,-80(%rsi) 438 vmovups %xmm11,-64(%rsi) 439 vmovups %xmm12,-48(%rsi) 440 vmovups %xmm13,-32(%rsi) 441 vmovups %xmm14,-16(%rsi) 442 443 vpshufb (%r11),%xmm8,%xmm8 444 vmovdqu %xmm8,(%r12) 445 446 vzeroupper 447 leaq -40(%rbp),%rsp 448 449 popq %r15 450 451 popq %r14 452 453 popq %r13 454 455 popq %r12 456 457 popq %rbx 458 459 popq %rbp 460 461L$gcm_dec_abort: 462 ret 463 464 465 466 467.p2align 5 468_aesni_ctr32_6x: 469 470 vmovdqu 0-128(%rcx),%xmm4 471 vmovdqu 32(%r11),%xmm2 472 leaq -1(%r10),%r13 473 vmovups 16-128(%rcx),%xmm15 474 leaq 32-128(%rcx),%r12 475 vpxor %xmm4,%xmm1,%xmm9 476 addl $100663296,%ebx 477 jc L$handle_ctr32_2 478 vpaddb %xmm2,%xmm1,%xmm10 479 vpaddb %xmm2,%xmm10,%xmm11 480 vpxor %xmm4,%xmm10,%xmm10 481 vpaddb %xmm2,%xmm11,%xmm12 482 vpxor %xmm4,%xmm11,%xmm11 483 vpaddb %xmm2,%xmm12,%xmm13 484 vpxor %xmm4,%xmm12,%xmm12 485 vpaddb %xmm2,%xmm13,%xmm14 486 vpxor %xmm4,%xmm13,%xmm13 487 vpaddb %xmm2,%xmm14,%xmm1 488 vpxor %xmm4,%xmm14,%xmm14 489 jmp L$oop_ctr32 490 491.p2align 4 492L$oop_ctr32: 493 vaesenc %xmm15,%xmm9,%xmm9 494 vaesenc %xmm15,%xmm10,%xmm10 495 vaesenc %xmm15,%xmm11,%xmm11 496 vaesenc %xmm15,%xmm12,%xmm12 497 vaesenc %xmm15,%xmm13,%xmm13 498 vaesenc %xmm15,%xmm14,%xmm14 499 vmovups (%r12),%xmm15 500 leaq 16(%r12),%r12 501 decl %r13d 502 jnz L$oop_ctr32 503 504 vmovdqu (%r12),%xmm3 505 vaesenc %xmm15,%xmm9,%xmm9 506 vpxor 0(%rdi),%xmm3,%xmm4 507 vaesenc %xmm15,%xmm10,%xmm10 508 vpxor 16(%rdi),%xmm3,%xmm5 509 vaesenc %xmm15,%xmm11,%xmm11 510 vpxor 32(%rdi),%xmm3,%xmm6 511 vaesenc %xmm15,%xmm12,%xmm12 512 vpxor 48(%rdi),%xmm3,%xmm8 513 vaesenc %xmm15,%xmm13,%xmm13 514 vpxor 64(%rdi),%xmm3,%xmm2 515 vaesenc %xmm15,%xmm14,%xmm14 516 vpxor 80(%rdi),%xmm3,%xmm3 517 leaq 96(%rdi),%rdi 518 519 vaesenclast %xmm4,%xmm9,%xmm9 520 vaesenclast %xmm5,%xmm10,%xmm10 521 vaesenclast %xmm6,%xmm11,%xmm11 522 vaesenclast %xmm8,%xmm12,%xmm12 523 vaesenclast %xmm2,%xmm13,%xmm13 524 vaesenclast %xmm3,%xmm14,%xmm14 525 vmovups %xmm9,0(%rsi) 526 vmovups %xmm10,16(%rsi) 527 vmovups %xmm11,32(%rsi) 528 vmovups %xmm12,48(%rsi) 529 vmovups %xmm13,64(%rsi) 530 vmovups %xmm14,80(%rsi) 531 leaq 96(%rsi),%rsi 532 533 ret 534.p2align 5 535L$handle_ctr32_2: 536 vpshufb %xmm0,%xmm1,%xmm6 537 vmovdqu 48(%r11),%xmm5 538 vpaddd 64(%r11),%xmm6,%xmm10 539 vpaddd %xmm5,%xmm6,%xmm11 540 vpaddd %xmm5,%xmm10,%xmm12 541 vpshufb %xmm0,%xmm10,%xmm10 542 vpaddd %xmm5,%xmm11,%xmm13 543 vpshufb %xmm0,%xmm11,%xmm11 544 vpxor %xmm4,%xmm10,%xmm10 545 vpaddd %xmm5,%xmm12,%xmm14 546 vpshufb %xmm0,%xmm12,%xmm12 547 vpxor %xmm4,%xmm11,%xmm11 548 vpaddd %xmm5,%xmm13,%xmm1 549 vpshufb %xmm0,%xmm13,%xmm13 550 vpxor %xmm4,%xmm12,%xmm12 551 vpshufb %xmm0,%xmm14,%xmm14 552 vpxor %xmm4,%xmm13,%xmm13 553 vpshufb %xmm0,%xmm1,%xmm1 554 vpxor %xmm4,%xmm14,%xmm14 555 jmp L$oop_ctr32 556 557 558 559.globl _aesni_gcm_encrypt 560.private_extern _aesni_gcm_encrypt 561 562.p2align 5 563_aesni_gcm_encrypt: 564 565 566_CET_ENDBR 567#ifdef BORINGSSL_DISPATCH_TEST 568 569 movb $1,_BORINGSSL_function_hit+2(%rip) 570#endif 571 xorq %rax,%rax 572 573 574 575 576 cmpq $288,%rdx 577 jb L$gcm_enc_abort 578 579 pushq %rbp 580 581 582 movq %rsp,%rbp 583 584 pushq %rbx 585 586 587 pushq %r12 588 589 590 pushq %r13 591 592 593 pushq %r14 594 595 596 pushq %r15 597 598 599 vzeroupper 600 601 vmovdqu (%r8),%xmm1 602 addq $-128,%rsp 603 movl 12(%r8),%ebx 604 leaq L$bswap_mask(%rip),%r11 605 leaq -128(%rcx),%r14 606 movq $0xf80,%r15 607 leaq 128(%rcx),%rcx 608 vmovdqu (%r11),%xmm0 609 andq $-128,%rsp 610 movl 240-128(%rcx),%r10d 611 612 andq %r15,%r14 613 andq %rsp,%r15 614 subq %r14,%r15 615 jc L$enc_no_key_aliasing 616 cmpq $768,%r15 617 jnc L$enc_no_key_aliasing 618 subq %r15,%rsp 619L$enc_no_key_aliasing: 620 621 movq %rsi,%r14 622 623 624 625 626 627 628 629 630 leaq -192(%rsi,%rdx,1),%r15 631 632 shrq $4,%rdx 633 634 call _aesni_ctr32_6x 635 vpshufb %xmm0,%xmm9,%xmm8 636 vpshufb %xmm0,%xmm10,%xmm2 637 vmovdqu %xmm8,112(%rsp) 638 vpshufb %xmm0,%xmm11,%xmm4 639 vmovdqu %xmm2,96(%rsp) 640 vpshufb %xmm0,%xmm12,%xmm5 641 vmovdqu %xmm4,80(%rsp) 642 vpshufb %xmm0,%xmm13,%xmm6 643 vmovdqu %xmm5,64(%rsp) 644 vpshufb %xmm0,%xmm14,%xmm7 645 vmovdqu %xmm6,48(%rsp) 646 647 call _aesni_ctr32_6x 648 649 movq 16(%rbp),%r12 650 leaq 32(%r9),%r9 651 vmovdqu (%r12),%xmm8 652 subq $12,%rdx 653 movq $192,%rax 654 vpshufb %xmm0,%xmm8,%xmm8 655 656 call _aesni_ctr32_ghash_6x 657 vmovdqu 32(%rsp),%xmm7 658 vmovdqu (%r11),%xmm0 659 vmovdqu 0-32(%r9),%xmm3 660 vpunpckhqdq %xmm7,%xmm7,%xmm1 661 vmovdqu 32-32(%r9),%xmm15 662 vmovups %xmm9,-96(%rsi) 663 vpshufb %xmm0,%xmm9,%xmm9 664 vpxor %xmm7,%xmm1,%xmm1 665 vmovups %xmm10,-80(%rsi) 666 vpshufb %xmm0,%xmm10,%xmm10 667 vmovups %xmm11,-64(%rsi) 668 vpshufb %xmm0,%xmm11,%xmm11 669 vmovups %xmm12,-48(%rsi) 670 vpshufb %xmm0,%xmm12,%xmm12 671 vmovups %xmm13,-32(%rsi) 672 vpshufb %xmm0,%xmm13,%xmm13 673 vmovups %xmm14,-16(%rsi) 674 vpshufb %xmm0,%xmm14,%xmm14 675 vmovdqu %xmm9,16(%rsp) 676 vmovdqu 48(%rsp),%xmm6 677 vmovdqu 16-32(%r9),%xmm0 678 vpunpckhqdq %xmm6,%xmm6,%xmm2 679 vpclmulqdq $0x00,%xmm3,%xmm7,%xmm5 680 vpxor %xmm6,%xmm2,%xmm2 681 vpclmulqdq $0x11,%xmm3,%xmm7,%xmm7 682 vpclmulqdq $0x00,%xmm15,%xmm1,%xmm1 683 684 vmovdqu 64(%rsp),%xmm9 685 vpclmulqdq $0x00,%xmm0,%xmm6,%xmm4 686 vmovdqu 48-32(%r9),%xmm3 687 vpxor %xmm5,%xmm4,%xmm4 688 vpunpckhqdq %xmm9,%xmm9,%xmm5 689 vpclmulqdq $0x11,%xmm0,%xmm6,%xmm6 690 vpxor %xmm9,%xmm5,%xmm5 691 vpxor %xmm7,%xmm6,%xmm6 692 vpclmulqdq $0x10,%xmm15,%xmm2,%xmm2 693 vmovdqu 80-32(%r9),%xmm15 694 vpxor %xmm1,%xmm2,%xmm2 695 696 vmovdqu 80(%rsp),%xmm1 697 vpclmulqdq $0x00,%xmm3,%xmm9,%xmm7 698 vmovdqu 64-32(%r9),%xmm0 699 vpxor %xmm4,%xmm7,%xmm7 700 vpunpckhqdq %xmm1,%xmm1,%xmm4 701 vpclmulqdq $0x11,%xmm3,%xmm9,%xmm9 702 vpxor %xmm1,%xmm4,%xmm4 703 vpxor %xmm6,%xmm9,%xmm9 704 vpclmulqdq $0x00,%xmm15,%xmm5,%xmm5 705 vpxor %xmm2,%xmm5,%xmm5 706 707 vmovdqu 96(%rsp),%xmm2 708 vpclmulqdq $0x00,%xmm0,%xmm1,%xmm6 709 vmovdqu 96-32(%r9),%xmm3 710 vpxor %xmm7,%xmm6,%xmm6 711 vpunpckhqdq %xmm2,%xmm2,%xmm7 712 vpclmulqdq $0x11,%xmm0,%xmm1,%xmm1 713 vpxor %xmm2,%xmm7,%xmm7 714 vpxor %xmm9,%xmm1,%xmm1 715 vpclmulqdq $0x10,%xmm15,%xmm4,%xmm4 716 vmovdqu 128-32(%r9),%xmm15 717 vpxor %xmm5,%xmm4,%xmm4 718 719 vpxor 112(%rsp),%xmm8,%xmm8 720 vpclmulqdq $0x00,%xmm3,%xmm2,%xmm5 721 vmovdqu 112-32(%r9),%xmm0 722 vpunpckhqdq %xmm8,%xmm8,%xmm9 723 vpxor %xmm6,%xmm5,%xmm5 724 vpclmulqdq $0x11,%xmm3,%xmm2,%xmm2 725 vpxor %xmm8,%xmm9,%xmm9 726 vpxor %xmm1,%xmm2,%xmm2 727 vpclmulqdq $0x00,%xmm15,%xmm7,%xmm7 728 vpxor %xmm4,%xmm7,%xmm4 729 730 vpclmulqdq $0x00,%xmm0,%xmm8,%xmm6 731 vmovdqu 0-32(%r9),%xmm3 732 vpunpckhqdq %xmm14,%xmm14,%xmm1 733 vpclmulqdq $0x11,%xmm0,%xmm8,%xmm8 734 vpxor %xmm14,%xmm1,%xmm1 735 vpxor %xmm5,%xmm6,%xmm5 736 vpclmulqdq $0x10,%xmm15,%xmm9,%xmm9 737 vmovdqu 32-32(%r9),%xmm15 738 vpxor %xmm2,%xmm8,%xmm7 739 vpxor %xmm4,%xmm9,%xmm6 740 741 vmovdqu 16-32(%r9),%xmm0 742 vpxor %xmm5,%xmm7,%xmm9 743 vpclmulqdq $0x00,%xmm3,%xmm14,%xmm4 744 vpxor %xmm9,%xmm6,%xmm6 745 vpunpckhqdq %xmm13,%xmm13,%xmm2 746 vpclmulqdq $0x11,%xmm3,%xmm14,%xmm14 747 vpxor %xmm13,%xmm2,%xmm2 748 vpslldq $8,%xmm6,%xmm9 749 vpclmulqdq $0x00,%xmm15,%xmm1,%xmm1 750 vpxor %xmm9,%xmm5,%xmm8 751 vpsrldq $8,%xmm6,%xmm6 752 vpxor %xmm6,%xmm7,%xmm7 753 754 vpclmulqdq $0x00,%xmm0,%xmm13,%xmm5 755 vmovdqu 48-32(%r9),%xmm3 756 vpxor %xmm4,%xmm5,%xmm5 757 vpunpckhqdq %xmm12,%xmm12,%xmm9 758 vpclmulqdq $0x11,%xmm0,%xmm13,%xmm13 759 vpxor %xmm12,%xmm9,%xmm9 760 vpxor %xmm14,%xmm13,%xmm13 761 vpalignr $8,%xmm8,%xmm8,%xmm14 762 vpclmulqdq $0x10,%xmm15,%xmm2,%xmm2 763 vmovdqu 80-32(%r9),%xmm15 764 vpxor %xmm1,%xmm2,%xmm2 765 766 vpclmulqdq $0x00,%xmm3,%xmm12,%xmm4 767 vmovdqu 64-32(%r9),%xmm0 768 vpxor %xmm5,%xmm4,%xmm4 769 vpunpckhqdq %xmm11,%xmm11,%xmm1 770 vpclmulqdq $0x11,%xmm3,%xmm12,%xmm12 771 vpxor %xmm11,%xmm1,%xmm1 772 vpxor %xmm13,%xmm12,%xmm12 773 vxorps 16(%rsp),%xmm7,%xmm7 774 vpclmulqdq $0x00,%xmm15,%xmm9,%xmm9 775 vpxor %xmm2,%xmm9,%xmm9 776 777 vpclmulqdq $0x10,16(%r11),%xmm8,%xmm8 778 vxorps %xmm14,%xmm8,%xmm8 779 780 vpclmulqdq $0x00,%xmm0,%xmm11,%xmm5 781 vmovdqu 96-32(%r9),%xmm3 782 vpxor %xmm4,%xmm5,%xmm5 783 vpunpckhqdq %xmm10,%xmm10,%xmm2 784 vpclmulqdq $0x11,%xmm0,%xmm11,%xmm11 785 vpxor %xmm10,%xmm2,%xmm2 786 vpalignr $8,%xmm8,%xmm8,%xmm14 787 vpxor %xmm12,%xmm11,%xmm11 788 vpclmulqdq $0x10,%xmm15,%xmm1,%xmm1 789 vmovdqu 128-32(%r9),%xmm15 790 vpxor %xmm9,%xmm1,%xmm1 791 792 vxorps %xmm7,%xmm14,%xmm14 793 vpclmulqdq $0x10,16(%r11),%xmm8,%xmm8 794 vxorps %xmm14,%xmm8,%xmm8 795 796 vpclmulqdq $0x00,%xmm3,%xmm10,%xmm4 797 vmovdqu 112-32(%r9),%xmm0 798 vpxor %xmm5,%xmm4,%xmm4 799 vpunpckhqdq %xmm8,%xmm8,%xmm9 800 vpclmulqdq $0x11,%xmm3,%xmm10,%xmm10 801 vpxor %xmm8,%xmm9,%xmm9 802 vpxor %xmm11,%xmm10,%xmm10 803 vpclmulqdq $0x00,%xmm15,%xmm2,%xmm2 804 vpxor %xmm1,%xmm2,%xmm2 805 806 vpclmulqdq $0x00,%xmm0,%xmm8,%xmm5 807 vpclmulqdq $0x11,%xmm0,%xmm8,%xmm7 808 vpxor %xmm4,%xmm5,%xmm5 809 vpclmulqdq $0x10,%xmm15,%xmm9,%xmm6 810 vpxor %xmm10,%xmm7,%xmm7 811 vpxor %xmm2,%xmm6,%xmm6 812 813 vpxor %xmm5,%xmm7,%xmm4 814 vpxor %xmm4,%xmm6,%xmm6 815 vpslldq $8,%xmm6,%xmm1 816 vmovdqu 16(%r11),%xmm3 817 vpsrldq $8,%xmm6,%xmm6 818 vpxor %xmm1,%xmm5,%xmm8 819 vpxor %xmm6,%xmm7,%xmm7 820 821 vpalignr $8,%xmm8,%xmm8,%xmm2 822 vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 823 vpxor %xmm2,%xmm8,%xmm8 824 825 vpalignr $8,%xmm8,%xmm8,%xmm2 826 vpclmulqdq $0x10,%xmm3,%xmm8,%xmm8 827 vpxor %xmm7,%xmm2,%xmm2 828 vpxor %xmm2,%xmm8,%xmm8 829 movq 16(%rbp),%r12 830 vpshufb (%r11),%xmm8,%xmm8 831 vmovdqu %xmm8,(%r12) 832 833 vzeroupper 834 leaq -40(%rbp),%rsp 835 836 popq %r15 837 838 popq %r14 839 840 popq %r13 841 842 popq %r12 843 844 popq %rbx 845 846 popq %rbp 847 848L$gcm_enc_abort: 849 ret 850 851 852 853.section __DATA,__const 854.p2align 6 855L$bswap_mask: 856.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 857L$poly: 858.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2 859L$one_msb: 860.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 861L$two_lsb: 862.byte 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 863L$one_lsb: 864.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 865.byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,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 866.p2align 6 867.text 868#endif 869