1*4757b351SPierre Pronchery/* Do not modify. This file is auto-generated from rsaz-2k-avxifma.pl. */ 2*4757b351SPierre Pronchery.text 3*4757b351SPierre Pronchery 4*4757b351SPierre Pronchery.globl ossl_rsaz_avxifma_eligible 5*4757b351SPierre Pronchery.type ossl_rsaz_avxifma_eligible,@function 6*4757b351SPierre Pronchery.align 32 7*4757b351SPierre Proncheryossl_rsaz_avxifma_eligible: 8*4757b351SPierre Pronchery movl OPENSSL_ia32cap_P+20(%rip),%ecx 9*4757b351SPierre Pronchery xorl %eax,%eax 10*4757b351SPierre Pronchery andl $8388608,%ecx 11*4757b351SPierre Pronchery cmpl $8388608,%ecx 12*4757b351SPierre Pronchery cmovel %ecx,%eax 13*4757b351SPierre Pronchery .byte 0xf3,0xc3 14*4757b351SPierre Pronchery.size ossl_rsaz_avxifma_eligible, .-ossl_rsaz_avxifma_eligible 15*4757b351SPierre Pronchery.text 16*4757b351SPierre Pronchery 17*4757b351SPierre Pronchery.globl ossl_rsaz_amm52x20_x1_avxifma256 18*4757b351SPierre Pronchery.type ossl_rsaz_amm52x20_x1_avxifma256,@function 19*4757b351SPierre Pronchery.align 32 20*4757b351SPierre Proncheryossl_rsaz_amm52x20_x1_avxifma256: 21*4757b351SPierre Pronchery.cfi_startproc 22*4757b351SPierre Pronchery.byte 243,15,30,250 23*4757b351SPierre Pronchery pushq %rbx 24*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 25*4757b351SPierre Pronchery.cfi_offset %rbx,-16 26*4757b351SPierre Pronchery pushq %rbp 27*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 28*4757b351SPierre Pronchery.cfi_offset %rbp,-24 29*4757b351SPierre Pronchery pushq %r12 30*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 31*4757b351SPierre Pronchery.cfi_offset %r12,-32 32*4757b351SPierre Pronchery pushq %r13 33*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 34*4757b351SPierre Pronchery.cfi_offset %r13,-40 35*4757b351SPierre Pronchery pushq %r14 36*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 37*4757b351SPierre Pronchery.cfi_offset %r14,-48 38*4757b351SPierre Pronchery pushq %r15 39*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 40*4757b351SPierre Pronchery.cfi_offset %r15,-56 41*4757b351SPierre Pronchery.Lossl_rsaz_amm52x20_x1_avxifma256_body: 42*4757b351SPierre Pronchery 43*4757b351SPierre Pronchery 44*4757b351SPierre Pronchery vpxor %ymm0,%ymm0,%ymm0 45*4757b351SPierre Pronchery vmovapd %ymm0,%ymm3 46*4757b351SPierre Pronchery vmovapd %ymm0,%ymm5 47*4757b351SPierre Pronchery vmovapd %ymm0,%ymm6 48*4757b351SPierre Pronchery vmovapd %ymm0,%ymm7 49*4757b351SPierre Pronchery vmovapd %ymm0,%ymm8 50*4757b351SPierre Pronchery 51*4757b351SPierre Pronchery xorl %r9d,%r9d 52*4757b351SPierre Pronchery 53*4757b351SPierre Pronchery movq %rdx,%r11 54*4757b351SPierre Pronchery movq $0xfffffffffffff,%rax 55*4757b351SPierre Pronchery 56*4757b351SPierre Pronchery 57*4757b351SPierre Pronchery movl $5,%ebx 58*4757b351SPierre Pronchery 59*4757b351SPierre Pronchery.align 32 60*4757b351SPierre Pronchery.Lloop5: 61*4757b351SPierre Pronchery movq 0(%r11),%r13 62*4757b351SPierre Pronchery 63*4757b351SPierre Pronchery vpbroadcastq 0(%r11),%ymm1 64*4757b351SPierre Pronchery movq 0(%rsi),%rdx 65*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 66*4757b351SPierre Pronchery addq %r13,%r9 67*4757b351SPierre Pronchery movq %r12,%r10 68*4757b351SPierre Pronchery adcq $0,%r10 69*4757b351SPierre Pronchery 70*4757b351SPierre Pronchery movq %r8,%r13 71*4757b351SPierre Pronchery imulq %r9,%r13 72*4757b351SPierre Pronchery andq %rax,%r13 73*4757b351SPierre Pronchery 74*4757b351SPierre Pronchery vmovq %r13,%xmm2 75*4757b351SPierre Pronchery vpbroadcastq %xmm2,%ymm2 76*4757b351SPierre Pronchery movq 0(%rcx),%rdx 77*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 78*4757b351SPierre Pronchery addq %r13,%r9 79*4757b351SPierre Pronchery adcq %r12,%r10 80*4757b351SPierre Pronchery 81*4757b351SPierre Pronchery shrq $52,%r9 82*4757b351SPierre Pronchery salq $12,%r10 83*4757b351SPierre Pronchery orq %r10,%r9 84*4757b351SPierre Pronchery 85*4757b351SPierre Pronchery leaq -168(%rsp),%rsp 86*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rsi),%ymm1,%ymm3 87*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rsi),%ymm1,%ymm5 88*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rsi),%ymm1,%ymm6 89*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rsi),%ymm1,%ymm7 90*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rsi),%ymm1,%ymm8 91*4757b351SPierre Pronchery 92*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rcx),%ymm2,%ymm3 93*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rcx),%ymm2,%ymm5 94*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rcx),%ymm2,%ymm6 95*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rcx),%ymm2,%ymm7 96*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rcx),%ymm2,%ymm8 97*4757b351SPierre Pronchery 98*4757b351SPierre Pronchery 99*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rsp) 100*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rsp) 101*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rsp) 102*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rsp) 103*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rsp) 104*4757b351SPierre Pronchery movq $0,160(%rsp) 105*4757b351SPierre Pronchery 106*4757b351SPierre Pronchery vmovdqu 8(%rsp),%ymm3 107*4757b351SPierre Pronchery vmovdqu 40(%rsp),%ymm5 108*4757b351SPierre Pronchery vmovdqu 72(%rsp),%ymm6 109*4757b351SPierre Pronchery vmovdqu 104(%rsp),%ymm7 110*4757b351SPierre Pronchery vmovdqu 136(%rsp),%ymm8 111*4757b351SPierre Pronchery 112*4757b351SPierre Pronchery addq 8(%rsp),%r9 113*4757b351SPierre Pronchery 114*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rsi),%ymm1,%ymm3 115*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rsi),%ymm1,%ymm5 116*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rsi),%ymm1,%ymm6 117*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rsi),%ymm1,%ymm7 118*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rsi),%ymm1,%ymm8 119*4757b351SPierre Pronchery 120*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rcx),%ymm2,%ymm3 121*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rcx),%ymm2,%ymm5 122*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rcx),%ymm2,%ymm6 123*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rcx),%ymm2,%ymm7 124*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rcx),%ymm2,%ymm8 125*4757b351SPierre Pronchery leaq 168(%rsp),%rsp 126*4757b351SPierre Pronchery movq 8(%r11),%r13 127*4757b351SPierre Pronchery 128*4757b351SPierre Pronchery vpbroadcastq 8(%r11),%ymm1 129*4757b351SPierre Pronchery movq 0(%rsi),%rdx 130*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 131*4757b351SPierre Pronchery addq %r13,%r9 132*4757b351SPierre Pronchery movq %r12,%r10 133*4757b351SPierre Pronchery adcq $0,%r10 134*4757b351SPierre Pronchery 135*4757b351SPierre Pronchery movq %r8,%r13 136*4757b351SPierre Pronchery imulq %r9,%r13 137*4757b351SPierre Pronchery andq %rax,%r13 138*4757b351SPierre Pronchery 139*4757b351SPierre Pronchery vmovq %r13,%xmm2 140*4757b351SPierre Pronchery vpbroadcastq %xmm2,%ymm2 141*4757b351SPierre Pronchery movq 0(%rcx),%rdx 142*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 143*4757b351SPierre Pronchery addq %r13,%r9 144*4757b351SPierre Pronchery adcq %r12,%r10 145*4757b351SPierre Pronchery 146*4757b351SPierre Pronchery shrq $52,%r9 147*4757b351SPierre Pronchery salq $12,%r10 148*4757b351SPierre Pronchery orq %r10,%r9 149*4757b351SPierre Pronchery 150*4757b351SPierre Pronchery leaq -168(%rsp),%rsp 151*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rsi),%ymm1,%ymm3 152*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rsi),%ymm1,%ymm5 153*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rsi),%ymm1,%ymm6 154*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rsi),%ymm1,%ymm7 155*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rsi),%ymm1,%ymm8 156*4757b351SPierre Pronchery 157*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rcx),%ymm2,%ymm3 158*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rcx),%ymm2,%ymm5 159*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rcx),%ymm2,%ymm6 160*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rcx),%ymm2,%ymm7 161*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rcx),%ymm2,%ymm8 162*4757b351SPierre Pronchery 163*4757b351SPierre Pronchery 164*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rsp) 165*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rsp) 166*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rsp) 167*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rsp) 168*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rsp) 169*4757b351SPierre Pronchery movq $0,160(%rsp) 170*4757b351SPierre Pronchery 171*4757b351SPierre Pronchery vmovdqu 8(%rsp),%ymm3 172*4757b351SPierre Pronchery vmovdqu 40(%rsp),%ymm5 173*4757b351SPierre Pronchery vmovdqu 72(%rsp),%ymm6 174*4757b351SPierre Pronchery vmovdqu 104(%rsp),%ymm7 175*4757b351SPierre Pronchery vmovdqu 136(%rsp),%ymm8 176*4757b351SPierre Pronchery 177*4757b351SPierre Pronchery addq 8(%rsp),%r9 178*4757b351SPierre Pronchery 179*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rsi),%ymm1,%ymm3 180*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rsi),%ymm1,%ymm5 181*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rsi),%ymm1,%ymm6 182*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rsi),%ymm1,%ymm7 183*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rsi),%ymm1,%ymm8 184*4757b351SPierre Pronchery 185*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rcx),%ymm2,%ymm3 186*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rcx),%ymm2,%ymm5 187*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rcx),%ymm2,%ymm6 188*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rcx),%ymm2,%ymm7 189*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rcx),%ymm2,%ymm8 190*4757b351SPierre Pronchery leaq 168(%rsp),%rsp 191*4757b351SPierre Pronchery movq 16(%r11),%r13 192*4757b351SPierre Pronchery 193*4757b351SPierre Pronchery vpbroadcastq 16(%r11),%ymm1 194*4757b351SPierre Pronchery movq 0(%rsi),%rdx 195*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 196*4757b351SPierre Pronchery addq %r13,%r9 197*4757b351SPierre Pronchery movq %r12,%r10 198*4757b351SPierre Pronchery adcq $0,%r10 199*4757b351SPierre Pronchery 200*4757b351SPierre Pronchery movq %r8,%r13 201*4757b351SPierre Pronchery imulq %r9,%r13 202*4757b351SPierre Pronchery andq %rax,%r13 203*4757b351SPierre Pronchery 204*4757b351SPierre Pronchery vmovq %r13,%xmm2 205*4757b351SPierre Pronchery vpbroadcastq %xmm2,%ymm2 206*4757b351SPierre Pronchery movq 0(%rcx),%rdx 207*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 208*4757b351SPierre Pronchery addq %r13,%r9 209*4757b351SPierre Pronchery adcq %r12,%r10 210*4757b351SPierre Pronchery 211*4757b351SPierre Pronchery shrq $52,%r9 212*4757b351SPierre Pronchery salq $12,%r10 213*4757b351SPierre Pronchery orq %r10,%r9 214*4757b351SPierre Pronchery 215*4757b351SPierre Pronchery leaq -168(%rsp),%rsp 216*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rsi),%ymm1,%ymm3 217*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rsi),%ymm1,%ymm5 218*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rsi),%ymm1,%ymm6 219*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rsi),%ymm1,%ymm7 220*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rsi),%ymm1,%ymm8 221*4757b351SPierre Pronchery 222*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rcx),%ymm2,%ymm3 223*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rcx),%ymm2,%ymm5 224*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rcx),%ymm2,%ymm6 225*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rcx),%ymm2,%ymm7 226*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rcx),%ymm2,%ymm8 227*4757b351SPierre Pronchery 228*4757b351SPierre Pronchery 229*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rsp) 230*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rsp) 231*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rsp) 232*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rsp) 233*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rsp) 234*4757b351SPierre Pronchery movq $0,160(%rsp) 235*4757b351SPierre Pronchery 236*4757b351SPierre Pronchery vmovdqu 8(%rsp),%ymm3 237*4757b351SPierre Pronchery vmovdqu 40(%rsp),%ymm5 238*4757b351SPierre Pronchery vmovdqu 72(%rsp),%ymm6 239*4757b351SPierre Pronchery vmovdqu 104(%rsp),%ymm7 240*4757b351SPierre Pronchery vmovdqu 136(%rsp),%ymm8 241*4757b351SPierre Pronchery 242*4757b351SPierre Pronchery addq 8(%rsp),%r9 243*4757b351SPierre Pronchery 244*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rsi),%ymm1,%ymm3 245*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rsi),%ymm1,%ymm5 246*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rsi),%ymm1,%ymm6 247*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rsi),%ymm1,%ymm7 248*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rsi),%ymm1,%ymm8 249*4757b351SPierre Pronchery 250*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rcx),%ymm2,%ymm3 251*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rcx),%ymm2,%ymm5 252*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rcx),%ymm2,%ymm6 253*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rcx),%ymm2,%ymm7 254*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rcx),%ymm2,%ymm8 255*4757b351SPierre Pronchery leaq 168(%rsp),%rsp 256*4757b351SPierre Pronchery movq 24(%r11),%r13 257*4757b351SPierre Pronchery 258*4757b351SPierre Pronchery vpbroadcastq 24(%r11),%ymm1 259*4757b351SPierre Pronchery movq 0(%rsi),%rdx 260*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 261*4757b351SPierre Pronchery addq %r13,%r9 262*4757b351SPierre Pronchery movq %r12,%r10 263*4757b351SPierre Pronchery adcq $0,%r10 264*4757b351SPierre Pronchery 265*4757b351SPierre Pronchery movq %r8,%r13 266*4757b351SPierre Pronchery imulq %r9,%r13 267*4757b351SPierre Pronchery andq %rax,%r13 268*4757b351SPierre Pronchery 269*4757b351SPierre Pronchery vmovq %r13,%xmm2 270*4757b351SPierre Pronchery vpbroadcastq %xmm2,%ymm2 271*4757b351SPierre Pronchery movq 0(%rcx),%rdx 272*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 273*4757b351SPierre Pronchery addq %r13,%r9 274*4757b351SPierre Pronchery adcq %r12,%r10 275*4757b351SPierre Pronchery 276*4757b351SPierre Pronchery shrq $52,%r9 277*4757b351SPierre Pronchery salq $12,%r10 278*4757b351SPierre Pronchery orq %r10,%r9 279*4757b351SPierre Pronchery 280*4757b351SPierre Pronchery leaq -168(%rsp),%rsp 281*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rsi),%ymm1,%ymm3 282*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rsi),%ymm1,%ymm5 283*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rsi),%ymm1,%ymm6 284*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rsi),%ymm1,%ymm7 285*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rsi),%ymm1,%ymm8 286*4757b351SPierre Pronchery 287*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rcx),%ymm2,%ymm3 288*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rcx),%ymm2,%ymm5 289*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rcx),%ymm2,%ymm6 290*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rcx),%ymm2,%ymm7 291*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rcx),%ymm2,%ymm8 292*4757b351SPierre Pronchery 293*4757b351SPierre Pronchery 294*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rsp) 295*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rsp) 296*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rsp) 297*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rsp) 298*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rsp) 299*4757b351SPierre Pronchery movq $0,160(%rsp) 300*4757b351SPierre Pronchery 301*4757b351SPierre Pronchery vmovdqu 8(%rsp),%ymm3 302*4757b351SPierre Pronchery vmovdqu 40(%rsp),%ymm5 303*4757b351SPierre Pronchery vmovdqu 72(%rsp),%ymm6 304*4757b351SPierre Pronchery vmovdqu 104(%rsp),%ymm7 305*4757b351SPierre Pronchery vmovdqu 136(%rsp),%ymm8 306*4757b351SPierre Pronchery 307*4757b351SPierre Pronchery addq 8(%rsp),%r9 308*4757b351SPierre Pronchery 309*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rsi),%ymm1,%ymm3 310*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rsi),%ymm1,%ymm5 311*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rsi),%ymm1,%ymm6 312*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rsi),%ymm1,%ymm7 313*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rsi),%ymm1,%ymm8 314*4757b351SPierre Pronchery 315*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rcx),%ymm2,%ymm3 316*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rcx),%ymm2,%ymm5 317*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rcx),%ymm2,%ymm6 318*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rcx),%ymm2,%ymm7 319*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rcx),%ymm2,%ymm8 320*4757b351SPierre Pronchery leaq 168(%rsp),%rsp 321*4757b351SPierre Pronchery leaq 32(%r11),%r11 322*4757b351SPierre Pronchery decl %ebx 323*4757b351SPierre Pronchery jne .Lloop5 324*4757b351SPierre Pronchery 325*4757b351SPierre Pronchery vmovq %r9,%xmm0 326*4757b351SPierre Pronchery vpbroadcastq %xmm0,%ymm0 327*4757b351SPierre Pronchery vpblendd $3,%ymm0,%ymm3,%ymm3 328*4757b351SPierre Pronchery 329*4757b351SPierre Pronchery 330*4757b351SPierre Pronchery 331*4757b351SPierre Pronchery vpsrlq $52,%ymm3,%ymm0 332*4757b351SPierre Pronchery vpsrlq $52,%ymm5,%ymm1 333*4757b351SPierre Pronchery vpsrlq $52,%ymm6,%ymm2 334*4757b351SPierre Pronchery vpsrlq $52,%ymm7,%ymm13 335*4757b351SPierre Pronchery vpsrlq $52,%ymm8,%ymm14 336*4757b351SPierre Pronchery 337*4757b351SPierre Pronchery 338*4757b351SPierre Pronchery vpermq $144,%ymm14,%ymm14 339*4757b351SPierre Pronchery vpermq $3,%ymm13,%ymm15 340*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm14,%ymm14 341*4757b351SPierre Pronchery 342*4757b351SPierre Pronchery vpermq $144,%ymm13,%ymm13 343*4757b351SPierre Pronchery vpermq $3,%ymm2,%ymm15 344*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm13,%ymm13 345*4757b351SPierre Pronchery 346*4757b351SPierre Pronchery vpermq $144,%ymm2,%ymm2 347*4757b351SPierre Pronchery vpermq $3,%ymm1,%ymm15 348*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm2,%ymm2 349*4757b351SPierre Pronchery 350*4757b351SPierre Pronchery vpermq $144,%ymm1,%ymm1 351*4757b351SPierre Pronchery vpermq $3,%ymm0,%ymm15 352*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm1,%ymm1 353*4757b351SPierre Pronchery 354*4757b351SPierre Pronchery vpermq $144,%ymm0,%ymm0 355*4757b351SPierre Pronchery vpand .Lhigh64x3(%rip),%ymm0,%ymm0 356*4757b351SPierre Pronchery 357*4757b351SPierre Pronchery 358*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm3,%ymm3 359*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm5,%ymm5 360*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm6,%ymm6 361*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm7,%ymm7 362*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm8,%ymm8 363*4757b351SPierre Pronchery 364*4757b351SPierre Pronchery 365*4757b351SPierre Pronchery vpaddq %ymm0,%ymm3,%ymm3 366*4757b351SPierre Pronchery vpaddq %ymm1,%ymm5,%ymm5 367*4757b351SPierre Pronchery vpaddq %ymm2,%ymm6,%ymm6 368*4757b351SPierre Pronchery vpaddq %ymm13,%ymm7,%ymm7 369*4757b351SPierre Pronchery vpaddq %ymm14,%ymm8,%ymm8 370*4757b351SPierre Pronchery 371*4757b351SPierre Pronchery 372*4757b351SPierre Pronchery 373*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm3,%ymm0 374*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm5,%ymm1 375*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm6,%ymm2 376*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm7,%ymm13 377*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm8,%ymm14 378*4757b351SPierre Pronchery vmovmskpd %ymm0,%r14d 379*4757b351SPierre Pronchery vmovmskpd %ymm1,%r13d 380*4757b351SPierre Pronchery vmovmskpd %ymm2,%r12d 381*4757b351SPierre Pronchery vmovmskpd %ymm13,%r11d 382*4757b351SPierre Pronchery vmovmskpd %ymm14,%r10d 383*4757b351SPierre Pronchery 384*4757b351SPierre Pronchery 385*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm3,%ymm0 386*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm5,%ymm1 387*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm6,%ymm2 388*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm7,%ymm13 389*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm8,%ymm14 390*4757b351SPierre Pronchery vmovmskpd %ymm0,%r9d 391*4757b351SPierre Pronchery vmovmskpd %ymm1,%r8d 392*4757b351SPierre Pronchery vmovmskpd %ymm2,%ebx 393*4757b351SPierre Pronchery vmovmskpd %ymm13,%ecx 394*4757b351SPierre Pronchery vmovmskpd %ymm14,%edx 395*4757b351SPierre Pronchery 396*4757b351SPierre Pronchery 397*4757b351SPierre Pronchery 398*4757b351SPierre Pronchery shlb $4,%r13b 399*4757b351SPierre Pronchery orb %r13b,%r14b 400*4757b351SPierre Pronchery shlb $4,%r11b 401*4757b351SPierre Pronchery orb %r11b,%r12b 402*4757b351SPierre Pronchery 403*4757b351SPierre Pronchery addb %r14b,%r14b 404*4757b351SPierre Pronchery adcb %r12b,%r12b 405*4757b351SPierre Pronchery adcb %r10b,%r10b 406*4757b351SPierre Pronchery 407*4757b351SPierre Pronchery shlb $4,%r8b 408*4757b351SPierre Pronchery orb %r8b,%r9b 409*4757b351SPierre Pronchery shlb $4,%cl 410*4757b351SPierre Pronchery orb %cl,%bl 411*4757b351SPierre Pronchery 412*4757b351SPierre Pronchery addb %r9b,%r14b 413*4757b351SPierre Pronchery adcb %bl,%r12b 414*4757b351SPierre Pronchery adcb %dl,%r10b 415*4757b351SPierre Pronchery 416*4757b351SPierre Pronchery xorb %r9b,%r14b 417*4757b351SPierre Pronchery xorb %bl,%r12b 418*4757b351SPierre Pronchery xorb %dl,%r10b 419*4757b351SPierre Pronchery 420*4757b351SPierre Pronchery leaq .Lkmasklut(%rip),%rdx 421*4757b351SPierre Pronchery 422*4757b351SPierre Pronchery movb %r14b,%r13b 423*4757b351SPierre Pronchery andq $0xf,%r14 424*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm3,%ymm0 425*4757b351SPierre Pronchery shlq $5,%r14 426*4757b351SPierre Pronchery vmovapd (%rdx,%r14,1),%ymm2 427*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm3,%ymm3 428*4757b351SPierre Pronchery 429*4757b351SPierre Pronchery shrb $4,%r13b 430*4757b351SPierre Pronchery andq $0xf,%r13 431*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm5,%ymm0 432*4757b351SPierre Pronchery shlq $5,%r13 433*4757b351SPierre Pronchery vmovapd (%rdx,%r13,1),%ymm2 434*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm5,%ymm5 435*4757b351SPierre Pronchery 436*4757b351SPierre Pronchery movb %r12b,%r11b 437*4757b351SPierre Pronchery andq $0xf,%r12 438*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm6,%ymm0 439*4757b351SPierre Pronchery shlq $5,%r12 440*4757b351SPierre Pronchery vmovapd (%rdx,%r12,1),%ymm2 441*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm6,%ymm6 442*4757b351SPierre Pronchery 443*4757b351SPierre Pronchery shrb $4,%r11b 444*4757b351SPierre Pronchery andq $0xf,%r11 445*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm7,%ymm0 446*4757b351SPierre Pronchery shlq $5,%r11 447*4757b351SPierre Pronchery vmovapd (%rdx,%r11,1),%ymm2 448*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm7,%ymm7 449*4757b351SPierre Pronchery 450*4757b351SPierre Pronchery andq $0xf,%r10 451*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm8,%ymm0 452*4757b351SPierre Pronchery shlq $5,%r10 453*4757b351SPierre Pronchery vmovapd (%rdx,%r10,1),%ymm2 454*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm8,%ymm8 455*4757b351SPierre Pronchery 456*4757b351SPierre Pronchery 457*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm3,%ymm3 458*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm5,%ymm5 459*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm6,%ymm6 460*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm7,%ymm7 461*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm8,%ymm8 462*4757b351SPierre Pronchery 463*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rdi) 464*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rdi) 465*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rdi) 466*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rdi) 467*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rdi) 468*4757b351SPierre Pronchery 469*4757b351SPierre Pronchery vzeroupper 470*4757b351SPierre Pronchery movq 0(%rsp),%r15 471*4757b351SPierre Pronchery.cfi_restore %r15 472*4757b351SPierre Pronchery movq 8(%rsp),%r14 473*4757b351SPierre Pronchery.cfi_restore %r14 474*4757b351SPierre Pronchery movq 16(%rsp),%r13 475*4757b351SPierre Pronchery.cfi_restore %r13 476*4757b351SPierre Pronchery movq 24(%rsp),%r12 477*4757b351SPierre Pronchery.cfi_restore %r12 478*4757b351SPierre Pronchery movq 32(%rsp),%rbp 479*4757b351SPierre Pronchery.cfi_restore %rbp 480*4757b351SPierre Pronchery movq 40(%rsp),%rbx 481*4757b351SPierre Pronchery.cfi_restore %rbx 482*4757b351SPierre Pronchery leaq 48(%rsp),%rsp 483*4757b351SPierre Pronchery.cfi_adjust_cfa_offset -48 484*4757b351SPierre Pronchery.Lossl_rsaz_amm52x20_x1_avxifma256_epilogue: 485*4757b351SPierre Pronchery .byte 0xf3,0xc3 486*4757b351SPierre Pronchery.cfi_endproc 487*4757b351SPierre Pronchery.size ossl_rsaz_amm52x20_x1_avxifma256, .-ossl_rsaz_amm52x20_x1_avxifma256 488*4757b351SPierre Pronchery.section .rodata 489*4757b351SPierre Pronchery.align 32 490*4757b351SPierre Pronchery.Lmask52x4: 491*4757b351SPierre Pronchery.quad 0xfffffffffffff 492*4757b351SPierre Pronchery.quad 0xfffffffffffff 493*4757b351SPierre Pronchery.quad 0xfffffffffffff 494*4757b351SPierre Pronchery.quad 0xfffffffffffff 495*4757b351SPierre Pronchery.Lhigh64x3: 496*4757b351SPierre Pronchery.quad 0x0 497*4757b351SPierre Pronchery.quad 0xffffffffffffffff 498*4757b351SPierre Pronchery.quad 0xffffffffffffffff 499*4757b351SPierre Pronchery.quad 0xffffffffffffffff 500*4757b351SPierre Pronchery.Lkmasklut: 501*4757b351SPierre Pronchery 502*4757b351SPierre Pronchery.quad 0x0 503*4757b351SPierre Pronchery.quad 0x0 504*4757b351SPierre Pronchery.quad 0x0 505*4757b351SPierre Pronchery.quad 0x0 506*4757b351SPierre Pronchery 507*4757b351SPierre Pronchery.quad 0xffffffffffffffff 508*4757b351SPierre Pronchery.quad 0x0 509*4757b351SPierre Pronchery.quad 0x0 510*4757b351SPierre Pronchery.quad 0x0 511*4757b351SPierre Pronchery 512*4757b351SPierre Pronchery.quad 0x0 513*4757b351SPierre Pronchery.quad 0xffffffffffffffff 514*4757b351SPierre Pronchery.quad 0x0 515*4757b351SPierre Pronchery.quad 0x0 516*4757b351SPierre Pronchery 517*4757b351SPierre Pronchery.quad 0xffffffffffffffff 518*4757b351SPierre Pronchery.quad 0xffffffffffffffff 519*4757b351SPierre Pronchery.quad 0x0 520*4757b351SPierre Pronchery.quad 0x0 521*4757b351SPierre Pronchery 522*4757b351SPierre Pronchery.quad 0x0 523*4757b351SPierre Pronchery.quad 0x0 524*4757b351SPierre Pronchery.quad 0xffffffffffffffff 525*4757b351SPierre Pronchery.quad 0x0 526*4757b351SPierre Pronchery 527*4757b351SPierre Pronchery.quad 0xffffffffffffffff 528*4757b351SPierre Pronchery.quad 0x0 529*4757b351SPierre Pronchery.quad 0xffffffffffffffff 530*4757b351SPierre Pronchery.quad 0x0 531*4757b351SPierre Pronchery 532*4757b351SPierre Pronchery.quad 0x0 533*4757b351SPierre Pronchery.quad 0xffffffffffffffff 534*4757b351SPierre Pronchery.quad 0xffffffffffffffff 535*4757b351SPierre Pronchery.quad 0x0 536*4757b351SPierre Pronchery 537*4757b351SPierre Pronchery.quad 0xffffffffffffffff 538*4757b351SPierre Pronchery.quad 0xffffffffffffffff 539*4757b351SPierre Pronchery.quad 0xffffffffffffffff 540*4757b351SPierre Pronchery.quad 0x0 541*4757b351SPierre Pronchery 542*4757b351SPierre Pronchery.quad 0x0 543*4757b351SPierre Pronchery.quad 0x0 544*4757b351SPierre Pronchery.quad 0x0 545*4757b351SPierre Pronchery.quad 0xffffffffffffffff 546*4757b351SPierre Pronchery 547*4757b351SPierre Pronchery.quad 0xffffffffffffffff 548*4757b351SPierre Pronchery.quad 0x0 549*4757b351SPierre Pronchery.quad 0x0 550*4757b351SPierre Pronchery.quad 0xffffffffffffffff 551*4757b351SPierre Pronchery 552*4757b351SPierre Pronchery.quad 0x0 553*4757b351SPierre Pronchery.quad 0xffffffffffffffff 554*4757b351SPierre Pronchery.quad 0x0 555*4757b351SPierre Pronchery.quad 0xffffffffffffffff 556*4757b351SPierre Pronchery 557*4757b351SPierre Pronchery.quad 0xffffffffffffffff 558*4757b351SPierre Pronchery.quad 0xffffffffffffffff 559*4757b351SPierre Pronchery.quad 0x0 560*4757b351SPierre Pronchery.quad 0xffffffffffffffff 561*4757b351SPierre Pronchery 562*4757b351SPierre Pronchery.quad 0x0 563*4757b351SPierre Pronchery.quad 0x0 564*4757b351SPierre Pronchery.quad 0xffffffffffffffff 565*4757b351SPierre Pronchery.quad 0xffffffffffffffff 566*4757b351SPierre Pronchery 567*4757b351SPierre Pronchery.quad 0xffffffffffffffff 568*4757b351SPierre Pronchery.quad 0x0 569*4757b351SPierre Pronchery.quad 0xffffffffffffffff 570*4757b351SPierre Pronchery.quad 0xffffffffffffffff 571*4757b351SPierre Pronchery 572*4757b351SPierre Pronchery.quad 0x0 573*4757b351SPierre Pronchery.quad 0xffffffffffffffff 574*4757b351SPierre Pronchery.quad 0xffffffffffffffff 575*4757b351SPierre Pronchery.quad 0xffffffffffffffff 576*4757b351SPierre Pronchery 577*4757b351SPierre Pronchery.quad 0xffffffffffffffff 578*4757b351SPierre Pronchery.quad 0xffffffffffffffff 579*4757b351SPierre Pronchery.quad 0xffffffffffffffff 580*4757b351SPierre Pronchery.quad 0xffffffffffffffff 581*4757b351SPierre Pronchery.text 582*4757b351SPierre Pronchery 583*4757b351SPierre Pronchery.globl ossl_rsaz_amm52x20_x2_avxifma256 584*4757b351SPierre Pronchery.type ossl_rsaz_amm52x20_x2_avxifma256,@function 585*4757b351SPierre Pronchery.align 32 586*4757b351SPierre Proncheryossl_rsaz_amm52x20_x2_avxifma256: 587*4757b351SPierre Pronchery.cfi_startproc 588*4757b351SPierre Pronchery.byte 243,15,30,250 589*4757b351SPierre Pronchery pushq %rbx 590*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 591*4757b351SPierre Pronchery.cfi_offset %rbx,-16 592*4757b351SPierre Pronchery pushq %rbp 593*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 594*4757b351SPierre Pronchery.cfi_offset %rbp,-24 595*4757b351SPierre Pronchery pushq %r12 596*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 597*4757b351SPierre Pronchery.cfi_offset %r12,-32 598*4757b351SPierre Pronchery pushq %r13 599*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 600*4757b351SPierre Pronchery.cfi_offset %r13,-40 601*4757b351SPierre Pronchery pushq %r14 602*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 603*4757b351SPierre Pronchery.cfi_offset %r14,-48 604*4757b351SPierre Pronchery pushq %r15 605*4757b351SPierre Pronchery.cfi_adjust_cfa_offset 8 606*4757b351SPierre Pronchery.cfi_offset %r15,-56 607*4757b351SPierre Pronchery.Lossl_rsaz_amm52x20_x2_avxifma256_body: 608*4757b351SPierre Pronchery 609*4757b351SPierre Pronchery 610*4757b351SPierre Pronchery vpxor %ymm0,%ymm0,%ymm0 611*4757b351SPierre Pronchery vmovapd %ymm0,%ymm3 612*4757b351SPierre Pronchery vmovapd %ymm0,%ymm5 613*4757b351SPierre Pronchery vmovapd %ymm0,%ymm6 614*4757b351SPierre Pronchery vmovapd %ymm0,%ymm7 615*4757b351SPierre Pronchery vmovapd %ymm0,%ymm8 616*4757b351SPierre Pronchery vmovapd %ymm0,%ymm4 617*4757b351SPierre Pronchery vmovapd %ymm0,%ymm9 618*4757b351SPierre Pronchery vmovapd %ymm0,%ymm10 619*4757b351SPierre Pronchery vmovapd %ymm0,%ymm11 620*4757b351SPierre Pronchery vmovapd %ymm0,%ymm12 621*4757b351SPierre Pronchery 622*4757b351SPierre Pronchery xorl %r9d,%r9d 623*4757b351SPierre Pronchery xorl %r15d,%r15d 624*4757b351SPierre Pronchery 625*4757b351SPierre Pronchery movq %rdx,%r11 626*4757b351SPierre Pronchery movq $0xfffffffffffff,%rax 627*4757b351SPierre Pronchery 628*4757b351SPierre Pronchery movl $20,%ebx 629*4757b351SPierre Pronchery 630*4757b351SPierre Pronchery.align 32 631*4757b351SPierre Pronchery.Lloop20: 632*4757b351SPierre Pronchery movq 0(%r11),%r13 633*4757b351SPierre Pronchery 634*4757b351SPierre Pronchery vpbroadcastq 0(%r11),%ymm1 635*4757b351SPierre Pronchery movq 0(%rsi),%rdx 636*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 637*4757b351SPierre Pronchery addq %r13,%r9 638*4757b351SPierre Pronchery movq %r12,%r10 639*4757b351SPierre Pronchery adcq $0,%r10 640*4757b351SPierre Pronchery 641*4757b351SPierre Pronchery movq (%r8),%r13 642*4757b351SPierre Pronchery imulq %r9,%r13 643*4757b351SPierre Pronchery andq %rax,%r13 644*4757b351SPierre Pronchery 645*4757b351SPierre Pronchery vmovq %r13,%xmm2 646*4757b351SPierre Pronchery vpbroadcastq %xmm2,%ymm2 647*4757b351SPierre Pronchery movq 0(%rcx),%rdx 648*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 649*4757b351SPierre Pronchery addq %r13,%r9 650*4757b351SPierre Pronchery adcq %r12,%r10 651*4757b351SPierre Pronchery 652*4757b351SPierre Pronchery shrq $52,%r9 653*4757b351SPierre Pronchery salq $12,%r10 654*4757b351SPierre Pronchery orq %r10,%r9 655*4757b351SPierre Pronchery 656*4757b351SPierre Pronchery leaq -168(%rsp),%rsp 657*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rsi),%ymm1,%ymm3 658*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rsi),%ymm1,%ymm5 659*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rsi),%ymm1,%ymm6 660*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rsi),%ymm1,%ymm7 661*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rsi),%ymm1,%ymm8 662*4757b351SPierre Pronchery 663*4757b351SPierre Pronchery{vex} vpmadd52luq 0(%rcx),%ymm2,%ymm3 664*4757b351SPierre Pronchery{vex} vpmadd52luq 32(%rcx),%ymm2,%ymm5 665*4757b351SPierre Pronchery{vex} vpmadd52luq 64(%rcx),%ymm2,%ymm6 666*4757b351SPierre Pronchery{vex} vpmadd52luq 96(%rcx),%ymm2,%ymm7 667*4757b351SPierre Pronchery{vex} vpmadd52luq 128(%rcx),%ymm2,%ymm8 668*4757b351SPierre Pronchery 669*4757b351SPierre Pronchery 670*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rsp) 671*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rsp) 672*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rsp) 673*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rsp) 674*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rsp) 675*4757b351SPierre Pronchery movq $0,160(%rsp) 676*4757b351SPierre Pronchery 677*4757b351SPierre Pronchery vmovdqu 8(%rsp),%ymm3 678*4757b351SPierre Pronchery vmovdqu 40(%rsp),%ymm5 679*4757b351SPierre Pronchery vmovdqu 72(%rsp),%ymm6 680*4757b351SPierre Pronchery vmovdqu 104(%rsp),%ymm7 681*4757b351SPierre Pronchery vmovdqu 136(%rsp),%ymm8 682*4757b351SPierre Pronchery 683*4757b351SPierre Pronchery addq 8(%rsp),%r9 684*4757b351SPierre Pronchery 685*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rsi),%ymm1,%ymm3 686*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rsi),%ymm1,%ymm5 687*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rsi),%ymm1,%ymm6 688*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rsi),%ymm1,%ymm7 689*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rsi),%ymm1,%ymm8 690*4757b351SPierre Pronchery 691*4757b351SPierre Pronchery{vex} vpmadd52huq 0(%rcx),%ymm2,%ymm3 692*4757b351SPierre Pronchery{vex} vpmadd52huq 32(%rcx),%ymm2,%ymm5 693*4757b351SPierre Pronchery{vex} vpmadd52huq 64(%rcx),%ymm2,%ymm6 694*4757b351SPierre Pronchery{vex} vpmadd52huq 96(%rcx),%ymm2,%ymm7 695*4757b351SPierre Pronchery{vex} vpmadd52huq 128(%rcx),%ymm2,%ymm8 696*4757b351SPierre Pronchery leaq 168(%rsp),%rsp 697*4757b351SPierre Pronchery movq 160(%r11),%r13 698*4757b351SPierre Pronchery 699*4757b351SPierre Pronchery vpbroadcastq 160(%r11),%ymm1 700*4757b351SPierre Pronchery movq 160(%rsi),%rdx 701*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 702*4757b351SPierre Pronchery addq %r13,%r15 703*4757b351SPierre Pronchery movq %r12,%r10 704*4757b351SPierre Pronchery adcq $0,%r10 705*4757b351SPierre Pronchery 706*4757b351SPierre Pronchery movq 8(%r8),%r13 707*4757b351SPierre Pronchery imulq %r15,%r13 708*4757b351SPierre Pronchery andq %rax,%r13 709*4757b351SPierre Pronchery 710*4757b351SPierre Pronchery vmovq %r13,%xmm2 711*4757b351SPierre Pronchery vpbroadcastq %xmm2,%ymm2 712*4757b351SPierre Pronchery movq 160(%rcx),%rdx 713*4757b351SPierre Pronchery mulxq %r13,%r13,%r12 714*4757b351SPierre Pronchery addq %r13,%r15 715*4757b351SPierre Pronchery adcq %r12,%r10 716*4757b351SPierre Pronchery 717*4757b351SPierre Pronchery shrq $52,%r15 718*4757b351SPierre Pronchery salq $12,%r10 719*4757b351SPierre Pronchery orq %r10,%r15 720*4757b351SPierre Pronchery 721*4757b351SPierre Pronchery leaq -168(%rsp),%rsp 722*4757b351SPierre Pronchery{vex} vpmadd52luq 160(%rsi),%ymm1,%ymm4 723*4757b351SPierre Pronchery{vex} vpmadd52luq 192(%rsi),%ymm1,%ymm9 724*4757b351SPierre Pronchery{vex} vpmadd52luq 224(%rsi),%ymm1,%ymm10 725*4757b351SPierre Pronchery{vex} vpmadd52luq 256(%rsi),%ymm1,%ymm11 726*4757b351SPierre Pronchery{vex} vpmadd52luq 288(%rsi),%ymm1,%ymm12 727*4757b351SPierre Pronchery 728*4757b351SPierre Pronchery{vex} vpmadd52luq 160(%rcx),%ymm2,%ymm4 729*4757b351SPierre Pronchery{vex} vpmadd52luq 192(%rcx),%ymm2,%ymm9 730*4757b351SPierre Pronchery{vex} vpmadd52luq 224(%rcx),%ymm2,%ymm10 731*4757b351SPierre Pronchery{vex} vpmadd52luq 256(%rcx),%ymm2,%ymm11 732*4757b351SPierre Pronchery{vex} vpmadd52luq 288(%rcx),%ymm2,%ymm12 733*4757b351SPierre Pronchery 734*4757b351SPierre Pronchery 735*4757b351SPierre Pronchery vmovdqu %ymm4,0(%rsp) 736*4757b351SPierre Pronchery vmovdqu %ymm9,32(%rsp) 737*4757b351SPierre Pronchery vmovdqu %ymm10,64(%rsp) 738*4757b351SPierre Pronchery vmovdqu %ymm11,96(%rsp) 739*4757b351SPierre Pronchery vmovdqu %ymm12,128(%rsp) 740*4757b351SPierre Pronchery movq $0,160(%rsp) 741*4757b351SPierre Pronchery 742*4757b351SPierre Pronchery vmovdqu 8(%rsp),%ymm4 743*4757b351SPierre Pronchery vmovdqu 40(%rsp),%ymm9 744*4757b351SPierre Pronchery vmovdqu 72(%rsp),%ymm10 745*4757b351SPierre Pronchery vmovdqu 104(%rsp),%ymm11 746*4757b351SPierre Pronchery vmovdqu 136(%rsp),%ymm12 747*4757b351SPierre Pronchery 748*4757b351SPierre Pronchery addq 8(%rsp),%r15 749*4757b351SPierre Pronchery 750*4757b351SPierre Pronchery{vex} vpmadd52huq 160(%rsi),%ymm1,%ymm4 751*4757b351SPierre Pronchery{vex} vpmadd52huq 192(%rsi),%ymm1,%ymm9 752*4757b351SPierre Pronchery{vex} vpmadd52huq 224(%rsi),%ymm1,%ymm10 753*4757b351SPierre Pronchery{vex} vpmadd52huq 256(%rsi),%ymm1,%ymm11 754*4757b351SPierre Pronchery{vex} vpmadd52huq 288(%rsi),%ymm1,%ymm12 755*4757b351SPierre Pronchery 756*4757b351SPierre Pronchery{vex} vpmadd52huq 160(%rcx),%ymm2,%ymm4 757*4757b351SPierre Pronchery{vex} vpmadd52huq 192(%rcx),%ymm2,%ymm9 758*4757b351SPierre Pronchery{vex} vpmadd52huq 224(%rcx),%ymm2,%ymm10 759*4757b351SPierre Pronchery{vex} vpmadd52huq 256(%rcx),%ymm2,%ymm11 760*4757b351SPierre Pronchery{vex} vpmadd52huq 288(%rcx),%ymm2,%ymm12 761*4757b351SPierre Pronchery leaq 168(%rsp),%rsp 762*4757b351SPierre Pronchery leaq 8(%r11),%r11 763*4757b351SPierre Pronchery decl %ebx 764*4757b351SPierre Pronchery jne .Lloop20 765*4757b351SPierre Pronchery 766*4757b351SPierre Pronchery vmovq %r9,%xmm0 767*4757b351SPierre Pronchery vpbroadcastq %xmm0,%ymm0 768*4757b351SPierre Pronchery vpblendd $3,%ymm0,%ymm3,%ymm3 769*4757b351SPierre Pronchery 770*4757b351SPierre Pronchery 771*4757b351SPierre Pronchery 772*4757b351SPierre Pronchery vpsrlq $52,%ymm3,%ymm0 773*4757b351SPierre Pronchery vpsrlq $52,%ymm5,%ymm1 774*4757b351SPierre Pronchery vpsrlq $52,%ymm6,%ymm2 775*4757b351SPierre Pronchery vpsrlq $52,%ymm7,%ymm13 776*4757b351SPierre Pronchery vpsrlq $52,%ymm8,%ymm14 777*4757b351SPierre Pronchery 778*4757b351SPierre Pronchery 779*4757b351SPierre Pronchery vpermq $144,%ymm14,%ymm14 780*4757b351SPierre Pronchery vpermq $3,%ymm13,%ymm15 781*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm14,%ymm14 782*4757b351SPierre Pronchery 783*4757b351SPierre Pronchery vpermq $144,%ymm13,%ymm13 784*4757b351SPierre Pronchery vpermq $3,%ymm2,%ymm15 785*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm13,%ymm13 786*4757b351SPierre Pronchery 787*4757b351SPierre Pronchery vpermq $144,%ymm2,%ymm2 788*4757b351SPierre Pronchery vpermq $3,%ymm1,%ymm15 789*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm2,%ymm2 790*4757b351SPierre Pronchery 791*4757b351SPierre Pronchery vpermq $144,%ymm1,%ymm1 792*4757b351SPierre Pronchery vpermq $3,%ymm0,%ymm15 793*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm1,%ymm1 794*4757b351SPierre Pronchery 795*4757b351SPierre Pronchery vpermq $144,%ymm0,%ymm0 796*4757b351SPierre Pronchery vpand .Lhigh64x3(%rip),%ymm0,%ymm0 797*4757b351SPierre Pronchery 798*4757b351SPierre Pronchery 799*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm3,%ymm3 800*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm5,%ymm5 801*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm6,%ymm6 802*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm7,%ymm7 803*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm8,%ymm8 804*4757b351SPierre Pronchery 805*4757b351SPierre Pronchery 806*4757b351SPierre Pronchery vpaddq %ymm0,%ymm3,%ymm3 807*4757b351SPierre Pronchery vpaddq %ymm1,%ymm5,%ymm5 808*4757b351SPierre Pronchery vpaddq %ymm2,%ymm6,%ymm6 809*4757b351SPierre Pronchery vpaddq %ymm13,%ymm7,%ymm7 810*4757b351SPierre Pronchery vpaddq %ymm14,%ymm8,%ymm8 811*4757b351SPierre Pronchery 812*4757b351SPierre Pronchery 813*4757b351SPierre Pronchery 814*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm3,%ymm0 815*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm5,%ymm1 816*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm6,%ymm2 817*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm7,%ymm13 818*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm8,%ymm14 819*4757b351SPierre Pronchery vmovmskpd %ymm0,%r14d 820*4757b351SPierre Pronchery vmovmskpd %ymm1,%r13d 821*4757b351SPierre Pronchery vmovmskpd %ymm2,%r12d 822*4757b351SPierre Pronchery vmovmskpd %ymm13,%r11d 823*4757b351SPierre Pronchery vmovmskpd %ymm14,%r10d 824*4757b351SPierre Pronchery 825*4757b351SPierre Pronchery 826*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm3,%ymm0 827*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm5,%ymm1 828*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm6,%ymm2 829*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm7,%ymm13 830*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm8,%ymm14 831*4757b351SPierre Pronchery vmovmskpd %ymm0,%r9d 832*4757b351SPierre Pronchery vmovmskpd %ymm1,%r8d 833*4757b351SPierre Pronchery vmovmskpd %ymm2,%ebx 834*4757b351SPierre Pronchery vmovmskpd %ymm13,%ecx 835*4757b351SPierre Pronchery vmovmskpd %ymm14,%edx 836*4757b351SPierre Pronchery 837*4757b351SPierre Pronchery 838*4757b351SPierre Pronchery 839*4757b351SPierre Pronchery shlb $4,%r13b 840*4757b351SPierre Pronchery orb %r13b,%r14b 841*4757b351SPierre Pronchery shlb $4,%r11b 842*4757b351SPierre Pronchery orb %r11b,%r12b 843*4757b351SPierre Pronchery 844*4757b351SPierre Pronchery addb %r14b,%r14b 845*4757b351SPierre Pronchery adcb %r12b,%r12b 846*4757b351SPierre Pronchery adcb %r10b,%r10b 847*4757b351SPierre Pronchery 848*4757b351SPierre Pronchery shlb $4,%r8b 849*4757b351SPierre Pronchery orb %r8b,%r9b 850*4757b351SPierre Pronchery shlb $4,%cl 851*4757b351SPierre Pronchery orb %cl,%bl 852*4757b351SPierre Pronchery 853*4757b351SPierre Pronchery addb %r9b,%r14b 854*4757b351SPierre Pronchery adcb %bl,%r12b 855*4757b351SPierre Pronchery adcb %dl,%r10b 856*4757b351SPierre Pronchery 857*4757b351SPierre Pronchery xorb %r9b,%r14b 858*4757b351SPierre Pronchery xorb %bl,%r12b 859*4757b351SPierre Pronchery xorb %dl,%r10b 860*4757b351SPierre Pronchery 861*4757b351SPierre Pronchery leaq .Lkmasklut(%rip),%rdx 862*4757b351SPierre Pronchery 863*4757b351SPierre Pronchery movb %r14b,%r13b 864*4757b351SPierre Pronchery andq $0xf,%r14 865*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm3,%ymm0 866*4757b351SPierre Pronchery shlq $5,%r14 867*4757b351SPierre Pronchery vmovapd (%rdx,%r14,1),%ymm2 868*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm3,%ymm3 869*4757b351SPierre Pronchery 870*4757b351SPierre Pronchery shrb $4,%r13b 871*4757b351SPierre Pronchery andq $0xf,%r13 872*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm5,%ymm0 873*4757b351SPierre Pronchery shlq $5,%r13 874*4757b351SPierre Pronchery vmovapd (%rdx,%r13,1),%ymm2 875*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm5,%ymm5 876*4757b351SPierre Pronchery 877*4757b351SPierre Pronchery movb %r12b,%r11b 878*4757b351SPierre Pronchery andq $0xf,%r12 879*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm6,%ymm0 880*4757b351SPierre Pronchery shlq $5,%r12 881*4757b351SPierre Pronchery vmovapd (%rdx,%r12,1),%ymm2 882*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm6,%ymm6 883*4757b351SPierre Pronchery 884*4757b351SPierre Pronchery shrb $4,%r11b 885*4757b351SPierre Pronchery andq $0xf,%r11 886*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm7,%ymm0 887*4757b351SPierre Pronchery shlq $5,%r11 888*4757b351SPierre Pronchery vmovapd (%rdx,%r11,1),%ymm2 889*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm7,%ymm7 890*4757b351SPierre Pronchery 891*4757b351SPierre Pronchery andq $0xf,%r10 892*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm8,%ymm0 893*4757b351SPierre Pronchery shlq $5,%r10 894*4757b351SPierre Pronchery vmovapd (%rdx,%r10,1),%ymm2 895*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm8,%ymm8 896*4757b351SPierre Pronchery 897*4757b351SPierre Pronchery 898*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm3,%ymm3 899*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm5,%ymm5 900*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm6,%ymm6 901*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm7,%ymm7 902*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm8,%ymm8 903*4757b351SPierre Pronchery 904*4757b351SPierre Pronchery vmovq %r15,%xmm0 905*4757b351SPierre Pronchery vpbroadcastq %xmm0,%ymm0 906*4757b351SPierre Pronchery vpblendd $3,%ymm0,%ymm4,%ymm4 907*4757b351SPierre Pronchery 908*4757b351SPierre Pronchery 909*4757b351SPierre Pronchery 910*4757b351SPierre Pronchery vpsrlq $52,%ymm4,%ymm0 911*4757b351SPierre Pronchery vpsrlq $52,%ymm9,%ymm1 912*4757b351SPierre Pronchery vpsrlq $52,%ymm10,%ymm2 913*4757b351SPierre Pronchery vpsrlq $52,%ymm11,%ymm13 914*4757b351SPierre Pronchery vpsrlq $52,%ymm12,%ymm14 915*4757b351SPierre Pronchery 916*4757b351SPierre Pronchery 917*4757b351SPierre Pronchery vpermq $144,%ymm14,%ymm14 918*4757b351SPierre Pronchery vpermq $3,%ymm13,%ymm15 919*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm14,%ymm14 920*4757b351SPierre Pronchery 921*4757b351SPierre Pronchery vpermq $144,%ymm13,%ymm13 922*4757b351SPierre Pronchery vpermq $3,%ymm2,%ymm15 923*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm13,%ymm13 924*4757b351SPierre Pronchery 925*4757b351SPierre Pronchery vpermq $144,%ymm2,%ymm2 926*4757b351SPierre Pronchery vpermq $3,%ymm1,%ymm15 927*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm2,%ymm2 928*4757b351SPierre Pronchery 929*4757b351SPierre Pronchery vpermq $144,%ymm1,%ymm1 930*4757b351SPierre Pronchery vpermq $3,%ymm0,%ymm15 931*4757b351SPierre Pronchery vblendpd $1,%ymm15,%ymm1,%ymm1 932*4757b351SPierre Pronchery 933*4757b351SPierre Pronchery vpermq $144,%ymm0,%ymm0 934*4757b351SPierre Pronchery vpand .Lhigh64x3(%rip),%ymm0,%ymm0 935*4757b351SPierre Pronchery 936*4757b351SPierre Pronchery 937*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm4,%ymm4 938*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm9,%ymm9 939*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm10,%ymm10 940*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm11,%ymm11 941*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm12,%ymm12 942*4757b351SPierre Pronchery 943*4757b351SPierre Pronchery 944*4757b351SPierre Pronchery vpaddq %ymm0,%ymm4,%ymm4 945*4757b351SPierre Pronchery vpaddq %ymm1,%ymm9,%ymm9 946*4757b351SPierre Pronchery vpaddq %ymm2,%ymm10,%ymm10 947*4757b351SPierre Pronchery vpaddq %ymm13,%ymm11,%ymm11 948*4757b351SPierre Pronchery vpaddq %ymm14,%ymm12,%ymm12 949*4757b351SPierre Pronchery 950*4757b351SPierre Pronchery 951*4757b351SPierre Pronchery 952*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm4,%ymm0 953*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm9,%ymm1 954*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm10,%ymm2 955*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm11,%ymm13 956*4757b351SPierre Pronchery vpcmpgtq .Lmask52x4(%rip),%ymm12,%ymm14 957*4757b351SPierre Pronchery vmovmskpd %ymm0,%r14d 958*4757b351SPierre Pronchery vmovmskpd %ymm1,%r13d 959*4757b351SPierre Pronchery vmovmskpd %ymm2,%r12d 960*4757b351SPierre Pronchery vmovmskpd %ymm13,%r11d 961*4757b351SPierre Pronchery vmovmskpd %ymm14,%r10d 962*4757b351SPierre Pronchery 963*4757b351SPierre Pronchery 964*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm4,%ymm0 965*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm9,%ymm1 966*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm10,%ymm2 967*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm11,%ymm13 968*4757b351SPierre Pronchery vpcmpeqq .Lmask52x4(%rip),%ymm12,%ymm14 969*4757b351SPierre Pronchery vmovmskpd %ymm0,%r9d 970*4757b351SPierre Pronchery vmovmskpd %ymm1,%r8d 971*4757b351SPierre Pronchery vmovmskpd %ymm2,%ebx 972*4757b351SPierre Pronchery vmovmskpd %ymm13,%ecx 973*4757b351SPierre Pronchery vmovmskpd %ymm14,%edx 974*4757b351SPierre Pronchery 975*4757b351SPierre Pronchery 976*4757b351SPierre Pronchery 977*4757b351SPierre Pronchery shlb $4,%r13b 978*4757b351SPierre Pronchery orb %r13b,%r14b 979*4757b351SPierre Pronchery shlb $4,%r11b 980*4757b351SPierre Pronchery orb %r11b,%r12b 981*4757b351SPierre Pronchery 982*4757b351SPierre Pronchery addb %r14b,%r14b 983*4757b351SPierre Pronchery adcb %r12b,%r12b 984*4757b351SPierre Pronchery adcb %r10b,%r10b 985*4757b351SPierre Pronchery 986*4757b351SPierre Pronchery shlb $4,%r8b 987*4757b351SPierre Pronchery orb %r8b,%r9b 988*4757b351SPierre Pronchery shlb $4,%cl 989*4757b351SPierre Pronchery orb %cl,%bl 990*4757b351SPierre Pronchery 991*4757b351SPierre Pronchery addb %r9b,%r14b 992*4757b351SPierre Pronchery adcb %bl,%r12b 993*4757b351SPierre Pronchery adcb %dl,%r10b 994*4757b351SPierre Pronchery 995*4757b351SPierre Pronchery xorb %r9b,%r14b 996*4757b351SPierre Pronchery xorb %bl,%r12b 997*4757b351SPierre Pronchery xorb %dl,%r10b 998*4757b351SPierre Pronchery 999*4757b351SPierre Pronchery leaq .Lkmasklut(%rip),%rdx 1000*4757b351SPierre Pronchery 1001*4757b351SPierre Pronchery movb %r14b,%r13b 1002*4757b351SPierre Pronchery andq $0xf,%r14 1003*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm4,%ymm0 1004*4757b351SPierre Pronchery shlq $5,%r14 1005*4757b351SPierre Pronchery vmovapd (%rdx,%r14,1),%ymm2 1006*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm4,%ymm4 1007*4757b351SPierre Pronchery 1008*4757b351SPierre Pronchery shrb $4,%r13b 1009*4757b351SPierre Pronchery andq $0xf,%r13 1010*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm9,%ymm0 1011*4757b351SPierre Pronchery shlq $5,%r13 1012*4757b351SPierre Pronchery vmovapd (%rdx,%r13,1),%ymm2 1013*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm9,%ymm9 1014*4757b351SPierre Pronchery 1015*4757b351SPierre Pronchery movb %r12b,%r11b 1016*4757b351SPierre Pronchery andq $0xf,%r12 1017*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm10,%ymm0 1018*4757b351SPierre Pronchery shlq $5,%r12 1019*4757b351SPierre Pronchery vmovapd (%rdx,%r12,1),%ymm2 1020*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm10,%ymm10 1021*4757b351SPierre Pronchery 1022*4757b351SPierre Pronchery shrb $4,%r11b 1023*4757b351SPierre Pronchery andq $0xf,%r11 1024*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm11,%ymm0 1025*4757b351SPierre Pronchery shlq $5,%r11 1026*4757b351SPierre Pronchery vmovapd (%rdx,%r11,1),%ymm2 1027*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm11,%ymm11 1028*4757b351SPierre Pronchery 1029*4757b351SPierre Pronchery andq $0xf,%r10 1030*4757b351SPierre Pronchery vpsubq .Lmask52x4(%rip),%ymm12,%ymm0 1031*4757b351SPierre Pronchery shlq $5,%r10 1032*4757b351SPierre Pronchery vmovapd (%rdx,%r10,1),%ymm2 1033*4757b351SPierre Pronchery vblendvpd %ymm2,%ymm0,%ymm12,%ymm12 1034*4757b351SPierre Pronchery 1035*4757b351SPierre Pronchery 1036*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm4,%ymm4 1037*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm9,%ymm9 1038*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm10,%ymm10 1039*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm11,%ymm11 1040*4757b351SPierre Pronchery vpand .Lmask52x4(%rip),%ymm12,%ymm12 1041*4757b351SPierre Pronchery 1042*4757b351SPierre Pronchery vmovdqu %ymm3,0(%rdi) 1043*4757b351SPierre Pronchery vmovdqu %ymm5,32(%rdi) 1044*4757b351SPierre Pronchery vmovdqu %ymm6,64(%rdi) 1045*4757b351SPierre Pronchery vmovdqu %ymm7,96(%rdi) 1046*4757b351SPierre Pronchery vmovdqu %ymm8,128(%rdi) 1047*4757b351SPierre Pronchery 1048*4757b351SPierre Pronchery vmovdqu %ymm4,160(%rdi) 1049*4757b351SPierre Pronchery vmovdqu %ymm9,192(%rdi) 1050*4757b351SPierre Pronchery vmovdqu %ymm10,224(%rdi) 1051*4757b351SPierre Pronchery vmovdqu %ymm11,256(%rdi) 1052*4757b351SPierre Pronchery vmovdqu %ymm12,288(%rdi) 1053*4757b351SPierre Pronchery 1054*4757b351SPierre Pronchery vzeroupper 1055*4757b351SPierre Pronchery movq 0(%rsp),%r15 1056*4757b351SPierre Pronchery.cfi_restore %r15 1057*4757b351SPierre Pronchery movq 8(%rsp),%r14 1058*4757b351SPierre Pronchery.cfi_restore %r14 1059*4757b351SPierre Pronchery movq 16(%rsp),%r13 1060*4757b351SPierre Pronchery.cfi_restore %r13 1061*4757b351SPierre Pronchery movq 24(%rsp),%r12 1062*4757b351SPierre Pronchery.cfi_restore %r12 1063*4757b351SPierre Pronchery movq 32(%rsp),%rbp 1064*4757b351SPierre Pronchery.cfi_restore %rbp 1065*4757b351SPierre Pronchery movq 40(%rsp),%rbx 1066*4757b351SPierre Pronchery.cfi_restore %rbx 1067*4757b351SPierre Pronchery leaq 48(%rsp),%rsp 1068*4757b351SPierre Pronchery.cfi_adjust_cfa_offset -48 1069*4757b351SPierre Pronchery.Lossl_rsaz_amm52x20_x2_avxifma256_epilogue: 1070*4757b351SPierre Pronchery .byte 0xf3,0xc3 1071*4757b351SPierre Pronchery.cfi_endproc 1072*4757b351SPierre Pronchery.size ossl_rsaz_amm52x20_x2_avxifma256, .-ossl_rsaz_amm52x20_x2_avxifma256 1073*4757b351SPierre Pronchery.text 1074*4757b351SPierre Pronchery 1075*4757b351SPierre Pronchery.align 32 1076*4757b351SPierre Pronchery.globl ossl_extract_multiplier_2x20_win5_avx 1077*4757b351SPierre Pronchery.type ossl_extract_multiplier_2x20_win5_avx,@function 1078*4757b351SPierre Proncheryossl_extract_multiplier_2x20_win5_avx: 1079*4757b351SPierre Pronchery.cfi_startproc 1080*4757b351SPierre Pronchery.byte 243,15,30,250 1081*4757b351SPierre Pronchery vmovapd .Lones(%rip),%ymm14 1082*4757b351SPierre Pronchery vmovq %rdx,%xmm10 1083*4757b351SPierre Pronchery vpbroadcastq %xmm10,%ymm12 1084*4757b351SPierre Pronchery vmovq %rcx,%xmm10 1085*4757b351SPierre Pronchery vpbroadcastq %xmm10,%ymm13 1086*4757b351SPierre Pronchery leaq 10240(%rsi),%rax 1087*4757b351SPierre Pronchery 1088*4757b351SPierre Pronchery 1089*4757b351SPierre Pronchery vpxor %xmm0,%xmm0,%xmm0 1090*4757b351SPierre Pronchery vmovapd %ymm0,%ymm11 1091*4757b351SPierre Pronchery vmovapd %ymm0,%ymm1 1092*4757b351SPierre Pronchery vmovapd %ymm0,%ymm2 1093*4757b351SPierre Pronchery vmovapd %ymm0,%ymm3 1094*4757b351SPierre Pronchery vmovapd %ymm0,%ymm4 1095*4757b351SPierre Pronchery vmovapd %ymm0,%ymm5 1096*4757b351SPierre Pronchery vmovapd %ymm0,%ymm6 1097*4757b351SPierre Pronchery vmovapd %ymm0,%ymm7 1098*4757b351SPierre Pronchery vmovapd %ymm0,%ymm8 1099*4757b351SPierre Pronchery vmovapd %ymm0,%ymm9 1100*4757b351SPierre Pronchery 1101*4757b351SPierre Pronchery.align 32 1102*4757b351SPierre Pronchery.Lloop: 1103*4757b351SPierre Pronchery vpcmpeqq %ymm11,%ymm12,%ymm15 1104*4757b351SPierre Pronchery vmovdqu 0(%rsi),%ymm10 1105*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm0,%ymm0 1106*4757b351SPierre Pronchery vmovdqu 32(%rsi),%ymm10 1107*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm1,%ymm1 1108*4757b351SPierre Pronchery vmovdqu 64(%rsi),%ymm10 1109*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm2,%ymm2 1110*4757b351SPierre Pronchery vmovdqu 96(%rsi),%ymm10 1111*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm3,%ymm3 1112*4757b351SPierre Pronchery vmovdqu 128(%rsi),%ymm10 1113*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm4,%ymm4 1114*4757b351SPierre Pronchery vpcmpeqq %ymm11,%ymm13,%ymm15 1115*4757b351SPierre Pronchery vmovdqu 160(%rsi),%ymm10 1116*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm5,%ymm5 1117*4757b351SPierre Pronchery vmovdqu 192(%rsi),%ymm10 1118*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm6,%ymm6 1119*4757b351SPierre Pronchery vmovdqu 224(%rsi),%ymm10 1120*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm7,%ymm7 1121*4757b351SPierre Pronchery vmovdqu 256(%rsi),%ymm10 1122*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm8,%ymm8 1123*4757b351SPierre Pronchery vmovdqu 288(%rsi),%ymm10 1124*4757b351SPierre Pronchery vblendvpd %ymm15,%ymm10,%ymm9,%ymm9 1125*4757b351SPierre Pronchery vpaddq %ymm14,%ymm11,%ymm11 1126*4757b351SPierre Pronchery addq $320,%rsi 1127*4757b351SPierre Pronchery cmpq %rsi,%rax 1128*4757b351SPierre Pronchery jne .Lloop 1129*4757b351SPierre Pronchery vmovdqu %ymm0,0(%rdi) 1130*4757b351SPierre Pronchery vmovdqu %ymm1,32(%rdi) 1131*4757b351SPierre Pronchery vmovdqu %ymm2,64(%rdi) 1132*4757b351SPierre Pronchery vmovdqu %ymm3,96(%rdi) 1133*4757b351SPierre Pronchery vmovdqu %ymm4,128(%rdi) 1134*4757b351SPierre Pronchery vmovdqu %ymm5,160(%rdi) 1135*4757b351SPierre Pronchery vmovdqu %ymm6,192(%rdi) 1136*4757b351SPierre Pronchery vmovdqu %ymm7,224(%rdi) 1137*4757b351SPierre Pronchery vmovdqu %ymm8,256(%rdi) 1138*4757b351SPierre Pronchery vmovdqu %ymm9,288(%rdi) 1139*4757b351SPierre Pronchery .byte 0xf3,0xc3 1140*4757b351SPierre Pronchery.cfi_endproc 1141*4757b351SPierre Pronchery.size ossl_extract_multiplier_2x20_win5_avx, .-ossl_extract_multiplier_2x20_win5_avx 1142*4757b351SPierre Pronchery.section .rodata 1143*4757b351SPierre Pronchery.align 32 1144*4757b351SPierre Pronchery.Lones: 1145*4757b351SPierre Pronchery.quad 1,1,1,1 1146*4757b351SPierre Pronchery.Lzeros: 1147*4757b351SPierre Pronchery.quad 0,0,0,0 1148*4757b351SPierre Pronchery .section ".note.gnu.property", "a" 1149*4757b351SPierre Pronchery .p2align 3 1150*4757b351SPierre Pronchery .long 1f - 0f 1151*4757b351SPierre Pronchery .long 4f - 1f 1152*4757b351SPierre Pronchery .long 5 1153*4757b351SPierre Pronchery0: 1154*4757b351SPierre Pronchery # "GNU" encoded with .byte, since .asciz isn't supported 1155*4757b351SPierre Pronchery # on Solaris. 1156*4757b351SPierre Pronchery .byte 0x47 1157*4757b351SPierre Pronchery .byte 0x4e 1158*4757b351SPierre Pronchery .byte 0x55 1159*4757b351SPierre Pronchery .byte 0 1160*4757b351SPierre Pronchery1: 1161*4757b351SPierre Pronchery .p2align 3 1162*4757b351SPierre Pronchery .long 0xc0000002 1163*4757b351SPierre Pronchery .long 3f - 2f 1164*4757b351SPierre Pronchery2: 1165*4757b351SPierre Pronchery .long 3 1166*4757b351SPierre Pronchery3: 1167*4757b351SPierre Pronchery .p2align 3 1168*4757b351SPierre Pronchery4: 1169