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