aesni-mb-x86_64.S revision 290207
1290207Sjkim # $FreeBSD: head/secure/lib/libcrypto/amd64/aesni-mb-x86_64.S 290207 2015-10-30 20:51:33Z jkim $ 2290207Sjkim.text 3290207Sjkim 4290207Sjkim 5290207Sjkim 6290207Sjkim.globl aesni_multi_cbc_encrypt 7290207Sjkim.type aesni_multi_cbc_encrypt,@function 8290207Sjkim.align 32 9290207Sjkimaesni_multi_cbc_encrypt: 10290207Sjkim movq %rsp,%rax 11290207Sjkim pushq %rbx 12290207Sjkim pushq %rbp 13290207Sjkim pushq %r12 14290207Sjkim pushq %r13 15290207Sjkim pushq %r14 16290207Sjkim pushq %r15 17290207Sjkim 18290207Sjkim 19290207Sjkim 20290207Sjkim 21290207Sjkim 22290207Sjkim 23290207Sjkim subq $48,%rsp 24290207Sjkim andq $-64,%rsp 25290207Sjkim movq %rax,16(%rsp) 26290207Sjkim 27290207Sjkim.Lenc4x_body: 28290207Sjkim movdqu (%rsi),%xmm12 29290207Sjkim leaq 120(%rsi),%rsi 30290207Sjkim leaq 80(%rdi),%rdi 31290207Sjkim 32290207Sjkim.Lenc4x_loop_grande: 33290207Sjkim movl %edx,24(%rsp) 34290207Sjkim xorl %edx,%edx 35290207Sjkim movl -64(%rdi),%ecx 36290207Sjkim movq -80(%rdi),%r8 37290207Sjkim cmpl %edx,%ecx 38290207Sjkim movq -72(%rdi),%r12 39290207Sjkim cmovgl %ecx,%edx 40290207Sjkim testl %ecx,%ecx 41290207Sjkim movdqu -56(%rdi),%xmm2 42290207Sjkim movl %ecx,32(%rsp) 43290207Sjkim cmovleq %rsp,%r8 44290207Sjkim movl -24(%rdi),%ecx 45290207Sjkim movq -40(%rdi),%r9 46290207Sjkim cmpl %edx,%ecx 47290207Sjkim movq -32(%rdi),%r13 48290207Sjkim cmovgl %ecx,%edx 49290207Sjkim testl %ecx,%ecx 50290207Sjkim movdqu -16(%rdi),%xmm3 51290207Sjkim movl %ecx,36(%rsp) 52290207Sjkim cmovleq %rsp,%r9 53290207Sjkim movl 16(%rdi),%ecx 54290207Sjkim movq 0(%rdi),%r10 55290207Sjkim cmpl %edx,%ecx 56290207Sjkim movq 8(%rdi),%r14 57290207Sjkim cmovgl %ecx,%edx 58290207Sjkim testl %ecx,%ecx 59290207Sjkim movdqu 24(%rdi),%xmm4 60290207Sjkim movl %ecx,40(%rsp) 61290207Sjkim cmovleq %rsp,%r10 62290207Sjkim movl 56(%rdi),%ecx 63290207Sjkim movq 40(%rdi),%r11 64290207Sjkim cmpl %edx,%ecx 65290207Sjkim movq 48(%rdi),%r15 66290207Sjkim cmovgl %ecx,%edx 67290207Sjkim testl %ecx,%ecx 68290207Sjkim movdqu 64(%rdi),%xmm5 69290207Sjkim movl %ecx,44(%rsp) 70290207Sjkim cmovleq %rsp,%r11 71290207Sjkim testl %edx,%edx 72290207Sjkim jz .Lenc4x_done 73290207Sjkim 74290207Sjkim movups 16-120(%rsi),%xmm1 75290207Sjkim pxor %xmm12,%xmm2 76290207Sjkim movups 32-120(%rsi),%xmm0 77290207Sjkim pxor %xmm12,%xmm3 78290207Sjkim movl 240-120(%rsi),%eax 79290207Sjkim pxor %xmm12,%xmm4 80290207Sjkim movdqu (%r8),%xmm6 81290207Sjkim pxor %xmm12,%xmm5 82290207Sjkim movdqu (%r9),%xmm7 83290207Sjkim pxor %xmm6,%xmm2 84290207Sjkim movdqu (%r10),%xmm8 85290207Sjkim pxor %xmm7,%xmm3 86290207Sjkim movdqu (%r11),%xmm9 87290207Sjkim pxor %xmm8,%xmm4 88290207Sjkim pxor %xmm9,%xmm5 89290207Sjkim movdqa 32(%rsp),%xmm10 90290207Sjkim xorq %rbx,%rbx 91290207Sjkim jmp .Loop_enc4x 92290207Sjkim 93290207Sjkim.align 32 94290207Sjkim.Loop_enc4x: 95290207Sjkim addq $16,%rbx 96290207Sjkim leaq 16(%rsp),%rbp 97290207Sjkim movl $1,%ecx 98290207Sjkim subq %rbx,%rbp 99290207Sjkim 100290207Sjkim.byte 102,15,56,220,209 101290207Sjkim prefetcht0 31(%r8,%rbx,1) 102290207Sjkim prefetcht0 31(%r9,%rbx,1) 103290207Sjkim.byte 102,15,56,220,217 104290207Sjkim prefetcht0 31(%r10,%rbx,1) 105290207Sjkim prefetcht0 31(%r10,%rbx,1) 106290207Sjkim.byte 102,15,56,220,225 107290207Sjkim.byte 102,15,56,220,233 108290207Sjkim movups 48-120(%rsi),%xmm1 109290207Sjkim cmpl 32(%rsp),%ecx 110290207Sjkim.byte 102,15,56,220,208 111290207Sjkim.byte 102,15,56,220,216 112290207Sjkim.byte 102,15,56,220,224 113290207Sjkim cmovgeq %rbp,%r8 114290207Sjkim cmovgq %rbp,%r12 115290207Sjkim.byte 102,15,56,220,232 116290207Sjkim movups -56(%rsi),%xmm0 117290207Sjkim cmpl 36(%rsp),%ecx 118290207Sjkim.byte 102,15,56,220,209 119290207Sjkim.byte 102,15,56,220,217 120290207Sjkim.byte 102,15,56,220,225 121290207Sjkim cmovgeq %rbp,%r9 122290207Sjkim cmovgq %rbp,%r13 123290207Sjkim.byte 102,15,56,220,233 124290207Sjkim movups -40(%rsi),%xmm1 125290207Sjkim cmpl 40(%rsp),%ecx 126290207Sjkim.byte 102,15,56,220,208 127290207Sjkim.byte 102,15,56,220,216 128290207Sjkim.byte 102,15,56,220,224 129290207Sjkim cmovgeq %rbp,%r10 130290207Sjkim cmovgq %rbp,%r14 131290207Sjkim.byte 102,15,56,220,232 132290207Sjkim movups -24(%rsi),%xmm0 133290207Sjkim cmpl 44(%rsp),%ecx 134290207Sjkim.byte 102,15,56,220,209 135290207Sjkim.byte 102,15,56,220,217 136290207Sjkim.byte 102,15,56,220,225 137290207Sjkim cmovgeq %rbp,%r11 138290207Sjkim cmovgq %rbp,%r15 139290207Sjkim.byte 102,15,56,220,233 140290207Sjkim movups -8(%rsi),%xmm1 141290207Sjkim movdqa %xmm10,%xmm11 142290207Sjkim.byte 102,15,56,220,208 143290207Sjkim prefetcht0 15(%r12,%rbx,1) 144290207Sjkim prefetcht0 15(%r13,%rbx,1) 145290207Sjkim.byte 102,15,56,220,216 146290207Sjkim prefetcht0 15(%r14,%rbx,1) 147290207Sjkim prefetcht0 15(%r15,%rbx,1) 148290207Sjkim.byte 102,15,56,220,224 149290207Sjkim.byte 102,15,56,220,232 150290207Sjkim movups 128-120(%rsi),%xmm0 151290207Sjkim pxor %xmm12,%xmm12 152290207Sjkim 153290207Sjkim.byte 102,15,56,220,209 154290207Sjkim pcmpgtd %xmm12,%xmm11 155290207Sjkim movdqu -120(%rsi),%xmm12 156290207Sjkim.byte 102,15,56,220,217 157290207Sjkim paddd %xmm11,%xmm10 158290207Sjkim movdqa %xmm10,32(%rsp) 159290207Sjkim.byte 102,15,56,220,225 160290207Sjkim.byte 102,15,56,220,233 161290207Sjkim movups 144-120(%rsi),%xmm1 162290207Sjkim 163290207Sjkim cmpl $11,%eax 164290207Sjkim 165290207Sjkim.byte 102,15,56,220,208 166290207Sjkim.byte 102,15,56,220,216 167290207Sjkim.byte 102,15,56,220,224 168290207Sjkim.byte 102,15,56,220,232 169290207Sjkim movups 160-120(%rsi),%xmm0 170290207Sjkim 171290207Sjkim jb .Lenc4x_tail 172290207Sjkim 173290207Sjkim.byte 102,15,56,220,209 174290207Sjkim.byte 102,15,56,220,217 175290207Sjkim.byte 102,15,56,220,225 176290207Sjkim.byte 102,15,56,220,233 177290207Sjkim movups 176-120(%rsi),%xmm1 178290207Sjkim 179290207Sjkim.byte 102,15,56,220,208 180290207Sjkim.byte 102,15,56,220,216 181290207Sjkim.byte 102,15,56,220,224 182290207Sjkim.byte 102,15,56,220,232 183290207Sjkim movups 192-120(%rsi),%xmm0 184290207Sjkim 185290207Sjkim je .Lenc4x_tail 186290207Sjkim 187290207Sjkim.byte 102,15,56,220,209 188290207Sjkim.byte 102,15,56,220,217 189290207Sjkim.byte 102,15,56,220,225 190290207Sjkim.byte 102,15,56,220,233 191290207Sjkim movups 208-120(%rsi),%xmm1 192290207Sjkim 193290207Sjkim.byte 102,15,56,220,208 194290207Sjkim.byte 102,15,56,220,216 195290207Sjkim.byte 102,15,56,220,224 196290207Sjkim.byte 102,15,56,220,232 197290207Sjkim movups 224-120(%rsi),%xmm0 198290207Sjkim jmp .Lenc4x_tail 199290207Sjkim 200290207Sjkim.align 32 201290207Sjkim.Lenc4x_tail: 202290207Sjkim.byte 102,15,56,220,209 203290207Sjkim.byte 102,15,56,220,217 204290207Sjkim.byte 102,15,56,220,225 205290207Sjkim.byte 102,15,56,220,233 206290207Sjkim movdqu (%r8,%rbx,1),%xmm6 207290207Sjkim movdqu 16-120(%rsi),%xmm1 208290207Sjkim 209290207Sjkim.byte 102,15,56,221,208 210290207Sjkim movdqu (%r9,%rbx,1),%xmm7 211290207Sjkim pxor %xmm12,%xmm6 212290207Sjkim.byte 102,15,56,221,216 213290207Sjkim movdqu (%r10,%rbx,1),%xmm8 214290207Sjkim pxor %xmm12,%xmm7 215290207Sjkim.byte 102,15,56,221,224 216290207Sjkim movdqu (%r11,%rbx,1),%xmm9 217290207Sjkim pxor %xmm12,%xmm8 218290207Sjkim.byte 102,15,56,221,232 219290207Sjkim movdqu 32-120(%rsi),%xmm0 220290207Sjkim pxor %xmm12,%xmm9 221290207Sjkim 222290207Sjkim movups %xmm2,-16(%r12,%rbx,1) 223290207Sjkim pxor %xmm6,%xmm2 224290207Sjkim movups %xmm3,-16(%r13,%rbx,1) 225290207Sjkim pxor %xmm7,%xmm3 226290207Sjkim movups %xmm4,-16(%r14,%rbx,1) 227290207Sjkim pxor %xmm8,%xmm4 228290207Sjkim movups %xmm5,-16(%r15,%rbx,1) 229290207Sjkim pxor %xmm9,%xmm5 230290207Sjkim 231290207Sjkim decl %edx 232290207Sjkim jnz .Loop_enc4x 233290207Sjkim 234290207Sjkim movq 16(%rsp),%rax 235290207Sjkim movl 24(%rsp),%edx 236290207Sjkim 237290207Sjkim 238290207Sjkim 239290207Sjkim 240290207Sjkim 241290207Sjkim 242290207Sjkim 243290207Sjkim 244290207Sjkim 245290207Sjkim 246290207Sjkim leaq 160(%rdi),%rdi 247290207Sjkim decl %edx 248290207Sjkim jnz .Lenc4x_loop_grande 249290207Sjkim 250290207Sjkim.Lenc4x_done: 251290207Sjkim movq -48(%rax),%r15 252290207Sjkim movq -40(%rax),%r14 253290207Sjkim movq -32(%rax),%r13 254290207Sjkim movq -24(%rax),%r12 255290207Sjkim movq -16(%rax),%rbp 256290207Sjkim movq -8(%rax),%rbx 257290207Sjkim leaq (%rax),%rsp 258290207Sjkim.Lenc4x_epilogue: 259290207Sjkim .byte 0xf3,0xc3 260290207Sjkim.size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt 261290207Sjkim 262290207Sjkim.globl aesni_multi_cbc_decrypt 263290207Sjkim.type aesni_multi_cbc_decrypt,@function 264290207Sjkim.align 32 265290207Sjkimaesni_multi_cbc_decrypt: 266290207Sjkim movq %rsp,%rax 267290207Sjkim pushq %rbx 268290207Sjkim pushq %rbp 269290207Sjkim pushq %r12 270290207Sjkim pushq %r13 271290207Sjkim pushq %r14 272290207Sjkim pushq %r15 273290207Sjkim 274290207Sjkim 275290207Sjkim 276290207Sjkim 277290207Sjkim 278290207Sjkim 279290207Sjkim subq $48,%rsp 280290207Sjkim andq $-64,%rsp 281290207Sjkim movq %rax,16(%rsp) 282290207Sjkim 283290207Sjkim.Ldec4x_body: 284290207Sjkim movdqu (%rsi),%xmm12 285290207Sjkim leaq 120(%rsi),%rsi 286290207Sjkim leaq 80(%rdi),%rdi 287290207Sjkim 288290207Sjkim.Ldec4x_loop_grande: 289290207Sjkim movl %edx,24(%rsp) 290290207Sjkim xorl %edx,%edx 291290207Sjkim movl -64(%rdi),%ecx 292290207Sjkim movq -80(%rdi),%r8 293290207Sjkim cmpl %edx,%ecx 294290207Sjkim movq -72(%rdi),%r12 295290207Sjkim cmovgl %ecx,%edx 296290207Sjkim testl %ecx,%ecx 297290207Sjkim movdqu -56(%rdi),%xmm6 298290207Sjkim movl %ecx,32(%rsp) 299290207Sjkim cmovleq %rsp,%r8 300290207Sjkim movl -24(%rdi),%ecx 301290207Sjkim movq -40(%rdi),%r9 302290207Sjkim cmpl %edx,%ecx 303290207Sjkim movq -32(%rdi),%r13 304290207Sjkim cmovgl %ecx,%edx 305290207Sjkim testl %ecx,%ecx 306290207Sjkim movdqu -16(%rdi),%xmm7 307290207Sjkim movl %ecx,36(%rsp) 308290207Sjkim cmovleq %rsp,%r9 309290207Sjkim movl 16(%rdi),%ecx 310290207Sjkim movq 0(%rdi),%r10 311290207Sjkim cmpl %edx,%ecx 312290207Sjkim movq 8(%rdi),%r14 313290207Sjkim cmovgl %ecx,%edx 314290207Sjkim testl %ecx,%ecx 315290207Sjkim movdqu 24(%rdi),%xmm8 316290207Sjkim movl %ecx,40(%rsp) 317290207Sjkim cmovleq %rsp,%r10 318290207Sjkim movl 56(%rdi),%ecx 319290207Sjkim movq 40(%rdi),%r11 320290207Sjkim cmpl %edx,%ecx 321290207Sjkim movq 48(%rdi),%r15 322290207Sjkim cmovgl %ecx,%edx 323290207Sjkim testl %ecx,%ecx 324290207Sjkim movdqu 64(%rdi),%xmm9 325290207Sjkim movl %ecx,44(%rsp) 326290207Sjkim cmovleq %rsp,%r11 327290207Sjkim testl %edx,%edx 328290207Sjkim jz .Ldec4x_done 329290207Sjkim 330290207Sjkim movups 16-120(%rsi),%xmm1 331290207Sjkim movups 32-120(%rsi),%xmm0 332290207Sjkim movl 240-120(%rsi),%eax 333290207Sjkim movdqu (%r8),%xmm2 334290207Sjkim movdqu (%r9),%xmm3 335290207Sjkim pxor %xmm12,%xmm2 336290207Sjkim movdqu (%r10),%xmm4 337290207Sjkim pxor %xmm12,%xmm3 338290207Sjkim movdqu (%r11),%xmm5 339290207Sjkim pxor %xmm12,%xmm4 340290207Sjkim pxor %xmm12,%xmm5 341290207Sjkim movdqa 32(%rsp),%xmm10 342290207Sjkim xorq %rbx,%rbx 343290207Sjkim jmp .Loop_dec4x 344290207Sjkim 345290207Sjkim.align 32 346290207Sjkim.Loop_dec4x: 347290207Sjkim addq $16,%rbx 348290207Sjkim leaq 16(%rsp),%rbp 349290207Sjkim movl $1,%ecx 350290207Sjkim subq %rbx,%rbp 351290207Sjkim 352290207Sjkim.byte 102,15,56,222,209 353290207Sjkim prefetcht0 31(%r8,%rbx,1) 354290207Sjkim prefetcht0 31(%r9,%rbx,1) 355290207Sjkim.byte 102,15,56,222,217 356290207Sjkim prefetcht0 31(%r10,%rbx,1) 357290207Sjkim prefetcht0 31(%r11,%rbx,1) 358290207Sjkim.byte 102,15,56,222,225 359290207Sjkim.byte 102,15,56,222,233 360290207Sjkim movups 48-120(%rsi),%xmm1 361290207Sjkim cmpl 32(%rsp),%ecx 362290207Sjkim.byte 102,15,56,222,208 363290207Sjkim.byte 102,15,56,222,216 364290207Sjkim.byte 102,15,56,222,224 365290207Sjkim cmovgeq %rbp,%r8 366290207Sjkim cmovgq %rbp,%r12 367290207Sjkim.byte 102,15,56,222,232 368290207Sjkim movups -56(%rsi),%xmm0 369290207Sjkim cmpl 36(%rsp),%ecx 370290207Sjkim.byte 102,15,56,222,209 371290207Sjkim.byte 102,15,56,222,217 372290207Sjkim.byte 102,15,56,222,225 373290207Sjkim cmovgeq %rbp,%r9 374290207Sjkim cmovgq %rbp,%r13 375290207Sjkim.byte 102,15,56,222,233 376290207Sjkim movups -40(%rsi),%xmm1 377290207Sjkim cmpl 40(%rsp),%ecx 378290207Sjkim.byte 102,15,56,222,208 379290207Sjkim.byte 102,15,56,222,216 380290207Sjkim.byte 102,15,56,222,224 381290207Sjkim cmovgeq %rbp,%r10 382290207Sjkim cmovgq %rbp,%r14 383290207Sjkim.byte 102,15,56,222,232 384290207Sjkim movups -24(%rsi),%xmm0 385290207Sjkim cmpl 44(%rsp),%ecx 386290207Sjkim.byte 102,15,56,222,209 387290207Sjkim.byte 102,15,56,222,217 388290207Sjkim.byte 102,15,56,222,225 389290207Sjkim cmovgeq %rbp,%r11 390290207Sjkim cmovgq %rbp,%r15 391290207Sjkim.byte 102,15,56,222,233 392290207Sjkim movups -8(%rsi),%xmm1 393290207Sjkim movdqa %xmm10,%xmm11 394290207Sjkim.byte 102,15,56,222,208 395290207Sjkim prefetcht0 15(%r12,%rbx,1) 396290207Sjkim prefetcht0 15(%r13,%rbx,1) 397290207Sjkim.byte 102,15,56,222,216 398290207Sjkim prefetcht0 15(%r14,%rbx,1) 399290207Sjkim prefetcht0 15(%r15,%rbx,1) 400290207Sjkim.byte 102,15,56,222,224 401290207Sjkim.byte 102,15,56,222,232 402290207Sjkim movups 128-120(%rsi),%xmm0 403290207Sjkim pxor %xmm12,%xmm12 404290207Sjkim 405290207Sjkim.byte 102,15,56,222,209 406290207Sjkim pcmpgtd %xmm12,%xmm11 407290207Sjkim movdqu -120(%rsi),%xmm12 408290207Sjkim.byte 102,15,56,222,217 409290207Sjkim paddd %xmm11,%xmm10 410290207Sjkim movdqa %xmm10,32(%rsp) 411290207Sjkim.byte 102,15,56,222,225 412290207Sjkim.byte 102,15,56,222,233 413290207Sjkim movups 144-120(%rsi),%xmm1 414290207Sjkim 415290207Sjkim cmpl $11,%eax 416290207Sjkim 417290207Sjkim.byte 102,15,56,222,208 418290207Sjkim.byte 102,15,56,222,216 419290207Sjkim.byte 102,15,56,222,224 420290207Sjkim.byte 102,15,56,222,232 421290207Sjkim movups 160-120(%rsi),%xmm0 422290207Sjkim 423290207Sjkim jb .Ldec4x_tail 424290207Sjkim 425290207Sjkim.byte 102,15,56,222,209 426290207Sjkim.byte 102,15,56,222,217 427290207Sjkim.byte 102,15,56,222,225 428290207Sjkim.byte 102,15,56,222,233 429290207Sjkim movups 176-120(%rsi),%xmm1 430290207Sjkim 431290207Sjkim.byte 102,15,56,222,208 432290207Sjkim.byte 102,15,56,222,216 433290207Sjkim.byte 102,15,56,222,224 434290207Sjkim.byte 102,15,56,222,232 435290207Sjkim movups 192-120(%rsi),%xmm0 436290207Sjkim 437290207Sjkim je .Ldec4x_tail 438290207Sjkim 439290207Sjkim.byte 102,15,56,222,209 440290207Sjkim.byte 102,15,56,222,217 441290207Sjkim.byte 102,15,56,222,225 442290207Sjkim.byte 102,15,56,222,233 443290207Sjkim movups 208-120(%rsi),%xmm1 444290207Sjkim 445290207Sjkim.byte 102,15,56,222,208 446290207Sjkim.byte 102,15,56,222,216 447290207Sjkim.byte 102,15,56,222,224 448290207Sjkim.byte 102,15,56,222,232 449290207Sjkim movups 224-120(%rsi),%xmm0 450290207Sjkim jmp .Ldec4x_tail 451290207Sjkim 452290207Sjkim.align 32 453290207Sjkim.Ldec4x_tail: 454290207Sjkim.byte 102,15,56,222,209 455290207Sjkim.byte 102,15,56,222,217 456290207Sjkim.byte 102,15,56,222,225 457290207Sjkim pxor %xmm0,%xmm6 458290207Sjkim pxor %xmm0,%xmm7 459290207Sjkim.byte 102,15,56,222,233 460290207Sjkim movdqu 16-120(%rsi),%xmm1 461290207Sjkim pxor %xmm0,%xmm8 462290207Sjkim pxor %xmm0,%xmm9 463290207Sjkim movdqu 32-120(%rsi),%xmm0 464290207Sjkim 465290207Sjkim.byte 102,15,56,223,214 466290207Sjkim.byte 102,15,56,223,223 467290207Sjkim movdqu -16(%r8,%rbx,1),%xmm6 468290207Sjkim movdqu -16(%r9,%rbx,1),%xmm7 469290207Sjkim.byte 102,65,15,56,223,224 470290207Sjkim.byte 102,65,15,56,223,233 471290207Sjkim movdqu -16(%r10,%rbx,1),%xmm8 472290207Sjkim movdqu -16(%r11,%rbx,1),%xmm9 473290207Sjkim 474290207Sjkim movups %xmm2,-16(%r12,%rbx,1) 475290207Sjkim movdqu (%r8,%rbx,1),%xmm2 476290207Sjkim movups %xmm3,-16(%r13,%rbx,1) 477290207Sjkim movdqu (%r9,%rbx,1),%xmm3 478290207Sjkim pxor %xmm12,%xmm2 479290207Sjkim movups %xmm4,-16(%r14,%rbx,1) 480290207Sjkim movdqu (%r10,%rbx,1),%xmm4 481290207Sjkim pxor %xmm12,%xmm3 482290207Sjkim movups %xmm5,-16(%r15,%rbx,1) 483290207Sjkim movdqu (%r11,%rbx,1),%xmm5 484290207Sjkim pxor %xmm12,%xmm4 485290207Sjkim pxor %xmm12,%xmm5 486290207Sjkim 487290207Sjkim decl %edx 488290207Sjkim jnz .Loop_dec4x 489290207Sjkim 490290207Sjkim movq 16(%rsp),%rax 491290207Sjkim movl 24(%rsp),%edx 492290207Sjkim 493290207Sjkim leaq 160(%rdi),%rdi 494290207Sjkim decl %edx 495290207Sjkim jnz .Ldec4x_loop_grande 496290207Sjkim 497290207Sjkim.Ldec4x_done: 498290207Sjkim movq -48(%rax),%r15 499290207Sjkim movq -40(%rax),%r14 500290207Sjkim movq -32(%rax),%r13 501290207Sjkim movq -24(%rax),%r12 502290207Sjkim movq -16(%rax),%rbp 503290207Sjkim movq -8(%rax),%rbx 504290207Sjkim leaq (%rax),%rsp 505290207Sjkim.Ldec4x_epilogue: 506290207Sjkim .byte 0xf3,0xc3 507290207Sjkim.size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt 508