x86_64-mont5.S revision 296317
1238405Sjkim # $FreeBSD: stable/10/secure/lib/libcrypto/amd64/x86_64-mont5.S 296317 2016-03-02 15:43:01Z delphij $ 2238405Sjkim.text 3238405Sjkim 4238405Sjkim.globl bn_mul_mont_gather5 5238405Sjkim.type bn_mul_mont_gather5,@function 6238405Sjkim.align 64 7238405Sjkimbn_mul_mont_gather5: 8238405Sjkim testl $3,%r9d 9238405Sjkim jnz .Lmul_enter 10238405Sjkim cmpl $8,%r9d 11238405Sjkim jb .Lmul_enter 12238405Sjkim jmp .Lmul4x_enter 13238405Sjkim 14238405Sjkim.align 16 15238405Sjkim.Lmul_enter: 16238405Sjkim movl %r9d,%r9d 17296317Sdelphij movd 8(%rsp),%xmm5 18296317Sdelphij leaq .Linc(%rip),%r10 19238405Sjkim pushq %rbx 20238405Sjkim pushq %rbp 21238405Sjkim pushq %r12 22238405Sjkim pushq %r13 23238405Sjkim pushq %r14 24238405Sjkim pushq %r15 25296317Sdelphij 26296317Sdelphij.Lmul_alloca: 27238405Sjkim movq %rsp,%rax 28238405Sjkim leaq 2(%r9),%r11 29238405Sjkim negq %r11 30296317Sdelphij leaq -264(%rsp,%r11,8),%rsp 31238405Sjkim andq $-1024,%rsp 32238405Sjkim 33238405Sjkim movq %rax,8(%rsp,%r9,8) 34238405Sjkim.Lmul_body: 35296317Sdelphij leaq 128(%rdx),%r12 36296317Sdelphij movdqa 0(%r10),%xmm0 37296317Sdelphij movdqa 16(%r10),%xmm1 38296317Sdelphij leaq 24-112(%rsp,%r9,8),%r10 39296317Sdelphij andq $-16,%r10 40238405Sjkim 41296317Sdelphij pshufd $0,%xmm5,%xmm5 42296317Sdelphij movdqa %xmm1,%xmm4 43296317Sdelphij movdqa %xmm1,%xmm2 44296317Sdelphij paddd %xmm0,%xmm1 45296317Sdelphij pcmpeqd %xmm5,%xmm0 46296317Sdelphij.byte 0x67 47296317Sdelphij movdqa %xmm4,%xmm3 48296317Sdelphij paddd %xmm1,%xmm2 49296317Sdelphij pcmpeqd %xmm5,%xmm1 50296317Sdelphij movdqa %xmm0,112(%r10) 51296317Sdelphij movdqa %xmm4,%xmm0 52296317Sdelphij 53296317Sdelphij paddd %xmm2,%xmm3 54296317Sdelphij pcmpeqd %xmm5,%xmm2 55296317Sdelphij movdqa %xmm1,128(%r10) 56296317Sdelphij movdqa %xmm4,%xmm1 57296317Sdelphij 58296317Sdelphij paddd %xmm3,%xmm0 59296317Sdelphij pcmpeqd %xmm5,%xmm3 60296317Sdelphij movdqa %xmm2,144(%r10) 61296317Sdelphij movdqa %xmm4,%xmm2 62296317Sdelphij 63296317Sdelphij paddd %xmm0,%xmm1 64296317Sdelphij pcmpeqd %xmm5,%xmm0 65296317Sdelphij movdqa %xmm3,160(%r10) 66296317Sdelphij movdqa %xmm4,%xmm3 67296317Sdelphij paddd %xmm1,%xmm2 68296317Sdelphij pcmpeqd %xmm5,%xmm1 69296317Sdelphij movdqa %xmm0,176(%r10) 70296317Sdelphij movdqa %xmm4,%xmm0 71296317Sdelphij 72296317Sdelphij paddd %xmm2,%xmm3 73296317Sdelphij pcmpeqd %xmm5,%xmm2 74296317Sdelphij movdqa %xmm1,192(%r10) 75296317Sdelphij movdqa %xmm4,%xmm1 76296317Sdelphij 77296317Sdelphij paddd %xmm3,%xmm0 78296317Sdelphij pcmpeqd %xmm5,%xmm3 79296317Sdelphij movdqa %xmm2,208(%r10) 80296317Sdelphij movdqa %xmm4,%xmm2 81296317Sdelphij 82296317Sdelphij paddd %xmm0,%xmm1 83296317Sdelphij pcmpeqd %xmm5,%xmm0 84296317Sdelphij movdqa %xmm3,224(%r10) 85296317Sdelphij movdqa %xmm4,%xmm3 86296317Sdelphij paddd %xmm1,%xmm2 87296317Sdelphij pcmpeqd %xmm5,%xmm1 88296317Sdelphij movdqa %xmm0,240(%r10) 89296317Sdelphij movdqa %xmm4,%xmm0 90296317Sdelphij 91296317Sdelphij paddd %xmm2,%xmm3 92296317Sdelphij pcmpeqd %xmm5,%xmm2 93296317Sdelphij movdqa %xmm1,256(%r10) 94296317Sdelphij movdqa %xmm4,%xmm1 95296317Sdelphij 96296317Sdelphij paddd %xmm3,%xmm0 97296317Sdelphij pcmpeqd %xmm5,%xmm3 98296317Sdelphij movdqa %xmm2,272(%r10) 99296317Sdelphij movdqa %xmm4,%xmm2 100296317Sdelphij 101296317Sdelphij paddd %xmm0,%xmm1 102296317Sdelphij pcmpeqd %xmm5,%xmm0 103296317Sdelphij movdqa %xmm3,288(%r10) 104296317Sdelphij movdqa %xmm4,%xmm3 105296317Sdelphij paddd %xmm1,%xmm2 106296317Sdelphij pcmpeqd %xmm5,%xmm1 107296317Sdelphij movdqa %xmm0,304(%r10) 108296317Sdelphij 109296317Sdelphij paddd %xmm2,%xmm3 110296317Sdelphij.byte 0x67 111296317Sdelphij pcmpeqd %xmm5,%xmm2 112296317Sdelphij movdqa %xmm1,320(%r10) 113296317Sdelphij 114296317Sdelphij pcmpeqd %xmm5,%xmm3 115296317Sdelphij movdqa %xmm2,336(%r10) 116296317Sdelphij pand 64(%r12),%xmm0 117296317Sdelphij 118296317Sdelphij pand 80(%r12),%xmm1 119296317Sdelphij pand 96(%r12),%xmm2 120296317Sdelphij movdqa %xmm3,352(%r10) 121296317Sdelphij pand 112(%r12),%xmm3 122296317Sdelphij por %xmm2,%xmm0 123296317Sdelphij por %xmm3,%xmm1 124296317Sdelphij movdqa -128(%r12),%xmm4 125296317Sdelphij movdqa -112(%r12),%xmm5 126296317Sdelphij movdqa -96(%r12),%xmm2 127296317Sdelphij pand 112(%r10),%xmm4 128296317Sdelphij movdqa -80(%r12),%xmm3 129296317Sdelphij pand 128(%r10),%xmm5 130296317Sdelphij por %xmm4,%xmm0 131296317Sdelphij pand 144(%r10),%xmm2 132296317Sdelphij por %xmm5,%xmm1 133296317Sdelphij pand 160(%r10),%xmm3 134296317Sdelphij por %xmm2,%xmm0 135296317Sdelphij por %xmm3,%xmm1 136296317Sdelphij movdqa -64(%r12),%xmm4 137296317Sdelphij movdqa -48(%r12),%xmm5 138296317Sdelphij movdqa -32(%r12),%xmm2 139296317Sdelphij pand 176(%r10),%xmm4 140296317Sdelphij movdqa -16(%r12),%xmm3 141296317Sdelphij pand 192(%r10),%xmm5 142296317Sdelphij por %xmm4,%xmm0 143296317Sdelphij pand 208(%r10),%xmm2 144296317Sdelphij por %xmm5,%xmm1 145296317Sdelphij pand 224(%r10),%xmm3 146296317Sdelphij por %xmm2,%xmm0 147296317Sdelphij por %xmm3,%xmm1 148296317Sdelphij movdqa 0(%r12),%xmm4 149296317Sdelphij movdqa 16(%r12),%xmm5 150296317Sdelphij movdqa 32(%r12),%xmm2 151296317Sdelphij pand 240(%r10),%xmm4 152296317Sdelphij movdqa 48(%r12),%xmm3 153296317Sdelphij pand 256(%r10),%xmm5 154296317Sdelphij por %xmm4,%xmm0 155296317Sdelphij pand 272(%r10),%xmm2 156296317Sdelphij por %xmm5,%xmm1 157296317Sdelphij pand 288(%r10),%xmm3 158296317Sdelphij por %xmm2,%xmm0 159296317Sdelphij por %xmm3,%xmm1 160238405Sjkim por %xmm1,%xmm0 161296317Sdelphij pshufd $78,%xmm0,%xmm1 162296317Sdelphij por %xmm1,%xmm0 163238405Sjkim leaq 256(%r12),%r12 164238405Sjkim.byte 102,72,15,126,195 165238405Sjkim 166238405Sjkim movq (%r8),%r8 167238405Sjkim movq (%rsi),%rax 168238405Sjkim 169238405Sjkim xorq %r14,%r14 170238405Sjkim xorq %r15,%r15 171238405Sjkim 172238405Sjkim movq %r8,%rbp 173238405Sjkim mulq %rbx 174238405Sjkim movq %rax,%r10 175238405Sjkim movq (%rcx),%rax 176238405Sjkim 177238405Sjkim imulq %r10,%rbp 178238405Sjkim movq %rdx,%r11 179238405Sjkim 180238405Sjkim mulq %rbp 181238405Sjkim addq %rax,%r10 182238405Sjkim movq 8(%rsi),%rax 183238405Sjkim adcq $0,%rdx 184238405Sjkim movq %rdx,%r13 185238405Sjkim 186238405Sjkim leaq 1(%r15),%r15 187238405Sjkim jmp .L1st_enter 188238405Sjkim 189238405Sjkim.align 16 190238405Sjkim.L1st: 191238405Sjkim addq %rax,%r13 192238405Sjkim movq (%rsi,%r15,8),%rax 193238405Sjkim adcq $0,%rdx 194238405Sjkim addq %r11,%r13 195238405Sjkim movq %r10,%r11 196238405Sjkim adcq $0,%rdx 197238405Sjkim movq %r13,-16(%rsp,%r15,8) 198238405Sjkim movq %rdx,%r13 199238405Sjkim 200238405Sjkim.L1st_enter: 201238405Sjkim mulq %rbx 202238405Sjkim addq %rax,%r11 203238405Sjkim movq (%rcx,%r15,8),%rax 204238405Sjkim adcq $0,%rdx 205238405Sjkim leaq 1(%r15),%r15 206238405Sjkim movq %rdx,%r10 207238405Sjkim 208238405Sjkim mulq %rbp 209238405Sjkim cmpq %r9,%r15 210238405Sjkim jne .L1st 211238405Sjkim 212238405Sjkim addq %rax,%r13 213238405Sjkim movq (%rsi),%rax 214238405Sjkim adcq $0,%rdx 215238405Sjkim addq %r11,%r13 216238405Sjkim adcq $0,%rdx 217238405Sjkim movq %r13,-16(%rsp,%r15,8) 218238405Sjkim movq %rdx,%r13 219238405Sjkim movq %r10,%r11 220238405Sjkim 221238405Sjkim xorq %rdx,%rdx 222238405Sjkim addq %r11,%r13 223238405Sjkim adcq $0,%rdx 224238405Sjkim movq %r13,-8(%rsp,%r9,8) 225238405Sjkim movq %rdx,(%rsp,%r9,8) 226238405Sjkim 227238405Sjkim leaq 1(%r14),%r14 228238405Sjkim jmp .Louter 229238405Sjkim.align 16 230238405Sjkim.Louter: 231296317Sdelphij leaq 24+128(%rsp,%r9,8),%rdx 232296317Sdelphij andq $-16,%rdx 233296317Sdelphij pxor %xmm4,%xmm4 234296317Sdelphij pxor %xmm5,%xmm5 235296317Sdelphij movdqa -128(%r12),%xmm0 236296317Sdelphij movdqa -112(%r12),%xmm1 237296317Sdelphij movdqa -96(%r12),%xmm2 238296317Sdelphij movdqa -80(%r12),%xmm3 239296317Sdelphij pand -128(%rdx),%xmm0 240296317Sdelphij pand -112(%rdx),%xmm1 241296317Sdelphij por %xmm0,%xmm4 242296317Sdelphij pand -96(%rdx),%xmm2 243296317Sdelphij por %xmm1,%xmm5 244296317Sdelphij pand -80(%rdx),%xmm3 245296317Sdelphij por %xmm2,%xmm4 246296317Sdelphij por %xmm3,%xmm5 247296317Sdelphij movdqa -64(%r12),%xmm0 248296317Sdelphij movdqa -48(%r12),%xmm1 249296317Sdelphij movdqa -32(%r12),%xmm2 250296317Sdelphij movdqa -16(%r12),%xmm3 251296317Sdelphij pand -64(%rdx),%xmm0 252296317Sdelphij pand -48(%rdx),%xmm1 253296317Sdelphij por %xmm0,%xmm4 254296317Sdelphij pand -32(%rdx),%xmm2 255296317Sdelphij por %xmm1,%xmm5 256296317Sdelphij pand -16(%rdx),%xmm3 257296317Sdelphij por %xmm2,%xmm4 258296317Sdelphij por %xmm3,%xmm5 259296317Sdelphij movdqa 0(%r12),%xmm0 260296317Sdelphij movdqa 16(%r12),%xmm1 261296317Sdelphij movdqa 32(%r12),%xmm2 262296317Sdelphij movdqa 48(%r12),%xmm3 263296317Sdelphij pand 0(%rdx),%xmm0 264296317Sdelphij pand 16(%rdx),%xmm1 265296317Sdelphij por %xmm0,%xmm4 266296317Sdelphij pand 32(%rdx),%xmm2 267296317Sdelphij por %xmm1,%xmm5 268296317Sdelphij pand 48(%rdx),%xmm3 269296317Sdelphij por %xmm2,%xmm4 270296317Sdelphij por %xmm3,%xmm5 271296317Sdelphij movdqa 64(%r12),%xmm0 272296317Sdelphij movdqa 80(%r12),%xmm1 273296317Sdelphij movdqa 96(%r12),%xmm2 274296317Sdelphij movdqa 112(%r12),%xmm3 275296317Sdelphij pand 64(%rdx),%xmm0 276296317Sdelphij pand 80(%rdx),%xmm1 277296317Sdelphij por %xmm0,%xmm4 278296317Sdelphij pand 96(%rdx),%xmm2 279296317Sdelphij por %xmm1,%xmm5 280296317Sdelphij pand 112(%rdx),%xmm3 281296317Sdelphij por %xmm2,%xmm4 282296317Sdelphij por %xmm3,%xmm5 283296317Sdelphij por %xmm5,%xmm4 284296317Sdelphij pshufd $78,%xmm4,%xmm0 285296317Sdelphij por %xmm4,%xmm0 286296317Sdelphij leaq 256(%r12),%r12 287296317Sdelphij.byte 102,72,15,126,195 288296317Sdelphij 289238405Sjkim xorq %r15,%r15 290238405Sjkim movq %r8,%rbp 291238405Sjkim movq (%rsp),%r10 292238405Sjkim 293238405Sjkim mulq %rbx 294238405Sjkim addq %rax,%r10 295238405Sjkim movq (%rcx),%rax 296238405Sjkim adcq $0,%rdx 297238405Sjkim 298238405Sjkim imulq %r10,%rbp 299238405Sjkim movq %rdx,%r11 300238405Sjkim 301238405Sjkim mulq %rbp 302238405Sjkim addq %rax,%r10 303238405Sjkim movq 8(%rsi),%rax 304238405Sjkim adcq $0,%rdx 305238405Sjkim movq 8(%rsp),%r10 306238405Sjkim movq %rdx,%r13 307238405Sjkim 308238405Sjkim leaq 1(%r15),%r15 309238405Sjkim jmp .Linner_enter 310238405Sjkim 311238405Sjkim.align 16 312238405Sjkim.Linner: 313238405Sjkim addq %rax,%r13 314238405Sjkim movq (%rsi,%r15,8),%rax 315238405Sjkim adcq $0,%rdx 316238405Sjkim addq %r10,%r13 317238405Sjkim movq (%rsp,%r15,8),%r10 318238405Sjkim adcq $0,%rdx 319238405Sjkim movq %r13,-16(%rsp,%r15,8) 320238405Sjkim movq %rdx,%r13 321238405Sjkim 322238405Sjkim.Linner_enter: 323238405Sjkim mulq %rbx 324238405Sjkim addq %rax,%r11 325238405Sjkim movq (%rcx,%r15,8),%rax 326238405Sjkim adcq $0,%rdx 327238405Sjkim addq %r11,%r10 328238405Sjkim movq %rdx,%r11 329238405Sjkim adcq $0,%r11 330238405Sjkim leaq 1(%r15),%r15 331238405Sjkim 332238405Sjkim mulq %rbp 333238405Sjkim cmpq %r9,%r15 334238405Sjkim jne .Linner 335238405Sjkim 336238405Sjkim addq %rax,%r13 337238405Sjkim movq (%rsi),%rax 338238405Sjkim adcq $0,%rdx 339238405Sjkim addq %r10,%r13 340238405Sjkim movq (%rsp,%r15,8),%r10 341238405Sjkim adcq $0,%rdx 342238405Sjkim movq %r13,-16(%rsp,%r15,8) 343238405Sjkim movq %rdx,%r13 344238405Sjkim 345238405Sjkim xorq %rdx,%rdx 346238405Sjkim addq %r11,%r13 347238405Sjkim adcq $0,%rdx 348238405Sjkim addq %r10,%r13 349238405Sjkim adcq $0,%rdx 350238405Sjkim movq %r13,-8(%rsp,%r9,8) 351238405Sjkim movq %rdx,(%rsp,%r9,8) 352238405Sjkim 353238405Sjkim leaq 1(%r14),%r14 354238405Sjkim cmpq %r9,%r14 355238405Sjkim jl .Louter 356238405Sjkim 357238405Sjkim xorq %r14,%r14 358238405Sjkim movq (%rsp),%rax 359238405Sjkim leaq (%rsp),%rsi 360238405Sjkim movq %r9,%r15 361238405Sjkim jmp .Lsub 362238405Sjkim.align 16 363238405Sjkim.Lsub: sbbq (%rcx,%r14,8),%rax 364238405Sjkim movq %rax,(%rdi,%r14,8) 365238405Sjkim movq 8(%rsi,%r14,8),%rax 366238405Sjkim leaq 1(%r14),%r14 367238405Sjkim decq %r15 368238405Sjkim jnz .Lsub 369238405Sjkim 370238405Sjkim sbbq $0,%rax 371238405Sjkim xorq %r14,%r14 372238405Sjkim andq %rax,%rsi 373238405Sjkim notq %rax 374238405Sjkim movq %rdi,%rcx 375238405Sjkim andq %rax,%rcx 376238405Sjkim movq %r9,%r15 377238405Sjkim orq %rcx,%rsi 378238405Sjkim.align 16 379238405Sjkim.Lcopy: 380238405Sjkim movq (%rsi,%r14,8),%rax 381238405Sjkim movq %r14,(%rsp,%r14,8) 382238405Sjkim movq %rax,(%rdi,%r14,8) 383238405Sjkim leaq 1(%r14),%r14 384238405Sjkim subq $1,%r15 385238405Sjkim jnz .Lcopy 386238405Sjkim 387238405Sjkim movq 8(%rsp,%r9,8),%rsi 388238405Sjkim movq $1,%rax 389296317Sdelphij 390238405Sjkim movq (%rsi),%r15 391238405Sjkim movq 8(%rsi),%r14 392238405Sjkim movq 16(%rsi),%r13 393238405Sjkim movq 24(%rsi),%r12 394238405Sjkim movq 32(%rsi),%rbp 395238405Sjkim movq 40(%rsi),%rbx 396238405Sjkim leaq 48(%rsi),%rsp 397238405Sjkim.Lmul_epilogue: 398238405Sjkim .byte 0xf3,0xc3 399238405Sjkim.size bn_mul_mont_gather5,.-bn_mul_mont_gather5 400238405Sjkim.type bn_mul4x_mont_gather5,@function 401238405Sjkim.align 16 402238405Sjkimbn_mul4x_mont_gather5: 403238405Sjkim.Lmul4x_enter: 404238405Sjkim movl %r9d,%r9d 405296317Sdelphij movd 8(%rsp),%xmm5 406296317Sdelphij leaq .Linc(%rip),%r10 407238405Sjkim pushq %rbx 408238405Sjkim pushq %rbp 409238405Sjkim pushq %r12 410238405Sjkim pushq %r13 411238405Sjkim pushq %r14 412238405Sjkim pushq %r15 413296317Sdelphij 414296317Sdelphij.Lmul4x_alloca: 415238405Sjkim movq %rsp,%rax 416238405Sjkim leaq 4(%r9),%r11 417238405Sjkim negq %r11 418296317Sdelphij leaq -256(%rsp,%r11,8),%rsp 419238405Sjkim andq $-1024,%rsp 420238405Sjkim 421238405Sjkim movq %rax,8(%rsp,%r9,8) 422238405Sjkim.Lmul4x_body: 423238405Sjkim movq %rdi,16(%rsp,%r9,8) 424296317Sdelphij leaq 128(%rdx),%r12 425296317Sdelphij movdqa 0(%r10),%xmm0 426296317Sdelphij movdqa 16(%r10),%xmm1 427296317Sdelphij leaq 32-112(%rsp,%r9,8),%r10 428238405Sjkim 429296317Sdelphij pshufd $0,%xmm5,%xmm5 430296317Sdelphij movdqa %xmm1,%xmm4 431296317Sdelphij.byte 0x67,0x67 432296317Sdelphij movdqa %xmm1,%xmm2 433296317Sdelphij paddd %xmm0,%xmm1 434296317Sdelphij pcmpeqd %xmm5,%xmm0 435296317Sdelphij.byte 0x67 436296317Sdelphij movdqa %xmm4,%xmm3 437296317Sdelphij paddd %xmm1,%xmm2 438296317Sdelphij pcmpeqd %xmm5,%xmm1 439296317Sdelphij movdqa %xmm0,112(%r10) 440296317Sdelphij movdqa %xmm4,%xmm0 441296317Sdelphij 442296317Sdelphij paddd %xmm2,%xmm3 443296317Sdelphij pcmpeqd %xmm5,%xmm2 444296317Sdelphij movdqa %xmm1,128(%r10) 445296317Sdelphij movdqa %xmm4,%xmm1 446296317Sdelphij 447296317Sdelphij paddd %xmm3,%xmm0 448296317Sdelphij pcmpeqd %xmm5,%xmm3 449296317Sdelphij movdqa %xmm2,144(%r10) 450296317Sdelphij movdqa %xmm4,%xmm2 451296317Sdelphij 452296317Sdelphij paddd %xmm0,%xmm1 453296317Sdelphij pcmpeqd %xmm5,%xmm0 454296317Sdelphij movdqa %xmm3,160(%r10) 455296317Sdelphij movdqa %xmm4,%xmm3 456296317Sdelphij paddd %xmm1,%xmm2 457296317Sdelphij pcmpeqd %xmm5,%xmm1 458296317Sdelphij movdqa %xmm0,176(%r10) 459296317Sdelphij movdqa %xmm4,%xmm0 460296317Sdelphij 461296317Sdelphij paddd %xmm2,%xmm3 462296317Sdelphij pcmpeqd %xmm5,%xmm2 463296317Sdelphij movdqa %xmm1,192(%r10) 464296317Sdelphij movdqa %xmm4,%xmm1 465296317Sdelphij 466296317Sdelphij paddd %xmm3,%xmm0 467296317Sdelphij pcmpeqd %xmm5,%xmm3 468296317Sdelphij movdqa %xmm2,208(%r10) 469296317Sdelphij movdqa %xmm4,%xmm2 470296317Sdelphij 471296317Sdelphij paddd %xmm0,%xmm1 472296317Sdelphij pcmpeqd %xmm5,%xmm0 473296317Sdelphij movdqa %xmm3,224(%r10) 474296317Sdelphij movdqa %xmm4,%xmm3 475296317Sdelphij paddd %xmm1,%xmm2 476296317Sdelphij pcmpeqd %xmm5,%xmm1 477296317Sdelphij movdqa %xmm0,240(%r10) 478296317Sdelphij movdqa %xmm4,%xmm0 479296317Sdelphij 480296317Sdelphij paddd %xmm2,%xmm3 481296317Sdelphij pcmpeqd %xmm5,%xmm2 482296317Sdelphij movdqa %xmm1,256(%r10) 483296317Sdelphij movdqa %xmm4,%xmm1 484296317Sdelphij 485296317Sdelphij paddd %xmm3,%xmm0 486296317Sdelphij pcmpeqd %xmm5,%xmm3 487296317Sdelphij movdqa %xmm2,272(%r10) 488296317Sdelphij movdqa %xmm4,%xmm2 489296317Sdelphij 490296317Sdelphij paddd %xmm0,%xmm1 491296317Sdelphij pcmpeqd %xmm5,%xmm0 492296317Sdelphij movdqa %xmm3,288(%r10) 493296317Sdelphij movdqa %xmm4,%xmm3 494296317Sdelphij paddd %xmm1,%xmm2 495296317Sdelphij pcmpeqd %xmm5,%xmm1 496296317Sdelphij movdqa %xmm0,304(%r10) 497296317Sdelphij 498296317Sdelphij paddd %xmm2,%xmm3 499296317Sdelphij.byte 0x67 500296317Sdelphij pcmpeqd %xmm5,%xmm2 501296317Sdelphij movdqa %xmm1,320(%r10) 502296317Sdelphij 503296317Sdelphij pcmpeqd %xmm5,%xmm3 504296317Sdelphij movdqa %xmm2,336(%r10) 505296317Sdelphij pand 64(%r12),%xmm0 506296317Sdelphij 507296317Sdelphij pand 80(%r12),%xmm1 508296317Sdelphij pand 96(%r12),%xmm2 509296317Sdelphij movdqa %xmm3,352(%r10) 510296317Sdelphij pand 112(%r12),%xmm3 511296317Sdelphij por %xmm2,%xmm0 512296317Sdelphij por %xmm3,%xmm1 513296317Sdelphij movdqa -128(%r12),%xmm4 514296317Sdelphij movdqa -112(%r12),%xmm5 515296317Sdelphij movdqa -96(%r12),%xmm2 516296317Sdelphij pand 112(%r10),%xmm4 517296317Sdelphij movdqa -80(%r12),%xmm3 518296317Sdelphij pand 128(%r10),%xmm5 519296317Sdelphij por %xmm4,%xmm0 520296317Sdelphij pand 144(%r10),%xmm2 521296317Sdelphij por %xmm5,%xmm1 522296317Sdelphij pand 160(%r10),%xmm3 523296317Sdelphij por %xmm2,%xmm0 524296317Sdelphij por %xmm3,%xmm1 525296317Sdelphij movdqa -64(%r12),%xmm4 526296317Sdelphij movdqa -48(%r12),%xmm5 527296317Sdelphij movdqa -32(%r12),%xmm2 528296317Sdelphij pand 176(%r10),%xmm4 529296317Sdelphij movdqa -16(%r12),%xmm3 530296317Sdelphij pand 192(%r10),%xmm5 531296317Sdelphij por %xmm4,%xmm0 532296317Sdelphij pand 208(%r10),%xmm2 533296317Sdelphij por %xmm5,%xmm1 534296317Sdelphij pand 224(%r10),%xmm3 535296317Sdelphij por %xmm2,%xmm0 536296317Sdelphij por %xmm3,%xmm1 537296317Sdelphij movdqa 0(%r12),%xmm4 538296317Sdelphij movdqa 16(%r12),%xmm5 539296317Sdelphij movdqa 32(%r12),%xmm2 540296317Sdelphij pand 240(%r10),%xmm4 541296317Sdelphij movdqa 48(%r12),%xmm3 542296317Sdelphij pand 256(%r10),%xmm5 543296317Sdelphij por %xmm4,%xmm0 544296317Sdelphij pand 272(%r10),%xmm2 545296317Sdelphij por %xmm5,%xmm1 546296317Sdelphij pand 288(%r10),%xmm3 547296317Sdelphij por %xmm2,%xmm0 548296317Sdelphij por %xmm3,%xmm1 549238405Sjkim por %xmm1,%xmm0 550296317Sdelphij pshufd $78,%xmm0,%xmm1 551296317Sdelphij por %xmm1,%xmm0 552238405Sjkim leaq 256(%r12),%r12 553296317Sdelphij.byte 102,72,15,126,195 554238405Sjkim 555238405Sjkim movq (%r8),%r8 556238405Sjkim movq (%rsi),%rax 557238405Sjkim 558238405Sjkim xorq %r14,%r14 559238405Sjkim xorq %r15,%r15 560238405Sjkim 561238405Sjkim movq %r8,%rbp 562238405Sjkim mulq %rbx 563238405Sjkim movq %rax,%r10 564238405Sjkim movq (%rcx),%rax 565238405Sjkim 566238405Sjkim imulq %r10,%rbp 567238405Sjkim movq %rdx,%r11 568238405Sjkim 569238405Sjkim mulq %rbp 570238405Sjkim addq %rax,%r10 571238405Sjkim movq 8(%rsi),%rax 572238405Sjkim adcq $0,%rdx 573238405Sjkim movq %rdx,%rdi 574238405Sjkim 575238405Sjkim mulq %rbx 576238405Sjkim addq %rax,%r11 577238405Sjkim movq 8(%rcx),%rax 578238405Sjkim adcq $0,%rdx 579238405Sjkim movq %rdx,%r10 580238405Sjkim 581238405Sjkim mulq %rbp 582238405Sjkim addq %rax,%rdi 583238405Sjkim movq 16(%rsi),%rax 584238405Sjkim adcq $0,%rdx 585238405Sjkim addq %r11,%rdi 586238405Sjkim leaq 4(%r15),%r15 587238405Sjkim adcq $0,%rdx 588238405Sjkim movq %rdi,(%rsp) 589238405Sjkim movq %rdx,%r13 590238405Sjkim jmp .L1st4x 591238405Sjkim.align 16 592238405Sjkim.L1st4x: 593238405Sjkim mulq %rbx 594238405Sjkim addq %rax,%r10 595238405Sjkim movq -16(%rcx,%r15,8),%rax 596238405Sjkim adcq $0,%rdx 597238405Sjkim movq %rdx,%r11 598238405Sjkim 599238405Sjkim mulq %rbp 600238405Sjkim addq %rax,%r13 601238405Sjkim movq -8(%rsi,%r15,8),%rax 602238405Sjkim adcq $0,%rdx 603238405Sjkim addq %r10,%r13 604238405Sjkim adcq $0,%rdx 605238405Sjkim movq %r13,-24(%rsp,%r15,8) 606238405Sjkim movq %rdx,%rdi 607238405Sjkim 608238405Sjkim mulq %rbx 609238405Sjkim addq %rax,%r11 610238405Sjkim movq -8(%rcx,%r15,8),%rax 611238405Sjkim adcq $0,%rdx 612238405Sjkim movq %rdx,%r10 613238405Sjkim 614238405Sjkim mulq %rbp 615238405Sjkim addq %rax,%rdi 616238405Sjkim movq (%rsi,%r15,8),%rax 617238405Sjkim adcq $0,%rdx 618238405Sjkim addq %r11,%rdi 619238405Sjkim adcq $0,%rdx 620238405Sjkim movq %rdi,-16(%rsp,%r15,8) 621238405Sjkim movq %rdx,%r13 622238405Sjkim 623238405Sjkim mulq %rbx 624238405Sjkim addq %rax,%r10 625238405Sjkim movq (%rcx,%r15,8),%rax 626238405Sjkim adcq $0,%rdx 627238405Sjkim movq %rdx,%r11 628238405Sjkim 629238405Sjkim mulq %rbp 630238405Sjkim addq %rax,%r13 631238405Sjkim movq 8(%rsi,%r15,8),%rax 632238405Sjkim adcq $0,%rdx 633238405Sjkim addq %r10,%r13 634238405Sjkim adcq $0,%rdx 635238405Sjkim movq %r13,-8(%rsp,%r15,8) 636238405Sjkim movq %rdx,%rdi 637238405Sjkim 638238405Sjkim mulq %rbx 639238405Sjkim addq %rax,%r11 640238405Sjkim movq 8(%rcx,%r15,8),%rax 641238405Sjkim adcq $0,%rdx 642238405Sjkim leaq 4(%r15),%r15 643238405Sjkim movq %rdx,%r10 644238405Sjkim 645238405Sjkim mulq %rbp 646238405Sjkim addq %rax,%rdi 647238405Sjkim movq -16(%rsi,%r15,8),%rax 648238405Sjkim adcq $0,%rdx 649238405Sjkim addq %r11,%rdi 650238405Sjkim adcq $0,%rdx 651238405Sjkim movq %rdi,-32(%rsp,%r15,8) 652238405Sjkim movq %rdx,%r13 653238405Sjkim cmpq %r9,%r15 654238405Sjkim jl .L1st4x 655238405Sjkim 656238405Sjkim mulq %rbx 657238405Sjkim addq %rax,%r10 658238405Sjkim movq -16(%rcx,%r15,8),%rax 659238405Sjkim adcq $0,%rdx 660238405Sjkim movq %rdx,%r11 661238405Sjkim 662238405Sjkim mulq %rbp 663238405Sjkim addq %rax,%r13 664238405Sjkim movq -8(%rsi,%r15,8),%rax 665238405Sjkim adcq $0,%rdx 666238405Sjkim addq %r10,%r13 667238405Sjkim adcq $0,%rdx 668238405Sjkim movq %r13,-24(%rsp,%r15,8) 669238405Sjkim movq %rdx,%rdi 670238405Sjkim 671238405Sjkim mulq %rbx 672238405Sjkim addq %rax,%r11 673238405Sjkim movq -8(%rcx,%r15,8),%rax 674238405Sjkim adcq $0,%rdx 675238405Sjkim movq %rdx,%r10 676238405Sjkim 677238405Sjkim mulq %rbp 678238405Sjkim addq %rax,%rdi 679238405Sjkim movq (%rsi),%rax 680238405Sjkim adcq $0,%rdx 681238405Sjkim addq %r11,%rdi 682238405Sjkim adcq $0,%rdx 683238405Sjkim movq %rdi,-16(%rsp,%r15,8) 684238405Sjkim movq %rdx,%r13 685238405Sjkim 686238405Sjkim xorq %rdi,%rdi 687238405Sjkim addq %r10,%r13 688238405Sjkim adcq $0,%rdi 689238405Sjkim movq %r13,-8(%rsp,%r15,8) 690238405Sjkim movq %rdi,(%rsp,%r15,8) 691238405Sjkim 692238405Sjkim leaq 1(%r14),%r14 693238405Sjkim.align 4 694238405Sjkim.Louter4x: 695296317Sdelphij leaq 32+128(%rsp,%r9,8),%rdx 696296317Sdelphij pxor %xmm4,%xmm4 697296317Sdelphij pxor %xmm5,%xmm5 698296317Sdelphij movdqa -128(%r12),%xmm0 699296317Sdelphij movdqa -112(%r12),%xmm1 700296317Sdelphij movdqa -96(%r12),%xmm2 701296317Sdelphij movdqa -80(%r12),%xmm3 702296317Sdelphij pand -128(%rdx),%xmm0 703296317Sdelphij pand -112(%rdx),%xmm1 704296317Sdelphij por %xmm0,%xmm4 705296317Sdelphij pand -96(%rdx),%xmm2 706296317Sdelphij por %xmm1,%xmm5 707296317Sdelphij pand -80(%rdx),%xmm3 708296317Sdelphij por %xmm2,%xmm4 709296317Sdelphij por %xmm3,%xmm5 710296317Sdelphij movdqa -64(%r12),%xmm0 711296317Sdelphij movdqa -48(%r12),%xmm1 712296317Sdelphij movdqa -32(%r12),%xmm2 713296317Sdelphij movdqa -16(%r12),%xmm3 714296317Sdelphij pand -64(%rdx),%xmm0 715296317Sdelphij pand -48(%rdx),%xmm1 716296317Sdelphij por %xmm0,%xmm4 717296317Sdelphij pand -32(%rdx),%xmm2 718296317Sdelphij por %xmm1,%xmm5 719296317Sdelphij pand -16(%rdx),%xmm3 720296317Sdelphij por %xmm2,%xmm4 721296317Sdelphij por %xmm3,%xmm5 722296317Sdelphij movdqa 0(%r12),%xmm0 723296317Sdelphij movdqa 16(%r12),%xmm1 724296317Sdelphij movdqa 32(%r12),%xmm2 725296317Sdelphij movdqa 48(%r12),%xmm3 726296317Sdelphij pand 0(%rdx),%xmm0 727296317Sdelphij pand 16(%rdx),%xmm1 728296317Sdelphij por %xmm0,%xmm4 729296317Sdelphij pand 32(%rdx),%xmm2 730296317Sdelphij por %xmm1,%xmm5 731296317Sdelphij pand 48(%rdx),%xmm3 732296317Sdelphij por %xmm2,%xmm4 733296317Sdelphij por %xmm3,%xmm5 734296317Sdelphij movdqa 64(%r12),%xmm0 735296317Sdelphij movdqa 80(%r12),%xmm1 736296317Sdelphij movdqa 96(%r12),%xmm2 737296317Sdelphij movdqa 112(%r12),%xmm3 738296317Sdelphij pand 64(%rdx),%xmm0 739296317Sdelphij pand 80(%rdx),%xmm1 740296317Sdelphij por %xmm0,%xmm4 741296317Sdelphij pand 96(%rdx),%xmm2 742296317Sdelphij por %xmm1,%xmm5 743296317Sdelphij pand 112(%rdx),%xmm3 744296317Sdelphij por %xmm2,%xmm4 745296317Sdelphij por %xmm3,%xmm5 746296317Sdelphij por %xmm5,%xmm4 747296317Sdelphij pshufd $78,%xmm4,%xmm0 748296317Sdelphij por %xmm4,%xmm0 749296317Sdelphij leaq 256(%r12),%r12 750296317Sdelphij.byte 102,72,15,126,195 751296317Sdelphij 752238405Sjkim xorq %r15,%r15 753238405Sjkim 754238405Sjkim movq (%rsp),%r10 755238405Sjkim movq %r8,%rbp 756238405Sjkim mulq %rbx 757238405Sjkim addq %rax,%r10 758238405Sjkim movq (%rcx),%rax 759238405Sjkim adcq $0,%rdx 760238405Sjkim 761238405Sjkim imulq %r10,%rbp 762238405Sjkim movq %rdx,%r11 763238405Sjkim 764238405Sjkim mulq %rbp 765238405Sjkim addq %rax,%r10 766238405Sjkim movq 8(%rsi),%rax 767238405Sjkim adcq $0,%rdx 768238405Sjkim movq %rdx,%rdi 769238405Sjkim 770238405Sjkim mulq %rbx 771238405Sjkim addq %rax,%r11 772238405Sjkim movq 8(%rcx),%rax 773238405Sjkim adcq $0,%rdx 774238405Sjkim addq 8(%rsp),%r11 775238405Sjkim adcq $0,%rdx 776238405Sjkim movq %rdx,%r10 777238405Sjkim 778238405Sjkim mulq %rbp 779238405Sjkim addq %rax,%rdi 780238405Sjkim movq 16(%rsi),%rax 781238405Sjkim adcq $0,%rdx 782238405Sjkim addq %r11,%rdi 783238405Sjkim leaq 4(%r15),%r15 784238405Sjkim adcq $0,%rdx 785238405Sjkim movq %rdx,%r13 786238405Sjkim jmp .Linner4x 787238405Sjkim.align 16 788238405Sjkim.Linner4x: 789238405Sjkim mulq %rbx 790238405Sjkim addq %rax,%r10 791238405Sjkim movq -16(%rcx,%r15,8),%rax 792238405Sjkim adcq $0,%rdx 793238405Sjkim addq -16(%rsp,%r15,8),%r10 794238405Sjkim adcq $0,%rdx 795238405Sjkim movq %rdx,%r11 796238405Sjkim 797238405Sjkim mulq %rbp 798238405Sjkim addq %rax,%r13 799238405Sjkim movq -8(%rsi,%r15,8),%rax 800238405Sjkim adcq $0,%rdx 801238405Sjkim addq %r10,%r13 802238405Sjkim adcq $0,%rdx 803238405Sjkim movq %rdi,-32(%rsp,%r15,8) 804238405Sjkim movq %rdx,%rdi 805238405Sjkim 806238405Sjkim mulq %rbx 807238405Sjkim addq %rax,%r11 808238405Sjkim movq -8(%rcx,%r15,8),%rax 809238405Sjkim adcq $0,%rdx 810238405Sjkim addq -8(%rsp,%r15,8),%r11 811238405Sjkim adcq $0,%rdx 812238405Sjkim movq %rdx,%r10 813238405Sjkim 814238405Sjkim mulq %rbp 815238405Sjkim addq %rax,%rdi 816238405Sjkim movq (%rsi,%r15,8),%rax 817238405Sjkim adcq $0,%rdx 818238405Sjkim addq %r11,%rdi 819238405Sjkim adcq $0,%rdx 820238405Sjkim movq %r13,-24(%rsp,%r15,8) 821238405Sjkim movq %rdx,%r13 822238405Sjkim 823238405Sjkim mulq %rbx 824238405Sjkim addq %rax,%r10 825238405Sjkim movq (%rcx,%r15,8),%rax 826238405Sjkim adcq $0,%rdx 827238405Sjkim addq (%rsp,%r15,8),%r10 828238405Sjkim adcq $0,%rdx 829238405Sjkim movq %rdx,%r11 830238405Sjkim 831238405Sjkim mulq %rbp 832238405Sjkim addq %rax,%r13 833238405Sjkim movq 8(%rsi,%r15,8),%rax 834238405Sjkim adcq $0,%rdx 835238405Sjkim addq %r10,%r13 836238405Sjkim adcq $0,%rdx 837238405Sjkim movq %rdi,-16(%rsp,%r15,8) 838238405Sjkim movq %rdx,%rdi 839238405Sjkim 840238405Sjkim mulq %rbx 841238405Sjkim addq %rax,%r11 842238405Sjkim movq 8(%rcx,%r15,8),%rax 843238405Sjkim adcq $0,%rdx 844238405Sjkim addq 8(%rsp,%r15,8),%r11 845238405Sjkim adcq $0,%rdx 846238405Sjkim leaq 4(%r15),%r15 847238405Sjkim movq %rdx,%r10 848238405Sjkim 849238405Sjkim mulq %rbp 850238405Sjkim addq %rax,%rdi 851238405Sjkim movq -16(%rsi,%r15,8),%rax 852238405Sjkim adcq $0,%rdx 853238405Sjkim addq %r11,%rdi 854238405Sjkim adcq $0,%rdx 855238405Sjkim movq %r13,-40(%rsp,%r15,8) 856238405Sjkim movq %rdx,%r13 857238405Sjkim cmpq %r9,%r15 858238405Sjkim jl .Linner4x 859238405Sjkim 860238405Sjkim mulq %rbx 861238405Sjkim addq %rax,%r10 862238405Sjkim movq -16(%rcx,%r15,8),%rax 863238405Sjkim adcq $0,%rdx 864238405Sjkim addq -16(%rsp,%r15,8),%r10 865238405Sjkim adcq $0,%rdx 866238405Sjkim movq %rdx,%r11 867238405Sjkim 868238405Sjkim mulq %rbp 869238405Sjkim addq %rax,%r13 870238405Sjkim movq -8(%rsi,%r15,8),%rax 871238405Sjkim adcq $0,%rdx 872238405Sjkim addq %r10,%r13 873238405Sjkim adcq $0,%rdx 874238405Sjkim movq %rdi,-32(%rsp,%r15,8) 875238405Sjkim movq %rdx,%rdi 876238405Sjkim 877238405Sjkim mulq %rbx 878238405Sjkim addq %rax,%r11 879238405Sjkim movq -8(%rcx,%r15,8),%rax 880238405Sjkim adcq $0,%rdx 881238405Sjkim addq -8(%rsp,%r15,8),%r11 882238405Sjkim adcq $0,%rdx 883238405Sjkim leaq 1(%r14),%r14 884238405Sjkim movq %rdx,%r10 885238405Sjkim 886238405Sjkim mulq %rbp 887238405Sjkim addq %rax,%rdi 888238405Sjkim movq (%rsi),%rax 889238405Sjkim adcq $0,%rdx 890238405Sjkim addq %r11,%rdi 891238405Sjkim adcq $0,%rdx 892238405Sjkim movq %r13,-24(%rsp,%r15,8) 893238405Sjkim movq %rdx,%r13 894238405Sjkim 895238405Sjkim movq %rdi,-16(%rsp,%r15,8) 896238405Sjkim 897238405Sjkim xorq %rdi,%rdi 898238405Sjkim addq %r10,%r13 899238405Sjkim adcq $0,%rdi 900238405Sjkim addq (%rsp,%r9,8),%r13 901238405Sjkim adcq $0,%rdi 902238405Sjkim movq %r13,-8(%rsp,%r15,8) 903238405Sjkim movq %rdi,(%rsp,%r15,8) 904238405Sjkim 905238405Sjkim cmpq %r9,%r14 906238405Sjkim jl .Louter4x 907238405Sjkim movq 16(%rsp,%r9,8),%rdi 908238405Sjkim movq 0(%rsp),%rax 909238405Sjkim pxor %xmm0,%xmm0 910238405Sjkim movq 8(%rsp),%rdx 911238405Sjkim shrq $2,%r9 912238405Sjkim leaq (%rsp),%rsi 913238405Sjkim xorq %r14,%r14 914238405Sjkim 915238405Sjkim subq 0(%rcx),%rax 916238405Sjkim movq 16(%rsi),%rbx 917238405Sjkim movq 24(%rsi),%rbp 918238405Sjkim sbbq 8(%rcx),%rdx 919238405Sjkim leaq -1(%r9),%r15 920238405Sjkim jmp .Lsub4x 921238405Sjkim.align 16 922238405Sjkim.Lsub4x: 923238405Sjkim movq %rax,0(%rdi,%r14,8) 924238405Sjkim movq %rdx,8(%rdi,%r14,8) 925238405Sjkim sbbq 16(%rcx,%r14,8),%rbx 926238405Sjkim movq 32(%rsi,%r14,8),%rax 927238405Sjkim movq 40(%rsi,%r14,8),%rdx 928238405Sjkim sbbq 24(%rcx,%r14,8),%rbp 929238405Sjkim movq %rbx,16(%rdi,%r14,8) 930238405Sjkim movq %rbp,24(%rdi,%r14,8) 931238405Sjkim sbbq 32(%rcx,%r14,8),%rax 932238405Sjkim movq 48(%rsi,%r14,8),%rbx 933238405Sjkim movq 56(%rsi,%r14,8),%rbp 934238405Sjkim sbbq 40(%rcx,%r14,8),%rdx 935238405Sjkim leaq 4(%r14),%r14 936238405Sjkim decq %r15 937238405Sjkim jnz .Lsub4x 938238405Sjkim 939238405Sjkim movq %rax,0(%rdi,%r14,8) 940238405Sjkim movq 32(%rsi,%r14,8),%rax 941238405Sjkim sbbq 16(%rcx,%r14,8),%rbx 942238405Sjkim movq %rdx,8(%rdi,%r14,8) 943238405Sjkim sbbq 24(%rcx,%r14,8),%rbp 944238405Sjkim movq %rbx,16(%rdi,%r14,8) 945238405Sjkim 946238405Sjkim sbbq $0,%rax 947238405Sjkim movq %rbp,24(%rdi,%r14,8) 948238405Sjkim xorq %r14,%r14 949238405Sjkim andq %rax,%rsi 950238405Sjkim notq %rax 951238405Sjkim movq %rdi,%rcx 952238405Sjkim andq %rax,%rcx 953238405Sjkim leaq -1(%r9),%r15 954238405Sjkim orq %rcx,%rsi 955238405Sjkim 956238405Sjkim movdqu (%rsi),%xmm1 957238405Sjkim movdqa %xmm0,(%rsp) 958238405Sjkim movdqu %xmm1,(%rdi) 959238405Sjkim jmp .Lcopy4x 960238405Sjkim.align 16 961238405Sjkim.Lcopy4x: 962238405Sjkim movdqu 16(%rsi,%r14,1),%xmm2 963238405Sjkim movdqu 32(%rsi,%r14,1),%xmm1 964238405Sjkim movdqa %xmm0,16(%rsp,%r14,1) 965238405Sjkim movdqu %xmm2,16(%rdi,%r14,1) 966238405Sjkim movdqa %xmm0,32(%rsp,%r14,1) 967238405Sjkim movdqu %xmm1,32(%rdi,%r14,1) 968238405Sjkim leaq 32(%r14),%r14 969238405Sjkim decq %r15 970238405Sjkim jnz .Lcopy4x 971238405Sjkim 972238405Sjkim shlq $2,%r9 973238405Sjkim movdqu 16(%rsi,%r14,1),%xmm2 974238405Sjkim movdqa %xmm0,16(%rsp,%r14,1) 975238405Sjkim movdqu %xmm2,16(%rdi,%r14,1) 976238405Sjkim movq 8(%rsp,%r9,8),%rsi 977238405Sjkim movq $1,%rax 978296317Sdelphij 979238405Sjkim movq (%rsi),%r15 980238405Sjkim movq 8(%rsi),%r14 981238405Sjkim movq 16(%rsi),%r13 982238405Sjkim movq 24(%rsi),%r12 983238405Sjkim movq 32(%rsi),%rbp 984238405Sjkim movq 40(%rsi),%rbx 985238405Sjkim leaq 48(%rsi),%rsp 986238405Sjkim.Lmul4x_epilogue: 987238405Sjkim .byte 0xf3,0xc3 988238405Sjkim.size bn_mul4x_mont_gather5,.-bn_mul4x_mont_gather5 989238405Sjkim.globl bn_scatter5 990238405Sjkim.type bn_scatter5,@function 991238405Sjkim.align 16 992238405Sjkimbn_scatter5: 993238405Sjkim cmpq $0,%rsi 994238405Sjkim jz .Lscatter_epilogue 995238405Sjkim leaq (%rdx,%rcx,8),%rdx 996238405Sjkim.Lscatter: 997238405Sjkim movq (%rdi),%rax 998238405Sjkim leaq 8(%rdi),%rdi 999238405Sjkim movq %rax,(%rdx) 1000238405Sjkim leaq 256(%rdx),%rdx 1001238405Sjkim subq $1,%rsi 1002238405Sjkim jnz .Lscatter 1003238405Sjkim.Lscatter_epilogue: 1004238405Sjkim .byte 0xf3,0xc3 1005238405Sjkim.size bn_scatter5,.-bn_scatter5 1006238405Sjkim 1007238405Sjkim.globl bn_gather5 1008238405Sjkim.type bn_gather5,@function 1009238405Sjkim.align 16 1010238405Sjkimbn_gather5: 1011296317Sdelphij.LSEH_begin_bn_gather5: 1012296317Sdelphij 1013296317Sdelphij.byte 0x4c,0x8d,0x14,0x24 1014296317Sdelphij.byte 0x48,0x81,0xec,0x08,0x01,0x00,0x00 1015296317Sdelphij leaq .Linc(%rip),%rax 1016296317Sdelphij andq $-16,%rsp 1017296317Sdelphij 1018296317Sdelphij movd %ecx,%xmm5 1019296317Sdelphij movdqa 0(%rax),%xmm0 1020296317Sdelphij movdqa 16(%rax),%xmm1 1021296317Sdelphij leaq 128(%rdx),%r11 1022296317Sdelphij leaq 128(%rsp),%rax 1023296317Sdelphij 1024296317Sdelphij pshufd $0,%xmm5,%xmm5 1025296317Sdelphij movdqa %xmm1,%xmm4 1026296317Sdelphij movdqa %xmm1,%xmm2 1027296317Sdelphij paddd %xmm0,%xmm1 1028296317Sdelphij pcmpeqd %xmm5,%xmm0 1029296317Sdelphij movdqa %xmm4,%xmm3 1030296317Sdelphij 1031296317Sdelphij paddd %xmm1,%xmm2 1032296317Sdelphij pcmpeqd %xmm5,%xmm1 1033296317Sdelphij movdqa %xmm0,-128(%rax) 1034296317Sdelphij movdqa %xmm4,%xmm0 1035296317Sdelphij 1036296317Sdelphij paddd %xmm2,%xmm3 1037296317Sdelphij pcmpeqd %xmm5,%xmm2 1038296317Sdelphij movdqa %xmm1,-112(%rax) 1039296317Sdelphij movdqa %xmm4,%xmm1 1040296317Sdelphij 1041296317Sdelphij paddd %xmm3,%xmm0 1042296317Sdelphij pcmpeqd %xmm5,%xmm3 1043296317Sdelphij movdqa %xmm2,-96(%rax) 1044296317Sdelphij movdqa %xmm4,%xmm2 1045296317Sdelphij paddd %xmm0,%xmm1 1046296317Sdelphij pcmpeqd %xmm5,%xmm0 1047296317Sdelphij movdqa %xmm3,-80(%rax) 1048296317Sdelphij movdqa %xmm4,%xmm3 1049296317Sdelphij 1050296317Sdelphij paddd %xmm1,%xmm2 1051296317Sdelphij pcmpeqd %xmm5,%xmm1 1052296317Sdelphij movdqa %xmm0,-64(%rax) 1053296317Sdelphij movdqa %xmm4,%xmm0 1054296317Sdelphij 1055296317Sdelphij paddd %xmm2,%xmm3 1056296317Sdelphij pcmpeqd %xmm5,%xmm2 1057296317Sdelphij movdqa %xmm1,-48(%rax) 1058296317Sdelphij movdqa %xmm4,%xmm1 1059296317Sdelphij 1060296317Sdelphij paddd %xmm3,%xmm0 1061296317Sdelphij pcmpeqd %xmm5,%xmm3 1062296317Sdelphij movdqa %xmm2,-32(%rax) 1063296317Sdelphij movdqa %xmm4,%xmm2 1064296317Sdelphij paddd %xmm0,%xmm1 1065296317Sdelphij pcmpeqd %xmm5,%xmm0 1066296317Sdelphij movdqa %xmm3,-16(%rax) 1067296317Sdelphij movdqa %xmm4,%xmm3 1068296317Sdelphij 1069296317Sdelphij paddd %xmm1,%xmm2 1070296317Sdelphij pcmpeqd %xmm5,%xmm1 1071296317Sdelphij movdqa %xmm0,0(%rax) 1072296317Sdelphij movdqa %xmm4,%xmm0 1073296317Sdelphij 1074296317Sdelphij paddd %xmm2,%xmm3 1075296317Sdelphij pcmpeqd %xmm5,%xmm2 1076296317Sdelphij movdqa %xmm1,16(%rax) 1077296317Sdelphij movdqa %xmm4,%xmm1 1078296317Sdelphij 1079296317Sdelphij paddd %xmm3,%xmm0 1080296317Sdelphij pcmpeqd %xmm5,%xmm3 1081296317Sdelphij movdqa %xmm2,32(%rax) 1082296317Sdelphij movdqa %xmm4,%xmm2 1083296317Sdelphij paddd %xmm0,%xmm1 1084296317Sdelphij pcmpeqd %xmm5,%xmm0 1085296317Sdelphij movdqa %xmm3,48(%rax) 1086296317Sdelphij movdqa %xmm4,%xmm3 1087296317Sdelphij 1088296317Sdelphij paddd %xmm1,%xmm2 1089296317Sdelphij pcmpeqd %xmm5,%xmm1 1090296317Sdelphij movdqa %xmm0,64(%rax) 1091296317Sdelphij movdqa %xmm4,%xmm0 1092296317Sdelphij 1093296317Sdelphij paddd %xmm2,%xmm3 1094296317Sdelphij pcmpeqd %xmm5,%xmm2 1095296317Sdelphij movdqa %xmm1,80(%rax) 1096296317Sdelphij movdqa %xmm4,%xmm1 1097296317Sdelphij 1098296317Sdelphij paddd %xmm3,%xmm0 1099296317Sdelphij pcmpeqd %xmm5,%xmm3 1100296317Sdelphij movdqa %xmm2,96(%rax) 1101296317Sdelphij movdqa %xmm4,%xmm2 1102296317Sdelphij movdqa %xmm3,112(%rax) 1103238405Sjkim jmp .Lgather 1104296317Sdelphij 1105296317Sdelphij.align 32 1106238405Sjkim.Lgather: 1107296317Sdelphij pxor %xmm4,%xmm4 1108296317Sdelphij pxor %xmm5,%xmm5 1109296317Sdelphij movdqa -128(%r11),%xmm0 1110296317Sdelphij movdqa -112(%r11),%xmm1 1111296317Sdelphij movdqa -96(%r11),%xmm2 1112296317Sdelphij pand -128(%rax),%xmm0 1113296317Sdelphij movdqa -80(%r11),%xmm3 1114296317Sdelphij pand -112(%rax),%xmm1 1115296317Sdelphij por %xmm0,%xmm4 1116296317Sdelphij pand -96(%rax),%xmm2 1117296317Sdelphij por %xmm1,%xmm5 1118296317Sdelphij pand -80(%rax),%xmm3 1119296317Sdelphij por %xmm2,%xmm4 1120296317Sdelphij por %xmm3,%xmm5 1121296317Sdelphij movdqa -64(%r11),%xmm0 1122296317Sdelphij movdqa -48(%r11),%xmm1 1123296317Sdelphij movdqa -32(%r11),%xmm2 1124296317Sdelphij pand -64(%rax),%xmm0 1125296317Sdelphij movdqa -16(%r11),%xmm3 1126296317Sdelphij pand -48(%rax),%xmm1 1127296317Sdelphij por %xmm0,%xmm4 1128296317Sdelphij pand -32(%rax),%xmm2 1129296317Sdelphij por %xmm1,%xmm5 1130296317Sdelphij pand -16(%rax),%xmm3 1131296317Sdelphij por %xmm2,%xmm4 1132296317Sdelphij por %xmm3,%xmm5 1133296317Sdelphij movdqa 0(%r11),%xmm0 1134296317Sdelphij movdqa 16(%r11),%xmm1 1135296317Sdelphij movdqa 32(%r11),%xmm2 1136296317Sdelphij pand 0(%rax),%xmm0 1137296317Sdelphij movdqa 48(%r11),%xmm3 1138296317Sdelphij pand 16(%rax),%xmm1 1139296317Sdelphij por %xmm0,%xmm4 1140296317Sdelphij pand 32(%rax),%xmm2 1141296317Sdelphij por %xmm1,%xmm5 1142296317Sdelphij pand 48(%rax),%xmm3 1143296317Sdelphij por %xmm2,%xmm4 1144296317Sdelphij por %xmm3,%xmm5 1145296317Sdelphij movdqa 64(%r11),%xmm0 1146296317Sdelphij movdqa 80(%r11),%xmm1 1147296317Sdelphij movdqa 96(%r11),%xmm2 1148296317Sdelphij pand 64(%rax),%xmm0 1149296317Sdelphij movdqa 112(%r11),%xmm3 1150296317Sdelphij pand 80(%rax),%xmm1 1151296317Sdelphij por %xmm0,%xmm4 1152296317Sdelphij pand 96(%rax),%xmm2 1153296317Sdelphij por %xmm1,%xmm5 1154296317Sdelphij pand 112(%rax),%xmm3 1155296317Sdelphij por %xmm2,%xmm4 1156296317Sdelphij por %xmm3,%xmm5 1157296317Sdelphij por %xmm5,%xmm4 1158296317Sdelphij leaq 256(%r11),%r11 1159296317Sdelphij pshufd $78,%xmm4,%xmm0 1160296317Sdelphij por %xmm4,%xmm0 1161238405Sjkim movq %xmm0,(%rdi) 1162238405Sjkim leaq 8(%rdi),%rdi 1163238405Sjkim subq $1,%rsi 1164238405Sjkim jnz .Lgather 1165296317Sdelphij 1166296317Sdelphij leaq (%r10),%rsp 1167238405Sjkim .byte 0xf3,0xc3 1168238405Sjkim.LSEH_end_bn_gather5: 1169238405Sjkim.size bn_gather5,.-bn_gather5 1170238405Sjkim.align 64 1171296317Sdelphij.Linc: 1172296317Sdelphij.long 0,0, 1,1 1173296317Sdelphij.long 2,2, 2,2 1174238405Sjkim.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,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 1175