1*c0855eaaSJohn Baldwin/* Do not modify. This file is auto-generated from rsaz-avx512.pl. */ 2*c0855eaaSJohn Baldwin 3*c0855eaaSJohn Baldwin.globl ossl_rsaz_avx512ifma_eligible 4*c0855eaaSJohn Baldwin.type ossl_rsaz_avx512ifma_eligible,@function 5*c0855eaaSJohn Baldwin.align 32 6*c0855eaaSJohn Baldwinossl_rsaz_avx512ifma_eligible: 7*c0855eaaSJohn Baldwin movl OPENSSL_ia32cap_P+8(%rip),%ecx 8*c0855eaaSJohn Baldwin xorl %eax,%eax 9*c0855eaaSJohn Baldwin andl $2149777408,%ecx 10*c0855eaaSJohn Baldwin cmpl $2149777408,%ecx 11*c0855eaaSJohn Baldwin cmovel %ecx,%eax 12*c0855eaaSJohn Baldwin .byte 0xf3,0xc3 13*c0855eaaSJohn Baldwin.size ossl_rsaz_avx512ifma_eligible, .-ossl_rsaz_avx512ifma_eligible 14*c0855eaaSJohn Baldwin.text 15*c0855eaaSJohn Baldwin 16*c0855eaaSJohn Baldwin.globl ossl_rsaz_amm52x20_x1_256 17*c0855eaaSJohn Baldwin.type ossl_rsaz_amm52x20_x1_256,@function 18*c0855eaaSJohn Baldwin.align 32 19*c0855eaaSJohn Baldwinossl_rsaz_amm52x20_x1_256: 20*c0855eaaSJohn Baldwin.cfi_startproc 21*c0855eaaSJohn Baldwin.byte 243,15,30,250 22*c0855eaaSJohn Baldwin pushq %rbx 23*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 24*c0855eaaSJohn Baldwin.cfi_offset %rbx,-16 25*c0855eaaSJohn Baldwin pushq %rbp 26*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 27*c0855eaaSJohn Baldwin.cfi_offset %rbp,-24 28*c0855eaaSJohn Baldwin pushq %r12 29*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 30*c0855eaaSJohn Baldwin.cfi_offset %r12,-32 31*c0855eaaSJohn Baldwin pushq %r13 32*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 33*c0855eaaSJohn Baldwin.cfi_offset %r13,-40 34*c0855eaaSJohn Baldwin pushq %r14 35*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 36*c0855eaaSJohn Baldwin.cfi_offset %r14,-48 37*c0855eaaSJohn Baldwin pushq %r15 38*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 39*c0855eaaSJohn Baldwin.cfi_offset %r15,-56 40*c0855eaaSJohn Baldwin.Lrsaz_amm52x20_x1_256_body: 41*c0855eaaSJohn Baldwin 42*c0855eaaSJohn Baldwin 43*c0855eaaSJohn Baldwin vpxord %ymm0,%ymm0,%ymm0 44*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm1 45*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm16 46*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm17 47*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm18 48*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm19 49*c0855eaaSJohn Baldwin 50*c0855eaaSJohn Baldwin xorl %r9d,%r9d 51*c0855eaaSJohn Baldwin 52*c0855eaaSJohn Baldwin movq %rdx,%r11 53*c0855eaaSJohn Baldwin movq $0xfffffffffffff,%rax 54*c0855eaaSJohn Baldwin 55*c0855eaaSJohn Baldwin 56*c0855eaaSJohn Baldwin movl $5,%ebx 57*c0855eaaSJohn Baldwin 58*c0855eaaSJohn Baldwin.align 32 59*c0855eaaSJohn Baldwin.Lloop5: 60*c0855eaaSJohn Baldwin movq 0(%r11),%r13 61*c0855eaaSJohn Baldwin 62*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm3 63*c0855eaaSJohn Baldwin movq 0(%rsi),%rdx 64*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 65*c0855eaaSJohn Baldwin addq %r13,%r9 66*c0855eaaSJohn Baldwin movq %r12,%r10 67*c0855eaaSJohn Baldwin adcq $0,%r10 68*c0855eaaSJohn Baldwin 69*c0855eaaSJohn Baldwin movq %r8,%r13 70*c0855eaaSJohn Baldwin imulq %r9,%r13 71*c0855eaaSJohn Baldwin andq %rax,%r13 72*c0855eaaSJohn Baldwin 73*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm4 74*c0855eaaSJohn Baldwin movq 0(%rcx),%rdx 75*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 76*c0855eaaSJohn Baldwin addq %r13,%r9 77*c0855eaaSJohn Baldwin adcq %r12,%r10 78*c0855eaaSJohn Baldwin 79*c0855eaaSJohn Baldwin shrq $52,%r9 80*c0855eaaSJohn Baldwin salq $12,%r10 81*c0855eaaSJohn Baldwin orq %r10,%r9 82*c0855eaaSJohn Baldwin 83*c0855eaaSJohn Baldwin vpmadd52luq 0(%rsi),%ymm3,%ymm1 84*c0855eaaSJohn Baldwin vpmadd52luq 32(%rsi),%ymm3,%ymm16 85*c0855eaaSJohn Baldwin vpmadd52luq 64(%rsi),%ymm3,%ymm17 86*c0855eaaSJohn Baldwin vpmadd52luq 96(%rsi),%ymm3,%ymm18 87*c0855eaaSJohn Baldwin vpmadd52luq 128(%rsi),%ymm3,%ymm19 88*c0855eaaSJohn Baldwin 89*c0855eaaSJohn Baldwin vpmadd52luq 0(%rcx),%ymm4,%ymm1 90*c0855eaaSJohn Baldwin vpmadd52luq 32(%rcx),%ymm4,%ymm16 91*c0855eaaSJohn Baldwin vpmadd52luq 64(%rcx),%ymm4,%ymm17 92*c0855eaaSJohn Baldwin vpmadd52luq 96(%rcx),%ymm4,%ymm18 93*c0855eaaSJohn Baldwin vpmadd52luq 128(%rcx),%ymm4,%ymm19 94*c0855eaaSJohn Baldwin 95*c0855eaaSJohn Baldwin 96*c0855eaaSJohn Baldwin valignq $1,%ymm1,%ymm16,%ymm1 97*c0855eaaSJohn Baldwin valignq $1,%ymm16,%ymm17,%ymm16 98*c0855eaaSJohn Baldwin valignq $1,%ymm17,%ymm18,%ymm17 99*c0855eaaSJohn Baldwin valignq $1,%ymm18,%ymm19,%ymm18 100*c0855eaaSJohn Baldwin valignq $1,%ymm19,%ymm0,%ymm19 101*c0855eaaSJohn Baldwin 102*c0855eaaSJohn Baldwin vmovq %xmm1,%r13 103*c0855eaaSJohn Baldwin addq %r13,%r9 104*c0855eaaSJohn Baldwin 105*c0855eaaSJohn Baldwin vpmadd52huq 0(%rsi),%ymm3,%ymm1 106*c0855eaaSJohn Baldwin vpmadd52huq 32(%rsi),%ymm3,%ymm16 107*c0855eaaSJohn Baldwin vpmadd52huq 64(%rsi),%ymm3,%ymm17 108*c0855eaaSJohn Baldwin vpmadd52huq 96(%rsi),%ymm3,%ymm18 109*c0855eaaSJohn Baldwin vpmadd52huq 128(%rsi),%ymm3,%ymm19 110*c0855eaaSJohn Baldwin 111*c0855eaaSJohn Baldwin vpmadd52huq 0(%rcx),%ymm4,%ymm1 112*c0855eaaSJohn Baldwin vpmadd52huq 32(%rcx),%ymm4,%ymm16 113*c0855eaaSJohn Baldwin vpmadd52huq 64(%rcx),%ymm4,%ymm17 114*c0855eaaSJohn Baldwin vpmadd52huq 96(%rcx),%ymm4,%ymm18 115*c0855eaaSJohn Baldwin vpmadd52huq 128(%rcx),%ymm4,%ymm19 116*c0855eaaSJohn Baldwin movq 8(%r11),%r13 117*c0855eaaSJohn Baldwin 118*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm3 119*c0855eaaSJohn Baldwin movq 0(%rsi),%rdx 120*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 121*c0855eaaSJohn Baldwin addq %r13,%r9 122*c0855eaaSJohn Baldwin movq %r12,%r10 123*c0855eaaSJohn Baldwin adcq $0,%r10 124*c0855eaaSJohn Baldwin 125*c0855eaaSJohn Baldwin movq %r8,%r13 126*c0855eaaSJohn Baldwin imulq %r9,%r13 127*c0855eaaSJohn Baldwin andq %rax,%r13 128*c0855eaaSJohn Baldwin 129*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm4 130*c0855eaaSJohn Baldwin movq 0(%rcx),%rdx 131*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 132*c0855eaaSJohn Baldwin addq %r13,%r9 133*c0855eaaSJohn Baldwin adcq %r12,%r10 134*c0855eaaSJohn Baldwin 135*c0855eaaSJohn Baldwin shrq $52,%r9 136*c0855eaaSJohn Baldwin salq $12,%r10 137*c0855eaaSJohn Baldwin orq %r10,%r9 138*c0855eaaSJohn Baldwin 139*c0855eaaSJohn Baldwin vpmadd52luq 0(%rsi),%ymm3,%ymm1 140*c0855eaaSJohn Baldwin vpmadd52luq 32(%rsi),%ymm3,%ymm16 141*c0855eaaSJohn Baldwin vpmadd52luq 64(%rsi),%ymm3,%ymm17 142*c0855eaaSJohn Baldwin vpmadd52luq 96(%rsi),%ymm3,%ymm18 143*c0855eaaSJohn Baldwin vpmadd52luq 128(%rsi),%ymm3,%ymm19 144*c0855eaaSJohn Baldwin 145*c0855eaaSJohn Baldwin vpmadd52luq 0(%rcx),%ymm4,%ymm1 146*c0855eaaSJohn Baldwin vpmadd52luq 32(%rcx),%ymm4,%ymm16 147*c0855eaaSJohn Baldwin vpmadd52luq 64(%rcx),%ymm4,%ymm17 148*c0855eaaSJohn Baldwin vpmadd52luq 96(%rcx),%ymm4,%ymm18 149*c0855eaaSJohn Baldwin vpmadd52luq 128(%rcx),%ymm4,%ymm19 150*c0855eaaSJohn Baldwin 151*c0855eaaSJohn Baldwin 152*c0855eaaSJohn Baldwin valignq $1,%ymm1,%ymm16,%ymm1 153*c0855eaaSJohn Baldwin valignq $1,%ymm16,%ymm17,%ymm16 154*c0855eaaSJohn Baldwin valignq $1,%ymm17,%ymm18,%ymm17 155*c0855eaaSJohn Baldwin valignq $1,%ymm18,%ymm19,%ymm18 156*c0855eaaSJohn Baldwin valignq $1,%ymm19,%ymm0,%ymm19 157*c0855eaaSJohn Baldwin 158*c0855eaaSJohn Baldwin vmovq %xmm1,%r13 159*c0855eaaSJohn Baldwin addq %r13,%r9 160*c0855eaaSJohn Baldwin 161*c0855eaaSJohn Baldwin vpmadd52huq 0(%rsi),%ymm3,%ymm1 162*c0855eaaSJohn Baldwin vpmadd52huq 32(%rsi),%ymm3,%ymm16 163*c0855eaaSJohn Baldwin vpmadd52huq 64(%rsi),%ymm3,%ymm17 164*c0855eaaSJohn Baldwin vpmadd52huq 96(%rsi),%ymm3,%ymm18 165*c0855eaaSJohn Baldwin vpmadd52huq 128(%rsi),%ymm3,%ymm19 166*c0855eaaSJohn Baldwin 167*c0855eaaSJohn Baldwin vpmadd52huq 0(%rcx),%ymm4,%ymm1 168*c0855eaaSJohn Baldwin vpmadd52huq 32(%rcx),%ymm4,%ymm16 169*c0855eaaSJohn Baldwin vpmadd52huq 64(%rcx),%ymm4,%ymm17 170*c0855eaaSJohn Baldwin vpmadd52huq 96(%rcx),%ymm4,%ymm18 171*c0855eaaSJohn Baldwin vpmadd52huq 128(%rcx),%ymm4,%ymm19 172*c0855eaaSJohn Baldwin movq 16(%r11),%r13 173*c0855eaaSJohn Baldwin 174*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm3 175*c0855eaaSJohn Baldwin movq 0(%rsi),%rdx 176*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 177*c0855eaaSJohn Baldwin addq %r13,%r9 178*c0855eaaSJohn Baldwin movq %r12,%r10 179*c0855eaaSJohn Baldwin adcq $0,%r10 180*c0855eaaSJohn Baldwin 181*c0855eaaSJohn Baldwin movq %r8,%r13 182*c0855eaaSJohn Baldwin imulq %r9,%r13 183*c0855eaaSJohn Baldwin andq %rax,%r13 184*c0855eaaSJohn Baldwin 185*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm4 186*c0855eaaSJohn Baldwin movq 0(%rcx),%rdx 187*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 188*c0855eaaSJohn Baldwin addq %r13,%r9 189*c0855eaaSJohn Baldwin adcq %r12,%r10 190*c0855eaaSJohn Baldwin 191*c0855eaaSJohn Baldwin shrq $52,%r9 192*c0855eaaSJohn Baldwin salq $12,%r10 193*c0855eaaSJohn Baldwin orq %r10,%r9 194*c0855eaaSJohn Baldwin 195*c0855eaaSJohn Baldwin vpmadd52luq 0(%rsi),%ymm3,%ymm1 196*c0855eaaSJohn Baldwin vpmadd52luq 32(%rsi),%ymm3,%ymm16 197*c0855eaaSJohn Baldwin vpmadd52luq 64(%rsi),%ymm3,%ymm17 198*c0855eaaSJohn Baldwin vpmadd52luq 96(%rsi),%ymm3,%ymm18 199*c0855eaaSJohn Baldwin vpmadd52luq 128(%rsi),%ymm3,%ymm19 200*c0855eaaSJohn Baldwin 201*c0855eaaSJohn Baldwin vpmadd52luq 0(%rcx),%ymm4,%ymm1 202*c0855eaaSJohn Baldwin vpmadd52luq 32(%rcx),%ymm4,%ymm16 203*c0855eaaSJohn Baldwin vpmadd52luq 64(%rcx),%ymm4,%ymm17 204*c0855eaaSJohn Baldwin vpmadd52luq 96(%rcx),%ymm4,%ymm18 205*c0855eaaSJohn Baldwin vpmadd52luq 128(%rcx),%ymm4,%ymm19 206*c0855eaaSJohn Baldwin 207*c0855eaaSJohn Baldwin 208*c0855eaaSJohn Baldwin valignq $1,%ymm1,%ymm16,%ymm1 209*c0855eaaSJohn Baldwin valignq $1,%ymm16,%ymm17,%ymm16 210*c0855eaaSJohn Baldwin valignq $1,%ymm17,%ymm18,%ymm17 211*c0855eaaSJohn Baldwin valignq $1,%ymm18,%ymm19,%ymm18 212*c0855eaaSJohn Baldwin valignq $1,%ymm19,%ymm0,%ymm19 213*c0855eaaSJohn Baldwin 214*c0855eaaSJohn Baldwin vmovq %xmm1,%r13 215*c0855eaaSJohn Baldwin addq %r13,%r9 216*c0855eaaSJohn Baldwin 217*c0855eaaSJohn Baldwin vpmadd52huq 0(%rsi),%ymm3,%ymm1 218*c0855eaaSJohn Baldwin vpmadd52huq 32(%rsi),%ymm3,%ymm16 219*c0855eaaSJohn Baldwin vpmadd52huq 64(%rsi),%ymm3,%ymm17 220*c0855eaaSJohn Baldwin vpmadd52huq 96(%rsi),%ymm3,%ymm18 221*c0855eaaSJohn Baldwin vpmadd52huq 128(%rsi),%ymm3,%ymm19 222*c0855eaaSJohn Baldwin 223*c0855eaaSJohn Baldwin vpmadd52huq 0(%rcx),%ymm4,%ymm1 224*c0855eaaSJohn Baldwin vpmadd52huq 32(%rcx),%ymm4,%ymm16 225*c0855eaaSJohn Baldwin vpmadd52huq 64(%rcx),%ymm4,%ymm17 226*c0855eaaSJohn Baldwin vpmadd52huq 96(%rcx),%ymm4,%ymm18 227*c0855eaaSJohn Baldwin vpmadd52huq 128(%rcx),%ymm4,%ymm19 228*c0855eaaSJohn Baldwin movq 24(%r11),%r13 229*c0855eaaSJohn Baldwin 230*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm3 231*c0855eaaSJohn Baldwin movq 0(%rsi),%rdx 232*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 233*c0855eaaSJohn Baldwin addq %r13,%r9 234*c0855eaaSJohn Baldwin movq %r12,%r10 235*c0855eaaSJohn Baldwin adcq $0,%r10 236*c0855eaaSJohn Baldwin 237*c0855eaaSJohn Baldwin movq %r8,%r13 238*c0855eaaSJohn Baldwin imulq %r9,%r13 239*c0855eaaSJohn Baldwin andq %rax,%r13 240*c0855eaaSJohn Baldwin 241*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm4 242*c0855eaaSJohn Baldwin movq 0(%rcx),%rdx 243*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 244*c0855eaaSJohn Baldwin addq %r13,%r9 245*c0855eaaSJohn Baldwin adcq %r12,%r10 246*c0855eaaSJohn Baldwin 247*c0855eaaSJohn Baldwin shrq $52,%r9 248*c0855eaaSJohn Baldwin salq $12,%r10 249*c0855eaaSJohn Baldwin orq %r10,%r9 250*c0855eaaSJohn Baldwin 251*c0855eaaSJohn Baldwin vpmadd52luq 0(%rsi),%ymm3,%ymm1 252*c0855eaaSJohn Baldwin vpmadd52luq 32(%rsi),%ymm3,%ymm16 253*c0855eaaSJohn Baldwin vpmadd52luq 64(%rsi),%ymm3,%ymm17 254*c0855eaaSJohn Baldwin vpmadd52luq 96(%rsi),%ymm3,%ymm18 255*c0855eaaSJohn Baldwin vpmadd52luq 128(%rsi),%ymm3,%ymm19 256*c0855eaaSJohn Baldwin 257*c0855eaaSJohn Baldwin vpmadd52luq 0(%rcx),%ymm4,%ymm1 258*c0855eaaSJohn Baldwin vpmadd52luq 32(%rcx),%ymm4,%ymm16 259*c0855eaaSJohn Baldwin vpmadd52luq 64(%rcx),%ymm4,%ymm17 260*c0855eaaSJohn Baldwin vpmadd52luq 96(%rcx),%ymm4,%ymm18 261*c0855eaaSJohn Baldwin vpmadd52luq 128(%rcx),%ymm4,%ymm19 262*c0855eaaSJohn Baldwin 263*c0855eaaSJohn Baldwin 264*c0855eaaSJohn Baldwin valignq $1,%ymm1,%ymm16,%ymm1 265*c0855eaaSJohn Baldwin valignq $1,%ymm16,%ymm17,%ymm16 266*c0855eaaSJohn Baldwin valignq $1,%ymm17,%ymm18,%ymm17 267*c0855eaaSJohn Baldwin valignq $1,%ymm18,%ymm19,%ymm18 268*c0855eaaSJohn Baldwin valignq $1,%ymm19,%ymm0,%ymm19 269*c0855eaaSJohn Baldwin 270*c0855eaaSJohn Baldwin vmovq %xmm1,%r13 271*c0855eaaSJohn Baldwin addq %r13,%r9 272*c0855eaaSJohn Baldwin 273*c0855eaaSJohn Baldwin vpmadd52huq 0(%rsi),%ymm3,%ymm1 274*c0855eaaSJohn Baldwin vpmadd52huq 32(%rsi),%ymm3,%ymm16 275*c0855eaaSJohn Baldwin vpmadd52huq 64(%rsi),%ymm3,%ymm17 276*c0855eaaSJohn Baldwin vpmadd52huq 96(%rsi),%ymm3,%ymm18 277*c0855eaaSJohn Baldwin vpmadd52huq 128(%rsi),%ymm3,%ymm19 278*c0855eaaSJohn Baldwin 279*c0855eaaSJohn Baldwin vpmadd52huq 0(%rcx),%ymm4,%ymm1 280*c0855eaaSJohn Baldwin vpmadd52huq 32(%rcx),%ymm4,%ymm16 281*c0855eaaSJohn Baldwin vpmadd52huq 64(%rcx),%ymm4,%ymm17 282*c0855eaaSJohn Baldwin vpmadd52huq 96(%rcx),%ymm4,%ymm18 283*c0855eaaSJohn Baldwin vpmadd52huq 128(%rcx),%ymm4,%ymm19 284*c0855eaaSJohn Baldwin leaq 32(%r11),%r11 285*c0855eaaSJohn Baldwin decl %ebx 286*c0855eaaSJohn Baldwin jne .Lloop5 287*c0855eaaSJohn Baldwin 288*c0855eaaSJohn Baldwin vmovdqa64 .Lmask52x4(%rip),%ymm4 289*c0855eaaSJohn Baldwin 290*c0855eaaSJohn Baldwin vpbroadcastq %r9,%ymm3 291*c0855eaaSJohn Baldwin vpblendd $3,%ymm3,%ymm1,%ymm1 292*c0855eaaSJohn Baldwin 293*c0855eaaSJohn Baldwin 294*c0855eaaSJohn Baldwin 295*c0855eaaSJohn Baldwin vpsrlq $52,%ymm1,%ymm24 296*c0855eaaSJohn Baldwin vpsrlq $52,%ymm16,%ymm25 297*c0855eaaSJohn Baldwin vpsrlq $52,%ymm17,%ymm26 298*c0855eaaSJohn Baldwin vpsrlq $52,%ymm18,%ymm27 299*c0855eaaSJohn Baldwin vpsrlq $52,%ymm19,%ymm28 300*c0855eaaSJohn Baldwin 301*c0855eaaSJohn Baldwin 302*c0855eaaSJohn Baldwin valignq $3,%ymm27,%ymm28,%ymm28 303*c0855eaaSJohn Baldwin valignq $3,%ymm26,%ymm27,%ymm27 304*c0855eaaSJohn Baldwin valignq $3,%ymm25,%ymm26,%ymm26 305*c0855eaaSJohn Baldwin valignq $3,%ymm24,%ymm25,%ymm25 306*c0855eaaSJohn Baldwin valignq $3,%ymm0,%ymm24,%ymm24 307*c0855eaaSJohn Baldwin 308*c0855eaaSJohn Baldwin 309*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm1,%ymm1 310*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm16,%ymm16 311*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm17,%ymm17 312*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm18,%ymm18 313*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm19,%ymm19 314*c0855eaaSJohn Baldwin 315*c0855eaaSJohn Baldwin 316*c0855eaaSJohn Baldwin vpaddq %ymm24,%ymm1,%ymm1 317*c0855eaaSJohn Baldwin vpaddq %ymm25,%ymm16,%ymm16 318*c0855eaaSJohn Baldwin vpaddq %ymm26,%ymm17,%ymm17 319*c0855eaaSJohn Baldwin vpaddq %ymm27,%ymm18,%ymm18 320*c0855eaaSJohn Baldwin vpaddq %ymm28,%ymm19,%ymm19 321*c0855eaaSJohn Baldwin 322*c0855eaaSJohn Baldwin 323*c0855eaaSJohn Baldwin 324*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm1,%ymm4,%k1 325*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm16,%ymm4,%k2 326*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm17,%ymm4,%k3 327*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm18,%ymm4,%k4 328*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm19,%ymm4,%k5 329*c0855eaaSJohn Baldwin kmovb %k1,%r14d 330*c0855eaaSJohn Baldwin kmovb %k2,%r13d 331*c0855eaaSJohn Baldwin kmovb %k3,%r12d 332*c0855eaaSJohn Baldwin kmovb %k4,%r11d 333*c0855eaaSJohn Baldwin kmovb %k5,%r10d 334*c0855eaaSJohn Baldwin 335*c0855eaaSJohn Baldwin 336*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm1,%ymm4,%k1 337*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm16,%ymm4,%k2 338*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm17,%ymm4,%k3 339*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm18,%ymm4,%k4 340*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm19,%ymm4,%k5 341*c0855eaaSJohn Baldwin kmovb %k1,%r9d 342*c0855eaaSJohn Baldwin kmovb %k2,%r8d 343*c0855eaaSJohn Baldwin kmovb %k3,%ebx 344*c0855eaaSJohn Baldwin kmovb %k4,%ecx 345*c0855eaaSJohn Baldwin kmovb %k5,%edx 346*c0855eaaSJohn Baldwin 347*c0855eaaSJohn Baldwin 348*c0855eaaSJohn Baldwin 349*c0855eaaSJohn Baldwin shlb $4,%r13b 350*c0855eaaSJohn Baldwin orb %r13b,%r14b 351*c0855eaaSJohn Baldwin shlb $4,%r11b 352*c0855eaaSJohn Baldwin orb %r11b,%r12b 353*c0855eaaSJohn Baldwin 354*c0855eaaSJohn Baldwin addb %r14b,%r14b 355*c0855eaaSJohn Baldwin adcb %r12b,%r12b 356*c0855eaaSJohn Baldwin adcb %r10b,%r10b 357*c0855eaaSJohn Baldwin 358*c0855eaaSJohn Baldwin shlb $4,%r8b 359*c0855eaaSJohn Baldwin orb %r8b,%r9b 360*c0855eaaSJohn Baldwin shlb $4,%cl 361*c0855eaaSJohn Baldwin orb %cl,%bl 362*c0855eaaSJohn Baldwin 363*c0855eaaSJohn Baldwin addb %r9b,%r14b 364*c0855eaaSJohn Baldwin adcb %bl,%r12b 365*c0855eaaSJohn Baldwin adcb %dl,%r10b 366*c0855eaaSJohn Baldwin 367*c0855eaaSJohn Baldwin xorb %r9b,%r14b 368*c0855eaaSJohn Baldwin xorb %bl,%r12b 369*c0855eaaSJohn Baldwin xorb %dl,%r10b 370*c0855eaaSJohn Baldwin 371*c0855eaaSJohn Baldwin kmovb %r14d,%k1 372*c0855eaaSJohn Baldwin shrb $4,%r14b 373*c0855eaaSJohn Baldwin kmovb %r14d,%k2 374*c0855eaaSJohn Baldwin kmovb %r12d,%k3 375*c0855eaaSJohn Baldwin shrb $4,%r12b 376*c0855eaaSJohn Baldwin kmovb %r12d,%k4 377*c0855eaaSJohn Baldwin kmovb %r10d,%k5 378*c0855eaaSJohn Baldwin 379*c0855eaaSJohn Baldwin 380*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm1,%ymm1{%k1} 381*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm16,%ymm16{%k2} 382*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm17,%ymm17{%k3} 383*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm18,%ymm18{%k4} 384*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm19,%ymm19{%k5} 385*c0855eaaSJohn Baldwin 386*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm1,%ymm1 387*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm16,%ymm16 388*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm17,%ymm17 389*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm18,%ymm18 390*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm19,%ymm19 391*c0855eaaSJohn Baldwin 392*c0855eaaSJohn Baldwin vmovdqu64 %ymm1,(%rdi) 393*c0855eaaSJohn Baldwin vmovdqu64 %ymm16,32(%rdi) 394*c0855eaaSJohn Baldwin vmovdqu64 %ymm17,64(%rdi) 395*c0855eaaSJohn Baldwin vmovdqu64 %ymm18,96(%rdi) 396*c0855eaaSJohn Baldwin vmovdqu64 %ymm19,128(%rdi) 397*c0855eaaSJohn Baldwin 398*c0855eaaSJohn Baldwin vzeroupper 399*c0855eaaSJohn Baldwin movq 0(%rsp),%r15 400*c0855eaaSJohn Baldwin.cfi_restore %r15 401*c0855eaaSJohn Baldwin movq 8(%rsp),%r14 402*c0855eaaSJohn Baldwin.cfi_restore %r14 403*c0855eaaSJohn Baldwin movq 16(%rsp),%r13 404*c0855eaaSJohn Baldwin.cfi_restore %r13 405*c0855eaaSJohn Baldwin movq 24(%rsp),%r12 406*c0855eaaSJohn Baldwin.cfi_restore %r12 407*c0855eaaSJohn Baldwin movq 32(%rsp),%rbp 408*c0855eaaSJohn Baldwin.cfi_restore %rbp 409*c0855eaaSJohn Baldwin movq 40(%rsp),%rbx 410*c0855eaaSJohn Baldwin.cfi_restore %rbx 411*c0855eaaSJohn Baldwin leaq 48(%rsp),%rsp 412*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset -48 413*c0855eaaSJohn Baldwin.Lrsaz_amm52x20_x1_256_epilogue: 414*c0855eaaSJohn Baldwin .byte 0xf3,0xc3 415*c0855eaaSJohn Baldwin.cfi_endproc 416*c0855eaaSJohn Baldwin.size ossl_rsaz_amm52x20_x1_256, .-ossl_rsaz_amm52x20_x1_256 417*c0855eaaSJohn Baldwin.data 418*c0855eaaSJohn Baldwin.align 32 419*c0855eaaSJohn Baldwin.Lmask52x4: 420*c0855eaaSJohn Baldwin.quad 0xfffffffffffff 421*c0855eaaSJohn Baldwin.quad 0xfffffffffffff 422*c0855eaaSJohn Baldwin.quad 0xfffffffffffff 423*c0855eaaSJohn Baldwin.quad 0xfffffffffffff 424*c0855eaaSJohn Baldwin.text 425*c0855eaaSJohn Baldwin 426*c0855eaaSJohn Baldwin.globl ossl_rsaz_amm52x20_x2_256 427*c0855eaaSJohn Baldwin.type ossl_rsaz_amm52x20_x2_256,@function 428*c0855eaaSJohn Baldwin.align 32 429*c0855eaaSJohn Baldwinossl_rsaz_amm52x20_x2_256: 430*c0855eaaSJohn Baldwin.cfi_startproc 431*c0855eaaSJohn Baldwin.byte 243,15,30,250 432*c0855eaaSJohn Baldwin pushq %rbx 433*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 434*c0855eaaSJohn Baldwin.cfi_offset %rbx,-16 435*c0855eaaSJohn Baldwin pushq %rbp 436*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 437*c0855eaaSJohn Baldwin.cfi_offset %rbp,-24 438*c0855eaaSJohn Baldwin pushq %r12 439*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 440*c0855eaaSJohn Baldwin.cfi_offset %r12,-32 441*c0855eaaSJohn Baldwin pushq %r13 442*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 443*c0855eaaSJohn Baldwin.cfi_offset %r13,-40 444*c0855eaaSJohn Baldwin pushq %r14 445*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 446*c0855eaaSJohn Baldwin.cfi_offset %r14,-48 447*c0855eaaSJohn Baldwin pushq %r15 448*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset 8 449*c0855eaaSJohn Baldwin.cfi_offset %r15,-56 450*c0855eaaSJohn Baldwin.Lrsaz_amm52x20_x2_256_body: 451*c0855eaaSJohn Baldwin 452*c0855eaaSJohn Baldwin 453*c0855eaaSJohn Baldwin vpxord %ymm0,%ymm0,%ymm0 454*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm1 455*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm16 456*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm17 457*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm18 458*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm19 459*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm2 460*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm20 461*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm21 462*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm22 463*c0855eaaSJohn Baldwin vmovdqa64 %ymm0,%ymm23 464*c0855eaaSJohn Baldwin 465*c0855eaaSJohn Baldwin xorl %r9d,%r9d 466*c0855eaaSJohn Baldwin xorl %r15d,%r15d 467*c0855eaaSJohn Baldwin 468*c0855eaaSJohn Baldwin movq %rdx,%r11 469*c0855eaaSJohn Baldwin movq $0xfffffffffffff,%rax 470*c0855eaaSJohn Baldwin 471*c0855eaaSJohn Baldwin movl $20,%ebx 472*c0855eaaSJohn Baldwin 473*c0855eaaSJohn Baldwin.align 32 474*c0855eaaSJohn Baldwin.Lloop20: 475*c0855eaaSJohn Baldwin movq 0(%r11),%r13 476*c0855eaaSJohn Baldwin 477*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm3 478*c0855eaaSJohn Baldwin movq 0(%rsi),%rdx 479*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 480*c0855eaaSJohn Baldwin addq %r13,%r9 481*c0855eaaSJohn Baldwin movq %r12,%r10 482*c0855eaaSJohn Baldwin adcq $0,%r10 483*c0855eaaSJohn Baldwin 484*c0855eaaSJohn Baldwin movq (%r8),%r13 485*c0855eaaSJohn Baldwin imulq %r9,%r13 486*c0855eaaSJohn Baldwin andq %rax,%r13 487*c0855eaaSJohn Baldwin 488*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm4 489*c0855eaaSJohn Baldwin movq 0(%rcx),%rdx 490*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 491*c0855eaaSJohn Baldwin addq %r13,%r9 492*c0855eaaSJohn Baldwin adcq %r12,%r10 493*c0855eaaSJohn Baldwin 494*c0855eaaSJohn Baldwin shrq $52,%r9 495*c0855eaaSJohn Baldwin salq $12,%r10 496*c0855eaaSJohn Baldwin orq %r10,%r9 497*c0855eaaSJohn Baldwin 498*c0855eaaSJohn Baldwin vpmadd52luq 0(%rsi),%ymm3,%ymm1 499*c0855eaaSJohn Baldwin vpmadd52luq 32(%rsi),%ymm3,%ymm16 500*c0855eaaSJohn Baldwin vpmadd52luq 64(%rsi),%ymm3,%ymm17 501*c0855eaaSJohn Baldwin vpmadd52luq 96(%rsi),%ymm3,%ymm18 502*c0855eaaSJohn Baldwin vpmadd52luq 128(%rsi),%ymm3,%ymm19 503*c0855eaaSJohn Baldwin 504*c0855eaaSJohn Baldwin vpmadd52luq 0(%rcx),%ymm4,%ymm1 505*c0855eaaSJohn Baldwin vpmadd52luq 32(%rcx),%ymm4,%ymm16 506*c0855eaaSJohn Baldwin vpmadd52luq 64(%rcx),%ymm4,%ymm17 507*c0855eaaSJohn Baldwin vpmadd52luq 96(%rcx),%ymm4,%ymm18 508*c0855eaaSJohn Baldwin vpmadd52luq 128(%rcx),%ymm4,%ymm19 509*c0855eaaSJohn Baldwin 510*c0855eaaSJohn Baldwin 511*c0855eaaSJohn Baldwin valignq $1,%ymm1,%ymm16,%ymm1 512*c0855eaaSJohn Baldwin valignq $1,%ymm16,%ymm17,%ymm16 513*c0855eaaSJohn Baldwin valignq $1,%ymm17,%ymm18,%ymm17 514*c0855eaaSJohn Baldwin valignq $1,%ymm18,%ymm19,%ymm18 515*c0855eaaSJohn Baldwin valignq $1,%ymm19,%ymm0,%ymm19 516*c0855eaaSJohn Baldwin 517*c0855eaaSJohn Baldwin vmovq %xmm1,%r13 518*c0855eaaSJohn Baldwin addq %r13,%r9 519*c0855eaaSJohn Baldwin 520*c0855eaaSJohn Baldwin vpmadd52huq 0(%rsi),%ymm3,%ymm1 521*c0855eaaSJohn Baldwin vpmadd52huq 32(%rsi),%ymm3,%ymm16 522*c0855eaaSJohn Baldwin vpmadd52huq 64(%rsi),%ymm3,%ymm17 523*c0855eaaSJohn Baldwin vpmadd52huq 96(%rsi),%ymm3,%ymm18 524*c0855eaaSJohn Baldwin vpmadd52huq 128(%rsi),%ymm3,%ymm19 525*c0855eaaSJohn Baldwin 526*c0855eaaSJohn Baldwin vpmadd52huq 0(%rcx),%ymm4,%ymm1 527*c0855eaaSJohn Baldwin vpmadd52huq 32(%rcx),%ymm4,%ymm16 528*c0855eaaSJohn Baldwin vpmadd52huq 64(%rcx),%ymm4,%ymm17 529*c0855eaaSJohn Baldwin vpmadd52huq 96(%rcx),%ymm4,%ymm18 530*c0855eaaSJohn Baldwin vpmadd52huq 128(%rcx),%ymm4,%ymm19 531*c0855eaaSJohn Baldwin movq 160(%r11),%r13 532*c0855eaaSJohn Baldwin 533*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm3 534*c0855eaaSJohn Baldwin movq 160(%rsi),%rdx 535*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 536*c0855eaaSJohn Baldwin addq %r13,%r15 537*c0855eaaSJohn Baldwin movq %r12,%r10 538*c0855eaaSJohn Baldwin adcq $0,%r10 539*c0855eaaSJohn Baldwin 540*c0855eaaSJohn Baldwin movq 8(%r8),%r13 541*c0855eaaSJohn Baldwin imulq %r15,%r13 542*c0855eaaSJohn Baldwin andq %rax,%r13 543*c0855eaaSJohn Baldwin 544*c0855eaaSJohn Baldwin vpbroadcastq %r13,%ymm4 545*c0855eaaSJohn Baldwin movq 160(%rcx),%rdx 546*c0855eaaSJohn Baldwin mulxq %r13,%r13,%r12 547*c0855eaaSJohn Baldwin addq %r13,%r15 548*c0855eaaSJohn Baldwin adcq %r12,%r10 549*c0855eaaSJohn Baldwin 550*c0855eaaSJohn Baldwin shrq $52,%r15 551*c0855eaaSJohn Baldwin salq $12,%r10 552*c0855eaaSJohn Baldwin orq %r10,%r15 553*c0855eaaSJohn Baldwin 554*c0855eaaSJohn Baldwin vpmadd52luq 160(%rsi),%ymm3,%ymm2 555*c0855eaaSJohn Baldwin vpmadd52luq 192(%rsi),%ymm3,%ymm20 556*c0855eaaSJohn Baldwin vpmadd52luq 224(%rsi),%ymm3,%ymm21 557*c0855eaaSJohn Baldwin vpmadd52luq 256(%rsi),%ymm3,%ymm22 558*c0855eaaSJohn Baldwin vpmadd52luq 288(%rsi),%ymm3,%ymm23 559*c0855eaaSJohn Baldwin 560*c0855eaaSJohn Baldwin vpmadd52luq 160(%rcx),%ymm4,%ymm2 561*c0855eaaSJohn Baldwin vpmadd52luq 192(%rcx),%ymm4,%ymm20 562*c0855eaaSJohn Baldwin vpmadd52luq 224(%rcx),%ymm4,%ymm21 563*c0855eaaSJohn Baldwin vpmadd52luq 256(%rcx),%ymm4,%ymm22 564*c0855eaaSJohn Baldwin vpmadd52luq 288(%rcx),%ymm4,%ymm23 565*c0855eaaSJohn Baldwin 566*c0855eaaSJohn Baldwin 567*c0855eaaSJohn Baldwin valignq $1,%ymm2,%ymm20,%ymm2 568*c0855eaaSJohn Baldwin valignq $1,%ymm20,%ymm21,%ymm20 569*c0855eaaSJohn Baldwin valignq $1,%ymm21,%ymm22,%ymm21 570*c0855eaaSJohn Baldwin valignq $1,%ymm22,%ymm23,%ymm22 571*c0855eaaSJohn Baldwin valignq $1,%ymm23,%ymm0,%ymm23 572*c0855eaaSJohn Baldwin 573*c0855eaaSJohn Baldwin vmovq %xmm2,%r13 574*c0855eaaSJohn Baldwin addq %r13,%r15 575*c0855eaaSJohn Baldwin 576*c0855eaaSJohn Baldwin vpmadd52huq 160(%rsi),%ymm3,%ymm2 577*c0855eaaSJohn Baldwin vpmadd52huq 192(%rsi),%ymm3,%ymm20 578*c0855eaaSJohn Baldwin vpmadd52huq 224(%rsi),%ymm3,%ymm21 579*c0855eaaSJohn Baldwin vpmadd52huq 256(%rsi),%ymm3,%ymm22 580*c0855eaaSJohn Baldwin vpmadd52huq 288(%rsi),%ymm3,%ymm23 581*c0855eaaSJohn Baldwin 582*c0855eaaSJohn Baldwin vpmadd52huq 160(%rcx),%ymm4,%ymm2 583*c0855eaaSJohn Baldwin vpmadd52huq 192(%rcx),%ymm4,%ymm20 584*c0855eaaSJohn Baldwin vpmadd52huq 224(%rcx),%ymm4,%ymm21 585*c0855eaaSJohn Baldwin vpmadd52huq 256(%rcx),%ymm4,%ymm22 586*c0855eaaSJohn Baldwin vpmadd52huq 288(%rcx),%ymm4,%ymm23 587*c0855eaaSJohn Baldwin leaq 8(%r11),%r11 588*c0855eaaSJohn Baldwin decl %ebx 589*c0855eaaSJohn Baldwin jne .Lloop20 590*c0855eaaSJohn Baldwin 591*c0855eaaSJohn Baldwin vmovdqa64 .Lmask52x4(%rip),%ymm4 592*c0855eaaSJohn Baldwin 593*c0855eaaSJohn Baldwin vpbroadcastq %r9,%ymm3 594*c0855eaaSJohn Baldwin vpblendd $3,%ymm3,%ymm1,%ymm1 595*c0855eaaSJohn Baldwin 596*c0855eaaSJohn Baldwin 597*c0855eaaSJohn Baldwin 598*c0855eaaSJohn Baldwin vpsrlq $52,%ymm1,%ymm24 599*c0855eaaSJohn Baldwin vpsrlq $52,%ymm16,%ymm25 600*c0855eaaSJohn Baldwin vpsrlq $52,%ymm17,%ymm26 601*c0855eaaSJohn Baldwin vpsrlq $52,%ymm18,%ymm27 602*c0855eaaSJohn Baldwin vpsrlq $52,%ymm19,%ymm28 603*c0855eaaSJohn Baldwin 604*c0855eaaSJohn Baldwin 605*c0855eaaSJohn Baldwin valignq $3,%ymm27,%ymm28,%ymm28 606*c0855eaaSJohn Baldwin valignq $3,%ymm26,%ymm27,%ymm27 607*c0855eaaSJohn Baldwin valignq $3,%ymm25,%ymm26,%ymm26 608*c0855eaaSJohn Baldwin valignq $3,%ymm24,%ymm25,%ymm25 609*c0855eaaSJohn Baldwin valignq $3,%ymm0,%ymm24,%ymm24 610*c0855eaaSJohn Baldwin 611*c0855eaaSJohn Baldwin 612*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm1,%ymm1 613*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm16,%ymm16 614*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm17,%ymm17 615*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm18,%ymm18 616*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm19,%ymm19 617*c0855eaaSJohn Baldwin 618*c0855eaaSJohn Baldwin 619*c0855eaaSJohn Baldwin vpaddq %ymm24,%ymm1,%ymm1 620*c0855eaaSJohn Baldwin vpaddq %ymm25,%ymm16,%ymm16 621*c0855eaaSJohn Baldwin vpaddq %ymm26,%ymm17,%ymm17 622*c0855eaaSJohn Baldwin vpaddq %ymm27,%ymm18,%ymm18 623*c0855eaaSJohn Baldwin vpaddq %ymm28,%ymm19,%ymm19 624*c0855eaaSJohn Baldwin 625*c0855eaaSJohn Baldwin 626*c0855eaaSJohn Baldwin 627*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm1,%ymm4,%k1 628*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm16,%ymm4,%k2 629*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm17,%ymm4,%k3 630*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm18,%ymm4,%k4 631*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm19,%ymm4,%k5 632*c0855eaaSJohn Baldwin kmovb %k1,%r14d 633*c0855eaaSJohn Baldwin kmovb %k2,%r13d 634*c0855eaaSJohn Baldwin kmovb %k3,%r12d 635*c0855eaaSJohn Baldwin kmovb %k4,%r11d 636*c0855eaaSJohn Baldwin kmovb %k5,%r10d 637*c0855eaaSJohn Baldwin 638*c0855eaaSJohn Baldwin 639*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm1,%ymm4,%k1 640*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm16,%ymm4,%k2 641*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm17,%ymm4,%k3 642*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm18,%ymm4,%k4 643*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm19,%ymm4,%k5 644*c0855eaaSJohn Baldwin kmovb %k1,%r9d 645*c0855eaaSJohn Baldwin kmovb %k2,%r8d 646*c0855eaaSJohn Baldwin kmovb %k3,%ebx 647*c0855eaaSJohn Baldwin kmovb %k4,%ecx 648*c0855eaaSJohn Baldwin kmovb %k5,%edx 649*c0855eaaSJohn Baldwin 650*c0855eaaSJohn Baldwin 651*c0855eaaSJohn Baldwin 652*c0855eaaSJohn Baldwin shlb $4,%r13b 653*c0855eaaSJohn Baldwin orb %r13b,%r14b 654*c0855eaaSJohn Baldwin shlb $4,%r11b 655*c0855eaaSJohn Baldwin orb %r11b,%r12b 656*c0855eaaSJohn Baldwin 657*c0855eaaSJohn Baldwin addb %r14b,%r14b 658*c0855eaaSJohn Baldwin adcb %r12b,%r12b 659*c0855eaaSJohn Baldwin adcb %r10b,%r10b 660*c0855eaaSJohn Baldwin 661*c0855eaaSJohn Baldwin shlb $4,%r8b 662*c0855eaaSJohn Baldwin orb %r8b,%r9b 663*c0855eaaSJohn Baldwin shlb $4,%cl 664*c0855eaaSJohn Baldwin orb %cl,%bl 665*c0855eaaSJohn Baldwin 666*c0855eaaSJohn Baldwin addb %r9b,%r14b 667*c0855eaaSJohn Baldwin adcb %bl,%r12b 668*c0855eaaSJohn Baldwin adcb %dl,%r10b 669*c0855eaaSJohn Baldwin 670*c0855eaaSJohn Baldwin xorb %r9b,%r14b 671*c0855eaaSJohn Baldwin xorb %bl,%r12b 672*c0855eaaSJohn Baldwin xorb %dl,%r10b 673*c0855eaaSJohn Baldwin 674*c0855eaaSJohn Baldwin kmovb %r14d,%k1 675*c0855eaaSJohn Baldwin shrb $4,%r14b 676*c0855eaaSJohn Baldwin kmovb %r14d,%k2 677*c0855eaaSJohn Baldwin kmovb %r12d,%k3 678*c0855eaaSJohn Baldwin shrb $4,%r12b 679*c0855eaaSJohn Baldwin kmovb %r12d,%k4 680*c0855eaaSJohn Baldwin kmovb %r10d,%k5 681*c0855eaaSJohn Baldwin 682*c0855eaaSJohn Baldwin 683*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm1,%ymm1{%k1} 684*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm16,%ymm16{%k2} 685*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm17,%ymm17{%k3} 686*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm18,%ymm18{%k4} 687*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm19,%ymm19{%k5} 688*c0855eaaSJohn Baldwin 689*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm1,%ymm1 690*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm16,%ymm16 691*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm17,%ymm17 692*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm18,%ymm18 693*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm19,%ymm19 694*c0855eaaSJohn Baldwin 695*c0855eaaSJohn Baldwin vpbroadcastq %r15,%ymm3 696*c0855eaaSJohn Baldwin vpblendd $3,%ymm3,%ymm2,%ymm2 697*c0855eaaSJohn Baldwin 698*c0855eaaSJohn Baldwin 699*c0855eaaSJohn Baldwin 700*c0855eaaSJohn Baldwin vpsrlq $52,%ymm2,%ymm24 701*c0855eaaSJohn Baldwin vpsrlq $52,%ymm20,%ymm25 702*c0855eaaSJohn Baldwin vpsrlq $52,%ymm21,%ymm26 703*c0855eaaSJohn Baldwin vpsrlq $52,%ymm22,%ymm27 704*c0855eaaSJohn Baldwin vpsrlq $52,%ymm23,%ymm28 705*c0855eaaSJohn Baldwin 706*c0855eaaSJohn Baldwin 707*c0855eaaSJohn Baldwin valignq $3,%ymm27,%ymm28,%ymm28 708*c0855eaaSJohn Baldwin valignq $3,%ymm26,%ymm27,%ymm27 709*c0855eaaSJohn Baldwin valignq $3,%ymm25,%ymm26,%ymm26 710*c0855eaaSJohn Baldwin valignq $3,%ymm24,%ymm25,%ymm25 711*c0855eaaSJohn Baldwin valignq $3,%ymm0,%ymm24,%ymm24 712*c0855eaaSJohn Baldwin 713*c0855eaaSJohn Baldwin 714*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm2,%ymm2 715*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm20,%ymm20 716*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm21,%ymm21 717*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm22,%ymm22 718*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm23,%ymm23 719*c0855eaaSJohn Baldwin 720*c0855eaaSJohn Baldwin 721*c0855eaaSJohn Baldwin vpaddq %ymm24,%ymm2,%ymm2 722*c0855eaaSJohn Baldwin vpaddq %ymm25,%ymm20,%ymm20 723*c0855eaaSJohn Baldwin vpaddq %ymm26,%ymm21,%ymm21 724*c0855eaaSJohn Baldwin vpaddq %ymm27,%ymm22,%ymm22 725*c0855eaaSJohn Baldwin vpaddq %ymm28,%ymm23,%ymm23 726*c0855eaaSJohn Baldwin 727*c0855eaaSJohn Baldwin 728*c0855eaaSJohn Baldwin 729*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm2,%ymm4,%k1 730*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm20,%ymm4,%k2 731*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm21,%ymm4,%k3 732*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm22,%ymm4,%k4 733*c0855eaaSJohn Baldwin vpcmpuq $1,%ymm23,%ymm4,%k5 734*c0855eaaSJohn Baldwin kmovb %k1,%r14d 735*c0855eaaSJohn Baldwin kmovb %k2,%r13d 736*c0855eaaSJohn Baldwin kmovb %k3,%r12d 737*c0855eaaSJohn Baldwin kmovb %k4,%r11d 738*c0855eaaSJohn Baldwin kmovb %k5,%r10d 739*c0855eaaSJohn Baldwin 740*c0855eaaSJohn Baldwin 741*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm2,%ymm4,%k1 742*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm20,%ymm4,%k2 743*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm21,%ymm4,%k3 744*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm22,%ymm4,%k4 745*c0855eaaSJohn Baldwin vpcmpuq $0,%ymm23,%ymm4,%k5 746*c0855eaaSJohn Baldwin kmovb %k1,%r9d 747*c0855eaaSJohn Baldwin kmovb %k2,%r8d 748*c0855eaaSJohn Baldwin kmovb %k3,%ebx 749*c0855eaaSJohn Baldwin kmovb %k4,%ecx 750*c0855eaaSJohn Baldwin kmovb %k5,%edx 751*c0855eaaSJohn Baldwin 752*c0855eaaSJohn Baldwin 753*c0855eaaSJohn Baldwin 754*c0855eaaSJohn Baldwin shlb $4,%r13b 755*c0855eaaSJohn Baldwin orb %r13b,%r14b 756*c0855eaaSJohn Baldwin shlb $4,%r11b 757*c0855eaaSJohn Baldwin orb %r11b,%r12b 758*c0855eaaSJohn Baldwin 759*c0855eaaSJohn Baldwin addb %r14b,%r14b 760*c0855eaaSJohn Baldwin adcb %r12b,%r12b 761*c0855eaaSJohn Baldwin adcb %r10b,%r10b 762*c0855eaaSJohn Baldwin 763*c0855eaaSJohn Baldwin shlb $4,%r8b 764*c0855eaaSJohn Baldwin orb %r8b,%r9b 765*c0855eaaSJohn Baldwin shlb $4,%cl 766*c0855eaaSJohn Baldwin orb %cl,%bl 767*c0855eaaSJohn Baldwin 768*c0855eaaSJohn Baldwin addb %r9b,%r14b 769*c0855eaaSJohn Baldwin adcb %bl,%r12b 770*c0855eaaSJohn Baldwin adcb %dl,%r10b 771*c0855eaaSJohn Baldwin 772*c0855eaaSJohn Baldwin xorb %r9b,%r14b 773*c0855eaaSJohn Baldwin xorb %bl,%r12b 774*c0855eaaSJohn Baldwin xorb %dl,%r10b 775*c0855eaaSJohn Baldwin 776*c0855eaaSJohn Baldwin kmovb %r14d,%k1 777*c0855eaaSJohn Baldwin shrb $4,%r14b 778*c0855eaaSJohn Baldwin kmovb %r14d,%k2 779*c0855eaaSJohn Baldwin kmovb %r12d,%k3 780*c0855eaaSJohn Baldwin shrb $4,%r12b 781*c0855eaaSJohn Baldwin kmovb %r12d,%k4 782*c0855eaaSJohn Baldwin kmovb %r10d,%k5 783*c0855eaaSJohn Baldwin 784*c0855eaaSJohn Baldwin 785*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm2,%ymm2{%k1} 786*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm20,%ymm20{%k2} 787*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm21,%ymm21{%k3} 788*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm22,%ymm22{%k4} 789*c0855eaaSJohn Baldwin vpsubq %ymm4,%ymm23,%ymm23{%k5} 790*c0855eaaSJohn Baldwin 791*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm2,%ymm2 792*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm20,%ymm20 793*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm21,%ymm21 794*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm22,%ymm22 795*c0855eaaSJohn Baldwin vpandq %ymm4,%ymm23,%ymm23 796*c0855eaaSJohn Baldwin 797*c0855eaaSJohn Baldwin vmovdqu64 %ymm1,(%rdi) 798*c0855eaaSJohn Baldwin vmovdqu64 %ymm16,32(%rdi) 799*c0855eaaSJohn Baldwin vmovdqu64 %ymm17,64(%rdi) 800*c0855eaaSJohn Baldwin vmovdqu64 %ymm18,96(%rdi) 801*c0855eaaSJohn Baldwin vmovdqu64 %ymm19,128(%rdi) 802*c0855eaaSJohn Baldwin 803*c0855eaaSJohn Baldwin vmovdqu64 %ymm2,160(%rdi) 804*c0855eaaSJohn Baldwin vmovdqu64 %ymm20,192(%rdi) 805*c0855eaaSJohn Baldwin vmovdqu64 %ymm21,224(%rdi) 806*c0855eaaSJohn Baldwin vmovdqu64 %ymm22,256(%rdi) 807*c0855eaaSJohn Baldwin vmovdqu64 %ymm23,288(%rdi) 808*c0855eaaSJohn Baldwin 809*c0855eaaSJohn Baldwin vzeroupper 810*c0855eaaSJohn Baldwin movq 0(%rsp),%r15 811*c0855eaaSJohn Baldwin.cfi_restore %r15 812*c0855eaaSJohn Baldwin movq 8(%rsp),%r14 813*c0855eaaSJohn Baldwin.cfi_restore %r14 814*c0855eaaSJohn Baldwin movq 16(%rsp),%r13 815*c0855eaaSJohn Baldwin.cfi_restore %r13 816*c0855eaaSJohn Baldwin movq 24(%rsp),%r12 817*c0855eaaSJohn Baldwin.cfi_restore %r12 818*c0855eaaSJohn Baldwin movq 32(%rsp),%rbp 819*c0855eaaSJohn Baldwin.cfi_restore %rbp 820*c0855eaaSJohn Baldwin movq 40(%rsp),%rbx 821*c0855eaaSJohn Baldwin.cfi_restore %rbx 822*c0855eaaSJohn Baldwin leaq 48(%rsp),%rsp 823*c0855eaaSJohn Baldwin.cfi_adjust_cfa_offset -48 824*c0855eaaSJohn Baldwin.Lrsaz_amm52x20_x2_256_epilogue: 825*c0855eaaSJohn Baldwin .byte 0xf3,0xc3 826*c0855eaaSJohn Baldwin.cfi_endproc 827*c0855eaaSJohn Baldwin.size ossl_rsaz_amm52x20_x2_256, .-ossl_rsaz_amm52x20_x2_256 828*c0855eaaSJohn Baldwin.text 829*c0855eaaSJohn Baldwin 830*c0855eaaSJohn Baldwin.align 32 831*c0855eaaSJohn Baldwin.globl ossl_extract_multiplier_2x20_win5 832*c0855eaaSJohn Baldwin.type ossl_extract_multiplier_2x20_win5,@function 833*c0855eaaSJohn Baldwinossl_extract_multiplier_2x20_win5: 834*c0855eaaSJohn Baldwin.cfi_startproc 835*c0855eaaSJohn Baldwin.byte 243,15,30,250 836*c0855eaaSJohn Baldwin leaq (%rcx,%rcx,4),%rax 837*c0855eaaSJohn Baldwin salq $5,%rax 838*c0855eaaSJohn Baldwin addq %rax,%rsi 839*c0855eaaSJohn Baldwin 840*c0855eaaSJohn Baldwin vmovdqa64 .Lones(%rip),%ymm23 841*c0855eaaSJohn Baldwin vpbroadcastq %rdx,%ymm22 842*c0855eaaSJohn Baldwin leaq 10240(%rsi),%rax 843*c0855eaaSJohn Baldwin 844*c0855eaaSJohn Baldwin vpxor %xmm4,%xmm4,%xmm4 845*c0855eaaSJohn Baldwin vmovdqa64 %ymm4,%ymm3 846*c0855eaaSJohn Baldwin vmovdqa64 %ymm4,%ymm2 847*c0855eaaSJohn Baldwin vmovdqa64 %ymm4,%ymm1 848*c0855eaaSJohn Baldwin vmovdqa64 %ymm4,%ymm0 849*c0855eaaSJohn Baldwin vmovdqa64 %ymm4,%ymm21 850*c0855eaaSJohn Baldwin 851*c0855eaaSJohn Baldwin.align 32 852*c0855eaaSJohn Baldwin.Lloop: 853*c0855eaaSJohn Baldwin vpcmpq $0,%ymm21,%ymm22,%k1 854*c0855eaaSJohn Baldwin addq $320,%rsi 855*c0855eaaSJohn Baldwin vpaddq %ymm23,%ymm21,%ymm21 856*c0855eaaSJohn Baldwin vmovdqu64 -320(%rsi),%ymm16 857*c0855eaaSJohn Baldwin vmovdqu64 -288(%rsi),%ymm17 858*c0855eaaSJohn Baldwin vmovdqu64 -256(%rsi),%ymm18 859*c0855eaaSJohn Baldwin vmovdqu64 -224(%rsi),%ymm19 860*c0855eaaSJohn Baldwin vmovdqu64 -192(%rsi),%ymm20 861*c0855eaaSJohn Baldwin vpblendmq %ymm16,%ymm0,%ymm0{%k1} 862*c0855eaaSJohn Baldwin vpblendmq %ymm17,%ymm1,%ymm1{%k1} 863*c0855eaaSJohn Baldwin vpblendmq %ymm18,%ymm2,%ymm2{%k1} 864*c0855eaaSJohn Baldwin vpblendmq %ymm19,%ymm3,%ymm3{%k1} 865*c0855eaaSJohn Baldwin vpblendmq %ymm20,%ymm4,%ymm4{%k1} 866*c0855eaaSJohn Baldwin cmpq %rsi,%rax 867*c0855eaaSJohn Baldwin jne .Lloop 868*c0855eaaSJohn Baldwin 869*c0855eaaSJohn Baldwin vmovdqu64 %ymm0,(%rdi) 870*c0855eaaSJohn Baldwin vmovdqu64 %ymm1,32(%rdi) 871*c0855eaaSJohn Baldwin vmovdqu64 %ymm2,64(%rdi) 872*c0855eaaSJohn Baldwin vmovdqu64 %ymm3,96(%rdi) 873*c0855eaaSJohn Baldwin vmovdqu64 %ymm4,128(%rdi) 874*c0855eaaSJohn Baldwin 875*c0855eaaSJohn Baldwin .byte 0xf3,0xc3 876*c0855eaaSJohn Baldwin.cfi_endproc 877*c0855eaaSJohn Baldwin.size ossl_extract_multiplier_2x20_win5, .-ossl_extract_multiplier_2x20_win5 878*c0855eaaSJohn Baldwin.data 879*c0855eaaSJohn Baldwin.align 32 880*c0855eaaSJohn Baldwin.Lones: 881*c0855eaaSJohn Baldwin.quad 1,1,1,1 882*c0855eaaSJohn Baldwin .section ".note.gnu.property", "a" 883*c0855eaaSJohn Baldwin .p2align 3 884*c0855eaaSJohn Baldwin .long 1f - 0f 885*c0855eaaSJohn Baldwin .long 4f - 1f 886*c0855eaaSJohn Baldwin .long 5 887*c0855eaaSJohn Baldwin0: 888*c0855eaaSJohn Baldwin # "GNU" encoded with .byte, since .asciz isn't supported 889*c0855eaaSJohn Baldwin # on Solaris. 890*c0855eaaSJohn Baldwin .byte 0x47 891*c0855eaaSJohn Baldwin .byte 0x4e 892*c0855eaaSJohn Baldwin .byte 0x55 893*c0855eaaSJohn Baldwin .byte 0 894*c0855eaaSJohn Baldwin1: 895*c0855eaaSJohn Baldwin .p2align 3 896*c0855eaaSJohn Baldwin .long 0xc0000002 897*c0855eaaSJohn Baldwin .long 3f - 2f 898*c0855eaaSJohn Baldwin2: 899*c0855eaaSJohn Baldwin .long 3 900*c0855eaaSJohn Baldwin3: 901*c0855eaaSJohn Baldwin .p2align 3 902*c0855eaaSJohn Baldwin4: 903