The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/module/icp/asm-x86_64/blake3/blake3_avx512.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 
   22 /*
   23  * Based on BLAKE3 v1.3.1, https://github.com/BLAKE3-team/BLAKE3
   24  * Copyright (c) 2019-2020 Samuel Neves
   25  * Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de>
   26  */
   27 
   28 #if defined(HAVE_AVX512F) && defined(HAVE_AVX512VL)
   29 
   30 #define _ASM
   31 #include <sys/asm_linkage.h>
   32 
   33 .intel_syntax noprefix
   34 .text
   35 
   36 ENTRY_ALIGN(zfs_blake3_hash_many_avx512, 64)
   37         ENDBR
   38         push    r15
   39         push    r14
   40         push    r13
   41         push    r12
   42         push    rbx
   43         push    rbp
   44         mov     rbp, rsp
   45         sub     rsp, 144
   46         and     rsp, 0xFFFFFFFFFFFFFFC0
   47         neg     r9
   48         kmovw   k1, r9d
   49         vmovd   xmm0, r8d
   50         vpbroadcastd ymm0, xmm0
   51         shr     r8, 32
   52         vmovd   xmm1, r8d
   53         vpbroadcastd ymm1, xmm1
   54         vmovdqa ymm4, ymm1
   55         vmovdqa ymm5, ymm1
   56         vpaddd  ymm2, ymm0, ymmword ptr [ADD0+rip]
   57         vpaddd  ymm3, ymm0, ymmword ptr [ADD0+32+rip]
   58         vpcmpltud k2, ymm2, ymm0
   59         vpcmpltud k3, ymm3, ymm0
   60         vpaddd  ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8}
   61         vpaddd  ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8}
   62         knotw   k2, k1
   63         vmovdqa32 ymm2 {k2}, ymm0
   64         vmovdqa32 ymm3 {k2}, ymm0
   65         vmovdqa32 ymm4 {k2}, ymm1
   66         vmovdqa32 ymm5 {k2}, ymm1
   67         vmovdqa ymmword ptr [rsp], ymm2
   68         vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3
   69         vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4
   70         vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5
   71         shl     rdx, 6
   72         mov     qword ptr [rsp+0x80], rdx
   73         cmp     rsi, 16
   74         jc      3f
   75 2:
   76         vpbroadcastd zmm0, dword ptr [rcx]
   77         vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4]
   78         vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4]
   79         vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4]
   80         vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4]
   81         vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4]
   82         vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4]
   83         vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4]
   84         movzx   eax, byte ptr [rbp+0x38]
   85         movzx   ebx, byte ptr [rbp+0x40]
   86         or      eax, ebx
   87         xor     edx, edx
   88 .p2align 5
   89 9:
   90         movzx   ebx, byte ptr [rbp+0x48]
   91         or      ebx, eax
   92         add     rdx, 64
   93         cmp     rdx, qword ptr [rsp+0x80]
   94         cmove   eax, ebx
   95         mov     dword ptr [rsp+0x88], eax
   96         mov     r8, qword ptr [rdi]
   97         mov     r9, qword ptr [rdi+0x8]
   98         mov     r10, qword ptr [rdi+0x10]
   99         mov     r11, qword ptr [rdi+0x18]
  100         mov     r12, qword ptr [rdi+0x40]
  101         mov     r13, qword ptr [rdi+0x48]
  102         mov     r14, qword ptr [rdi+0x50]
  103         mov     r15, qword ptr [rdi+0x58]
  104         vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
  105         vinserti32x8 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
  106         vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
  107         vinserti32x8 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
  108         vpunpcklqdq zmm8, zmm16, zmm17
  109         vpunpckhqdq zmm9, zmm16, zmm17
  110         vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
  111         vinserti32x8 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
  112         vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
  113         vinserti32x8 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
  114         vpunpcklqdq zmm10, zmm18, zmm19
  115         vpunpckhqdq zmm11, zmm18, zmm19
  116         mov     r8, qword ptr [rdi+0x20]
  117         mov     r9, qword ptr [rdi+0x28]
  118         mov     r10, qword ptr [rdi+0x30]
  119         mov     r11, qword ptr [rdi+0x38]
  120         mov     r12, qword ptr [rdi+0x60]
  121         mov     r13, qword ptr [rdi+0x68]
  122         mov     r14, qword ptr [rdi+0x70]
  123         mov     r15, qword ptr [rdi+0x78]
  124         vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20]
  125         vinserti32x8 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01
  126         vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20]
  127         vinserti32x8 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01
  128         vpunpcklqdq zmm12, zmm16, zmm17
  129         vpunpckhqdq zmm13, zmm16, zmm17
  130         vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20]
  131         vinserti32x8 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01
  132         vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20]
  133         vinserti32x8 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01
  134         vpunpcklqdq zmm14, zmm18, zmm19
  135         vpunpckhqdq zmm15, zmm18, zmm19
  136         vmovdqa32 zmm27, zmmword ptr [INDEX0+rip]
  137         vmovdqa32 zmm31, zmmword ptr [INDEX1+rip]
  138         vshufps zmm16, zmm8, zmm10, 136
  139         vshufps zmm17, zmm12, zmm14, 136
  140         vmovdqa32 zmm20, zmm16
  141         vpermt2d zmm16, zmm27, zmm17
  142         vpermt2d zmm20, zmm31, zmm17
  143         vshufps zmm17, zmm8, zmm10, 221
  144         vshufps zmm30, zmm12, zmm14, 221
  145         vmovdqa32 zmm21, zmm17
  146         vpermt2d zmm17, zmm27, zmm30
  147         vpermt2d zmm21, zmm31, zmm30
  148         vshufps zmm18, zmm9, zmm11, 136
  149         vshufps zmm8, zmm13, zmm15, 136
  150         vmovdqa32 zmm22, zmm18
  151         vpermt2d zmm18, zmm27, zmm8
  152         vpermt2d zmm22, zmm31, zmm8
  153         vshufps zmm19, zmm9, zmm11, 221
  154         vshufps zmm8, zmm13, zmm15, 221
  155         vmovdqa32 zmm23, zmm19
  156         vpermt2d zmm19, zmm27, zmm8
  157         vpermt2d zmm23, zmm31, zmm8
  158         mov     r8, qword ptr [rdi]
  159         mov     r9, qword ptr [rdi+0x8]
  160         mov     r10, qword ptr [rdi+0x10]
  161         mov     r11, qword ptr [rdi+0x18]
  162         mov     r12, qword ptr [rdi+0x40]
  163         mov     r13, qword ptr [rdi+0x48]
  164         mov     r14, qword ptr [rdi+0x50]
  165         mov     r15, qword ptr [rdi+0x58]
  166         vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
  167         vinserti32x8 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
  168         vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
  169         vinserti32x8 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
  170         vpunpcklqdq zmm8, zmm24, zmm25
  171         vpunpckhqdq zmm9, zmm24, zmm25
  172         vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
  173         vinserti32x8 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
  174         vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
  175         vinserti32x8 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
  176         vpunpcklqdq zmm10, zmm24, zmm25
  177         vpunpckhqdq zmm11, zmm24, zmm25
  178         prefetcht0 [r8+rdx+0x80]
  179         prefetcht0 [r12+rdx+0x80]
  180         prefetcht0 [r9+rdx+0x80]
  181         prefetcht0 [r13+rdx+0x80]
  182         prefetcht0 [r10+rdx+0x80]
  183         prefetcht0 [r14+rdx+0x80]
  184         prefetcht0 [r11+rdx+0x80]
  185         prefetcht0 [r15+rdx+0x80]
  186         mov     r8, qword ptr [rdi+0x20]
  187         mov     r9, qword ptr [rdi+0x28]
  188         mov     r10, qword ptr [rdi+0x30]
  189         mov     r11, qword ptr [rdi+0x38]
  190         mov     r12, qword ptr [rdi+0x60]
  191         mov     r13, qword ptr [rdi+0x68]
  192         mov     r14, qword ptr [rdi+0x70]
  193         mov     r15, qword ptr [rdi+0x78]
  194         vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20]
  195         vinserti32x8 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01
  196         vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20]
  197         vinserti32x8 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01
  198         vpunpcklqdq zmm12, zmm24, zmm25
  199         vpunpckhqdq zmm13, zmm24, zmm25
  200         vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20]
  201         vinserti32x8 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01
  202         vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20]
  203         vinserti32x8 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01
  204         vpunpcklqdq zmm14, zmm24, zmm25
  205         vpunpckhqdq zmm15, zmm24, zmm25
  206         prefetcht0 [r8+rdx+0x80]
  207         prefetcht0 [r12+rdx+0x80]
  208         prefetcht0 [r9+rdx+0x80]
  209         prefetcht0 [r13+rdx+0x80]
  210         prefetcht0 [r10+rdx+0x80]
  211         prefetcht0 [r14+rdx+0x80]
  212         prefetcht0 [r11+rdx+0x80]
  213         prefetcht0 [r15+rdx+0x80]
  214         vshufps zmm24, zmm8, zmm10, 136
  215         vshufps zmm30, zmm12, zmm14, 136
  216         vmovdqa32 zmm28, zmm24
  217         vpermt2d zmm24, zmm27, zmm30
  218         vpermt2d zmm28, zmm31, zmm30
  219         vshufps zmm25, zmm8, zmm10, 221
  220         vshufps zmm30, zmm12, zmm14, 221
  221         vmovdqa32 zmm29, zmm25
  222         vpermt2d zmm25, zmm27, zmm30
  223         vpermt2d zmm29, zmm31, zmm30
  224         vshufps zmm26, zmm9, zmm11, 136
  225         vshufps zmm8, zmm13, zmm15, 136
  226         vmovdqa32 zmm30, zmm26
  227         vpermt2d zmm26, zmm27, zmm8
  228         vpermt2d zmm30, zmm31, zmm8
  229         vshufps zmm8, zmm9, zmm11, 221
  230         vshufps zmm10, zmm13, zmm15, 221
  231         vpermi2d zmm27, zmm8, zmm10
  232         vpermi2d zmm31, zmm8, zmm10
  233         vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip]
  234         vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip]
  235         vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip]
  236         vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip]
  237         vmovdqa32 zmm12, zmmword ptr [rsp]
  238         vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40]
  239         vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
  240         vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4]
  241         vpaddd  zmm0, zmm0, zmm16
  242         vpaddd  zmm1, zmm1, zmm18
  243         vpaddd  zmm2, zmm2, zmm20
  244         vpaddd  zmm3, zmm3, zmm22
  245         vpaddd  zmm0, zmm0, zmm4
  246         vpaddd  zmm1, zmm1, zmm5
  247         vpaddd  zmm2, zmm2, zmm6
  248         vpaddd  zmm3, zmm3, zmm7
  249         vpxord  zmm12, zmm12, zmm0
  250         vpxord  zmm13, zmm13, zmm1
  251         vpxord  zmm14, zmm14, zmm2
  252         vpxord  zmm15, zmm15, zmm3
  253         vprord  zmm12, zmm12, 16
  254         vprord  zmm13, zmm13, 16
  255         vprord  zmm14, zmm14, 16
  256         vprord  zmm15, zmm15, 16
  257         vpaddd  zmm8, zmm8, zmm12
  258         vpaddd  zmm9, zmm9, zmm13
  259         vpaddd  zmm10, zmm10, zmm14
  260         vpaddd  zmm11, zmm11, zmm15
  261         vpxord  zmm4, zmm4, zmm8
  262         vpxord  zmm5, zmm5, zmm9
  263         vpxord  zmm6, zmm6, zmm10
  264         vpxord  zmm7, zmm7, zmm11
  265         vprord  zmm4, zmm4, 12
  266         vprord  zmm5, zmm5, 12
  267         vprord  zmm6, zmm6, 12
  268         vprord  zmm7, zmm7, 12
  269         vpaddd  zmm0, zmm0, zmm17
  270         vpaddd  zmm1, zmm1, zmm19
  271         vpaddd  zmm2, zmm2, zmm21
  272         vpaddd  zmm3, zmm3, zmm23
  273         vpaddd  zmm0, zmm0, zmm4
  274         vpaddd  zmm1, zmm1, zmm5
  275         vpaddd  zmm2, zmm2, zmm6
  276         vpaddd  zmm3, zmm3, zmm7
  277         vpxord  zmm12, zmm12, zmm0
  278         vpxord  zmm13, zmm13, zmm1
  279         vpxord  zmm14, zmm14, zmm2
  280         vpxord  zmm15, zmm15, zmm3
  281         vprord  zmm12, zmm12, 8
  282         vprord  zmm13, zmm13, 8
  283         vprord  zmm14, zmm14, 8
  284         vprord  zmm15, zmm15, 8
  285         vpaddd  zmm8, zmm8, zmm12
  286         vpaddd  zmm9, zmm9, zmm13
  287         vpaddd  zmm10, zmm10, zmm14
  288         vpaddd  zmm11, zmm11, zmm15
  289         vpxord  zmm4, zmm4, zmm8
  290         vpxord  zmm5, zmm5, zmm9
  291         vpxord  zmm6, zmm6, zmm10
  292         vpxord  zmm7, zmm7, zmm11
  293         vprord  zmm4, zmm4, 7
  294         vprord  zmm5, zmm5, 7
  295         vprord  zmm6, zmm6, 7
  296         vprord  zmm7, zmm7, 7
  297         vpaddd  zmm0, zmm0, zmm24
  298         vpaddd  zmm1, zmm1, zmm26
  299         vpaddd  zmm2, zmm2, zmm28
  300         vpaddd  zmm3, zmm3, zmm30
  301         vpaddd  zmm0, zmm0, zmm5
  302         vpaddd  zmm1, zmm1, zmm6
  303         vpaddd  zmm2, zmm2, zmm7
  304         vpaddd  zmm3, zmm3, zmm4
  305         vpxord  zmm15, zmm15, zmm0
  306         vpxord  zmm12, zmm12, zmm1
  307         vpxord  zmm13, zmm13, zmm2
  308         vpxord  zmm14, zmm14, zmm3
  309         vprord  zmm15, zmm15, 16
  310         vprord  zmm12, zmm12, 16
  311         vprord  zmm13, zmm13, 16
  312         vprord  zmm14, zmm14, 16
  313         vpaddd  zmm10, zmm10, zmm15
  314         vpaddd  zmm11, zmm11, zmm12
  315         vpaddd  zmm8, zmm8, zmm13
  316         vpaddd  zmm9, zmm9, zmm14
  317         vpxord  zmm5, zmm5, zmm10
  318         vpxord  zmm6, zmm6, zmm11
  319         vpxord  zmm7, zmm7, zmm8
  320         vpxord  zmm4, zmm4, zmm9
  321         vprord  zmm5, zmm5, 12
  322         vprord  zmm6, zmm6, 12
  323         vprord  zmm7, zmm7, 12
  324         vprord  zmm4, zmm4, 12
  325         vpaddd  zmm0, zmm0, zmm25
  326         vpaddd  zmm1, zmm1, zmm27
  327         vpaddd  zmm2, zmm2, zmm29
  328         vpaddd  zmm3, zmm3, zmm31
  329         vpaddd  zmm0, zmm0, zmm5
  330         vpaddd  zmm1, zmm1, zmm6
  331         vpaddd  zmm2, zmm2, zmm7
  332         vpaddd  zmm3, zmm3, zmm4
  333         vpxord  zmm15, zmm15, zmm0
  334         vpxord  zmm12, zmm12, zmm1
  335         vpxord  zmm13, zmm13, zmm2
  336         vpxord  zmm14, zmm14, zmm3
  337         vprord  zmm15, zmm15, 8
  338         vprord  zmm12, zmm12, 8
  339         vprord  zmm13, zmm13, 8
  340         vprord  zmm14, zmm14, 8
  341         vpaddd  zmm10, zmm10, zmm15
  342         vpaddd  zmm11, zmm11, zmm12
  343         vpaddd  zmm8, zmm8, zmm13
  344         vpaddd  zmm9, zmm9, zmm14
  345         vpxord  zmm5, zmm5, zmm10
  346         vpxord  zmm6, zmm6, zmm11
  347         vpxord  zmm7, zmm7, zmm8
  348         vpxord  zmm4, zmm4, zmm9
  349         vprord  zmm5, zmm5, 7
  350         vprord  zmm6, zmm6, 7
  351         vprord  zmm7, zmm7, 7
  352         vprord  zmm4, zmm4, 7
  353         vpaddd  zmm0, zmm0, zmm18
  354         vpaddd  zmm1, zmm1, zmm19
  355         vpaddd  zmm2, zmm2, zmm23
  356         vpaddd  zmm3, zmm3, zmm20
  357         vpaddd  zmm0, zmm0, zmm4
  358         vpaddd  zmm1, zmm1, zmm5
  359         vpaddd  zmm2, zmm2, zmm6
  360         vpaddd  zmm3, zmm3, zmm7
  361         vpxord  zmm12, zmm12, zmm0
  362         vpxord  zmm13, zmm13, zmm1
  363         vpxord  zmm14, zmm14, zmm2
  364         vpxord  zmm15, zmm15, zmm3
  365         vprord  zmm12, zmm12, 16
  366         vprord  zmm13, zmm13, 16
  367         vprord  zmm14, zmm14, 16
  368         vprord  zmm15, zmm15, 16
  369         vpaddd  zmm8, zmm8, zmm12
  370         vpaddd  zmm9, zmm9, zmm13
  371         vpaddd  zmm10, zmm10, zmm14
  372         vpaddd  zmm11, zmm11, zmm15
  373         vpxord  zmm4, zmm4, zmm8
  374         vpxord  zmm5, zmm5, zmm9
  375         vpxord  zmm6, zmm6, zmm10
  376         vpxord  zmm7, zmm7, zmm11
  377         vprord  zmm4, zmm4, 12
  378         vprord  zmm5, zmm5, 12
  379         vprord  zmm6, zmm6, 12
  380         vprord  zmm7, zmm7, 12
  381         vpaddd  zmm0, zmm0, zmm22
  382         vpaddd  zmm1, zmm1, zmm26
  383         vpaddd  zmm2, zmm2, zmm16
  384         vpaddd  zmm3, zmm3, zmm29
  385         vpaddd  zmm0, zmm0, zmm4
  386         vpaddd  zmm1, zmm1, zmm5
  387         vpaddd  zmm2, zmm2, zmm6
  388         vpaddd  zmm3, zmm3, zmm7
  389         vpxord  zmm12, zmm12, zmm0
  390         vpxord  zmm13, zmm13, zmm1
  391         vpxord  zmm14, zmm14, zmm2
  392         vpxord  zmm15, zmm15, zmm3
  393         vprord  zmm12, zmm12, 8
  394         vprord  zmm13, zmm13, 8
  395         vprord  zmm14, zmm14, 8
  396         vprord  zmm15, zmm15, 8
  397         vpaddd  zmm8, zmm8, zmm12
  398         vpaddd  zmm9, zmm9, zmm13
  399         vpaddd  zmm10, zmm10, zmm14
  400         vpaddd  zmm11, zmm11, zmm15
  401         vpxord  zmm4, zmm4, zmm8
  402         vpxord  zmm5, zmm5, zmm9
  403         vpxord  zmm6, zmm6, zmm10
  404         vpxord  zmm7, zmm7, zmm11
  405         vprord  zmm4, zmm4, 7
  406         vprord  zmm5, zmm5, 7
  407         vprord  zmm6, zmm6, 7
  408         vprord  zmm7, zmm7, 7
  409         vpaddd  zmm0, zmm0, zmm17
  410         vpaddd  zmm1, zmm1, zmm28
  411         vpaddd  zmm2, zmm2, zmm25
  412         vpaddd  zmm3, zmm3, zmm31
  413         vpaddd  zmm0, zmm0, zmm5
  414         vpaddd  zmm1, zmm1, zmm6
  415         vpaddd  zmm2, zmm2, zmm7
  416         vpaddd  zmm3, zmm3, zmm4
  417         vpxord  zmm15, zmm15, zmm0
  418         vpxord  zmm12, zmm12, zmm1
  419         vpxord  zmm13, zmm13, zmm2
  420         vpxord  zmm14, zmm14, zmm3
  421         vprord  zmm15, zmm15, 16
  422         vprord  zmm12, zmm12, 16
  423         vprord  zmm13, zmm13, 16
  424         vprord  zmm14, zmm14, 16
  425         vpaddd  zmm10, zmm10, zmm15
  426         vpaddd  zmm11, zmm11, zmm12
  427         vpaddd  zmm8, zmm8, zmm13
  428         vpaddd  zmm9, zmm9, zmm14
  429         vpxord  zmm5, zmm5, zmm10
  430         vpxord  zmm6, zmm6, zmm11
  431         vpxord  zmm7, zmm7, zmm8
  432         vpxord  zmm4, zmm4, zmm9
  433         vprord  zmm5, zmm5, 12
  434         vprord  zmm6, zmm6, 12
  435         vprord  zmm7, zmm7, 12
  436         vprord  zmm4, zmm4, 12
  437         vpaddd  zmm0, zmm0, zmm27
  438         vpaddd  zmm1, zmm1, zmm21
  439         vpaddd  zmm2, zmm2, zmm30
  440         vpaddd  zmm3, zmm3, zmm24
  441         vpaddd  zmm0, zmm0, zmm5
  442         vpaddd  zmm1, zmm1, zmm6
  443         vpaddd  zmm2, zmm2, zmm7
  444         vpaddd  zmm3, zmm3, zmm4
  445         vpxord  zmm15, zmm15, zmm0
  446         vpxord  zmm12, zmm12, zmm1
  447         vpxord  zmm13, zmm13, zmm2
  448         vpxord  zmm14, zmm14, zmm3
  449         vprord  zmm15, zmm15, 8
  450         vprord  zmm12, zmm12, 8
  451         vprord  zmm13, zmm13, 8
  452         vprord  zmm14, zmm14, 8
  453         vpaddd  zmm10, zmm10, zmm15
  454         vpaddd  zmm11, zmm11, zmm12
  455         vpaddd  zmm8, zmm8, zmm13
  456         vpaddd  zmm9, zmm9, zmm14
  457         vpxord  zmm5, zmm5, zmm10
  458         vpxord  zmm6, zmm6, zmm11
  459         vpxord  zmm7, zmm7, zmm8
  460         vpxord  zmm4, zmm4, zmm9
  461         vprord  zmm5, zmm5, 7
  462         vprord  zmm6, zmm6, 7
  463         vprord  zmm7, zmm7, 7
  464         vprord  zmm4, zmm4, 7
  465         vpaddd  zmm0, zmm0, zmm19
  466         vpaddd  zmm1, zmm1, zmm26
  467         vpaddd  zmm2, zmm2, zmm29
  468         vpaddd  zmm3, zmm3, zmm23
  469         vpaddd  zmm0, zmm0, zmm4
  470         vpaddd  zmm1, zmm1, zmm5
  471         vpaddd  zmm2, zmm2, zmm6
  472         vpaddd  zmm3, zmm3, zmm7
  473         vpxord  zmm12, zmm12, zmm0
  474         vpxord  zmm13, zmm13, zmm1
  475         vpxord  zmm14, zmm14, zmm2
  476         vpxord  zmm15, zmm15, zmm3
  477         vprord  zmm12, zmm12, 16
  478         vprord  zmm13, zmm13, 16
  479         vprord  zmm14, zmm14, 16
  480         vprord  zmm15, zmm15, 16
  481         vpaddd  zmm8, zmm8, zmm12
  482         vpaddd  zmm9, zmm9, zmm13
  483         vpaddd  zmm10, zmm10, zmm14
  484         vpaddd  zmm11, zmm11, zmm15
  485         vpxord  zmm4, zmm4, zmm8
  486         vpxord  zmm5, zmm5, zmm9
  487         vpxord  zmm6, zmm6, zmm10
  488         vpxord  zmm7, zmm7, zmm11
  489         vprord  zmm4, zmm4, 12
  490         vprord  zmm5, zmm5, 12
  491         vprord  zmm6, zmm6, 12
  492         vprord  zmm7, zmm7, 12
  493         vpaddd  zmm0, zmm0, zmm20
  494         vpaddd  zmm1, zmm1, zmm28
  495         vpaddd  zmm2, zmm2, zmm18
  496         vpaddd  zmm3, zmm3, zmm30
  497         vpaddd  zmm0, zmm0, zmm4
  498         vpaddd  zmm1, zmm1, zmm5
  499         vpaddd  zmm2, zmm2, zmm6
  500         vpaddd  zmm3, zmm3, zmm7
  501         vpxord  zmm12, zmm12, zmm0
  502         vpxord  zmm13, zmm13, zmm1
  503         vpxord  zmm14, zmm14, zmm2
  504         vpxord  zmm15, zmm15, zmm3
  505         vprord  zmm12, zmm12, 8
  506         vprord  zmm13, zmm13, 8
  507         vprord  zmm14, zmm14, 8
  508         vprord  zmm15, zmm15, 8
  509         vpaddd  zmm8, zmm8, zmm12
  510         vpaddd  zmm9, zmm9, zmm13
  511         vpaddd  zmm10, zmm10, zmm14
  512         vpaddd  zmm11, zmm11, zmm15
  513         vpxord  zmm4, zmm4, zmm8
  514         vpxord  zmm5, zmm5, zmm9
  515         vpxord  zmm6, zmm6, zmm10
  516         vpxord  zmm7, zmm7, zmm11
  517         vprord  zmm4, zmm4, 7
  518         vprord  zmm5, zmm5, 7
  519         vprord  zmm6, zmm6, 7
  520         vprord  zmm7, zmm7, 7
  521         vpaddd  zmm0, zmm0, zmm22
  522         vpaddd  zmm1, zmm1, zmm25
  523         vpaddd  zmm2, zmm2, zmm27
  524         vpaddd  zmm3, zmm3, zmm24
  525         vpaddd  zmm0, zmm0, zmm5
  526         vpaddd  zmm1, zmm1, zmm6
  527         vpaddd  zmm2, zmm2, zmm7
  528         vpaddd  zmm3, zmm3, zmm4
  529         vpxord  zmm15, zmm15, zmm0
  530         vpxord  zmm12, zmm12, zmm1
  531         vpxord  zmm13, zmm13, zmm2
  532         vpxord  zmm14, zmm14, zmm3
  533         vprord  zmm15, zmm15, 16
  534         vprord  zmm12, zmm12, 16
  535         vprord  zmm13, zmm13, 16
  536         vprord  zmm14, zmm14, 16
  537         vpaddd  zmm10, zmm10, zmm15
  538         vpaddd  zmm11, zmm11, zmm12
  539         vpaddd  zmm8, zmm8, zmm13
  540         vpaddd  zmm9, zmm9, zmm14
  541         vpxord  zmm5, zmm5, zmm10
  542         vpxord  zmm6, zmm6, zmm11
  543         vpxord  zmm7, zmm7, zmm8
  544         vpxord  zmm4, zmm4, zmm9
  545         vprord  zmm5, zmm5, 12
  546         vprord  zmm6, zmm6, 12
  547         vprord  zmm7, zmm7, 12
  548         vprord  zmm4, zmm4, 12
  549         vpaddd  zmm0, zmm0, zmm21
  550         vpaddd  zmm1, zmm1, zmm16
  551         vpaddd  zmm2, zmm2, zmm31
  552         vpaddd  zmm3, zmm3, zmm17
  553         vpaddd  zmm0, zmm0, zmm5
  554         vpaddd  zmm1, zmm1, zmm6
  555         vpaddd  zmm2, zmm2, zmm7
  556         vpaddd  zmm3, zmm3, zmm4
  557         vpxord  zmm15, zmm15, zmm0
  558         vpxord  zmm12, zmm12, zmm1
  559         vpxord  zmm13, zmm13, zmm2
  560         vpxord  zmm14, zmm14, zmm3
  561         vprord  zmm15, zmm15, 8
  562         vprord  zmm12, zmm12, 8
  563         vprord  zmm13, zmm13, 8
  564         vprord  zmm14, zmm14, 8
  565         vpaddd  zmm10, zmm10, zmm15
  566         vpaddd  zmm11, zmm11, zmm12
  567         vpaddd  zmm8, zmm8, zmm13
  568         vpaddd  zmm9, zmm9, zmm14
  569         vpxord  zmm5, zmm5, zmm10
  570         vpxord  zmm6, zmm6, zmm11
  571         vpxord  zmm7, zmm7, zmm8
  572         vpxord  zmm4, zmm4, zmm9
  573         vprord  zmm5, zmm5, 7
  574         vprord  zmm6, zmm6, 7
  575         vprord  zmm7, zmm7, 7
  576         vprord  zmm4, zmm4, 7
  577         vpaddd  zmm0, zmm0, zmm26
  578         vpaddd  zmm1, zmm1, zmm28
  579         vpaddd  zmm2, zmm2, zmm30
  580         vpaddd  zmm3, zmm3, zmm29
  581         vpaddd  zmm0, zmm0, zmm4
  582         vpaddd  zmm1, zmm1, zmm5
  583         vpaddd  zmm2, zmm2, zmm6
  584         vpaddd  zmm3, zmm3, zmm7
  585         vpxord  zmm12, zmm12, zmm0
  586         vpxord  zmm13, zmm13, zmm1
  587         vpxord  zmm14, zmm14, zmm2
  588         vpxord  zmm15, zmm15, zmm3
  589         vprord  zmm12, zmm12, 16
  590         vprord  zmm13, zmm13, 16
  591         vprord  zmm14, zmm14, 16
  592         vprord  zmm15, zmm15, 16
  593         vpaddd  zmm8, zmm8, zmm12
  594         vpaddd  zmm9, zmm9, zmm13
  595         vpaddd  zmm10, zmm10, zmm14
  596         vpaddd  zmm11, zmm11, zmm15
  597         vpxord  zmm4, zmm4, zmm8
  598         vpxord  zmm5, zmm5, zmm9
  599         vpxord  zmm6, zmm6, zmm10
  600         vpxord  zmm7, zmm7, zmm11
  601         vprord  zmm4, zmm4, 12
  602         vprord  zmm5, zmm5, 12
  603         vprord  zmm6, zmm6, 12
  604         vprord  zmm7, zmm7, 12
  605         vpaddd  zmm0, zmm0, zmm23
  606         vpaddd  zmm1, zmm1, zmm25
  607         vpaddd  zmm2, zmm2, zmm19
  608         vpaddd  zmm3, zmm3, zmm31
  609         vpaddd  zmm0, zmm0, zmm4
  610         vpaddd  zmm1, zmm1, zmm5
  611         vpaddd  zmm2, zmm2, zmm6
  612         vpaddd  zmm3, zmm3, zmm7
  613         vpxord  zmm12, zmm12, zmm0
  614         vpxord  zmm13, zmm13, zmm1
  615         vpxord  zmm14, zmm14, zmm2
  616         vpxord  zmm15, zmm15, zmm3
  617         vprord  zmm12, zmm12, 8
  618         vprord  zmm13, zmm13, 8
  619         vprord  zmm14, zmm14, 8
  620         vprord  zmm15, zmm15, 8
  621         vpaddd  zmm8, zmm8, zmm12
  622         vpaddd  zmm9, zmm9, zmm13
  623         vpaddd  zmm10, zmm10, zmm14
  624         vpaddd  zmm11, zmm11, zmm15
  625         vpxord  zmm4, zmm4, zmm8
  626         vpxord  zmm5, zmm5, zmm9
  627         vpxord  zmm6, zmm6, zmm10
  628         vpxord  zmm7, zmm7, zmm11
  629         vprord  zmm4, zmm4, 7
  630         vprord  zmm5, zmm5, 7
  631         vprord  zmm6, zmm6, 7
  632         vprord  zmm7, zmm7, 7
  633         vpaddd  zmm0, zmm0, zmm20
  634         vpaddd  zmm1, zmm1, zmm27
  635         vpaddd  zmm2, zmm2, zmm21
  636         vpaddd  zmm3, zmm3, zmm17
  637         vpaddd  zmm0, zmm0, zmm5
  638         vpaddd  zmm1, zmm1, zmm6
  639         vpaddd  zmm2, zmm2, zmm7
  640         vpaddd  zmm3, zmm3, zmm4
  641         vpxord  zmm15, zmm15, zmm0
  642         vpxord  zmm12, zmm12, zmm1
  643         vpxord  zmm13, zmm13, zmm2
  644         vpxord  zmm14, zmm14, zmm3
  645         vprord  zmm15, zmm15, 16
  646         vprord  zmm12, zmm12, 16
  647         vprord  zmm13, zmm13, 16
  648         vprord  zmm14, zmm14, 16
  649         vpaddd  zmm10, zmm10, zmm15
  650         vpaddd  zmm11, zmm11, zmm12
  651         vpaddd  zmm8, zmm8, zmm13
  652         vpaddd  zmm9, zmm9, zmm14
  653         vpxord  zmm5, zmm5, zmm10
  654         vpxord  zmm6, zmm6, zmm11
  655         vpxord  zmm7, zmm7, zmm8
  656         vpxord  zmm4, zmm4, zmm9
  657         vprord  zmm5, zmm5, 12
  658         vprord  zmm6, zmm6, 12
  659         vprord  zmm7, zmm7, 12
  660         vprord  zmm4, zmm4, 12
  661         vpaddd  zmm0, zmm0, zmm16
  662         vpaddd  zmm1, zmm1, zmm18
  663         vpaddd  zmm2, zmm2, zmm24
  664         vpaddd  zmm3, zmm3, zmm22
  665         vpaddd  zmm0, zmm0, zmm5
  666         vpaddd  zmm1, zmm1, zmm6
  667         vpaddd  zmm2, zmm2, zmm7
  668         vpaddd  zmm3, zmm3, zmm4
  669         vpxord  zmm15, zmm15, zmm0
  670         vpxord  zmm12, zmm12, zmm1
  671         vpxord  zmm13, zmm13, zmm2
  672         vpxord  zmm14, zmm14, zmm3
  673         vprord  zmm15, zmm15, 8
  674         vprord  zmm12, zmm12, 8
  675         vprord  zmm13, zmm13, 8
  676         vprord  zmm14, zmm14, 8
  677         vpaddd  zmm10, zmm10, zmm15
  678         vpaddd  zmm11, zmm11, zmm12
  679         vpaddd  zmm8, zmm8, zmm13
  680         vpaddd  zmm9, zmm9, zmm14
  681         vpxord  zmm5, zmm5, zmm10
  682         vpxord  zmm6, zmm6, zmm11
  683         vpxord  zmm7, zmm7, zmm8
  684         vpxord  zmm4, zmm4, zmm9
  685         vprord  zmm5, zmm5, 7
  686         vprord  zmm6, zmm6, 7
  687         vprord  zmm7, zmm7, 7
  688         vprord  zmm4, zmm4, 7
  689         vpaddd  zmm0, zmm0, zmm28
  690         vpaddd  zmm1, zmm1, zmm25
  691         vpaddd  zmm2, zmm2, zmm31
  692         vpaddd  zmm3, zmm3, zmm30
  693         vpaddd  zmm0, zmm0, zmm4
  694         vpaddd  zmm1, zmm1, zmm5
  695         vpaddd  zmm2, zmm2, zmm6
  696         vpaddd  zmm3, zmm3, zmm7
  697         vpxord  zmm12, zmm12, zmm0
  698         vpxord  zmm13, zmm13, zmm1
  699         vpxord  zmm14, zmm14, zmm2
  700         vpxord  zmm15, zmm15, zmm3
  701         vprord  zmm12, zmm12, 16
  702         vprord  zmm13, zmm13, 16
  703         vprord  zmm14, zmm14, 16
  704         vprord  zmm15, zmm15, 16
  705         vpaddd  zmm8, zmm8, zmm12
  706         vpaddd  zmm9, zmm9, zmm13
  707         vpaddd  zmm10, zmm10, zmm14
  708         vpaddd  zmm11, zmm11, zmm15
  709         vpxord  zmm4, zmm4, zmm8
  710         vpxord  zmm5, zmm5, zmm9
  711         vpxord  zmm6, zmm6, zmm10
  712         vpxord  zmm7, zmm7, zmm11
  713         vprord  zmm4, zmm4, 12
  714         vprord  zmm5, zmm5, 12
  715         vprord  zmm6, zmm6, 12
  716         vprord  zmm7, zmm7, 12
  717         vpaddd  zmm0, zmm0, zmm29
  718         vpaddd  zmm1, zmm1, zmm27
  719         vpaddd  zmm2, zmm2, zmm26
  720         vpaddd  zmm3, zmm3, zmm24
  721         vpaddd  zmm0, zmm0, zmm4
  722         vpaddd  zmm1, zmm1, zmm5
  723         vpaddd  zmm2, zmm2, zmm6
  724         vpaddd  zmm3, zmm3, zmm7
  725         vpxord  zmm12, zmm12, zmm0
  726         vpxord  zmm13, zmm13, zmm1
  727         vpxord  zmm14, zmm14, zmm2
  728         vpxord  zmm15, zmm15, zmm3
  729         vprord  zmm12, zmm12, 8
  730         vprord  zmm13, zmm13, 8
  731         vprord  zmm14, zmm14, 8
  732         vprord  zmm15, zmm15, 8
  733         vpaddd  zmm8, zmm8, zmm12
  734         vpaddd  zmm9, zmm9, zmm13
  735         vpaddd  zmm10, zmm10, zmm14
  736         vpaddd  zmm11, zmm11, zmm15
  737         vpxord  zmm4, zmm4, zmm8
  738         vpxord  zmm5, zmm5, zmm9
  739         vpxord  zmm6, zmm6, zmm10
  740         vpxord  zmm7, zmm7, zmm11
  741         vprord  zmm4, zmm4, 7
  742         vprord  zmm5, zmm5, 7
  743         vprord  zmm6, zmm6, 7
  744         vprord  zmm7, zmm7, 7
  745         vpaddd  zmm0, zmm0, zmm23
  746         vpaddd  zmm1, zmm1, zmm21
  747         vpaddd  zmm2, zmm2, zmm16
  748         vpaddd  zmm3, zmm3, zmm22
  749         vpaddd  zmm0, zmm0, zmm5
  750         vpaddd  zmm1, zmm1, zmm6
  751         vpaddd  zmm2, zmm2, zmm7
  752         vpaddd  zmm3, zmm3, zmm4
  753         vpxord  zmm15, zmm15, zmm0
  754         vpxord  zmm12, zmm12, zmm1
  755         vpxord  zmm13, zmm13, zmm2
  756         vpxord  zmm14, zmm14, zmm3
  757         vprord  zmm15, zmm15, 16
  758         vprord  zmm12, zmm12, 16
  759         vprord  zmm13, zmm13, 16
  760         vprord  zmm14, zmm14, 16
  761         vpaddd  zmm10, zmm10, zmm15
  762         vpaddd  zmm11, zmm11, zmm12
  763         vpaddd  zmm8, zmm8, zmm13
  764         vpaddd  zmm9, zmm9, zmm14
  765         vpxord  zmm5, zmm5, zmm10
  766         vpxord  zmm6, zmm6, zmm11
  767         vpxord  zmm7, zmm7, zmm8
  768         vpxord  zmm4, zmm4, zmm9
  769         vprord  zmm5, zmm5, 12
  770         vprord  zmm6, zmm6, 12
  771         vprord  zmm7, zmm7, 12
  772         vprord  zmm4, zmm4, 12
  773         vpaddd  zmm0, zmm0, zmm18
  774         vpaddd  zmm1, zmm1, zmm19
  775         vpaddd  zmm2, zmm2, zmm17
  776         vpaddd  zmm3, zmm3, zmm20
  777         vpaddd  zmm0, zmm0, zmm5
  778         vpaddd  zmm1, zmm1, zmm6
  779         vpaddd  zmm2, zmm2, zmm7
  780         vpaddd  zmm3, zmm3, zmm4
  781         vpxord  zmm15, zmm15, zmm0
  782         vpxord  zmm12, zmm12, zmm1
  783         vpxord  zmm13, zmm13, zmm2
  784         vpxord  zmm14, zmm14, zmm3
  785         vprord  zmm15, zmm15, 8
  786         vprord  zmm12, zmm12, 8
  787         vprord  zmm13, zmm13, 8
  788         vprord  zmm14, zmm14, 8
  789         vpaddd  zmm10, zmm10, zmm15
  790         vpaddd  zmm11, zmm11, zmm12
  791         vpaddd  zmm8, zmm8, zmm13
  792         vpaddd  zmm9, zmm9, zmm14
  793         vpxord  zmm5, zmm5, zmm10
  794         vpxord  zmm6, zmm6, zmm11
  795         vpxord  zmm7, zmm7, zmm8
  796         vpxord  zmm4, zmm4, zmm9
  797         vprord  zmm5, zmm5, 7
  798         vprord  zmm6, zmm6, 7
  799         vprord  zmm7, zmm7, 7
  800         vprord  zmm4, zmm4, 7
  801         vpaddd  zmm0, zmm0, zmm25
  802         vpaddd  zmm1, zmm1, zmm27
  803         vpaddd  zmm2, zmm2, zmm24
  804         vpaddd  zmm3, zmm3, zmm31
  805         vpaddd  zmm0, zmm0, zmm4
  806         vpaddd  zmm1, zmm1, zmm5
  807         vpaddd  zmm2, zmm2, zmm6
  808         vpaddd  zmm3, zmm3, zmm7
  809         vpxord  zmm12, zmm12, zmm0
  810         vpxord  zmm13, zmm13, zmm1
  811         vpxord  zmm14, zmm14, zmm2
  812         vpxord  zmm15, zmm15, zmm3
  813         vprord  zmm12, zmm12, 16
  814         vprord  zmm13, zmm13, 16
  815         vprord  zmm14, zmm14, 16
  816         vprord  zmm15, zmm15, 16
  817         vpaddd  zmm8, zmm8, zmm12
  818         vpaddd  zmm9, zmm9, zmm13
  819         vpaddd  zmm10, zmm10, zmm14
  820         vpaddd  zmm11, zmm11, zmm15
  821         vpxord  zmm4, zmm4, zmm8
  822         vpxord  zmm5, zmm5, zmm9
  823         vpxord  zmm6, zmm6, zmm10
  824         vpxord  zmm7, zmm7, zmm11
  825         vprord  zmm4, zmm4, 12
  826         vprord  zmm5, zmm5, 12
  827         vprord  zmm6, zmm6, 12
  828         vprord  zmm7, zmm7, 12
  829         vpaddd  zmm0, zmm0, zmm30
  830         vpaddd  zmm1, zmm1, zmm21
  831         vpaddd  zmm2, zmm2, zmm28
  832         vpaddd  zmm3, zmm3, zmm17
  833         vpaddd  zmm0, zmm0, zmm4
  834         vpaddd  zmm1, zmm1, zmm5
  835         vpaddd  zmm2, zmm2, zmm6
  836         vpaddd  zmm3, zmm3, zmm7
  837         vpxord  zmm12, zmm12, zmm0
  838         vpxord  zmm13, zmm13, zmm1
  839         vpxord  zmm14, zmm14, zmm2
  840         vpxord  zmm15, zmm15, zmm3
  841         vprord  zmm12, zmm12, 8
  842         vprord  zmm13, zmm13, 8
  843         vprord  zmm14, zmm14, 8
  844         vprord  zmm15, zmm15, 8
  845         vpaddd  zmm8, zmm8, zmm12
  846         vpaddd  zmm9, zmm9, zmm13
  847         vpaddd  zmm10, zmm10, zmm14
  848         vpaddd  zmm11, zmm11, zmm15
  849         vpxord  zmm4, zmm4, zmm8
  850         vpxord  zmm5, zmm5, zmm9
  851         vpxord  zmm6, zmm6, zmm10
  852         vpxord  zmm7, zmm7, zmm11
  853         vprord  zmm4, zmm4, 7
  854         vprord  zmm5, zmm5, 7
  855         vprord  zmm6, zmm6, 7
  856         vprord  zmm7, zmm7, 7
  857         vpaddd  zmm0, zmm0, zmm29
  858         vpaddd  zmm1, zmm1, zmm16
  859         vpaddd  zmm2, zmm2, zmm18
  860         vpaddd  zmm3, zmm3, zmm20
  861         vpaddd  zmm0, zmm0, zmm5
  862         vpaddd  zmm1, zmm1, zmm6
  863         vpaddd  zmm2, zmm2, zmm7
  864         vpaddd  zmm3, zmm3, zmm4
  865         vpxord  zmm15, zmm15, zmm0
  866         vpxord  zmm12, zmm12, zmm1
  867         vpxord  zmm13, zmm13, zmm2
  868         vpxord  zmm14, zmm14, zmm3
  869         vprord  zmm15, zmm15, 16
  870         vprord  zmm12, zmm12, 16
  871         vprord  zmm13, zmm13, 16
  872         vprord  zmm14, zmm14, 16
  873         vpaddd  zmm10, zmm10, zmm15
  874         vpaddd  zmm11, zmm11, zmm12
  875         vpaddd  zmm8, zmm8, zmm13
  876         vpaddd  zmm9, zmm9, zmm14
  877         vpxord  zmm5, zmm5, zmm10
  878         vpxord  zmm6, zmm6, zmm11
  879         vpxord  zmm7, zmm7, zmm8
  880         vpxord  zmm4, zmm4, zmm9
  881         vprord  zmm5, zmm5, 12
  882         vprord  zmm6, zmm6, 12
  883         vprord  zmm7, zmm7, 12
  884         vprord  zmm4, zmm4, 12
  885         vpaddd  zmm0, zmm0, zmm19
  886         vpaddd  zmm1, zmm1, zmm26
  887         vpaddd  zmm2, zmm2, zmm22
  888         vpaddd  zmm3, zmm3, zmm23
  889         vpaddd  zmm0, zmm0, zmm5
  890         vpaddd  zmm1, zmm1, zmm6
  891         vpaddd  zmm2, zmm2, zmm7
  892         vpaddd  zmm3, zmm3, zmm4
  893         vpxord  zmm15, zmm15, zmm0
  894         vpxord  zmm12, zmm12, zmm1
  895         vpxord  zmm13, zmm13, zmm2
  896         vpxord  zmm14, zmm14, zmm3
  897         vprord  zmm15, zmm15, 8
  898         vprord  zmm12, zmm12, 8
  899         vprord  zmm13, zmm13, 8
  900         vprord  zmm14, zmm14, 8
  901         vpaddd  zmm10, zmm10, zmm15
  902         vpaddd  zmm11, zmm11, zmm12
  903         vpaddd  zmm8, zmm8, zmm13
  904         vpaddd  zmm9, zmm9, zmm14
  905         vpxord  zmm5, zmm5, zmm10
  906         vpxord  zmm6, zmm6, zmm11
  907         vpxord  zmm7, zmm7, zmm8
  908         vpxord  zmm4, zmm4, zmm9
  909         vprord  zmm5, zmm5, 7
  910         vprord  zmm6, zmm6, 7
  911         vprord  zmm7, zmm7, 7
  912         vprord  zmm4, zmm4, 7
  913         vpaddd  zmm0, zmm0, zmm27
  914         vpaddd  zmm1, zmm1, zmm21
  915         vpaddd  zmm2, zmm2, zmm17
  916         vpaddd  zmm3, zmm3, zmm24
  917         vpaddd  zmm0, zmm0, zmm4
  918         vpaddd  zmm1, zmm1, zmm5
  919         vpaddd  zmm2, zmm2, zmm6
  920         vpaddd  zmm3, zmm3, zmm7
  921         vpxord  zmm12, zmm12, zmm0
  922         vpxord  zmm13, zmm13, zmm1
  923         vpxord  zmm14, zmm14, zmm2
  924         vpxord  zmm15, zmm15, zmm3
  925         vprord  zmm12, zmm12, 16
  926         vprord  zmm13, zmm13, 16
  927         vprord  zmm14, zmm14, 16
  928         vprord  zmm15, zmm15, 16
  929         vpaddd  zmm8, zmm8, zmm12
  930         vpaddd  zmm9, zmm9, zmm13
  931         vpaddd  zmm10, zmm10, zmm14
  932         vpaddd  zmm11, zmm11, zmm15
  933         vpxord  zmm4, zmm4, zmm8
  934         vpxord  zmm5, zmm5, zmm9
  935         vpxord  zmm6, zmm6, zmm10
  936         vpxord  zmm7, zmm7, zmm11
  937         vprord  zmm4, zmm4, 12
  938         vprord  zmm5, zmm5, 12
  939         vprord  zmm6, zmm6, 12
  940         vprord  zmm7, zmm7, 12
  941         vpaddd  zmm0, zmm0, zmm31
  942         vpaddd  zmm1, zmm1, zmm16
  943         vpaddd  zmm2, zmm2, zmm25
  944         vpaddd  zmm3, zmm3, zmm22
  945         vpaddd  zmm0, zmm0, zmm4
  946         vpaddd  zmm1, zmm1, zmm5
  947         vpaddd  zmm2, zmm2, zmm6
  948         vpaddd  zmm3, zmm3, zmm7
  949         vpxord  zmm12, zmm12, zmm0
  950         vpxord  zmm13, zmm13, zmm1
  951         vpxord  zmm14, zmm14, zmm2
  952         vpxord  zmm15, zmm15, zmm3
  953         vprord  zmm12, zmm12, 8
  954         vprord  zmm13, zmm13, 8
  955         vprord  zmm14, zmm14, 8
  956         vprord  zmm15, zmm15, 8
  957         vpaddd  zmm8, zmm8, zmm12
  958         vpaddd  zmm9, zmm9, zmm13
  959         vpaddd  zmm10, zmm10, zmm14
  960         vpaddd  zmm11, zmm11, zmm15
  961         vpxord  zmm4, zmm4, zmm8
  962         vpxord  zmm5, zmm5, zmm9
  963         vpxord  zmm6, zmm6, zmm10
  964         vpxord  zmm7, zmm7, zmm11
  965         vprord  zmm4, zmm4, 7
  966         vprord  zmm5, zmm5, 7
  967         vprord  zmm6, zmm6, 7
  968         vprord  zmm7, zmm7, 7
  969         vpaddd  zmm0, zmm0, zmm30
  970         vpaddd  zmm1, zmm1, zmm18
  971         vpaddd  zmm2, zmm2, zmm19
  972         vpaddd  zmm3, zmm3, zmm23
  973         vpaddd  zmm0, zmm0, zmm5
  974         vpaddd  zmm1, zmm1, zmm6
  975         vpaddd  zmm2, zmm2, zmm7
  976         vpaddd  zmm3, zmm3, zmm4
  977         vpxord  zmm15, zmm15, zmm0
  978         vpxord  zmm12, zmm12, zmm1
  979         vpxord  zmm13, zmm13, zmm2
  980         vpxord  zmm14, zmm14, zmm3
  981         vprord  zmm15, zmm15, 16
  982         vprord  zmm12, zmm12, 16
  983         vprord  zmm13, zmm13, 16
  984         vprord  zmm14, zmm14, 16
  985         vpaddd  zmm10, zmm10, zmm15
  986         vpaddd  zmm11, zmm11, zmm12
  987         vpaddd  zmm8, zmm8, zmm13
  988         vpaddd  zmm9, zmm9, zmm14
  989         vpxord  zmm5, zmm5, zmm10
  990         vpxord  zmm6, zmm6, zmm11
  991         vpxord  zmm7, zmm7, zmm8
  992         vpxord  zmm4, zmm4, zmm9
  993         vprord  zmm5, zmm5, 12
  994         vprord  zmm6, zmm6, 12
  995         vprord  zmm7, zmm7, 12
  996         vprord  zmm4, zmm4, 12
  997         vpaddd  zmm0, zmm0, zmm26
  998         vpaddd  zmm1, zmm1, zmm28
  999         vpaddd  zmm2, zmm2, zmm20
 1000         vpaddd  zmm3, zmm3, zmm29
 1001         vpaddd  zmm0, zmm0, zmm5
 1002         vpaddd  zmm1, zmm1, zmm6
 1003         vpaddd  zmm2, zmm2, zmm7
 1004         vpaddd  zmm3, zmm3, zmm4
 1005         vpxord  zmm15, zmm15, zmm0
 1006         vpxord  zmm12, zmm12, zmm1
 1007         vpxord  zmm13, zmm13, zmm2
 1008         vpxord  zmm14, zmm14, zmm3
 1009         vprord  zmm15, zmm15, 8
 1010         vprord  zmm12, zmm12, 8
 1011         vprord  zmm13, zmm13, 8
 1012         vprord  zmm14, zmm14, 8
 1013         vpaddd  zmm10, zmm10, zmm15
 1014         vpaddd  zmm11, zmm11, zmm12
 1015         vpaddd  zmm8, zmm8, zmm13
 1016         vpaddd  zmm9, zmm9, zmm14
 1017         vpxord  zmm5, zmm5, zmm10
 1018         vpxord  zmm6, zmm6, zmm11
 1019         vpxord  zmm7, zmm7, zmm8
 1020         vpxord  zmm4, zmm4, zmm9
 1021         vprord  zmm5, zmm5, 7
 1022         vprord  zmm6, zmm6, 7
 1023         vprord  zmm7, zmm7, 7
 1024         vprord  zmm4, zmm4, 7
 1025         vpxord  zmm0, zmm0, zmm8
 1026         vpxord  zmm1, zmm1, zmm9
 1027         vpxord  zmm2, zmm2, zmm10
 1028         vpxord  zmm3, zmm3, zmm11
 1029         vpxord  zmm4, zmm4, zmm12
 1030         vpxord  zmm5, zmm5, zmm13
 1031         vpxord  zmm6, zmm6, zmm14
 1032         vpxord  zmm7, zmm7, zmm15
 1033         movzx   eax, byte ptr [rbp+0x38]
 1034         jne     9b
 1035         mov     rbx, qword ptr [rbp+0x50]
 1036         vpunpckldq zmm16, zmm0, zmm1
 1037         vpunpckhdq zmm17, zmm0, zmm1
 1038         vpunpckldq zmm18, zmm2, zmm3
 1039         vpunpckhdq zmm19, zmm2, zmm3
 1040         vpunpckldq zmm20, zmm4, zmm5
 1041         vpunpckhdq zmm21, zmm4, zmm5
 1042         vpunpckldq zmm22, zmm6, zmm7
 1043         vpunpckhdq zmm23, zmm6, zmm7
 1044         vpunpcklqdq zmm0, zmm16, zmm18
 1045         vpunpckhqdq zmm1, zmm16, zmm18
 1046         vpunpcklqdq zmm2, zmm17, zmm19
 1047         vpunpckhqdq zmm3, zmm17, zmm19
 1048         vpunpcklqdq zmm4, zmm20, zmm22
 1049         vpunpckhqdq zmm5, zmm20, zmm22
 1050         vpunpcklqdq zmm6, zmm21, zmm23
 1051         vpunpckhqdq zmm7, zmm21, zmm23
 1052         vshufi32x4 zmm16, zmm0, zmm4, 0x88
 1053         vshufi32x4 zmm17, zmm1, zmm5, 0x88
 1054         vshufi32x4 zmm18, zmm2, zmm6, 0x88
 1055         vshufi32x4 zmm19, zmm3, zmm7, 0x88
 1056         vshufi32x4 zmm20, zmm0, zmm4, 0xDD
 1057         vshufi32x4 zmm21, zmm1, zmm5, 0xDD
 1058         vshufi32x4 zmm22, zmm2, zmm6, 0xDD
 1059         vshufi32x4 zmm23, zmm3, zmm7, 0xDD
 1060         vshufi32x4 zmm0, zmm16, zmm17, 0x88
 1061         vshufi32x4 zmm1, zmm18, zmm19, 0x88
 1062         vshufi32x4 zmm2, zmm20, zmm21, 0x88
 1063         vshufi32x4 zmm3, zmm22, zmm23, 0x88
 1064         vshufi32x4 zmm4, zmm16, zmm17, 0xDD
 1065         vshufi32x4 zmm5, zmm18, zmm19, 0xDD
 1066         vshufi32x4 zmm6, zmm20, zmm21, 0xDD
 1067         vshufi32x4 zmm7, zmm22, zmm23, 0xDD
 1068         vmovdqu32 zmmword ptr [rbx], zmm0
 1069         vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1
 1070         vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2
 1071         vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3
 1072         vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4
 1073         vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5
 1074         vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6
 1075         vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7
 1076         vmovdqa32 zmm0, zmmword ptr [rsp]
 1077         vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40]
 1078         vmovdqa32 zmm2, zmm0
 1079         vpaddd  zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16}
 1080         vpcmpltud k2, zmm2, zmm0
 1081         vpaddd  zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16}
 1082         vmovdqa32 zmmword ptr [rsp], zmm2
 1083         vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1
 1084         add     rdi, 128
 1085         add     rbx, 512
 1086         mov     qword ptr [rbp+0x50], rbx
 1087         sub     rsi, 16
 1088         cmp     rsi, 16
 1089         jnc     2b
 1090         test    rsi, rsi
 1091         jnz     3f
 1092 4:
 1093         vzeroupper
 1094         mov     rsp, rbp
 1095         pop     rbp
 1096         pop     rbx
 1097         pop     r12
 1098         pop     r13
 1099         pop     r14
 1100         pop     r15
 1101         RET
 1102 .p2align 6
 1103 3:
 1104         test    esi, 0x8
 1105         je      3f
 1106         vpbroadcastd ymm0, dword ptr [rcx]
 1107         vpbroadcastd ymm1, dword ptr [rcx+0x4]
 1108         vpbroadcastd ymm2, dword ptr [rcx+0x8]
 1109         vpbroadcastd ymm3, dword ptr [rcx+0xC]
 1110         vpbroadcastd ymm4, dword ptr [rcx+0x10]
 1111         vpbroadcastd ymm5, dword ptr [rcx+0x14]
 1112         vpbroadcastd ymm6, dword ptr [rcx+0x18]
 1113         vpbroadcastd ymm7, dword ptr [rcx+0x1C]
 1114         mov     r8, qword ptr [rdi]
 1115         mov     r9, qword ptr [rdi+0x8]
 1116         mov     r10, qword ptr [rdi+0x10]
 1117         mov     r11, qword ptr [rdi+0x18]
 1118         mov     r12, qword ptr [rdi+0x20]
 1119         mov     r13, qword ptr [rdi+0x28]
 1120         mov     r14, qword ptr [rdi+0x30]
 1121         mov     r15, qword ptr [rdi+0x38]
 1122         movzx   eax, byte ptr [rbp+0x38]
 1123         movzx   ebx, byte ptr [rbp+0x40]
 1124         or      eax, ebx
 1125         xor     edx, edx
 1126 2:
 1127         movzx   ebx, byte ptr [rbp+0x48]
 1128         or      ebx, eax
 1129         add     rdx, 64
 1130         cmp     rdx, qword ptr [rsp+0x80]
 1131         cmove   eax, ebx
 1132         mov     dword ptr [rsp+0x88], eax
 1133         vmovups xmm8, xmmword ptr [r8+rdx-0x40]
 1134         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01
 1135         vmovups xmm9, xmmword ptr [r9+rdx-0x40]
 1136         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01
 1137         vunpcklpd ymm12, ymm8, ymm9
 1138         vunpckhpd ymm13, ymm8, ymm9
 1139         vmovups xmm10, xmmword ptr [r10+rdx-0x40]
 1140         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01
 1141         vmovups xmm11, xmmword ptr [r11+rdx-0x40]
 1142         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01
 1143         vunpcklpd ymm14, ymm10, ymm11
 1144         vunpckhpd ymm15, ymm10, ymm11
 1145         vshufps ymm16, ymm12, ymm14, 136
 1146         vshufps ymm17, ymm12, ymm14, 221
 1147         vshufps ymm18, ymm13, ymm15, 136
 1148         vshufps ymm19, ymm13, ymm15, 221
 1149         vmovups xmm8, xmmword ptr [r8+rdx-0x30]
 1150         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01
 1151         vmovups xmm9, xmmword ptr [r9+rdx-0x30]
 1152         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01
 1153         vunpcklpd ymm12, ymm8, ymm9
 1154         vunpckhpd ymm13, ymm8, ymm9
 1155         vmovups xmm10, xmmword ptr [r10+rdx-0x30]
 1156         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01
 1157         vmovups xmm11, xmmword ptr [r11+rdx-0x30]
 1158         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01
 1159         vunpcklpd ymm14, ymm10, ymm11
 1160         vunpckhpd ymm15, ymm10, ymm11
 1161         vshufps ymm20, ymm12, ymm14, 136
 1162         vshufps ymm21, ymm12, ymm14, 221
 1163         vshufps ymm22, ymm13, ymm15, 136
 1164         vshufps ymm23, ymm13, ymm15, 221
 1165         vmovups xmm8, xmmword ptr [r8+rdx-0x20]
 1166         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01
 1167         vmovups xmm9, xmmword ptr [r9+rdx-0x20]
 1168         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01
 1169         vunpcklpd ymm12, ymm8, ymm9
 1170         vunpckhpd ymm13, ymm8, ymm9
 1171         vmovups xmm10, xmmword ptr [r10+rdx-0x20]
 1172         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01
 1173         vmovups xmm11, xmmword ptr [r11+rdx-0x20]
 1174         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01
 1175         vunpcklpd ymm14, ymm10, ymm11
 1176         vunpckhpd ymm15, ymm10, ymm11
 1177         vshufps ymm24, ymm12, ymm14, 136
 1178         vshufps ymm25, ymm12, ymm14, 221
 1179         vshufps ymm26, ymm13, ymm15, 136
 1180         vshufps ymm27, ymm13, ymm15, 221
 1181         vmovups xmm8, xmmword ptr [r8+rdx-0x10]
 1182         vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01
 1183         vmovups xmm9, xmmword ptr [r9+rdx-0x10]
 1184         vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01
 1185         vunpcklpd ymm12, ymm8, ymm9
 1186         vunpckhpd ymm13, ymm8, ymm9
 1187         vmovups xmm10, xmmword ptr [r10+rdx-0x10]
 1188         vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01
 1189         vmovups xmm11, xmmword ptr [r11+rdx-0x10]
 1190         vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01
 1191         vunpcklpd ymm14, ymm10, ymm11
 1192         vunpckhpd ymm15, ymm10, ymm11
 1193         vshufps ymm28, ymm12, ymm14, 136
 1194         vshufps ymm29, ymm12, ymm14, 221
 1195         vshufps ymm30, ymm13, ymm15, 136
 1196         vshufps ymm31, ymm13, ymm15, 221
 1197         vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip]
 1198         vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip]
 1199         vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip]
 1200         vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip]
 1201         vmovdqa ymm12, ymmword ptr [rsp]
 1202         vmovdqa ymm13, ymmword ptr [rsp+0x40]
 1203         vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip]
 1204         vpbroadcastd ymm15, dword ptr [rsp+0x88]
 1205         vpaddd  ymm0, ymm0, ymm16
 1206         vpaddd  ymm1, ymm1, ymm18
 1207         vpaddd  ymm2, ymm2, ymm20
 1208         vpaddd  ymm3, ymm3, ymm22
 1209         vpaddd  ymm0, ymm0, ymm4
 1210         vpaddd  ymm1, ymm1, ymm5
 1211         vpaddd  ymm2, ymm2, ymm6
 1212         vpaddd  ymm3, ymm3, ymm7
 1213         vpxord  ymm12, ymm12, ymm0
 1214         vpxord  ymm13, ymm13, ymm1
 1215         vpxord  ymm14, ymm14, ymm2
 1216         vpxord  ymm15, ymm15, ymm3
 1217         vprord  ymm12, ymm12, 16
 1218         vprord  ymm13, ymm13, 16
 1219         vprord  ymm14, ymm14, 16
 1220         vprord  ymm15, ymm15, 16
 1221         vpaddd  ymm8, ymm8, ymm12
 1222         vpaddd  ymm9, ymm9, ymm13
 1223         vpaddd  ymm10, ymm10, ymm14
 1224         vpaddd  ymm11, ymm11, ymm15
 1225         vpxord  ymm4, ymm4, ymm8
 1226         vpxord  ymm5, ymm5, ymm9
 1227         vpxord  ymm6, ymm6, ymm10
 1228         vpxord  ymm7, ymm7, ymm11
 1229         vprord  ymm4, ymm4, 12
 1230         vprord  ymm5, ymm5, 12
 1231         vprord  ymm6, ymm6, 12
 1232         vprord  ymm7, ymm7, 12
 1233         vpaddd  ymm0, ymm0, ymm17
 1234         vpaddd  ymm1, ymm1, ymm19
 1235         vpaddd  ymm2, ymm2, ymm21
 1236         vpaddd  ymm3, ymm3, ymm23
 1237         vpaddd  ymm0, ymm0, ymm4
 1238         vpaddd  ymm1, ymm1, ymm5
 1239         vpaddd  ymm2, ymm2, ymm6
 1240         vpaddd  ymm3, ymm3, ymm7
 1241         vpxord  ymm12, ymm12, ymm0
 1242         vpxord  ymm13, ymm13, ymm1
 1243         vpxord  ymm14, ymm14, ymm2
 1244         vpxord  ymm15, ymm15, ymm3
 1245         vprord  ymm12, ymm12, 8
 1246         vprord  ymm13, ymm13, 8
 1247         vprord  ymm14, ymm14, 8
 1248         vprord  ymm15, ymm15, 8
 1249         vpaddd  ymm8, ymm8, ymm12
 1250         vpaddd  ymm9, ymm9, ymm13
 1251         vpaddd  ymm10, ymm10, ymm14
 1252         vpaddd  ymm11, ymm11, ymm15
 1253         vpxord  ymm4, ymm4, ymm8
 1254         vpxord  ymm5, ymm5, ymm9
 1255         vpxord  ymm6, ymm6, ymm10
 1256         vpxord  ymm7, ymm7, ymm11
 1257         vprord  ymm4, ymm4, 7
 1258         vprord  ymm5, ymm5, 7
 1259         vprord  ymm6, ymm6, 7
 1260         vprord  ymm7, ymm7, 7
 1261         vpaddd  ymm0, ymm0, ymm24
 1262         vpaddd  ymm1, ymm1, ymm26
 1263         vpaddd  ymm2, ymm2, ymm28
 1264         vpaddd  ymm3, ymm3, ymm30
 1265         vpaddd  ymm0, ymm0, ymm5
 1266         vpaddd  ymm1, ymm1, ymm6
 1267         vpaddd  ymm2, ymm2, ymm7
 1268         vpaddd  ymm3, ymm3, ymm4
 1269         vpxord  ymm15, ymm15, ymm0
 1270         vpxord  ymm12, ymm12, ymm1
 1271         vpxord  ymm13, ymm13, ymm2
 1272         vpxord  ymm14, ymm14, ymm3
 1273         vprord  ymm15, ymm15, 16
 1274         vprord  ymm12, ymm12, 16
 1275         vprord  ymm13, ymm13, 16
 1276         vprord  ymm14, ymm14, 16
 1277         vpaddd  ymm10, ymm10, ymm15
 1278         vpaddd  ymm11, ymm11, ymm12
 1279         vpaddd  ymm8, ymm8, ymm13
 1280         vpaddd  ymm9, ymm9, ymm14
 1281         vpxord  ymm5, ymm5, ymm10
 1282         vpxord  ymm6, ymm6, ymm11
 1283         vpxord  ymm7, ymm7, ymm8
 1284         vpxord  ymm4, ymm4, ymm9
 1285         vprord  ymm5, ymm5, 12
 1286         vprord  ymm6, ymm6, 12
 1287         vprord  ymm7, ymm7, 12
 1288         vprord  ymm4, ymm4, 12
 1289         vpaddd  ymm0, ymm0, ymm25
 1290         vpaddd  ymm1, ymm1, ymm27
 1291         vpaddd  ymm2, ymm2, ymm29
 1292         vpaddd  ymm3, ymm3, ymm31
 1293         vpaddd  ymm0, ymm0, ymm5
 1294         vpaddd  ymm1, ymm1, ymm6
 1295         vpaddd  ymm2, ymm2, ymm7
 1296         vpaddd  ymm3, ymm3, ymm4
 1297         vpxord  ymm15, ymm15, ymm0
 1298         vpxord  ymm12, ymm12, ymm1
 1299         vpxord  ymm13, ymm13, ymm2
 1300         vpxord  ymm14, ymm14, ymm3
 1301         vprord  ymm15, ymm15, 8
 1302         vprord  ymm12, ymm12, 8
 1303         vprord  ymm13, ymm13, 8
 1304         vprord  ymm14, ymm14, 8
 1305         vpaddd  ymm10, ymm10, ymm15
 1306         vpaddd  ymm11, ymm11, ymm12
 1307         vpaddd  ymm8, ymm8, ymm13
 1308         vpaddd  ymm9, ymm9, ymm14
 1309         vpxord  ymm5, ymm5, ymm10
 1310         vpxord  ymm6, ymm6, ymm11
 1311         vpxord  ymm7, ymm7, ymm8
 1312         vpxord  ymm4, ymm4, ymm9
 1313         vprord  ymm5, ymm5, 7
 1314         vprord  ymm6, ymm6, 7
 1315         vprord  ymm7, ymm7, 7
 1316         vprord  ymm4, ymm4, 7
 1317         vpaddd  ymm0, ymm0, ymm18
 1318         vpaddd  ymm1, ymm1, ymm19
 1319         vpaddd  ymm2, ymm2, ymm23
 1320         vpaddd  ymm3, ymm3, ymm20
 1321         vpaddd  ymm0, ymm0, ymm4
 1322         vpaddd  ymm1, ymm1, ymm5
 1323         vpaddd  ymm2, ymm2, ymm6
 1324         vpaddd  ymm3, ymm3, ymm7
 1325         vpxord  ymm12, ymm12, ymm0
 1326         vpxord  ymm13, ymm13, ymm1
 1327         vpxord  ymm14, ymm14, ymm2
 1328         vpxord  ymm15, ymm15, ymm3
 1329         vprord  ymm12, ymm12, 16
 1330         vprord  ymm13, ymm13, 16
 1331         vprord  ymm14, ymm14, 16
 1332         vprord  ymm15, ymm15, 16
 1333         vpaddd  ymm8, ymm8, ymm12
 1334         vpaddd  ymm9, ymm9, ymm13
 1335         vpaddd  ymm10, ymm10, ymm14
 1336         vpaddd  ymm11, ymm11, ymm15
 1337         vpxord  ymm4, ymm4, ymm8
 1338         vpxord  ymm5, ymm5, ymm9
 1339         vpxord  ymm6, ymm6, ymm10
 1340         vpxord  ymm7, ymm7, ymm11
 1341         vprord  ymm4, ymm4, 12
 1342         vprord  ymm5, ymm5, 12
 1343         vprord  ymm6, ymm6, 12
 1344         vprord  ymm7, ymm7, 12
 1345         vpaddd  ymm0, ymm0, ymm22
 1346         vpaddd  ymm1, ymm1, ymm26
 1347         vpaddd  ymm2, ymm2, ymm16
 1348         vpaddd  ymm3, ymm3, ymm29
 1349         vpaddd  ymm0, ymm0, ymm4
 1350         vpaddd  ymm1, ymm1, ymm5
 1351         vpaddd  ymm2, ymm2, ymm6
 1352         vpaddd  ymm3, ymm3, ymm7
 1353         vpxord  ymm12, ymm12, ymm0
 1354         vpxord  ymm13, ymm13, ymm1
 1355         vpxord  ymm14, ymm14, ymm2
 1356         vpxord  ymm15, ymm15, ymm3
 1357         vprord  ymm12, ymm12, 8
 1358         vprord  ymm13, ymm13, 8
 1359         vprord  ymm14, ymm14, 8
 1360         vprord  ymm15, ymm15, 8
 1361         vpaddd  ymm8, ymm8, ymm12
 1362         vpaddd  ymm9, ymm9, ymm13
 1363         vpaddd  ymm10, ymm10, ymm14
 1364         vpaddd  ymm11, ymm11, ymm15
 1365         vpxord  ymm4, ymm4, ymm8
 1366         vpxord  ymm5, ymm5, ymm9
 1367         vpxord  ymm6, ymm6, ymm10
 1368         vpxord  ymm7, ymm7, ymm11
 1369         vprord  ymm4, ymm4, 7
 1370         vprord  ymm5, ymm5, 7
 1371         vprord  ymm6, ymm6, 7
 1372         vprord  ymm7, ymm7, 7
 1373         vpaddd  ymm0, ymm0, ymm17
 1374         vpaddd  ymm1, ymm1, ymm28
 1375         vpaddd  ymm2, ymm2, ymm25
 1376         vpaddd  ymm3, ymm3, ymm31
 1377         vpaddd  ymm0, ymm0, ymm5
 1378         vpaddd  ymm1, ymm1, ymm6
 1379         vpaddd  ymm2, ymm2, ymm7
 1380         vpaddd  ymm3, ymm3, ymm4
 1381         vpxord  ymm15, ymm15, ymm0
 1382         vpxord  ymm12, ymm12, ymm1
 1383         vpxord  ymm13, ymm13, ymm2
 1384         vpxord  ymm14, ymm14, ymm3
 1385         vprord  ymm15, ymm15, 16
 1386         vprord  ymm12, ymm12, 16
 1387         vprord  ymm13, ymm13, 16
 1388         vprord  ymm14, ymm14, 16
 1389         vpaddd  ymm10, ymm10, ymm15
 1390         vpaddd  ymm11, ymm11, ymm12
 1391         vpaddd  ymm8, ymm8, ymm13
 1392         vpaddd  ymm9, ymm9, ymm14
 1393         vpxord  ymm5, ymm5, ymm10
 1394         vpxord  ymm6, ymm6, ymm11
 1395         vpxord  ymm7, ymm7, ymm8
 1396         vpxord  ymm4, ymm4, ymm9
 1397         vprord  ymm5, ymm5, 12
 1398         vprord  ymm6, ymm6, 12
 1399         vprord  ymm7, ymm7, 12
 1400         vprord  ymm4, ymm4, 12
 1401         vpaddd  ymm0, ymm0, ymm27
 1402         vpaddd  ymm1, ymm1, ymm21
 1403         vpaddd  ymm2, ymm2, ymm30
 1404         vpaddd  ymm3, ymm3, ymm24
 1405         vpaddd  ymm0, ymm0, ymm5
 1406         vpaddd  ymm1, ymm1, ymm6
 1407         vpaddd  ymm2, ymm2, ymm7
 1408         vpaddd  ymm3, ymm3, ymm4
 1409         vpxord  ymm15, ymm15, ymm0
 1410         vpxord  ymm12, ymm12, ymm1
 1411         vpxord  ymm13, ymm13, ymm2
 1412         vpxord  ymm14, ymm14, ymm3
 1413         vprord  ymm15, ymm15, 8
 1414         vprord  ymm12, ymm12, 8
 1415         vprord  ymm13, ymm13, 8
 1416         vprord  ymm14, ymm14, 8
 1417         vpaddd  ymm10, ymm10, ymm15
 1418         vpaddd  ymm11, ymm11, ymm12
 1419         vpaddd  ymm8, ymm8, ymm13
 1420         vpaddd  ymm9, ymm9, ymm14
 1421         vpxord  ymm5, ymm5, ymm10
 1422         vpxord  ymm6, ymm6, ymm11
 1423         vpxord  ymm7, ymm7, ymm8
 1424         vpxord  ymm4, ymm4, ymm9
 1425         vprord  ymm5, ymm5, 7
 1426         vprord  ymm6, ymm6, 7
 1427         vprord  ymm7, ymm7, 7
 1428         vprord  ymm4, ymm4, 7
 1429         vpaddd  ymm0, ymm0, ymm19
 1430         vpaddd  ymm1, ymm1, ymm26
 1431         vpaddd  ymm2, ymm2, ymm29
 1432         vpaddd  ymm3, ymm3, ymm23
 1433         vpaddd  ymm0, ymm0, ymm4
 1434         vpaddd  ymm1, ymm1, ymm5
 1435         vpaddd  ymm2, ymm2, ymm6
 1436         vpaddd  ymm3, ymm3, ymm7
 1437         vpxord  ymm12, ymm12, ymm0
 1438         vpxord  ymm13, ymm13, ymm1
 1439         vpxord  ymm14, ymm14, ymm2
 1440         vpxord  ymm15, ymm15, ymm3
 1441         vprord  ymm12, ymm12, 16
 1442         vprord  ymm13, ymm13, 16
 1443         vprord  ymm14, ymm14, 16
 1444         vprord  ymm15, ymm15, 16
 1445         vpaddd  ymm8, ymm8, ymm12
 1446         vpaddd  ymm9, ymm9, ymm13
 1447         vpaddd  ymm10, ymm10, ymm14
 1448         vpaddd  ymm11, ymm11, ymm15
 1449         vpxord  ymm4, ymm4, ymm8
 1450         vpxord  ymm5, ymm5, ymm9
 1451         vpxord  ymm6, ymm6, ymm10
 1452         vpxord  ymm7, ymm7, ymm11
 1453         vprord  ymm4, ymm4, 12
 1454         vprord  ymm5, ymm5, 12
 1455         vprord  ymm6, ymm6, 12
 1456         vprord  ymm7, ymm7, 12
 1457         vpaddd  ymm0, ymm0, ymm20
 1458         vpaddd  ymm1, ymm1, ymm28
 1459         vpaddd  ymm2, ymm2, ymm18
 1460         vpaddd  ymm3, ymm3, ymm30
 1461         vpaddd  ymm0, ymm0, ymm4
 1462         vpaddd  ymm1, ymm1, ymm5
 1463         vpaddd  ymm2, ymm2, ymm6
 1464         vpaddd  ymm3, ymm3, ymm7
 1465         vpxord  ymm12, ymm12, ymm0
 1466         vpxord  ymm13, ymm13, ymm1
 1467         vpxord  ymm14, ymm14, ymm2
 1468         vpxord  ymm15, ymm15, ymm3
 1469         vprord  ymm12, ymm12, 8
 1470         vprord  ymm13, ymm13, 8
 1471         vprord  ymm14, ymm14, 8
 1472         vprord  ymm15, ymm15, 8
 1473         vpaddd  ymm8, ymm8, ymm12
 1474         vpaddd  ymm9, ymm9, ymm13
 1475         vpaddd  ymm10, ymm10, ymm14
 1476         vpaddd  ymm11, ymm11, ymm15
 1477         vpxord  ymm4, ymm4, ymm8
 1478         vpxord  ymm5, ymm5, ymm9
 1479         vpxord  ymm6, ymm6, ymm10
 1480         vpxord  ymm7, ymm7, ymm11
 1481         vprord  ymm4, ymm4, 7
 1482         vprord  ymm5, ymm5, 7
 1483         vprord  ymm6, ymm6, 7
 1484         vprord  ymm7, ymm7, 7
 1485         vpaddd  ymm0, ymm0, ymm22
 1486         vpaddd  ymm1, ymm1, ymm25
 1487         vpaddd  ymm2, ymm2, ymm27
 1488         vpaddd  ymm3, ymm3, ymm24
 1489         vpaddd  ymm0, ymm0, ymm5
 1490         vpaddd  ymm1, ymm1, ymm6
 1491         vpaddd  ymm2, ymm2, ymm7
 1492         vpaddd  ymm3, ymm3, ymm4
 1493         vpxord  ymm15, ymm15, ymm0
 1494         vpxord  ymm12, ymm12, ymm1
 1495         vpxord  ymm13, ymm13, ymm2
 1496         vpxord  ymm14, ymm14, ymm3
 1497         vprord  ymm15, ymm15, 16
 1498         vprord  ymm12, ymm12, 16
 1499         vprord  ymm13, ymm13, 16
 1500         vprord  ymm14, ymm14, 16
 1501         vpaddd  ymm10, ymm10, ymm15
 1502         vpaddd  ymm11, ymm11, ymm12
 1503         vpaddd  ymm8, ymm8, ymm13
 1504         vpaddd  ymm9, ymm9, ymm14
 1505         vpxord  ymm5, ymm5, ymm10
 1506         vpxord  ymm6, ymm6, ymm11
 1507         vpxord  ymm7, ymm7, ymm8
 1508         vpxord  ymm4, ymm4, ymm9
 1509         vprord  ymm5, ymm5, 12
 1510         vprord  ymm6, ymm6, 12
 1511         vprord  ymm7, ymm7, 12
 1512         vprord  ymm4, ymm4, 12
 1513         vpaddd  ymm0, ymm0, ymm21
 1514         vpaddd  ymm1, ymm1, ymm16
 1515         vpaddd  ymm2, ymm2, ymm31
 1516         vpaddd  ymm3, ymm3, ymm17
 1517         vpaddd  ymm0, ymm0, ymm5
 1518         vpaddd  ymm1, ymm1, ymm6
 1519         vpaddd  ymm2, ymm2, ymm7
 1520         vpaddd  ymm3, ymm3, ymm4
 1521         vpxord  ymm15, ymm15, ymm0
 1522         vpxord  ymm12, ymm12, ymm1
 1523         vpxord  ymm13, ymm13, ymm2
 1524         vpxord  ymm14, ymm14, ymm3
 1525         vprord  ymm15, ymm15, 8
 1526         vprord  ymm12, ymm12, 8
 1527         vprord  ymm13, ymm13, 8
 1528         vprord  ymm14, ymm14, 8
 1529         vpaddd  ymm10, ymm10, ymm15
 1530         vpaddd  ymm11, ymm11, ymm12
 1531         vpaddd  ymm8, ymm8, ymm13
 1532         vpaddd  ymm9, ymm9, ymm14
 1533         vpxord  ymm5, ymm5, ymm10
 1534         vpxord  ymm6, ymm6, ymm11
 1535         vpxord  ymm7, ymm7, ymm8
 1536         vpxord  ymm4, ymm4, ymm9
 1537         vprord  ymm5, ymm5, 7
 1538         vprord  ymm6, ymm6, 7
 1539         vprord  ymm7, ymm7, 7
 1540         vprord  ymm4, ymm4, 7
 1541         vpaddd  ymm0, ymm0, ymm26
 1542         vpaddd  ymm1, ymm1, ymm28
 1543         vpaddd  ymm2, ymm2, ymm30
 1544         vpaddd  ymm3, ymm3, ymm29
 1545         vpaddd  ymm0, ymm0, ymm4
 1546         vpaddd  ymm1, ymm1, ymm5
 1547         vpaddd  ymm2, ymm2, ymm6
 1548         vpaddd  ymm3, ymm3, ymm7
 1549         vpxord  ymm12, ymm12, ymm0
 1550         vpxord  ymm13, ymm13, ymm1
 1551         vpxord  ymm14, ymm14, ymm2
 1552         vpxord  ymm15, ymm15, ymm3
 1553         vprord  ymm12, ymm12, 16
 1554         vprord  ymm13, ymm13, 16
 1555         vprord  ymm14, ymm14, 16
 1556         vprord  ymm15, ymm15, 16
 1557         vpaddd  ymm8, ymm8, ymm12
 1558         vpaddd  ymm9, ymm9, ymm13
 1559         vpaddd  ymm10, ymm10, ymm14
 1560         vpaddd  ymm11, ymm11, ymm15
 1561         vpxord  ymm4, ymm4, ymm8
 1562         vpxord  ymm5, ymm5, ymm9
 1563         vpxord  ymm6, ymm6, ymm10
 1564         vpxord  ymm7, ymm7, ymm11
 1565         vprord  ymm4, ymm4, 12
 1566         vprord  ymm5, ymm5, 12
 1567         vprord  ymm6, ymm6, 12
 1568         vprord  ymm7, ymm7, 12
 1569         vpaddd  ymm0, ymm0, ymm23
 1570         vpaddd  ymm1, ymm1, ymm25
 1571         vpaddd  ymm2, ymm2, ymm19
 1572         vpaddd  ymm3, ymm3, ymm31
 1573         vpaddd  ymm0, ymm0, ymm4
 1574         vpaddd  ymm1, ymm1, ymm5
 1575         vpaddd  ymm2, ymm2, ymm6
 1576         vpaddd  ymm3, ymm3, ymm7
 1577         vpxord  ymm12, ymm12, ymm0
 1578         vpxord  ymm13, ymm13, ymm1
 1579         vpxord  ymm14, ymm14, ymm2
 1580         vpxord  ymm15, ymm15, ymm3
 1581         vprord  ymm12, ymm12, 8
 1582         vprord  ymm13, ymm13, 8
 1583         vprord  ymm14, ymm14, 8
 1584         vprord  ymm15, ymm15, 8
 1585         vpaddd  ymm8, ymm8, ymm12
 1586         vpaddd  ymm9, ymm9, ymm13
 1587         vpaddd  ymm10, ymm10, ymm14
 1588         vpaddd  ymm11, ymm11, ymm15
 1589         vpxord  ymm4, ymm4, ymm8
 1590         vpxord  ymm5, ymm5, ymm9
 1591         vpxord  ymm6, ymm6, ymm10
 1592         vpxord  ymm7, ymm7, ymm11
 1593         vprord  ymm4, ymm4, 7
 1594         vprord  ymm5, ymm5, 7
 1595         vprord  ymm6, ymm6, 7
 1596         vprord  ymm7, ymm7, 7
 1597         vpaddd  ymm0, ymm0, ymm20
 1598         vpaddd  ymm1, ymm1, ymm27
 1599         vpaddd  ymm2, ymm2, ymm21
 1600         vpaddd  ymm3, ymm3, ymm17
 1601         vpaddd  ymm0, ymm0, ymm5
 1602         vpaddd  ymm1, ymm1, ymm6
 1603         vpaddd  ymm2, ymm2, ymm7
 1604         vpaddd  ymm3, ymm3, ymm4
 1605         vpxord  ymm15, ymm15, ymm0
 1606         vpxord  ymm12, ymm12, ymm1
 1607         vpxord  ymm13, ymm13, ymm2
 1608         vpxord  ymm14, ymm14, ymm3
 1609         vprord  ymm15, ymm15, 16
 1610         vprord  ymm12, ymm12, 16
 1611         vprord  ymm13, ymm13, 16
 1612         vprord  ymm14, ymm14, 16
 1613         vpaddd  ymm10, ymm10, ymm15
 1614         vpaddd  ymm11, ymm11, ymm12
 1615         vpaddd  ymm8, ymm8, ymm13
 1616         vpaddd  ymm9, ymm9, ymm14
 1617         vpxord  ymm5, ymm5, ymm10
 1618         vpxord  ymm6, ymm6, ymm11
 1619         vpxord  ymm7, ymm7, ymm8
 1620         vpxord  ymm4, ymm4, ymm9
 1621         vprord  ymm5, ymm5, 12
 1622         vprord  ymm6, ymm6, 12
 1623         vprord  ymm7, ymm7, 12
 1624         vprord  ymm4, ymm4, 12
 1625         vpaddd  ymm0, ymm0, ymm16
 1626         vpaddd  ymm1, ymm1, ymm18
 1627         vpaddd  ymm2, ymm2, ymm24
 1628         vpaddd  ymm3, ymm3, ymm22
 1629         vpaddd  ymm0, ymm0, ymm5
 1630         vpaddd  ymm1, ymm1, ymm6
 1631         vpaddd  ymm2, ymm2, ymm7
 1632         vpaddd  ymm3, ymm3, ymm4
 1633         vpxord  ymm15, ymm15, ymm0
 1634         vpxord  ymm12, ymm12, ymm1
 1635         vpxord  ymm13, ymm13, ymm2
 1636         vpxord  ymm14, ymm14, ymm3
 1637         vprord  ymm15, ymm15, 8
 1638         vprord  ymm12, ymm12, 8
 1639         vprord  ymm13, ymm13, 8
 1640         vprord  ymm14, ymm14, 8
 1641         vpaddd  ymm10, ymm10, ymm15
 1642         vpaddd  ymm11, ymm11, ymm12
 1643         vpaddd  ymm8, ymm8, ymm13
 1644         vpaddd  ymm9, ymm9, ymm14
 1645         vpxord  ymm5, ymm5, ymm10
 1646         vpxord  ymm6, ymm6, ymm11
 1647         vpxord  ymm7, ymm7, ymm8
 1648         vpxord  ymm4, ymm4, ymm9
 1649         vprord  ymm5, ymm5, 7
 1650         vprord  ymm6, ymm6, 7
 1651         vprord  ymm7, ymm7, 7
 1652         vprord  ymm4, ymm4, 7
 1653         vpaddd  ymm0, ymm0, ymm28
 1654         vpaddd  ymm1, ymm1, ymm25
 1655         vpaddd  ymm2, ymm2, ymm31
 1656         vpaddd  ymm3, ymm3, ymm30
 1657         vpaddd  ymm0, ymm0, ymm4
 1658         vpaddd  ymm1, ymm1, ymm5
 1659         vpaddd  ymm2, ymm2, ymm6
 1660         vpaddd  ymm3, ymm3, ymm7
 1661         vpxord  ymm12, ymm12, ymm0
 1662         vpxord  ymm13, ymm13, ymm1
 1663         vpxord  ymm14, ymm14, ymm2
 1664         vpxord  ymm15, ymm15, ymm3
 1665         vprord  ymm12, ymm12, 16
 1666         vprord  ymm13, ymm13, 16
 1667         vprord  ymm14, ymm14, 16
 1668         vprord  ymm15, ymm15, 16
 1669         vpaddd  ymm8, ymm8, ymm12
 1670         vpaddd  ymm9, ymm9, ymm13
 1671         vpaddd  ymm10, ymm10, ymm14
 1672         vpaddd  ymm11, ymm11, ymm15
 1673         vpxord  ymm4, ymm4, ymm8
 1674         vpxord  ymm5, ymm5, ymm9
 1675         vpxord  ymm6, ymm6, ymm10
 1676         vpxord  ymm7, ymm7, ymm11
 1677         vprord  ymm4, ymm4, 12
 1678         vprord  ymm5, ymm5, 12
 1679         vprord  ymm6, ymm6, 12
 1680         vprord  ymm7, ymm7, 12
 1681         vpaddd  ymm0, ymm0, ymm29
 1682         vpaddd  ymm1, ymm1, ymm27
 1683         vpaddd  ymm2, ymm2, ymm26
 1684         vpaddd  ymm3, ymm3, ymm24
 1685         vpaddd  ymm0, ymm0, ymm4
 1686         vpaddd  ymm1, ymm1, ymm5
 1687         vpaddd  ymm2, ymm2, ymm6
 1688         vpaddd  ymm3, ymm3, ymm7
 1689         vpxord  ymm12, ymm12, ymm0
 1690         vpxord  ymm13, ymm13, ymm1
 1691         vpxord  ymm14, ymm14, ymm2
 1692         vpxord  ymm15, ymm15, ymm3
 1693         vprord  ymm12, ymm12, 8
 1694         vprord  ymm13, ymm13, 8
 1695         vprord  ymm14, ymm14, 8
 1696         vprord  ymm15, ymm15, 8
 1697         vpaddd  ymm8, ymm8, ymm12
 1698         vpaddd  ymm9, ymm9, ymm13
 1699         vpaddd  ymm10, ymm10, ymm14
 1700         vpaddd  ymm11, ymm11, ymm15
 1701         vpxord  ymm4, ymm4, ymm8
 1702         vpxord  ymm5, ymm5, ymm9
 1703         vpxord  ymm6, ymm6, ymm10
 1704         vpxord  ymm7, ymm7, ymm11
 1705         vprord  ymm4, ymm4, 7
 1706         vprord  ymm5, ymm5, 7
 1707         vprord  ymm6, ymm6, 7
 1708         vprord  ymm7, ymm7, 7
 1709         vpaddd  ymm0, ymm0, ymm23
 1710         vpaddd  ymm1, ymm1, ymm21
 1711         vpaddd  ymm2, ymm2, ymm16
 1712         vpaddd  ymm3, ymm3, ymm22
 1713         vpaddd  ymm0, ymm0, ymm5
 1714         vpaddd  ymm1, ymm1, ymm6
 1715         vpaddd  ymm2, ymm2, ymm7
 1716         vpaddd  ymm3, ymm3, ymm4
 1717         vpxord  ymm15, ymm15, ymm0
 1718         vpxord  ymm12, ymm12, ymm1
 1719         vpxord  ymm13, ymm13, ymm2
 1720         vpxord  ymm14, ymm14, ymm3
 1721         vprord  ymm15, ymm15, 16
 1722         vprord  ymm12, ymm12, 16
 1723         vprord  ymm13, ymm13, 16
 1724         vprord  ymm14, ymm14, 16
 1725         vpaddd  ymm10, ymm10, ymm15
 1726         vpaddd  ymm11, ymm11, ymm12
 1727         vpaddd  ymm8, ymm8, ymm13
 1728         vpaddd  ymm9, ymm9, ymm14
 1729         vpxord  ymm5, ymm5, ymm10
 1730         vpxord  ymm6, ymm6, ymm11
 1731         vpxord  ymm7, ymm7, ymm8
 1732         vpxord  ymm4, ymm4, ymm9
 1733         vprord  ymm5, ymm5, 12
 1734         vprord  ymm6, ymm6, 12
 1735         vprord  ymm7, ymm7, 12
 1736         vprord  ymm4, ymm4, 12
 1737         vpaddd  ymm0, ymm0, ymm18
 1738         vpaddd  ymm1, ymm1, ymm19
 1739         vpaddd  ymm2, ymm2, ymm17
 1740         vpaddd  ymm3, ymm3, ymm20
 1741         vpaddd  ymm0, ymm0, ymm5
 1742         vpaddd  ymm1, ymm1, ymm6
 1743         vpaddd  ymm2, ymm2, ymm7
 1744         vpaddd  ymm3, ymm3, ymm4
 1745         vpxord  ymm15, ymm15, ymm0
 1746         vpxord  ymm12, ymm12, ymm1
 1747         vpxord  ymm13, ymm13, ymm2
 1748         vpxord  ymm14, ymm14, ymm3
 1749         vprord  ymm15, ymm15, 8
 1750         vprord  ymm12, ymm12, 8
 1751         vprord  ymm13, ymm13, 8
 1752         vprord  ymm14, ymm14, 8
 1753         vpaddd  ymm10, ymm10, ymm15
 1754         vpaddd  ymm11, ymm11, ymm12
 1755         vpaddd  ymm8, ymm8, ymm13
 1756         vpaddd  ymm9, ymm9, ymm14
 1757         vpxord  ymm5, ymm5, ymm10
 1758         vpxord  ymm6, ymm6, ymm11
 1759         vpxord  ymm7, ymm7, ymm8
 1760         vpxord  ymm4, ymm4, ymm9
 1761         vprord  ymm5, ymm5, 7
 1762         vprord  ymm6, ymm6, 7
 1763         vprord  ymm7, ymm7, 7
 1764         vprord  ymm4, ymm4, 7
 1765         vpaddd  ymm0, ymm0, ymm25
 1766         vpaddd  ymm1, ymm1, ymm27
 1767         vpaddd  ymm2, ymm2, ymm24
 1768         vpaddd  ymm3, ymm3, ymm31
 1769         vpaddd  ymm0, ymm0, ymm4
 1770         vpaddd  ymm1, ymm1, ymm5
 1771         vpaddd  ymm2, ymm2, ymm6
 1772         vpaddd  ymm3, ymm3, ymm7
 1773         vpxord  ymm12, ymm12, ymm0
 1774         vpxord  ymm13, ymm13, ymm1
 1775         vpxord  ymm14, ymm14, ymm2
 1776         vpxord  ymm15, ymm15, ymm3
 1777         vprord  ymm12, ymm12, 16
 1778         vprord  ymm13, ymm13, 16
 1779         vprord  ymm14, ymm14, 16
 1780         vprord  ymm15, ymm15, 16
 1781         vpaddd  ymm8, ymm8, ymm12
 1782         vpaddd  ymm9, ymm9, ymm13
 1783         vpaddd  ymm10, ymm10, ymm14
 1784         vpaddd  ymm11, ymm11, ymm15
 1785         vpxord  ymm4, ymm4, ymm8
 1786         vpxord  ymm5, ymm5, ymm9
 1787         vpxord  ymm6, ymm6, ymm10
 1788         vpxord  ymm7, ymm7, ymm11
 1789         vprord  ymm4, ymm4, 12
 1790         vprord  ymm5, ymm5, 12
 1791         vprord  ymm6, ymm6, 12
 1792         vprord  ymm7, ymm7, 12
 1793         vpaddd  ymm0, ymm0, ymm30
 1794         vpaddd  ymm1, ymm1, ymm21
 1795         vpaddd  ymm2, ymm2, ymm28
 1796         vpaddd  ymm3, ymm3, ymm17
 1797         vpaddd  ymm0, ymm0, ymm4
 1798         vpaddd  ymm1, ymm1, ymm5
 1799         vpaddd  ymm2, ymm2, ymm6
 1800         vpaddd  ymm3, ymm3, ymm7
 1801         vpxord  ymm12, ymm12, ymm0
 1802         vpxord  ymm13, ymm13, ymm1
 1803         vpxord  ymm14, ymm14, ymm2
 1804         vpxord  ymm15, ymm15, ymm3
 1805         vprord  ymm12, ymm12, 8
 1806         vprord  ymm13, ymm13, 8
 1807         vprord  ymm14, ymm14, 8
 1808         vprord  ymm15, ymm15, 8
 1809         vpaddd  ymm8, ymm8, ymm12
 1810         vpaddd  ymm9, ymm9, ymm13
 1811         vpaddd  ymm10, ymm10, ymm14
 1812         vpaddd  ymm11, ymm11, ymm15
 1813         vpxord  ymm4, ymm4, ymm8
 1814         vpxord  ymm5, ymm5, ymm9
 1815         vpxord  ymm6, ymm6, ymm10
 1816         vpxord  ymm7, ymm7, ymm11
 1817         vprord  ymm4, ymm4, 7
 1818         vprord  ymm5, ymm5, 7
 1819         vprord  ymm6, ymm6, 7
 1820         vprord  ymm7, ymm7, 7
 1821         vpaddd  ymm0, ymm0, ymm29
 1822         vpaddd  ymm1, ymm1, ymm16
 1823         vpaddd  ymm2, ymm2, ymm18
 1824         vpaddd  ymm3, ymm3, ymm20
 1825         vpaddd  ymm0, ymm0, ymm5
 1826         vpaddd  ymm1, ymm1, ymm6
 1827         vpaddd  ymm2, ymm2, ymm7
 1828         vpaddd  ymm3, ymm3, ymm4
 1829         vpxord  ymm15, ymm15, ymm0
 1830         vpxord  ymm12, ymm12, ymm1
 1831         vpxord  ymm13, ymm13, ymm2
 1832         vpxord  ymm14, ymm14, ymm3
 1833         vprord  ymm15, ymm15, 16
 1834         vprord  ymm12, ymm12, 16
 1835         vprord  ymm13, ymm13, 16
 1836         vprord  ymm14, ymm14, 16
 1837         vpaddd  ymm10, ymm10, ymm15
 1838         vpaddd  ymm11, ymm11, ymm12
 1839         vpaddd  ymm8, ymm8, ymm13
 1840         vpaddd  ymm9, ymm9, ymm14
 1841         vpxord  ymm5, ymm5, ymm10
 1842         vpxord  ymm6, ymm6, ymm11
 1843         vpxord  ymm7, ymm7, ymm8
 1844         vpxord  ymm4, ymm4, ymm9
 1845         vprord  ymm5, ymm5, 12
 1846         vprord  ymm6, ymm6, 12
 1847         vprord  ymm7, ymm7, 12
 1848         vprord  ymm4, ymm4, 12
 1849         vpaddd  ymm0, ymm0, ymm19
 1850         vpaddd  ymm1, ymm1, ymm26
 1851         vpaddd  ymm2, ymm2, ymm22
 1852         vpaddd  ymm3, ymm3, ymm23
 1853         vpaddd  ymm0, ymm0, ymm5
 1854         vpaddd  ymm1, ymm1, ymm6
 1855         vpaddd  ymm2, ymm2, ymm7
 1856         vpaddd  ymm3, ymm3, ymm4
 1857         vpxord  ymm15, ymm15, ymm0
 1858         vpxord  ymm12, ymm12, ymm1
 1859         vpxord  ymm13, ymm13, ymm2
 1860         vpxord  ymm14, ymm14, ymm3
 1861         vprord  ymm15, ymm15, 8
 1862         vprord  ymm12, ymm12, 8
 1863         vprord  ymm13, ymm13, 8
 1864         vprord  ymm14, ymm14, 8
 1865         vpaddd  ymm10, ymm10, ymm15
 1866         vpaddd  ymm11, ymm11, ymm12
 1867         vpaddd  ymm8, ymm8, ymm13
 1868         vpaddd  ymm9, ymm9, ymm14
 1869         vpxord  ymm5, ymm5, ymm10
 1870         vpxord  ymm6, ymm6, ymm11
 1871         vpxord  ymm7, ymm7, ymm8
 1872         vpxord  ymm4, ymm4, ymm9
 1873         vprord  ymm5, ymm5, 7
 1874         vprord  ymm6, ymm6, 7
 1875         vprord  ymm7, ymm7, 7
 1876         vprord  ymm4, ymm4, 7
 1877         vpaddd  ymm0, ymm0, ymm27
 1878         vpaddd  ymm1, ymm1, ymm21
 1879         vpaddd  ymm2, ymm2, ymm17
 1880         vpaddd  ymm3, ymm3, ymm24
 1881         vpaddd  ymm0, ymm0, ymm4
 1882         vpaddd  ymm1, ymm1, ymm5
 1883         vpaddd  ymm2, ymm2, ymm6
 1884         vpaddd  ymm3, ymm3, ymm7
 1885         vpxord  ymm12, ymm12, ymm0
 1886         vpxord  ymm13, ymm13, ymm1
 1887         vpxord  ymm14, ymm14, ymm2
 1888         vpxord  ymm15, ymm15, ymm3
 1889         vprord  ymm12, ymm12, 16
 1890         vprord  ymm13, ymm13, 16
 1891         vprord  ymm14, ymm14, 16
 1892         vprord  ymm15, ymm15, 16
 1893         vpaddd  ymm8, ymm8, ymm12
 1894         vpaddd  ymm9, ymm9, ymm13
 1895         vpaddd  ymm10, ymm10, ymm14
 1896         vpaddd  ymm11, ymm11, ymm15
 1897         vpxord  ymm4, ymm4, ymm8
 1898         vpxord  ymm5, ymm5, ymm9
 1899         vpxord  ymm6, ymm6, ymm10
 1900         vpxord  ymm7, ymm7, ymm11
 1901         vprord  ymm4, ymm4, 12
 1902         vprord  ymm5, ymm5, 12
 1903         vprord  ymm6, ymm6, 12
 1904         vprord  ymm7, ymm7, 12
 1905         vpaddd  ymm0, ymm0, ymm31
 1906         vpaddd  ymm1, ymm1, ymm16
 1907         vpaddd  ymm2, ymm2, ymm25
 1908         vpaddd  ymm3, ymm3, ymm22
 1909         vpaddd  ymm0, ymm0, ymm4
 1910         vpaddd  ymm1, ymm1, ymm5
 1911         vpaddd  ymm2, ymm2, ymm6
 1912         vpaddd  ymm3, ymm3, ymm7
 1913         vpxord  ymm12, ymm12, ymm0
 1914         vpxord  ymm13, ymm13, ymm1
 1915         vpxord  ymm14, ymm14, ymm2
 1916         vpxord  ymm15, ymm15, ymm3
 1917         vprord  ymm12, ymm12, 8
 1918         vprord  ymm13, ymm13, 8
 1919         vprord  ymm14, ymm14, 8
 1920         vprord  ymm15, ymm15, 8
 1921         vpaddd  ymm8, ymm8, ymm12
 1922         vpaddd  ymm9, ymm9, ymm13
 1923         vpaddd  ymm10, ymm10, ymm14
 1924         vpaddd  ymm11, ymm11, ymm15
 1925         vpxord  ymm4, ymm4, ymm8
 1926         vpxord  ymm5, ymm5, ymm9
 1927         vpxord  ymm6, ymm6, ymm10
 1928         vpxord  ymm7, ymm7, ymm11
 1929         vprord  ymm4, ymm4, 7
 1930         vprord  ymm5, ymm5, 7
 1931         vprord  ymm6, ymm6, 7
 1932         vprord  ymm7, ymm7, 7
 1933         vpaddd  ymm0, ymm0, ymm30
 1934         vpaddd  ymm1, ymm1, ymm18
 1935         vpaddd  ymm2, ymm2, ymm19
 1936         vpaddd  ymm3, ymm3, ymm23
 1937         vpaddd  ymm0, ymm0, ymm5
 1938         vpaddd  ymm1, ymm1, ymm6
 1939         vpaddd  ymm2, ymm2, ymm7
 1940         vpaddd  ymm3, ymm3, ymm4
 1941         vpxord  ymm15, ymm15, ymm0
 1942         vpxord  ymm12, ymm12, ymm1
 1943         vpxord  ymm13, ymm13, ymm2
 1944         vpxord  ymm14, ymm14, ymm3
 1945         vprord  ymm15, ymm15, 16
 1946         vprord  ymm12, ymm12, 16
 1947         vprord  ymm13, ymm13, 16
 1948         vprord  ymm14, ymm14, 16
 1949         vpaddd  ymm10, ymm10, ymm15
 1950         vpaddd  ymm11, ymm11, ymm12
 1951         vpaddd  ymm8, ymm8, ymm13
 1952         vpaddd  ymm9, ymm9, ymm14
 1953         vpxord  ymm5, ymm5, ymm10
 1954         vpxord  ymm6, ymm6, ymm11
 1955         vpxord  ymm7, ymm7, ymm8
 1956         vpxord  ymm4, ymm4, ymm9
 1957         vprord  ymm5, ymm5, 12
 1958         vprord  ymm6, ymm6, 12
 1959         vprord  ymm7, ymm7, 12
 1960         vprord  ymm4, ymm4, 12
 1961         vpaddd  ymm0, ymm0, ymm26
 1962         vpaddd  ymm1, ymm1, ymm28
 1963         vpaddd  ymm2, ymm2, ymm20
 1964         vpaddd  ymm3, ymm3, ymm29
 1965         vpaddd  ymm0, ymm0, ymm5
 1966         vpaddd  ymm1, ymm1, ymm6
 1967         vpaddd  ymm2, ymm2, ymm7
 1968         vpaddd  ymm3, ymm3, ymm4
 1969         vpxord  ymm15, ymm15, ymm0
 1970         vpxord  ymm12, ymm12, ymm1
 1971         vpxord  ymm13, ymm13, ymm2
 1972         vpxord  ymm14, ymm14, ymm3
 1973         vprord  ymm15, ymm15, 8
 1974         vprord  ymm12, ymm12, 8
 1975         vprord  ymm13, ymm13, 8
 1976         vprord  ymm14, ymm14, 8
 1977         vpaddd  ymm10, ymm10, ymm15
 1978         vpaddd  ymm11, ymm11, ymm12
 1979         vpaddd  ymm8, ymm8, ymm13
 1980         vpaddd  ymm9, ymm9, ymm14
 1981         vpxord  ymm5, ymm5, ymm10
 1982         vpxord  ymm6, ymm6, ymm11
 1983         vpxord  ymm7, ymm7, ymm8
 1984         vpxord  ymm4, ymm4, ymm9
 1985         vprord  ymm5, ymm5, 7
 1986         vprord  ymm6, ymm6, 7
 1987         vprord  ymm7, ymm7, 7
 1988         vprord  ymm4, ymm4, 7
 1989         vpxor   ymm0, ymm0, ymm8
 1990         vpxor   ymm1, ymm1, ymm9
 1991         vpxor   ymm2, ymm2, ymm10
 1992         vpxor   ymm3, ymm3, ymm11
 1993         vpxor   ymm4, ymm4, ymm12
 1994         vpxor   ymm5, ymm5, ymm13
 1995         vpxor   ymm6, ymm6, ymm14
 1996         vpxor   ymm7, ymm7, ymm15
 1997         movzx   eax, byte ptr [rbp+0x38]
 1998         jne     2b
 1999         mov     rbx, qword ptr [rbp+0x50]
 2000         vunpcklps ymm8, ymm0, ymm1
 2001         vunpcklps ymm9, ymm2, ymm3
 2002         vunpckhps ymm10, ymm0, ymm1
 2003         vunpcklps ymm11, ymm4, ymm5
 2004         vunpcklps ymm0, ymm6, ymm7
 2005         vshufps ymm12, ymm8, ymm9, 78
 2006         vblendps ymm1, ymm8, ymm12, 0xCC
 2007         vshufps ymm8, ymm11, ymm0, 78
 2008         vunpckhps ymm13, ymm2, ymm3
 2009         vblendps ymm2, ymm11, ymm8, 0xCC
 2010         vblendps ymm3, ymm12, ymm9, 0xCC
 2011         vperm2f128 ymm12, ymm1, ymm2, 0x20
 2012         vmovups ymmword ptr [rbx], ymm12
 2013         vunpckhps ymm14, ymm4, ymm5
 2014         vblendps ymm4, ymm8, ymm0, 0xCC
 2015         vunpckhps ymm15, ymm6, ymm7
 2016         vperm2f128 ymm7, ymm3, ymm4, 0x20
 2017         vmovups ymmword ptr [rbx+0x20], ymm7
 2018         vshufps ymm5, ymm10, ymm13, 78
 2019         vblendps ymm6, ymm5, ymm13, 0xCC
 2020         vshufps ymm13, ymm14, ymm15, 78
 2021         vblendps ymm10, ymm10, ymm5, 0xCC
 2022         vblendps ymm14, ymm14, ymm13, 0xCC
 2023         vperm2f128 ymm8, ymm10, ymm14, 0x20
 2024         vmovups ymmword ptr [rbx+0x40], ymm8
 2025         vblendps ymm15, ymm13, ymm15, 0xCC
 2026         vperm2f128 ymm13, ymm6, ymm15, 0x20
 2027         vmovups ymmword ptr [rbx+0x60], ymm13
 2028         vperm2f128 ymm9, ymm1, ymm2, 0x31
 2029         vperm2f128 ymm11, ymm3, ymm4, 0x31
 2030         vmovups ymmword ptr [rbx+0x80], ymm9
 2031         vperm2f128 ymm14, ymm10, ymm14, 0x31
 2032         vperm2f128 ymm15, ymm6, ymm15, 0x31
 2033         vmovups ymmword ptr [rbx+0xA0], ymm11
 2034         vmovups ymmword ptr [rbx+0xC0], ymm14
 2035         vmovups ymmword ptr [rbx+0xE0], ymm15
 2036         vmovdqa ymm0, ymmword ptr [rsp]
 2037         vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20]
 2038         vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20]
 2039         vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20]
 2040         vmovdqa ymmword ptr [rsp], ymm0
 2041         vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2
 2042         add     rbx, 256
 2043         mov     qword ptr [rbp+0x50], rbx
 2044         add     rdi, 64
 2045         sub     rsi, 8
 2046 3:
 2047         mov     rbx, qword ptr [rbp+0x50]
 2048         mov     r15, qword ptr [rsp+0x80]
 2049         movzx   r13, byte ptr [rbp+0x38]
 2050         movzx   r12, byte ptr [rbp+0x48]
 2051         test    esi, 0x4
 2052         je      3f
 2053         vbroadcasti32x4 zmm0, xmmword ptr [rcx]
 2054         vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10]
 2055         vmovdqa xmm12, xmmword ptr [rsp]
 2056         vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10]
 2057         vpunpckldq xmm14, xmm12, xmm13
 2058         vpunpckhdq xmm15, xmm12, xmm13
 2059         vpermq  ymm14, ymm14, 0xDC
 2060         vpermq  ymm15, ymm15, 0xDC
 2061         vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip]
 2062         vinserti32x8 zmm13, zmm14, ymm15, 0x01
 2063         mov     eax, 17476
 2064         kmovw   k2, eax
 2065         vpblendmd zmm13 {k2}, zmm13, zmm12
 2066         vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip]
 2067         mov     r8, qword ptr [rdi]
 2068         mov     r9, qword ptr [rdi+0x8]
 2069         mov     r10, qword ptr [rdi+0x10]
 2070         mov     r11, qword ptr [rdi+0x18]
 2071         mov     eax, 43690
 2072         kmovw   k3, eax
 2073         mov     eax, 34952
 2074         kmovw   k4, eax
 2075         movzx   eax, byte ptr [rbp+0x40]
 2076         or      eax, r13d
 2077         xor     edx, edx
 2078 .p2align 5
 2079 2:
 2080         mov     r14d, eax
 2081         or      eax, r12d
 2082         add     rdx, 64
 2083         cmp     rdx, r15
 2084         cmovne  eax, r14d
 2085         mov     dword ptr [rsp+0x88], eax
 2086         vmovdqa32 zmm2, zmm15
 2087         vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4]
 2088         vpblendmd zmm3 {k4}, zmm13, zmm8
 2089         vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40]
 2090         vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01
 2091         vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02
 2092         vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03
 2093         vmovups zmm9, zmmword ptr [r8+rdx-0x30]
 2094         vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01
 2095         vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02
 2096         vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03
 2097         vshufps zmm4, zmm8, zmm9, 136
 2098         vshufps zmm5, zmm8, zmm9, 221
 2099         vmovups zmm8, zmmword ptr [r8+rdx-0x20]
 2100         vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01
 2101         vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02
 2102         vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03
 2103         vmovups zmm9, zmmword ptr [r8+rdx-0x10]
 2104         vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01
 2105         vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02
 2106         vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03
 2107         vshufps zmm6, zmm8, zmm9, 136
 2108         vshufps zmm7, zmm8, zmm9, 221
 2109         vpshufd zmm6, zmm6, 0x93
 2110         vpshufd zmm7, zmm7, 0x93
 2111         mov     al, 7
 2112 9:
 2113         vpaddd  zmm0, zmm0, zmm4
 2114         vpaddd  zmm0, zmm0, zmm1
 2115         vpxord  zmm3, zmm3, zmm0
 2116         vprord  zmm3, zmm3, 16
 2117         vpaddd  zmm2, zmm2, zmm3
 2118         vpxord  zmm1, zmm1, zmm2
 2119         vprord  zmm1, zmm1, 12
 2120         vpaddd  zmm0, zmm0, zmm5
 2121         vpaddd  zmm0, zmm0, zmm1
 2122         vpxord  zmm3, zmm3, zmm0
 2123         vprord  zmm3, zmm3, 8
 2124         vpaddd  zmm2, zmm2, zmm3
 2125         vpxord  zmm1, zmm1, zmm2
 2126         vprord  zmm1, zmm1, 7
 2127         vpshufd zmm0, zmm0, 0x93
 2128         vpshufd zmm3, zmm3, 0x4E
 2129         vpshufd zmm2, zmm2, 0x39
 2130         vpaddd  zmm0, zmm0, zmm6
 2131         vpaddd  zmm0, zmm0, zmm1
 2132         vpxord  zmm3, zmm3, zmm0
 2133         vprord  zmm3, zmm3, 16
 2134         vpaddd  zmm2, zmm2, zmm3
 2135         vpxord  zmm1, zmm1, zmm2
 2136         vprord  zmm1, zmm1, 12
 2137         vpaddd  zmm0, zmm0, zmm7
 2138         vpaddd  zmm0, zmm0, zmm1
 2139         vpxord  zmm3, zmm3, zmm0
 2140         vprord  zmm3, zmm3, 8
 2141         vpaddd  zmm2, zmm2, zmm3
 2142         vpxord  zmm1, zmm1, zmm2
 2143         vprord  zmm1, zmm1, 7
 2144         vpshufd zmm0, zmm0, 0x39
 2145         vpshufd zmm3, zmm3, 0x4E
 2146         vpshufd zmm2, zmm2, 0x93
 2147         dec     al
 2148         jz      9f
 2149         vshufps zmm8, zmm4, zmm5, 214
 2150         vpshufd zmm9, zmm4, 0x0F
 2151         vpshufd zmm4, zmm8, 0x39
 2152         vshufps zmm8, zmm6, zmm7, 250
 2153         vpblendmd zmm9 {k3}, zmm9, zmm8
 2154         vpunpcklqdq zmm8, zmm7, zmm5
 2155         vpblendmd zmm8 {k4}, zmm8, zmm6
 2156         vpshufd zmm8, zmm8, 0x78
 2157         vpunpckhdq zmm5, zmm5, zmm7
 2158         vpunpckldq zmm6, zmm6, zmm5
 2159         vpshufd zmm7, zmm6, 0x1E
 2160         vmovdqa32 zmm5, zmm9
 2161         vmovdqa32 zmm6, zmm8
 2162         jmp     9b
 2163 9:
 2164         vpxord  zmm0, zmm0, zmm2
 2165         vpxord  zmm1, zmm1, zmm3
 2166         mov     eax, r13d
 2167         cmp     rdx, r15
 2168         jne     2b
 2169         vmovdqu xmmword ptr [rbx], xmm0
 2170         vmovdqu xmmword ptr [rbx+0x10], xmm1
 2171         vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
 2172         vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
 2173         vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02
 2174         vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02
 2175         vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03
 2176         vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03
 2177         vmovdqa xmm0, xmmword ptr [rsp]
 2178         vmovdqa xmm2, xmmword ptr [rsp+0x40]
 2179         vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10]
 2180         vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10]
 2181         vmovdqa xmmword ptr [rsp], xmm0
 2182         vmovdqa xmmword ptr [rsp+0x40], xmm2
 2183         add     rbx, 128
 2184         add     rdi, 32
 2185         sub     rsi, 4
 2186 3:
 2187         test    esi, 0x2
 2188         je      3f
 2189         vbroadcasti128 ymm0, xmmword ptr [rcx]
 2190         vbroadcasti128 ymm1, xmmword ptr [rcx+0x10]
 2191         vmovd   xmm13, dword ptr [rsp]
 2192         vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1
 2193         vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
 2194         vmovd   xmm14, dword ptr [rsp+0x4]
 2195         vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1
 2196         vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
 2197         vinserti128 ymm13, ymm13, xmm14, 0x01
 2198         mov     r8, qword ptr [rdi]
 2199         mov     r9, qword ptr [rdi+0x8]
 2200         movzx   eax, byte ptr [rbp+0x40]
 2201         or      eax, r13d
 2202         xor     edx, edx
 2203 .p2align 5
 2204 2:
 2205         mov     r14d, eax
 2206         or      eax, r12d
 2207         add     rdx, 64
 2208         cmp     rdx, r15
 2209         cmovne  eax, r14d
 2210         mov     dword ptr [rsp+0x88], eax
 2211         vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip]
 2212         vpbroadcastd ymm8, dword ptr [rsp+0x88]
 2213         vpblendd ymm3, ymm13, ymm8, 0x88
 2214         vmovups ymm8, ymmword ptr [r8+rdx-0x40]
 2215         vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01
 2216         vmovups ymm9, ymmword ptr [r8+rdx-0x30]
 2217         vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01
 2218         vshufps ymm4, ymm8, ymm9, 136
 2219         vshufps ymm5, ymm8, ymm9, 221
 2220         vmovups ymm8, ymmword ptr [r8+rdx-0x20]
 2221         vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01
 2222         vmovups ymm9, ymmword ptr [r8+rdx-0x10]
 2223         vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01
 2224         vshufps ymm6, ymm8, ymm9, 136
 2225         vshufps ymm7, ymm8, ymm9, 221
 2226         vpshufd ymm6, ymm6, 0x93
 2227         vpshufd ymm7, ymm7, 0x93
 2228         mov     al, 7
 2229 9:
 2230         vpaddd  ymm0, ymm0, ymm4
 2231         vpaddd  ymm0, ymm0, ymm1
 2232         vpxord  ymm3, ymm3, ymm0
 2233         vprord  ymm3, ymm3, 16
 2234         vpaddd  ymm2, ymm2, ymm3
 2235         vpxord  ymm1, ymm1, ymm2
 2236         vprord  ymm1, ymm1, 12
 2237         vpaddd  ymm0, ymm0, ymm5
 2238         vpaddd  ymm0, ymm0, ymm1
 2239         vpxord  ymm3, ymm3, ymm0
 2240         vprord  ymm3, ymm3, 8
 2241         vpaddd  ymm2, ymm2, ymm3
 2242         vpxord  ymm1, ymm1, ymm2
 2243         vprord  ymm1, ymm1, 7
 2244         vpshufd ymm0, ymm0, 0x93
 2245         vpshufd ymm3, ymm3, 0x4E
 2246         vpshufd ymm2, ymm2, 0x39
 2247         vpaddd  ymm0, ymm0, ymm6
 2248         vpaddd  ymm0, ymm0, ymm1
 2249         vpxord  ymm3, ymm3, ymm0
 2250         vprord  ymm3, ymm3, 16
 2251         vpaddd  ymm2, ymm2, ymm3
 2252         vpxord  ymm1, ymm1, ymm2
 2253         vprord  ymm1, ymm1, 12
 2254         vpaddd  ymm0, ymm0, ymm7
 2255         vpaddd  ymm0, ymm0, ymm1
 2256         vpxord  ymm3, ymm3, ymm0
 2257         vprord  ymm3, ymm3, 8
 2258         vpaddd  ymm2, ymm2, ymm3
 2259         vpxord  ymm1, ymm1, ymm2
 2260         vprord  ymm1, ymm1, 7
 2261         vpshufd ymm0, ymm0, 0x39
 2262         vpshufd ymm3, ymm3, 0x4E
 2263         vpshufd ymm2, ymm2, 0x93
 2264         dec     al
 2265         jz      9f
 2266         vshufps ymm8, ymm4, ymm5, 214
 2267         vpshufd ymm9, ymm4, 0x0F
 2268         vpshufd ymm4, ymm8, 0x39
 2269         vshufps ymm8, ymm6, ymm7, 250
 2270         vpblendd ymm9, ymm9, ymm8, 0xAA
 2271         vpunpcklqdq ymm8, ymm7, ymm5
 2272         vpblendd ymm8, ymm8, ymm6, 0x88
 2273         vpshufd ymm8, ymm8, 0x78
 2274         vpunpckhdq ymm5, ymm5, ymm7
 2275         vpunpckldq ymm6, ymm6, ymm5
 2276         vpshufd ymm7, ymm6, 0x1E
 2277         vmovdqa ymm5, ymm9
 2278         vmovdqa ymm6, ymm8
 2279         jmp     9b
 2280 9:
 2281         vpxor   ymm0, ymm0, ymm2
 2282         vpxor   ymm1, ymm1, ymm3
 2283         mov     eax, r13d
 2284         cmp     rdx, r15
 2285         jne     2b
 2286         vmovdqu xmmword ptr [rbx], xmm0
 2287         vmovdqu xmmword ptr [rbx+0x10], xmm1
 2288         vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01
 2289         vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01
 2290         vmovdqa xmm0, xmmword ptr [rsp]
 2291         vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10]
 2292         vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8]
 2293         vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48]
 2294         vmovdqa xmmword ptr [rsp], xmm0
 2295         vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2
 2296         add     rbx, 64
 2297         add     rdi, 16
 2298         sub     rsi, 2
 2299 3:
 2300         test    esi, 0x1
 2301         je      4b
 2302         vmovdqu xmm0, xmmword ptr [rcx]
 2303         vmovdqu xmm1, xmmword ptr [rcx+0x10]
 2304         vmovd   xmm14, dword ptr [rsp]
 2305         vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1
 2306         vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2
 2307         vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip]
 2308         mov     r8, qword ptr [rdi]
 2309         movzx   eax, byte ptr [rbp+0x40]
 2310         or      eax, r13d
 2311         xor     edx, edx
 2312 .p2align 5
 2313 2:
 2314         mov     r14d, eax
 2315         or      eax, r12d
 2316         add     rdx, 64
 2317         cmp     rdx, r15
 2318         cmovne  eax, r14d
 2319         vpinsrd xmm3, xmm14, eax, 3
 2320         vmovdqa xmm2, xmm15
 2321         vmovups xmm8, xmmword ptr [r8+rdx-0x40]
 2322         vmovups xmm9, xmmword ptr [r8+rdx-0x30]
 2323         vshufps xmm4, xmm8, xmm9, 136
 2324         vshufps xmm5, xmm8, xmm9, 221
 2325         vmovups xmm8, xmmword ptr [r8+rdx-0x20]
 2326         vmovups xmm9, xmmword ptr [r8+rdx-0x10]
 2327         vshufps xmm6, xmm8, xmm9, 136
 2328         vshufps xmm7, xmm8, xmm9, 221
 2329         vpshufd xmm6, xmm6, 0x93
 2330         vpshufd xmm7, xmm7, 0x93
 2331         mov     al, 7
 2332 9:
 2333         vpaddd  xmm0, xmm0, xmm4
 2334         vpaddd  xmm0, xmm0, xmm1
 2335         vpxord  xmm3, xmm3, xmm0
 2336         vprord  xmm3, xmm3, 16
 2337         vpaddd  xmm2, xmm2, xmm3
 2338         vpxord  xmm1, xmm1, xmm2
 2339         vprord  xmm1, xmm1, 12
 2340         vpaddd  xmm0, xmm0, xmm5
 2341         vpaddd  xmm0, xmm0, xmm1
 2342         vpxord  xmm3, xmm3, xmm0
 2343         vprord  xmm3, xmm3, 8
 2344         vpaddd  xmm2, xmm2, xmm3
 2345         vpxord  xmm1, xmm1, xmm2
 2346         vprord  xmm1, xmm1, 7
 2347         vpshufd xmm0, xmm0, 0x93
 2348         vpshufd xmm3, xmm3, 0x4E
 2349         vpshufd xmm2, xmm2, 0x39
 2350         vpaddd  xmm0, xmm0, xmm6
 2351         vpaddd  xmm0, xmm0, xmm1
 2352         vpxord  xmm3, xmm3, xmm0
 2353         vprord  xmm3, xmm3, 16
 2354         vpaddd  xmm2, xmm2, xmm3
 2355         vpxord  xmm1, xmm1, xmm2
 2356         vprord  xmm1, xmm1, 12
 2357         vpaddd  xmm0, xmm0, xmm7
 2358         vpaddd  xmm0, xmm0, xmm1
 2359         vpxord  xmm3, xmm3, xmm0
 2360         vprord  xmm3, xmm3, 8
 2361         vpaddd  xmm2, xmm2, xmm3
 2362         vpxord  xmm1, xmm1, xmm2
 2363         vprord  xmm1, xmm1, 7
 2364         vpshufd xmm0, xmm0, 0x39
 2365         vpshufd xmm3, xmm3, 0x4E
 2366         vpshufd xmm2, xmm2, 0x93
 2367         dec     al
 2368         jz      9f
 2369         vshufps xmm8, xmm4, xmm5, 214
 2370         vpshufd xmm9, xmm4, 0x0F
 2371         vpshufd xmm4, xmm8, 0x39
 2372         vshufps xmm8, xmm6, xmm7, 250
 2373         vpblendd xmm9, xmm9, xmm8, 0xAA
 2374         vpunpcklqdq xmm8, xmm7, xmm5
 2375         vpblendd xmm8, xmm8, xmm6, 0x88
 2376         vpshufd xmm8, xmm8, 0x78
 2377         vpunpckhdq xmm5, xmm5, xmm7
 2378         vpunpckldq xmm6, xmm6, xmm5
 2379         vpshufd xmm7, xmm6, 0x1E
 2380         vmovdqa xmm5, xmm9
 2381         vmovdqa xmm6, xmm8
 2382         jmp     9b
 2383 9:
 2384         vpxor   xmm0, xmm0, xmm2
 2385         vpxor   xmm1, xmm1, xmm3
 2386         mov     eax, r13d
 2387         cmp     rdx, r15
 2388         jne     2b
 2389         vmovdqu xmmword ptr [rbx], xmm0
 2390         vmovdqu xmmword ptr [rbx+0x10], xmm1
 2391         jmp     4b
 2392 SET_SIZE(zfs_blake3_hash_many_avx512)
 2393 
 2394 ENTRY_ALIGN(zfs_blake3_compress_in_place_avx512, 64)
 2395         ENDBR
 2396         vmovdqu xmm0, xmmword ptr [rdi]
 2397         vmovdqu xmm1, xmmword ptr [rdi+0x10]
 2398         movzx   eax, r8b
 2399         movzx   edx, dl
 2400         shl     rax, 32
 2401         add     rdx, rax
 2402         vmovq   xmm3, rcx
 2403         vmovq   xmm4, rdx
 2404         vpunpcklqdq xmm3, xmm3, xmm4
 2405         vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
 2406         vmovups xmm8, xmmword ptr [rsi]
 2407         vmovups xmm9, xmmword ptr [rsi+0x10]
 2408         vshufps xmm4, xmm8, xmm9, 136
 2409         vshufps xmm5, xmm8, xmm9, 221
 2410         vmovups xmm8, xmmword ptr [rsi+0x20]
 2411         vmovups xmm9, xmmword ptr [rsi+0x30]
 2412         vshufps xmm6, xmm8, xmm9, 136
 2413         vshufps xmm7, xmm8, xmm9, 221
 2414         vpshufd xmm6, xmm6, 0x93
 2415         vpshufd xmm7, xmm7, 0x93
 2416         mov     al, 7
 2417 9:
 2418         vpaddd  xmm0, xmm0, xmm4
 2419         vpaddd  xmm0, xmm0, xmm1
 2420         vpxord  xmm3, xmm3, xmm0
 2421         vprord  xmm3, xmm3, 16
 2422         vpaddd  xmm2, xmm2, xmm3
 2423         vpxord  xmm1, xmm1, xmm2
 2424         vprord  xmm1, xmm1, 12
 2425         vpaddd  xmm0, xmm0, xmm5
 2426         vpaddd  xmm0, xmm0, xmm1
 2427         vpxord  xmm3, xmm3, xmm0
 2428         vprord  xmm3, xmm3, 8
 2429         vpaddd  xmm2, xmm2, xmm3
 2430         vpxord  xmm1, xmm1, xmm2
 2431         vprord  xmm1, xmm1, 7
 2432         vpshufd xmm0, xmm0, 0x93
 2433         vpshufd xmm3, xmm3, 0x4E
 2434         vpshufd xmm2, xmm2, 0x39
 2435         vpaddd  xmm0, xmm0, xmm6
 2436         vpaddd  xmm0, xmm0, xmm1
 2437         vpxord  xmm3, xmm3, xmm0
 2438         vprord  xmm3, xmm3, 16
 2439         vpaddd  xmm2, xmm2, xmm3
 2440         vpxord  xmm1, xmm1, xmm2
 2441         vprord  xmm1, xmm1, 12
 2442         vpaddd  xmm0, xmm0, xmm7
 2443         vpaddd  xmm0, xmm0, xmm1
 2444         vpxord  xmm3, xmm3, xmm0
 2445         vprord  xmm3, xmm3, 8
 2446         vpaddd  xmm2, xmm2, xmm3
 2447         vpxord  xmm1, xmm1, xmm2
 2448         vprord  xmm1, xmm1, 7
 2449         vpshufd xmm0, xmm0, 0x39
 2450         vpshufd xmm3, xmm3, 0x4E
 2451         vpshufd xmm2, xmm2, 0x93
 2452         dec     al
 2453         jz      9f
 2454         vshufps xmm8, xmm4, xmm5, 214
 2455         vpshufd xmm9, xmm4, 0x0F
 2456         vpshufd xmm4, xmm8, 0x39
 2457         vshufps xmm8, xmm6, xmm7, 250
 2458         vpblendd xmm9, xmm9, xmm8, 0xAA
 2459         vpunpcklqdq xmm8, xmm7, xmm5
 2460         vpblendd xmm8, xmm8, xmm6, 0x88
 2461         vpshufd xmm8, xmm8, 0x78
 2462         vpunpckhdq xmm5, xmm5, xmm7
 2463         vpunpckldq xmm6, xmm6, xmm5
 2464         vpshufd xmm7, xmm6, 0x1E
 2465         vmovdqa xmm5, xmm9
 2466         vmovdqa xmm6, xmm8
 2467         jmp     9b
 2468 9:
 2469         vpxor   xmm0, xmm0, xmm2
 2470         vpxor   xmm1, xmm1, xmm3
 2471         vmovdqu xmmword ptr [rdi], xmm0
 2472         vmovdqu xmmword ptr [rdi+0x10], xmm1
 2473         RET
 2474 SET_SIZE(zfs_blake3_compress_in_place_avx512)
 2475 
 2476 ENTRY_ALIGN(zfs_blake3_compress_xof_avx512, 64)
 2477         ENDBR
 2478         vmovdqu xmm0, xmmword ptr [rdi]
 2479         vmovdqu xmm1, xmmword ptr [rdi+0x10]
 2480         movzx   eax, r8b
 2481         movzx   edx, dl
 2482         shl     rax, 32
 2483         add     rdx, rax
 2484         vmovq   xmm3, rcx
 2485         vmovq   xmm4, rdx
 2486         vpunpcklqdq xmm3, xmm3, xmm4
 2487         vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip]
 2488         vmovups xmm8, xmmword ptr [rsi]
 2489         vmovups xmm9, xmmword ptr [rsi+0x10]
 2490         vshufps xmm4, xmm8, xmm9, 136
 2491         vshufps xmm5, xmm8, xmm9, 221
 2492         vmovups xmm8, xmmword ptr [rsi+0x20]
 2493         vmovups xmm9, xmmword ptr [rsi+0x30]
 2494         vshufps xmm6, xmm8, xmm9, 136
 2495         vshufps xmm7, xmm8, xmm9, 221
 2496         vpshufd xmm6, xmm6, 0x93
 2497         vpshufd xmm7, xmm7, 0x93
 2498         mov     al, 7
 2499 9:
 2500         vpaddd  xmm0, xmm0, xmm4
 2501         vpaddd  xmm0, xmm0, xmm1
 2502         vpxord  xmm3, xmm3, xmm0
 2503         vprord  xmm3, xmm3, 16
 2504         vpaddd  xmm2, xmm2, xmm3
 2505         vpxord  xmm1, xmm1, xmm2
 2506         vprord  xmm1, xmm1, 12
 2507         vpaddd  xmm0, xmm0, xmm5
 2508         vpaddd  xmm0, xmm0, xmm1
 2509         vpxord  xmm3, xmm3, xmm0
 2510         vprord  xmm3, xmm3, 8
 2511         vpaddd  xmm2, xmm2, xmm3
 2512         vpxord  xmm1, xmm1, xmm2
 2513         vprord  xmm1, xmm1, 7
 2514         vpshufd xmm0, xmm0, 0x93
 2515         vpshufd xmm3, xmm3, 0x4E
 2516         vpshufd xmm2, xmm2, 0x39
 2517         vpaddd  xmm0, xmm0, xmm6
 2518         vpaddd  xmm0, xmm0, xmm1
 2519         vpxord  xmm3, xmm3, xmm0
 2520         vprord  xmm3, xmm3, 16
 2521         vpaddd  xmm2, xmm2, xmm3
 2522         vpxord  xmm1, xmm1, xmm2
 2523         vprord  xmm1, xmm1, 12
 2524         vpaddd  xmm0, xmm0, xmm7
 2525         vpaddd  xmm0, xmm0, xmm1
 2526         vpxord  xmm3, xmm3, xmm0
 2527         vprord  xmm3, xmm3, 8
 2528         vpaddd  xmm2, xmm2, xmm3
 2529         vpxord  xmm1, xmm1, xmm2
 2530         vprord  xmm1, xmm1, 7
 2531         vpshufd xmm0, xmm0, 0x39
 2532         vpshufd xmm3, xmm3, 0x4E
 2533         vpshufd xmm2, xmm2, 0x93
 2534         dec     al
 2535         jz      9f
 2536         vshufps xmm8, xmm4, xmm5, 214
 2537         vpshufd xmm9, xmm4, 0x0F
 2538         vpshufd xmm4, xmm8, 0x39
 2539         vshufps xmm8, xmm6, xmm7, 250
 2540         vpblendd xmm9, xmm9, xmm8, 0xAA
 2541         vpunpcklqdq xmm8, xmm7, xmm5
 2542         vpblendd xmm8, xmm8, xmm6, 0x88
 2543         vpshufd xmm8, xmm8, 0x78
 2544         vpunpckhdq xmm5, xmm5, xmm7
 2545         vpunpckldq xmm6, xmm6, xmm5
 2546         vpshufd xmm7, xmm6, 0x1E
 2547         vmovdqa xmm5, xmm9
 2548         vmovdqa xmm6, xmm8
 2549         jmp     9b
 2550 9:
 2551         vpxor   xmm0, xmm0, xmm2
 2552         vpxor   xmm1, xmm1, xmm3
 2553         vpxor   xmm2, xmm2, [rdi]
 2554         vpxor   xmm3, xmm3, [rdi+0x10]
 2555         vmovdqu xmmword ptr [r9], xmm0
 2556         vmovdqu xmmword ptr [r9+0x10], xmm1
 2557         vmovdqu xmmword ptr [r9+0x20], xmm2
 2558         vmovdqu xmmword ptr [r9+0x30], xmm3
 2559         RET
 2560 SET_SIZE(zfs_blake3_compress_xof_avx512)
 2561 
 2562 SECTION_STATIC
 2563 
 2564 .p2align  6
 2565 INDEX0:
 2566         .long    0,  1,  2,  3, 16, 17, 18, 19
 2567         .long    8,  9, 10, 11, 24, 25, 26, 27
 2568 INDEX1:
 2569         .long    4,  5,  6,  7, 20, 21, 22, 23
 2570         .long   12, 13, 14, 15, 28, 29, 30, 31
 2571 ADD0:
 2572         .long    0,  1,  2,  3,  4,  5,  6,  7
 2573         .long    8,  9, 10, 11, 12, 13, 14, 15
 2574 ADD1:   .long    1
 2575 
 2576 ADD16:  .long   16
 2577 BLAKE3_BLOCK_LEN:
 2578         .long   64
 2579 .p2align 6
 2580 BLAKE3_IV:
 2581 BLAKE3_IV_0:
 2582         .long   0x6A09E667
 2583 BLAKE3_IV_1:
 2584         .long   0xBB67AE85
 2585 BLAKE3_IV_2:
 2586         .long   0x3C6EF372
 2587 BLAKE3_IV_3:
 2588         .long   0xA54FF53A
 2589 
 2590 #endif  /* HAVE_AVX512 */
 2591 
 2592 #ifdef __ELF__
 2593 .section .note.GNU-stack,"",%progbits
 2594 #endif

Cache object: 457fa0729117180c1902ea27ba4afa39


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.