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/crypto/openssl/amd64/aesni-gcm-x86_64.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 /* $FreeBSD$ */
    2 /* Do not modify. This file is auto-generated from aesni-gcm-x86_64.pl. */
    3 .text   
    4 
    5 .type   _aesni_ctr32_ghash_6x,@function
    6 .align  32
    7 _aesni_ctr32_ghash_6x:
    8 .cfi_startproc  
    9         vmovdqu 32(%r11),%xmm2
   10         subq    $6,%rdx
   11         vpxor   %xmm4,%xmm4,%xmm4
   12         vmovdqu 0-128(%rcx),%xmm15
   13         vpaddb  %xmm2,%xmm1,%xmm10
   14         vpaddb  %xmm2,%xmm10,%xmm11
   15         vpaddb  %xmm2,%xmm11,%xmm12
   16         vpaddb  %xmm2,%xmm12,%xmm13
   17         vpaddb  %xmm2,%xmm13,%xmm14
   18         vpxor   %xmm15,%xmm1,%xmm9
   19         vmovdqu %xmm4,16+8(%rsp)
   20         jmp     .Loop6x
   21 
   22 .align  32
   23 .Loop6x:
   24         addl    $100663296,%ebx
   25         jc      .Lhandle_ctr32
   26         vmovdqu 0-32(%r9),%xmm3
   27         vpaddb  %xmm2,%xmm14,%xmm1
   28         vpxor   %xmm15,%xmm10,%xmm10
   29         vpxor   %xmm15,%xmm11,%xmm11
   30 
   31 .Lresume_ctr32:
   32         vmovdqu %xmm1,(%r8)
   33         vpclmulqdq      $0x10,%xmm3,%xmm7,%xmm5
   34         vpxor   %xmm15,%xmm12,%xmm12
   35         vmovups 16-128(%rcx),%xmm2
   36         vpclmulqdq      $0x01,%xmm3,%xmm7,%xmm6
   37         xorq    %r12,%r12
   38         cmpq    %r14,%r15
   39 
   40         vaesenc %xmm2,%xmm9,%xmm9
   41         vmovdqu 48+8(%rsp),%xmm0
   42         vpxor   %xmm15,%xmm13,%xmm13
   43         vpclmulqdq      $0x00,%xmm3,%xmm7,%xmm1
   44         vaesenc %xmm2,%xmm10,%xmm10
   45         vpxor   %xmm15,%xmm14,%xmm14
   46         setnc   %r12b
   47         vpclmulqdq      $0x11,%xmm3,%xmm7,%xmm7
   48         vaesenc %xmm2,%xmm11,%xmm11
   49         vmovdqu 16-32(%r9),%xmm3
   50         negq    %r12
   51         vaesenc %xmm2,%xmm12,%xmm12
   52         vpxor   %xmm5,%xmm6,%xmm6
   53         vpclmulqdq      $0x00,%xmm3,%xmm0,%xmm5
   54         vpxor   %xmm4,%xmm8,%xmm8
   55         vaesenc %xmm2,%xmm13,%xmm13
   56         vpxor   %xmm5,%xmm1,%xmm4
   57         andq    $0x60,%r12
   58         vmovups 32-128(%rcx),%xmm15
   59         vpclmulqdq      $0x10,%xmm3,%xmm0,%xmm1
   60         vaesenc %xmm2,%xmm14,%xmm14
   61 
   62         vpclmulqdq      $0x01,%xmm3,%xmm0,%xmm2
   63         leaq    (%r14,%r12,1),%r14
   64         vaesenc %xmm15,%xmm9,%xmm9
   65         vpxor   16+8(%rsp),%xmm8,%xmm8
   66         vpclmulqdq      $0x11,%xmm3,%xmm0,%xmm3
   67         vmovdqu 64+8(%rsp),%xmm0
   68         vaesenc %xmm15,%xmm10,%xmm10
   69         movbeq  88(%r14),%r13
   70         vaesenc %xmm15,%xmm11,%xmm11
   71         movbeq  80(%r14),%r12
   72         vaesenc %xmm15,%xmm12,%xmm12
   73         movq    %r13,32+8(%rsp)
   74         vaesenc %xmm15,%xmm13,%xmm13
   75         movq    %r12,40+8(%rsp)
   76         vmovdqu 48-32(%r9),%xmm5
   77         vaesenc %xmm15,%xmm14,%xmm14
   78 
   79         vmovups 48-128(%rcx),%xmm15
   80         vpxor   %xmm1,%xmm6,%xmm6
   81         vpclmulqdq      $0x00,%xmm5,%xmm0,%xmm1
   82         vaesenc %xmm15,%xmm9,%xmm9
   83         vpxor   %xmm2,%xmm6,%xmm6
   84         vpclmulqdq      $0x10,%xmm5,%xmm0,%xmm2
   85         vaesenc %xmm15,%xmm10,%xmm10
   86         vpxor   %xmm3,%xmm7,%xmm7
   87         vpclmulqdq      $0x01,%xmm5,%xmm0,%xmm3
   88         vaesenc %xmm15,%xmm11,%xmm11
   89         vpclmulqdq      $0x11,%xmm5,%xmm0,%xmm5
   90         vmovdqu 80+8(%rsp),%xmm0
   91         vaesenc %xmm15,%xmm12,%xmm12
   92         vaesenc %xmm15,%xmm13,%xmm13
   93         vpxor   %xmm1,%xmm4,%xmm4
   94         vmovdqu 64-32(%r9),%xmm1
   95         vaesenc %xmm15,%xmm14,%xmm14
   96 
   97         vmovups 64-128(%rcx),%xmm15
   98         vpxor   %xmm2,%xmm6,%xmm6
   99         vpclmulqdq      $0x00,%xmm1,%xmm0,%xmm2
  100         vaesenc %xmm15,%xmm9,%xmm9
  101         vpxor   %xmm3,%xmm6,%xmm6
  102         vpclmulqdq      $0x10,%xmm1,%xmm0,%xmm3
  103         vaesenc %xmm15,%xmm10,%xmm10
  104         movbeq  72(%r14),%r13
  105         vpxor   %xmm5,%xmm7,%xmm7
  106         vpclmulqdq      $0x01,%xmm1,%xmm0,%xmm5
  107         vaesenc %xmm15,%xmm11,%xmm11
  108         movbeq  64(%r14),%r12
  109         vpclmulqdq      $0x11,%xmm1,%xmm0,%xmm1
  110         vmovdqu 96+8(%rsp),%xmm0
  111         vaesenc %xmm15,%xmm12,%xmm12
  112         movq    %r13,48+8(%rsp)
  113         vaesenc %xmm15,%xmm13,%xmm13
  114         movq    %r12,56+8(%rsp)
  115         vpxor   %xmm2,%xmm4,%xmm4
  116         vmovdqu 96-32(%r9),%xmm2
  117         vaesenc %xmm15,%xmm14,%xmm14
  118 
  119         vmovups 80-128(%rcx),%xmm15
  120         vpxor   %xmm3,%xmm6,%xmm6
  121         vpclmulqdq      $0x00,%xmm2,%xmm0,%xmm3
  122         vaesenc %xmm15,%xmm9,%xmm9
  123         vpxor   %xmm5,%xmm6,%xmm6
  124         vpclmulqdq      $0x10,%xmm2,%xmm0,%xmm5
  125         vaesenc %xmm15,%xmm10,%xmm10
  126         movbeq  56(%r14),%r13
  127         vpxor   %xmm1,%xmm7,%xmm7
  128         vpclmulqdq      $0x01,%xmm2,%xmm0,%xmm1
  129         vpxor   112+8(%rsp),%xmm8,%xmm8
  130         vaesenc %xmm15,%xmm11,%xmm11
  131         movbeq  48(%r14),%r12
  132         vpclmulqdq      $0x11,%xmm2,%xmm0,%xmm2
  133         vaesenc %xmm15,%xmm12,%xmm12
  134         movq    %r13,64+8(%rsp)
  135         vaesenc %xmm15,%xmm13,%xmm13
  136         movq    %r12,72+8(%rsp)
  137         vpxor   %xmm3,%xmm4,%xmm4
  138         vmovdqu 112-32(%r9),%xmm3
  139         vaesenc %xmm15,%xmm14,%xmm14
  140 
  141         vmovups 96-128(%rcx),%xmm15
  142         vpxor   %xmm5,%xmm6,%xmm6
  143         vpclmulqdq      $0x10,%xmm3,%xmm8,%xmm5
  144         vaesenc %xmm15,%xmm9,%xmm9
  145         vpxor   %xmm1,%xmm6,%xmm6
  146         vpclmulqdq      $0x01,%xmm3,%xmm8,%xmm1
  147         vaesenc %xmm15,%xmm10,%xmm10
  148         movbeq  40(%r14),%r13
  149         vpxor   %xmm2,%xmm7,%xmm7
  150         vpclmulqdq      $0x00,%xmm3,%xmm8,%xmm2
  151         vaesenc %xmm15,%xmm11,%xmm11
  152         movbeq  32(%r14),%r12
  153         vpclmulqdq      $0x11,%xmm3,%xmm8,%xmm8
  154         vaesenc %xmm15,%xmm12,%xmm12
  155         movq    %r13,80+8(%rsp)
  156         vaesenc %xmm15,%xmm13,%xmm13
  157         movq    %r12,88+8(%rsp)
  158         vpxor   %xmm5,%xmm6,%xmm6
  159         vaesenc %xmm15,%xmm14,%xmm14
  160         vpxor   %xmm1,%xmm6,%xmm6
  161 
  162         vmovups 112-128(%rcx),%xmm15
  163         vpslldq $8,%xmm6,%xmm5
  164         vpxor   %xmm2,%xmm4,%xmm4
  165         vmovdqu 16(%r11),%xmm3
  166 
  167         vaesenc %xmm15,%xmm9,%xmm9
  168         vpxor   %xmm8,%xmm7,%xmm7
  169         vaesenc %xmm15,%xmm10,%xmm10
  170         vpxor   %xmm5,%xmm4,%xmm4
  171         movbeq  24(%r14),%r13
  172         vaesenc %xmm15,%xmm11,%xmm11
  173         movbeq  16(%r14),%r12
  174         vpalignr        $8,%xmm4,%xmm4,%xmm0
  175         vpclmulqdq      $0x10,%xmm3,%xmm4,%xmm4
  176         movq    %r13,96+8(%rsp)
  177         vaesenc %xmm15,%xmm12,%xmm12
  178         movq    %r12,104+8(%rsp)
  179         vaesenc %xmm15,%xmm13,%xmm13
  180         vmovups 128-128(%rcx),%xmm1
  181         vaesenc %xmm15,%xmm14,%xmm14
  182 
  183         vaesenc %xmm1,%xmm9,%xmm9
  184         vmovups 144-128(%rcx),%xmm15
  185         vaesenc %xmm1,%xmm10,%xmm10
  186         vpsrldq $8,%xmm6,%xmm6
  187         vaesenc %xmm1,%xmm11,%xmm11
  188         vpxor   %xmm6,%xmm7,%xmm7
  189         vaesenc %xmm1,%xmm12,%xmm12
  190         vpxor   %xmm0,%xmm4,%xmm4
  191         movbeq  8(%r14),%r13
  192         vaesenc %xmm1,%xmm13,%xmm13
  193         movbeq  0(%r14),%r12
  194         vaesenc %xmm1,%xmm14,%xmm14
  195         vmovups 160-128(%rcx),%xmm1
  196         cmpl    $11,%ebp
  197         jb      .Lenc_tail
  198 
  199         vaesenc %xmm15,%xmm9,%xmm9
  200         vaesenc %xmm15,%xmm10,%xmm10
  201         vaesenc %xmm15,%xmm11,%xmm11
  202         vaesenc %xmm15,%xmm12,%xmm12
  203         vaesenc %xmm15,%xmm13,%xmm13
  204         vaesenc %xmm15,%xmm14,%xmm14
  205 
  206         vaesenc %xmm1,%xmm9,%xmm9
  207         vaesenc %xmm1,%xmm10,%xmm10
  208         vaesenc %xmm1,%xmm11,%xmm11
  209         vaesenc %xmm1,%xmm12,%xmm12
  210         vaesenc %xmm1,%xmm13,%xmm13
  211         vmovups 176-128(%rcx),%xmm15
  212         vaesenc %xmm1,%xmm14,%xmm14
  213         vmovups 192-128(%rcx),%xmm1
  214         je      .Lenc_tail
  215 
  216         vaesenc %xmm15,%xmm9,%xmm9
  217         vaesenc %xmm15,%xmm10,%xmm10
  218         vaesenc %xmm15,%xmm11,%xmm11
  219         vaesenc %xmm15,%xmm12,%xmm12
  220         vaesenc %xmm15,%xmm13,%xmm13
  221         vaesenc %xmm15,%xmm14,%xmm14
  222 
  223         vaesenc %xmm1,%xmm9,%xmm9
  224         vaesenc %xmm1,%xmm10,%xmm10
  225         vaesenc %xmm1,%xmm11,%xmm11
  226         vaesenc %xmm1,%xmm12,%xmm12
  227         vaesenc %xmm1,%xmm13,%xmm13
  228         vmovups 208-128(%rcx),%xmm15
  229         vaesenc %xmm1,%xmm14,%xmm14
  230         vmovups 224-128(%rcx),%xmm1
  231         jmp     .Lenc_tail
  232 
  233 .align  32
  234 .Lhandle_ctr32:
  235         vmovdqu (%r11),%xmm0
  236         vpshufb %xmm0,%xmm1,%xmm6
  237         vmovdqu 48(%r11),%xmm5
  238         vpaddd  64(%r11),%xmm6,%xmm10
  239         vpaddd  %xmm5,%xmm6,%xmm11
  240         vmovdqu 0-32(%r9),%xmm3
  241         vpaddd  %xmm5,%xmm10,%xmm12
  242         vpshufb %xmm0,%xmm10,%xmm10
  243         vpaddd  %xmm5,%xmm11,%xmm13
  244         vpshufb %xmm0,%xmm11,%xmm11
  245         vpxor   %xmm15,%xmm10,%xmm10
  246         vpaddd  %xmm5,%xmm12,%xmm14
  247         vpshufb %xmm0,%xmm12,%xmm12
  248         vpxor   %xmm15,%xmm11,%xmm11
  249         vpaddd  %xmm5,%xmm13,%xmm1
  250         vpshufb %xmm0,%xmm13,%xmm13
  251         vpshufb %xmm0,%xmm14,%xmm14
  252         vpshufb %xmm0,%xmm1,%xmm1
  253         jmp     .Lresume_ctr32
  254 
  255 .align  32
  256 .Lenc_tail:
  257         vaesenc %xmm15,%xmm9,%xmm9
  258         vmovdqu %xmm7,16+8(%rsp)
  259         vpalignr        $8,%xmm4,%xmm4,%xmm8
  260         vaesenc %xmm15,%xmm10,%xmm10
  261         vpclmulqdq      $0x10,%xmm3,%xmm4,%xmm4
  262         vpxor   0(%rdi),%xmm1,%xmm2
  263         vaesenc %xmm15,%xmm11,%xmm11
  264         vpxor   16(%rdi),%xmm1,%xmm0
  265         vaesenc %xmm15,%xmm12,%xmm12
  266         vpxor   32(%rdi),%xmm1,%xmm5
  267         vaesenc %xmm15,%xmm13,%xmm13
  268         vpxor   48(%rdi),%xmm1,%xmm6
  269         vaesenc %xmm15,%xmm14,%xmm14
  270         vpxor   64(%rdi),%xmm1,%xmm7
  271         vpxor   80(%rdi),%xmm1,%xmm3
  272         vmovdqu (%r8),%xmm1
  273 
  274         vaesenclast     %xmm2,%xmm9,%xmm9
  275         vmovdqu 32(%r11),%xmm2
  276         vaesenclast     %xmm0,%xmm10,%xmm10
  277         vpaddb  %xmm2,%xmm1,%xmm0
  278         movq    %r13,112+8(%rsp)
  279         leaq    96(%rdi),%rdi
  280         vaesenclast     %xmm5,%xmm11,%xmm11
  281         vpaddb  %xmm2,%xmm0,%xmm5
  282         movq    %r12,120+8(%rsp)
  283         leaq    96(%rsi),%rsi
  284         vmovdqu 0-128(%rcx),%xmm15
  285         vaesenclast     %xmm6,%xmm12,%xmm12
  286         vpaddb  %xmm2,%xmm5,%xmm6
  287         vaesenclast     %xmm7,%xmm13,%xmm13
  288         vpaddb  %xmm2,%xmm6,%xmm7
  289         vaesenclast     %xmm3,%xmm14,%xmm14
  290         vpaddb  %xmm2,%xmm7,%xmm3
  291 
  292         addq    $0x60,%r10
  293         subq    $0x6,%rdx
  294         jc      .L6x_done
  295 
  296         vmovups %xmm9,-96(%rsi)
  297         vpxor   %xmm15,%xmm1,%xmm9
  298         vmovups %xmm10,-80(%rsi)
  299         vmovdqa %xmm0,%xmm10
  300         vmovups %xmm11,-64(%rsi)
  301         vmovdqa %xmm5,%xmm11
  302         vmovups %xmm12,-48(%rsi)
  303         vmovdqa %xmm6,%xmm12
  304         vmovups %xmm13,-32(%rsi)
  305         vmovdqa %xmm7,%xmm13
  306         vmovups %xmm14,-16(%rsi)
  307         vmovdqa %xmm3,%xmm14
  308         vmovdqu 32+8(%rsp),%xmm7
  309         jmp     .Loop6x
  310 
  311 .L6x_done:
  312         vpxor   16+8(%rsp),%xmm8,%xmm8
  313         vpxor   %xmm4,%xmm8,%xmm8
  314 
  315         .byte   0xf3,0xc3
  316 .cfi_endproc    
  317 .size   _aesni_ctr32_ghash_6x,.-_aesni_ctr32_ghash_6x
  318 .globl  aesni_gcm_decrypt
  319 .type   aesni_gcm_decrypt,@function
  320 .align  32
  321 aesni_gcm_decrypt:
  322 .cfi_startproc  
  323         xorq    %r10,%r10
  324         cmpq    $0x60,%rdx
  325         jb      .Lgcm_dec_abort
  326 
  327         leaq    (%rsp),%rax
  328 .cfi_def_cfa_register   %rax
  329         pushq   %rbx
  330 .cfi_offset     %rbx,-16
  331         pushq   %rbp
  332 .cfi_offset     %rbp,-24
  333         pushq   %r12
  334 .cfi_offset     %r12,-32
  335         pushq   %r13
  336 .cfi_offset     %r13,-40
  337         pushq   %r14
  338 .cfi_offset     %r14,-48
  339         pushq   %r15
  340 .cfi_offset     %r15,-56
  341         vzeroupper
  342 
  343         vmovdqu (%r8),%xmm1
  344         addq    $-128,%rsp
  345         movl    12(%r8),%ebx
  346         leaq    .Lbswap_mask(%rip),%r11
  347         leaq    -128(%rcx),%r14
  348         movq    $0xf80,%r15
  349         vmovdqu (%r9),%xmm8
  350         andq    $-128,%rsp
  351         vmovdqu (%r11),%xmm0
  352         leaq    128(%rcx),%rcx
  353         leaq    32+32(%r9),%r9
  354         movl    240-128(%rcx),%ebp
  355         vpshufb %xmm0,%xmm8,%xmm8
  356 
  357         andq    %r15,%r14
  358         andq    %rsp,%r15
  359         subq    %r14,%r15
  360         jc      .Ldec_no_key_aliasing
  361         cmpq    $768,%r15
  362         jnc     .Ldec_no_key_aliasing
  363         subq    %r15,%rsp
  364 .Ldec_no_key_aliasing:
  365 
  366         vmovdqu 80(%rdi),%xmm7
  367         leaq    (%rdi),%r14
  368         vmovdqu 64(%rdi),%xmm4
  369         leaq    -192(%rdi,%rdx,1),%r15
  370         vmovdqu 48(%rdi),%xmm5
  371         shrq    $4,%rdx
  372         xorq    %r10,%r10
  373         vmovdqu 32(%rdi),%xmm6
  374         vpshufb %xmm0,%xmm7,%xmm7
  375         vmovdqu 16(%rdi),%xmm2
  376         vpshufb %xmm0,%xmm4,%xmm4
  377         vmovdqu (%rdi),%xmm3
  378         vpshufb %xmm0,%xmm5,%xmm5
  379         vmovdqu %xmm4,48(%rsp)
  380         vpshufb %xmm0,%xmm6,%xmm6
  381         vmovdqu %xmm5,64(%rsp)
  382         vpshufb %xmm0,%xmm2,%xmm2
  383         vmovdqu %xmm6,80(%rsp)
  384         vpshufb %xmm0,%xmm3,%xmm3
  385         vmovdqu %xmm2,96(%rsp)
  386         vmovdqu %xmm3,112(%rsp)
  387 
  388         call    _aesni_ctr32_ghash_6x
  389 
  390         vmovups %xmm9,-96(%rsi)
  391         vmovups %xmm10,-80(%rsi)
  392         vmovups %xmm11,-64(%rsi)
  393         vmovups %xmm12,-48(%rsi)
  394         vmovups %xmm13,-32(%rsi)
  395         vmovups %xmm14,-16(%rsi)
  396 
  397         vpshufb (%r11),%xmm8,%xmm8
  398         vmovdqu %xmm8,-64(%r9)
  399 
  400         vzeroupper
  401         movq    -48(%rax),%r15
  402 .cfi_restore    %r15
  403         movq    -40(%rax),%r14
  404 .cfi_restore    %r14
  405         movq    -32(%rax),%r13
  406 .cfi_restore    %r13
  407         movq    -24(%rax),%r12
  408 .cfi_restore    %r12
  409         movq    -16(%rax),%rbp
  410 .cfi_restore    %rbp
  411         movq    -8(%rax),%rbx
  412 .cfi_restore    %rbx
  413         leaq    (%rax),%rsp
  414 .cfi_def_cfa_register   %rsp
  415 .Lgcm_dec_abort:
  416         movq    %r10,%rax
  417         .byte   0xf3,0xc3
  418 .cfi_endproc    
  419 .size   aesni_gcm_decrypt,.-aesni_gcm_decrypt
  420 .type   _aesni_ctr32_6x,@function
  421 .align  32
  422 _aesni_ctr32_6x:
  423 .cfi_startproc  
  424         vmovdqu 0-128(%rcx),%xmm4
  425         vmovdqu 32(%r11),%xmm2
  426         leaq    -1(%rbp),%r13
  427         vmovups 16-128(%rcx),%xmm15
  428         leaq    32-128(%rcx),%r12
  429         vpxor   %xmm4,%xmm1,%xmm9
  430         addl    $100663296,%ebx
  431         jc      .Lhandle_ctr32_2
  432         vpaddb  %xmm2,%xmm1,%xmm10
  433         vpaddb  %xmm2,%xmm10,%xmm11
  434         vpxor   %xmm4,%xmm10,%xmm10
  435         vpaddb  %xmm2,%xmm11,%xmm12
  436         vpxor   %xmm4,%xmm11,%xmm11
  437         vpaddb  %xmm2,%xmm12,%xmm13
  438         vpxor   %xmm4,%xmm12,%xmm12
  439         vpaddb  %xmm2,%xmm13,%xmm14
  440         vpxor   %xmm4,%xmm13,%xmm13
  441         vpaddb  %xmm2,%xmm14,%xmm1
  442         vpxor   %xmm4,%xmm14,%xmm14
  443         jmp     .Loop_ctr32
  444 
  445 .align  16
  446 .Loop_ctr32:
  447         vaesenc %xmm15,%xmm9,%xmm9
  448         vaesenc %xmm15,%xmm10,%xmm10
  449         vaesenc %xmm15,%xmm11,%xmm11
  450         vaesenc %xmm15,%xmm12,%xmm12
  451         vaesenc %xmm15,%xmm13,%xmm13
  452         vaesenc %xmm15,%xmm14,%xmm14
  453         vmovups (%r12),%xmm15
  454         leaq    16(%r12),%r12
  455         decl    %r13d
  456         jnz     .Loop_ctr32
  457 
  458         vmovdqu (%r12),%xmm3
  459         vaesenc %xmm15,%xmm9,%xmm9
  460         vpxor   0(%rdi),%xmm3,%xmm4
  461         vaesenc %xmm15,%xmm10,%xmm10
  462         vpxor   16(%rdi),%xmm3,%xmm5
  463         vaesenc %xmm15,%xmm11,%xmm11
  464         vpxor   32(%rdi),%xmm3,%xmm6
  465         vaesenc %xmm15,%xmm12,%xmm12
  466         vpxor   48(%rdi),%xmm3,%xmm8
  467         vaesenc %xmm15,%xmm13,%xmm13
  468         vpxor   64(%rdi),%xmm3,%xmm2
  469         vaesenc %xmm15,%xmm14,%xmm14
  470         vpxor   80(%rdi),%xmm3,%xmm3
  471         leaq    96(%rdi),%rdi
  472 
  473         vaesenclast     %xmm4,%xmm9,%xmm9
  474         vaesenclast     %xmm5,%xmm10,%xmm10
  475         vaesenclast     %xmm6,%xmm11,%xmm11
  476         vaesenclast     %xmm8,%xmm12,%xmm12
  477         vaesenclast     %xmm2,%xmm13,%xmm13
  478         vaesenclast     %xmm3,%xmm14,%xmm14
  479         vmovups %xmm9,0(%rsi)
  480         vmovups %xmm10,16(%rsi)
  481         vmovups %xmm11,32(%rsi)
  482         vmovups %xmm12,48(%rsi)
  483         vmovups %xmm13,64(%rsi)
  484         vmovups %xmm14,80(%rsi)
  485         leaq    96(%rsi),%rsi
  486 
  487         .byte   0xf3,0xc3
  488 .align  32
  489 .Lhandle_ctr32_2:
  490         vpshufb %xmm0,%xmm1,%xmm6
  491         vmovdqu 48(%r11),%xmm5
  492         vpaddd  64(%r11),%xmm6,%xmm10
  493         vpaddd  %xmm5,%xmm6,%xmm11
  494         vpaddd  %xmm5,%xmm10,%xmm12
  495         vpshufb %xmm0,%xmm10,%xmm10
  496         vpaddd  %xmm5,%xmm11,%xmm13
  497         vpshufb %xmm0,%xmm11,%xmm11
  498         vpxor   %xmm4,%xmm10,%xmm10
  499         vpaddd  %xmm5,%xmm12,%xmm14
  500         vpshufb %xmm0,%xmm12,%xmm12
  501         vpxor   %xmm4,%xmm11,%xmm11
  502         vpaddd  %xmm5,%xmm13,%xmm1
  503         vpshufb %xmm0,%xmm13,%xmm13
  504         vpxor   %xmm4,%xmm12,%xmm12
  505         vpshufb %xmm0,%xmm14,%xmm14
  506         vpxor   %xmm4,%xmm13,%xmm13
  507         vpshufb %xmm0,%xmm1,%xmm1
  508         vpxor   %xmm4,%xmm14,%xmm14
  509         jmp     .Loop_ctr32
  510 .cfi_endproc    
  511 .size   _aesni_ctr32_6x,.-_aesni_ctr32_6x
  512 
  513 .globl  aesni_gcm_encrypt
  514 .type   aesni_gcm_encrypt,@function
  515 .align  32
  516 aesni_gcm_encrypt:
  517 .cfi_startproc  
  518         xorq    %r10,%r10
  519         cmpq    $288,%rdx
  520         jb      .Lgcm_enc_abort
  521 
  522         leaq    (%rsp),%rax
  523 .cfi_def_cfa_register   %rax
  524         pushq   %rbx
  525 .cfi_offset     %rbx,-16
  526         pushq   %rbp
  527 .cfi_offset     %rbp,-24
  528         pushq   %r12
  529 .cfi_offset     %r12,-32
  530         pushq   %r13
  531 .cfi_offset     %r13,-40
  532         pushq   %r14
  533 .cfi_offset     %r14,-48
  534         pushq   %r15
  535 .cfi_offset     %r15,-56
  536         vzeroupper
  537 
  538         vmovdqu (%r8),%xmm1
  539         addq    $-128,%rsp
  540         movl    12(%r8),%ebx
  541         leaq    .Lbswap_mask(%rip),%r11
  542         leaq    -128(%rcx),%r14
  543         movq    $0xf80,%r15
  544         leaq    128(%rcx),%rcx
  545         vmovdqu (%r11),%xmm0
  546         andq    $-128,%rsp
  547         movl    240-128(%rcx),%ebp
  548 
  549         andq    %r15,%r14
  550         andq    %rsp,%r15
  551         subq    %r14,%r15
  552         jc      .Lenc_no_key_aliasing
  553         cmpq    $768,%r15
  554         jnc     .Lenc_no_key_aliasing
  555         subq    %r15,%rsp
  556 .Lenc_no_key_aliasing:
  557 
  558         leaq    (%rsi),%r14
  559         leaq    -192(%rsi,%rdx,1),%r15
  560         shrq    $4,%rdx
  561 
  562         call    _aesni_ctr32_6x
  563         vpshufb %xmm0,%xmm9,%xmm8
  564         vpshufb %xmm0,%xmm10,%xmm2
  565         vmovdqu %xmm8,112(%rsp)
  566         vpshufb %xmm0,%xmm11,%xmm4
  567         vmovdqu %xmm2,96(%rsp)
  568         vpshufb %xmm0,%xmm12,%xmm5
  569         vmovdqu %xmm4,80(%rsp)
  570         vpshufb %xmm0,%xmm13,%xmm6
  571         vmovdqu %xmm5,64(%rsp)
  572         vpshufb %xmm0,%xmm14,%xmm7
  573         vmovdqu %xmm6,48(%rsp)
  574 
  575         call    _aesni_ctr32_6x
  576 
  577         vmovdqu (%r9),%xmm8
  578         leaq    32+32(%r9),%r9
  579         subq    $12,%rdx
  580         movq    $192,%r10
  581         vpshufb %xmm0,%xmm8,%xmm8
  582 
  583         call    _aesni_ctr32_ghash_6x
  584         vmovdqu 32(%rsp),%xmm7
  585         vmovdqu (%r11),%xmm0
  586         vmovdqu 0-32(%r9),%xmm3
  587         vpunpckhqdq     %xmm7,%xmm7,%xmm1
  588         vmovdqu 32-32(%r9),%xmm15
  589         vmovups %xmm9,-96(%rsi)
  590         vpshufb %xmm0,%xmm9,%xmm9
  591         vpxor   %xmm7,%xmm1,%xmm1
  592         vmovups %xmm10,-80(%rsi)
  593         vpshufb %xmm0,%xmm10,%xmm10
  594         vmovups %xmm11,-64(%rsi)
  595         vpshufb %xmm0,%xmm11,%xmm11
  596         vmovups %xmm12,-48(%rsi)
  597         vpshufb %xmm0,%xmm12,%xmm12
  598         vmovups %xmm13,-32(%rsi)
  599         vpshufb %xmm0,%xmm13,%xmm13
  600         vmovups %xmm14,-16(%rsi)
  601         vpshufb %xmm0,%xmm14,%xmm14
  602         vmovdqu %xmm9,16(%rsp)
  603         vmovdqu 48(%rsp),%xmm6
  604         vmovdqu 16-32(%r9),%xmm0
  605         vpunpckhqdq     %xmm6,%xmm6,%xmm2
  606         vpclmulqdq      $0x00,%xmm3,%xmm7,%xmm5
  607         vpxor   %xmm6,%xmm2,%xmm2
  608         vpclmulqdq      $0x11,%xmm3,%xmm7,%xmm7
  609         vpclmulqdq      $0x00,%xmm15,%xmm1,%xmm1
  610 
  611         vmovdqu 64(%rsp),%xmm9
  612         vpclmulqdq      $0x00,%xmm0,%xmm6,%xmm4
  613         vmovdqu 48-32(%r9),%xmm3
  614         vpxor   %xmm5,%xmm4,%xmm4
  615         vpunpckhqdq     %xmm9,%xmm9,%xmm5
  616         vpclmulqdq      $0x11,%xmm0,%xmm6,%xmm6
  617         vpxor   %xmm9,%xmm5,%xmm5
  618         vpxor   %xmm7,%xmm6,%xmm6
  619         vpclmulqdq      $0x10,%xmm15,%xmm2,%xmm2
  620         vmovdqu 80-32(%r9),%xmm15
  621         vpxor   %xmm1,%xmm2,%xmm2
  622 
  623         vmovdqu 80(%rsp),%xmm1
  624         vpclmulqdq      $0x00,%xmm3,%xmm9,%xmm7
  625         vmovdqu 64-32(%r9),%xmm0
  626         vpxor   %xmm4,%xmm7,%xmm7
  627         vpunpckhqdq     %xmm1,%xmm1,%xmm4
  628         vpclmulqdq      $0x11,%xmm3,%xmm9,%xmm9
  629         vpxor   %xmm1,%xmm4,%xmm4
  630         vpxor   %xmm6,%xmm9,%xmm9
  631         vpclmulqdq      $0x00,%xmm15,%xmm5,%xmm5
  632         vpxor   %xmm2,%xmm5,%xmm5
  633 
  634         vmovdqu 96(%rsp),%xmm2
  635         vpclmulqdq      $0x00,%xmm0,%xmm1,%xmm6
  636         vmovdqu 96-32(%r9),%xmm3
  637         vpxor   %xmm7,%xmm6,%xmm6
  638         vpunpckhqdq     %xmm2,%xmm2,%xmm7
  639         vpclmulqdq      $0x11,%xmm0,%xmm1,%xmm1
  640         vpxor   %xmm2,%xmm7,%xmm7
  641         vpxor   %xmm9,%xmm1,%xmm1
  642         vpclmulqdq      $0x10,%xmm15,%xmm4,%xmm4
  643         vmovdqu 128-32(%r9),%xmm15
  644         vpxor   %xmm5,%xmm4,%xmm4
  645 
  646         vpxor   112(%rsp),%xmm8,%xmm8
  647         vpclmulqdq      $0x00,%xmm3,%xmm2,%xmm5
  648         vmovdqu 112-32(%r9),%xmm0
  649         vpunpckhqdq     %xmm8,%xmm8,%xmm9
  650         vpxor   %xmm6,%xmm5,%xmm5
  651         vpclmulqdq      $0x11,%xmm3,%xmm2,%xmm2
  652         vpxor   %xmm8,%xmm9,%xmm9
  653         vpxor   %xmm1,%xmm2,%xmm2
  654         vpclmulqdq      $0x00,%xmm15,%xmm7,%xmm7
  655         vpxor   %xmm4,%xmm7,%xmm4
  656 
  657         vpclmulqdq      $0x00,%xmm0,%xmm8,%xmm6
  658         vmovdqu 0-32(%r9),%xmm3
  659         vpunpckhqdq     %xmm14,%xmm14,%xmm1
  660         vpclmulqdq      $0x11,%xmm0,%xmm8,%xmm8
  661         vpxor   %xmm14,%xmm1,%xmm1
  662         vpxor   %xmm5,%xmm6,%xmm5
  663         vpclmulqdq      $0x10,%xmm15,%xmm9,%xmm9
  664         vmovdqu 32-32(%r9),%xmm15
  665         vpxor   %xmm2,%xmm8,%xmm7
  666         vpxor   %xmm4,%xmm9,%xmm6
  667 
  668         vmovdqu 16-32(%r9),%xmm0
  669         vpxor   %xmm5,%xmm7,%xmm9
  670         vpclmulqdq      $0x00,%xmm3,%xmm14,%xmm4
  671         vpxor   %xmm9,%xmm6,%xmm6
  672         vpunpckhqdq     %xmm13,%xmm13,%xmm2
  673         vpclmulqdq      $0x11,%xmm3,%xmm14,%xmm14
  674         vpxor   %xmm13,%xmm2,%xmm2
  675         vpslldq $8,%xmm6,%xmm9
  676         vpclmulqdq      $0x00,%xmm15,%xmm1,%xmm1
  677         vpxor   %xmm9,%xmm5,%xmm8
  678         vpsrldq $8,%xmm6,%xmm6
  679         vpxor   %xmm6,%xmm7,%xmm7
  680 
  681         vpclmulqdq      $0x00,%xmm0,%xmm13,%xmm5
  682         vmovdqu 48-32(%r9),%xmm3
  683         vpxor   %xmm4,%xmm5,%xmm5
  684         vpunpckhqdq     %xmm12,%xmm12,%xmm9
  685         vpclmulqdq      $0x11,%xmm0,%xmm13,%xmm13
  686         vpxor   %xmm12,%xmm9,%xmm9
  687         vpxor   %xmm14,%xmm13,%xmm13
  688         vpalignr        $8,%xmm8,%xmm8,%xmm14
  689         vpclmulqdq      $0x10,%xmm15,%xmm2,%xmm2
  690         vmovdqu 80-32(%r9),%xmm15
  691         vpxor   %xmm1,%xmm2,%xmm2
  692 
  693         vpclmulqdq      $0x00,%xmm3,%xmm12,%xmm4
  694         vmovdqu 64-32(%r9),%xmm0
  695         vpxor   %xmm5,%xmm4,%xmm4
  696         vpunpckhqdq     %xmm11,%xmm11,%xmm1
  697         vpclmulqdq      $0x11,%xmm3,%xmm12,%xmm12
  698         vpxor   %xmm11,%xmm1,%xmm1
  699         vpxor   %xmm13,%xmm12,%xmm12
  700         vxorps  16(%rsp),%xmm7,%xmm7
  701         vpclmulqdq      $0x00,%xmm15,%xmm9,%xmm9
  702         vpxor   %xmm2,%xmm9,%xmm9
  703 
  704         vpclmulqdq      $0x10,16(%r11),%xmm8,%xmm8
  705         vxorps  %xmm14,%xmm8,%xmm8
  706 
  707         vpclmulqdq      $0x00,%xmm0,%xmm11,%xmm5
  708         vmovdqu 96-32(%r9),%xmm3
  709         vpxor   %xmm4,%xmm5,%xmm5
  710         vpunpckhqdq     %xmm10,%xmm10,%xmm2
  711         vpclmulqdq      $0x11,%xmm0,%xmm11,%xmm11
  712         vpxor   %xmm10,%xmm2,%xmm2
  713         vpalignr        $8,%xmm8,%xmm8,%xmm14
  714         vpxor   %xmm12,%xmm11,%xmm11
  715         vpclmulqdq      $0x10,%xmm15,%xmm1,%xmm1
  716         vmovdqu 128-32(%r9),%xmm15
  717         vpxor   %xmm9,%xmm1,%xmm1
  718 
  719         vxorps  %xmm7,%xmm14,%xmm14
  720         vpclmulqdq      $0x10,16(%r11),%xmm8,%xmm8
  721         vxorps  %xmm14,%xmm8,%xmm8
  722 
  723         vpclmulqdq      $0x00,%xmm3,%xmm10,%xmm4
  724         vmovdqu 112-32(%r9),%xmm0
  725         vpxor   %xmm5,%xmm4,%xmm4
  726         vpunpckhqdq     %xmm8,%xmm8,%xmm9
  727         vpclmulqdq      $0x11,%xmm3,%xmm10,%xmm10
  728         vpxor   %xmm8,%xmm9,%xmm9
  729         vpxor   %xmm11,%xmm10,%xmm10
  730         vpclmulqdq      $0x00,%xmm15,%xmm2,%xmm2
  731         vpxor   %xmm1,%xmm2,%xmm2
  732 
  733         vpclmulqdq      $0x00,%xmm0,%xmm8,%xmm5
  734         vpclmulqdq      $0x11,%xmm0,%xmm8,%xmm7
  735         vpxor   %xmm4,%xmm5,%xmm5
  736         vpclmulqdq      $0x10,%xmm15,%xmm9,%xmm6
  737         vpxor   %xmm10,%xmm7,%xmm7
  738         vpxor   %xmm2,%xmm6,%xmm6
  739 
  740         vpxor   %xmm5,%xmm7,%xmm4
  741         vpxor   %xmm4,%xmm6,%xmm6
  742         vpslldq $8,%xmm6,%xmm1
  743         vmovdqu 16(%r11),%xmm3
  744         vpsrldq $8,%xmm6,%xmm6
  745         vpxor   %xmm1,%xmm5,%xmm8
  746         vpxor   %xmm6,%xmm7,%xmm7
  747 
  748         vpalignr        $8,%xmm8,%xmm8,%xmm2
  749         vpclmulqdq      $0x10,%xmm3,%xmm8,%xmm8
  750         vpxor   %xmm2,%xmm8,%xmm8
  751 
  752         vpalignr        $8,%xmm8,%xmm8,%xmm2
  753         vpclmulqdq      $0x10,%xmm3,%xmm8,%xmm8
  754         vpxor   %xmm7,%xmm2,%xmm2
  755         vpxor   %xmm2,%xmm8,%xmm8
  756         vpshufb (%r11),%xmm8,%xmm8
  757         vmovdqu %xmm8,-64(%r9)
  758 
  759         vzeroupper
  760         movq    -48(%rax),%r15
  761 .cfi_restore    %r15
  762         movq    -40(%rax),%r14
  763 .cfi_restore    %r14
  764         movq    -32(%rax),%r13
  765 .cfi_restore    %r13
  766         movq    -24(%rax),%r12
  767 .cfi_restore    %r12
  768         movq    -16(%rax),%rbp
  769 .cfi_restore    %rbp
  770         movq    -8(%rax),%rbx
  771 .cfi_restore    %rbx
  772         leaq    (%rax),%rsp
  773 .cfi_def_cfa_register   %rsp
  774 .Lgcm_enc_abort:
  775         movq    %r10,%rax
  776         .byte   0xf3,0xc3
  777 .cfi_endproc    
  778 .size   aesni_gcm_encrypt,.-aesni_gcm_encrypt
  779 .align  64
  780 .Lbswap_mask:
  781 .byte   15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
  782 .Lpoly:
  783 .byte   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
  784 .Lone_msb:
  785 .byte   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  786 .Ltwo_lsb:
  787 .byte   2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  788 .Lone_lsb:
  789 .byte   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  790 .byte   65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
  791 .align  64

Cache object: b8678e297fd132e14a5dbe20803be835


[ 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.