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/powerpc64le/aesp8-ppc.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 aesp8-ppc.pl. */
    3 .machine        "any"
    4 
    5 .abiversion     2
    6 .text
    7 
    8 .align  7
    9 rcon:
   10 .byte   0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01
   11 .byte   0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b
   12 .byte   0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d
   13 .byte   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
   14 .Lconsts:
   15         mflr    0
   16         bcl     20,31,$+4
   17         mflr    6
   18         addi    6,6,-0x48
   19         mtlr    0
   20         blr     
   21 .long   0
   22 .byte   0,12,0x14,0,0,0,0,0
   23 .byte   65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,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
   24 .align  2
   25 
   26 .globl  aes_p8_set_encrypt_key
   27 .type   aes_p8_set_encrypt_key,@function
   28 .align  5
   29 aes_p8_set_encrypt_key:
   30 .localentry     aes_p8_set_encrypt_key,0
   31 
   32 .Lset_encrypt_key:
   33         mflr    11
   34         std     11,16(1)
   35 
   36         li      6,-1
   37         cmpldi  3,0
   38         beq-    .Lenc_key_abort
   39         cmpldi  5,0
   40         beq-    .Lenc_key_abort
   41         li      6,-2
   42         cmpwi   4,128
   43         blt-    .Lenc_key_abort
   44         cmpwi   4,256
   45         bgt-    .Lenc_key_abort
   46         andi.   0,4,0x3f
   47         bne-    .Lenc_key_abort
   48 
   49         lis     0,0xfff0
   50         li      12,-1
   51         or      0,0,0
   52 
   53         bl      .Lconsts
   54         mtlr    11
   55 
   56         neg     9,3
   57         lvx     1,0,3
   58         addi    3,3,15
   59         lvsr    3,0,9
   60         li      8,0x20
   61         cmpwi   4,192
   62         lvx     2,0,3
   63         vspltisb        5,0x0f
   64         lvx     4,0,6
   65         vxor    3,3,5
   66         lvx     5,8,6
   67         addi    6,6,0x10
   68         vperm   1,1,2,3
   69         li      7,8
   70         vxor    0,0,0
   71         mtctr   7
   72 
   73         lvsl    8,0,5
   74         vspltisb        9,-1
   75         lvx     10,0,5
   76         vperm   9,9,0,8
   77 
   78         blt     .Loop128
   79         addi    3,3,8
   80         beq     .L192
   81         addi    3,3,8
   82         b       .L256
   83 
   84 .align  4
   85 .Loop128:
   86         vperm   3,1,1,5
   87         vsldoi  6,0,1,12
   88         vperm   11,1,1,8
   89         vsel    7,10,11,9
   90         vor     10,11,11
   91         .long   0x10632509
   92         stvx    7,0,5
   93         addi    5,5,16
   94 
   95         vxor    1,1,6
   96         vsldoi  6,0,6,12
   97         vxor    1,1,6
   98         vsldoi  6,0,6,12
   99         vxor    1,1,6
  100         vadduwm 4,4,4
  101         vxor    1,1,3
  102         bdnz    .Loop128
  103 
  104         lvx     4,0,6
  105 
  106         vperm   3,1,1,5
  107         vsldoi  6,0,1,12
  108         vperm   11,1,1,8
  109         vsel    7,10,11,9
  110         vor     10,11,11
  111         .long   0x10632509
  112         stvx    7,0,5
  113         addi    5,5,16
  114 
  115         vxor    1,1,6
  116         vsldoi  6,0,6,12
  117         vxor    1,1,6
  118         vsldoi  6,0,6,12
  119         vxor    1,1,6
  120         vadduwm 4,4,4
  121         vxor    1,1,3
  122 
  123         vperm   3,1,1,5
  124         vsldoi  6,0,1,12
  125         vperm   11,1,1,8
  126         vsel    7,10,11,9
  127         vor     10,11,11
  128         .long   0x10632509
  129         stvx    7,0,5
  130         addi    5,5,16
  131 
  132         vxor    1,1,6
  133         vsldoi  6,0,6,12
  134         vxor    1,1,6
  135         vsldoi  6,0,6,12
  136         vxor    1,1,6
  137         vxor    1,1,3
  138         vperm   11,1,1,8
  139         vsel    7,10,11,9
  140         vor     10,11,11
  141         stvx    7,0,5
  142 
  143         addi    3,5,15
  144         addi    5,5,0x50
  145 
  146         li      8,10
  147         b       .Ldone
  148 
  149 .align  4
  150 .L192:
  151         lvx     6,0,3
  152         li      7,4
  153         vperm   11,1,1,8
  154         vsel    7,10,11,9
  155         vor     10,11,11
  156         stvx    7,0,5
  157         addi    5,5,16
  158         vperm   2,2,6,3
  159         vspltisb        3,8
  160         mtctr   7
  161         vsububm 5,5,3
  162 
  163 .Loop192:
  164         vperm   3,2,2,5
  165         vsldoi  6,0,1,12
  166         .long   0x10632509
  167 
  168         vxor    1,1,6
  169         vsldoi  6,0,6,12
  170         vxor    1,1,6
  171         vsldoi  6,0,6,12
  172         vxor    1,1,6
  173 
  174         vsldoi  7,0,2,8
  175         vspltw  6,1,3
  176         vxor    6,6,2
  177         vsldoi  2,0,2,12
  178         vadduwm 4,4,4
  179         vxor    2,2,6
  180         vxor    1,1,3
  181         vxor    2,2,3
  182         vsldoi  7,7,1,8
  183 
  184         vperm   3,2,2,5
  185         vsldoi  6,0,1,12
  186         vperm   11,7,7,8
  187         vsel    7,10,11,9
  188         vor     10,11,11
  189         .long   0x10632509
  190         stvx    7,0,5
  191         addi    5,5,16
  192 
  193         vsldoi  7,1,2,8
  194         vxor    1,1,6
  195         vsldoi  6,0,6,12
  196         vperm   11,7,7,8
  197         vsel    7,10,11,9
  198         vor     10,11,11
  199         vxor    1,1,6
  200         vsldoi  6,0,6,12
  201         vxor    1,1,6
  202         stvx    7,0,5
  203         addi    5,5,16
  204 
  205         vspltw  6,1,3
  206         vxor    6,6,2
  207         vsldoi  2,0,2,12
  208         vadduwm 4,4,4
  209         vxor    2,2,6
  210         vxor    1,1,3
  211         vxor    2,2,3
  212         vperm   11,1,1,8
  213         vsel    7,10,11,9
  214         vor     10,11,11
  215         stvx    7,0,5
  216         addi    3,5,15
  217         addi    5,5,16
  218         bdnz    .Loop192
  219 
  220         li      8,12
  221         addi    5,5,0x20
  222         b       .Ldone
  223 
  224 .align  4
  225 .L256:
  226         lvx     6,0,3
  227         li      7,7
  228         li      8,14
  229         vperm   11,1,1,8
  230         vsel    7,10,11,9
  231         vor     10,11,11
  232         stvx    7,0,5
  233         addi    5,5,16
  234         vperm   2,2,6,3
  235         mtctr   7
  236 
  237 .Loop256:
  238         vperm   3,2,2,5
  239         vsldoi  6,0,1,12
  240         vperm   11,2,2,8
  241         vsel    7,10,11,9
  242         vor     10,11,11
  243         .long   0x10632509
  244         stvx    7,0,5
  245         addi    5,5,16
  246 
  247         vxor    1,1,6
  248         vsldoi  6,0,6,12
  249         vxor    1,1,6
  250         vsldoi  6,0,6,12
  251         vxor    1,1,6
  252         vadduwm 4,4,4
  253         vxor    1,1,3
  254         vperm   11,1,1,8
  255         vsel    7,10,11,9
  256         vor     10,11,11
  257         stvx    7,0,5
  258         addi    3,5,15
  259         addi    5,5,16
  260         bdz     .Ldone
  261 
  262         vspltw  3,1,3
  263         vsldoi  6,0,2,12
  264         .long   0x106305C8
  265 
  266         vxor    2,2,6
  267         vsldoi  6,0,6,12
  268         vxor    2,2,6
  269         vsldoi  6,0,6,12
  270         vxor    2,2,6
  271 
  272         vxor    2,2,3
  273         b       .Loop256
  274 
  275 .align  4
  276 .Ldone:
  277         lvx     2,0,3
  278         vsel    2,10,2,9
  279         stvx    2,0,3
  280         li      6,0
  281         or      12,12,12
  282         stw     8,0(5)
  283 
  284 .Lenc_key_abort:
  285         mr      3,6
  286         blr     
  287 .long   0
  288 .byte   0,12,0x14,1,0,0,3,0
  289 .long   0
  290 .size   aes_p8_set_encrypt_key,.-aes_p8_set_encrypt_key
  291 
  292 .globl  aes_p8_set_decrypt_key
  293 .type   aes_p8_set_decrypt_key,@function
  294 .align  5
  295 aes_p8_set_decrypt_key:
  296 .localentry     aes_p8_set_decrypt_key,0
  297 
  298         stdu    1,-64(1)
  299         mflr    10
  300         std     10,64+16(1)
  301         bl      .Lset_encrypt_key
  302         mtlr    10
  303 
  304         cmpwi   3,0
  305         bne-    .Ldec_key_abort
  306 
  307         slwi    7,8,4
  308         subi    3,5,240
  309         srwi    8,8,1
  310         add     5,3,7
  311         mtctr   8
  312 
  313 .Ldeckey:
  314         lwz     0, 0(3)
  315         lwz     6, 4(3)
  316         lwz     7, 8(3)
  317         lwz     8, 12(3)
  318         addi    3,3,16
  319         lwz     9, 0(5)
  320         lwz     10,4(5)
  321         lwz     11,8(5)
  322         lwz     12,12(5)
  323         stw     0, 0(5)
  324         stw     6, 4(5)
  325         stw     7, 8(5)
  326         stw     8, 12(5)
  327         subi    5,5,16
  328         stw     9, -16(3)
  329         stw     10,-12(3)
  330         stw     11,-8(3)
  331         stw     12,-4(3)
  332         bdnz    .Ldeckey
  333 
  334         xor     3,3,3
  335 .Ldec_key_abort:
  336         addi    1,1,64
  337         blr     
  338 .long   0
  339 .byte   0,12,4,1,0x80,0,3,0
  340 .long   0
  341 .size   aes_p8_set_decrypt_key,.-aes_p8_set_decrypt_key
  342 .globl  aes_p8_encrypt
  343 .type   aes_p8_encrypt,@function
  344 .align  5
  345 aes_p8_encrypt:
  346 .localentry     aes_p8_encrypt,0
  347 
  348         lwz     6,240(5)
  349         lis     0,0xfc00
  350         li      12,-1
  351         li      7,15
  352         or      0,0,0
  353 
  354         lvx     0,0,3
  355         neg     11,4
  356         lvx     1,7,3
  357         lvsl    2,0,3
  358         vspltisb        4,0x0f
  359         lvsr    3,0,11
  360         vxor    2,2,4
  361         li      7,16
  362         vperm   0,0,1,2
  363         lvx     1,0,5
  364         lvsr    5,0,5
  365         srwi    6,6,1
  366         lvx     2,7,5
  367         addi    7,7,16
  368         subi    6,6,1
  369         vperm   1,2,1,5
  370 
  371         vxor    0,0,1
  372         lvx     1,7,5
  373         addi    7,7,16
  374         mtctr   6
  375 
  376 .Loop_enc:
  377         vperm   2,1,2,5
  378         .long   0x10001508
  379         lvx     2,7,5
  380         addi    7,7,16
  381         vperm   1,2,1,5
  382         .long   0x10000D08
  383         lvx     1,7,5
  384         addi    7,7,16
  385         bdnz    .Loop_enc
  386 
  387         vperm   2,1,2,5
  388         .long   0x10001508
  389         lvx     2,7,5
  390         vperm   1,2,1,5
  391         .long   0x10000D09
  392 
  393         vspltisb        2,-1
  394         vxor    1,1,1
  395         li      7,15
  396         vperm   2,2,1,3
  397         vxor    3,3,4
  398         lvx     1,0,4
  399         vperm   0,0,0,3
  400         vsel    1,1,0,2
  401         lvx     4,7,4
  402         stvx    1,0,4
  403         vsel    0,0,4,2
  404         stvx    0,7,4
  405 
  406         or      12,12,12
  407         blr     
  408 .long   0
  409 .byte   0,12,0x14,0,0,0,3,0
  410 .long   0
  411 .size   aes_p8_encrypt,.-aes_p8_encrypt
  412 .globl  aes_p8_decrypt
  413 .type   aes_p8_decrypt,@function
  414 .align  5
  415 aes_p8_decrypt:
  416 .localentry     aes_p8_decrypt,0
  417 
  418         lwz     6,240(5)
  419         lis     0,0xfc00
  420         li      12,-1
  421         li      7,15
  422         or      0,0,0
  423 
  424         lvx     0,0,3
  425         neg     11,4
  426         lvx     1,7,3
  427         lvsl    2,0,3
  428         vspltisb        4,0x0f
  429         lvsr    3,0,11
  430         vxor    2,2,4
  431         li      7,16
  432         vperm   0,0,1,2
  433         lvx     1,0,5
  434         lvsr    5,0,5
  435         srwi    6,6,1
  436         lvx     2,7,5
  437         addi    7,7,16
  438         subi    6,6,1
  439         vperm   1,2,1,5
  440 
  441         vxor    0,0,1
  442         lvx     1,7,5
  443         addi    7,7,16
  444         mtctr   6
  445 
  446 .Loop_dec:
  447         vperm   2,1,2,5
  448         .long   0x10001548
  449         lvx     2,7,5
  450         addi    7,7,16
  451         vperm   1,2,1,5
  452         .long   0x10000D48
  453         lvx     1,7,5
  454         addi    7,7,16
  455         bdnz    .Loop_dec
  456 
  457         vperm   2,1,2,5
  458         .long   0x10001548
  459         lvx     2,7,5
  460         vperm   1,2,1,5
  461         .long   0x10000D49
  462 
  463         vspltisb        2,-1
  464         vxor    1,1,1
  465         li      7,15
  466         vperm   2,2,1,3
  467         vxor    3,3,4
  468         lvx     1,0,4
  469         vperm   0,0,0,3
  470         vsel    1,1,0,2
  471         lvx     4,7,4
  472         stvx    1,0,4
  473         vsel    0,0,4,2
  474         stvx    0,7,4
  475 
  476         or      12,12,12
  477         blr     
  478 .long   0
  479 .byte   0,12,0x14,0,0,0,3,0
  480 .long   0
  481 .size   aes_p8_decrypt,.-aes_p8_decrypt
  482 .globl  aes_p8_cbc_encrypt
  483 .type   aes_p8_cbc_encrypt,@function
  484 .align  5
  485 aes_p8_cbc_encrypt:
  486 .localentry     aes_p8_cbc_encrypt,0
  487 
  488         cmpldi  5,16
  489         .long   0x4dc00020
  490 
  491         cmpwi   8,0
  492         lis     0,0xffe0
  493         li      12,-1
  494         or      0,0,0
  495 
  496         li      10,15
  497         vxor    0,0,0
  498         vspltisb        3,0x0f
  499 
  500         lvx     4,0,7
  501         lvsl    6,0,7
  502         lvx     5,10,7
  503         vxor    6,6,3
  504         vperm   4,4,5,6
  505 
  506         neg     11,3
  507         lvsr    10,0,6
  508         lwz     9,240(6)
  509 
  510         lvsr    6,0,11
  511         lvx     5,0,3
  512         addi    3,3,15
  513         vxor    6,6,3
  514 
  515         lvsl    8,0,4
  516         vspltisb        9,-1
  517         lvx     7,0,4
  518         vperm   9,9,0,8
  519         vxor    8,8,3
  520 
  521         srwi    9,9,1
  522         li      10,16
  523         subi    9,9,1
  524         beq     .Lcbc_dec
  525 
  526 .Lcbc_enc:
  527         vor     2,5,5
  528         lvx     5,0,3
  529         addi    3,3,16
  530         mtctr   9
  531         subi    5,5,16
  532 
  533         lvx     0,0,6
  534         vperm   2,2,5,6
  535         lvx     1,10,6
  536         addi    10,10,16
  537         vperm   0,1,0,10
  538         vxor    2,2,0
  539         lvx     0,10,6
  540         addi    10,10,16
  541         vxor    2,2,4
  542 
  543 .Loop_cbc_enc:
  544         vperm   1,0,1,10
  545         .long   0x10420D08
  546         lvx     1,10,6
  547         addi    10,10,16
  548         vperm   0,1,0,10
  549         .long   0x10420508
  550         lvx     0,10,6
  551         addi    10,10,16
  552         bdnz    .Loop_cbc_enc
  553 
  554         vperm   1,0,1,10
  555         .long   0x10420D08
  556         lvx     1,10,6
  557         li      10,16
  558         vperm   0,1,0,10
  559         .long   0x10820509
  560         cmpldi  5,16
  561 
  562         vperm   3,4,4,8
  563         vsel    2,7,3,9
  564         vor     7,3,3
  565         stvx    2,0,4
  566         addi    4,4,16
  567         bge     .Lcbc_enc
  568 
  569         b       .Lcbc_done
  570 
  571 .align  4
  572 .Lcbc_dec:
  573         cmpldi  5,128
  574         bge     _aesp8_cbc_decrypt8x
  575         vor     3,5,5
  576         lvx     5,0,3
  577         addi    3,3,16
  578         mtctr   9
  579         subi    5,5,16
  580 
  581         lvx     0,0,6
  582         vperm   3,3,5,6
  583         lvx     1,10,6
  584         addi    10,10,16
  585         vperm   0,1,0,10
  586         vxor    2,3,0
  587         lvx     0,10,6
  588         addi    10,10,16
  589 
  590 .Loop_cbc_dec:
  591         vperm   1,0,1,10
  592         .long   0x10420D48
  593         lvx     1,10,6
  594         addi    10,10,16
  595         vperm   0,1,0,10
  596         .long   0x10420548
  597         lvx     0,10,6
  598         addi    10,10,16
  599         bdnz    .Loop_cbc_dec
  600 
  601         vperm   1,0,1,10
  602         .long   0x10420D48
  603         lvx     1,10,6
  604         li      10,16
  605         vperm   0,1,0,10
  606         .long   0x10420549
  607         cmpldi  5,16
  608 
  609         vxor    2,2,4
  610         vor     4,3,3
  611         vperm   3,2,2,8
  612         vsel    2,7,3,9
  613         vor     7,3,3
  614         stvx    2,0,4
  615         addi    4,4,16
  616         bge     .Lcbc_dec
  617 
  618 .Lcbc_done:
  619         addi    4,4,-1
  620         lvx     2,0,4
  621         vsel    2,7,2,9
  622         stvx    2,0,4
  623 
  624         neg     8,7
  625         li      10,15
  626         vxor    0,0,0
  627         vspltisb        9,-1
  628         vspltisb        3,0x0f
  629         lvsr    8,0,8
  630         vperm   9,9,0,8
  631         vxor    8,8,3
  632         lvx     7,0,7
  633         vperm   4,4,4,8
  634         vsel    2,7,4,9
  635         lvx     5,10,7
  636         stvx    2,0,7
  637         vsel    2,4,5,9
  638         stvx    2,10,7
  639 
  640         or      12,12,12
  641         blr     
  642 .long   0
  643 .byte   0,12,0x14,0,0,0,6,0
  644 .long   0
  645 .align  5
  646 _aesp8_cbc_decrypt8x:
  647         stdu    1,-448(1)
  648         li      10,207
  649         li      11,223
  650         stvx    20,10,1
  651         addi    10,10,32
  652         stvx    21,11,1
  653         addi    11,11,32
  654         stvx    22,10,1
  655         addi    10,10,32
  656         stvx    23,11,1
  657         addi    11,11,32
  658         stvx    24,10,1
  659         addi    10,10,32
  660         stvx    25,11,1
  661         addi    11,11,32
  662         stvx    26,10,1
  663         addi    10,10,32
  664         stvx    27,11,1
  665         addi    11,11,32
  666         stvx    28,10,1
  667         addi    10,10,32
  668         stvx    29,11,1
  669         addi    11,11,32
  670         stvx    30,10,1
  671         stvx    31,11,1
  672         li      0,-1
  673         stw     12,396(1)
  674         li      8,0x10
  675         std     26,400(1)
  676         li      26,0x20
  677         std     27,408(1)
  678         li      27,0x30
  679         std     28,416(1)
  680         li      28,0x40
  681         std     29,424(1)
  682         li      29,0x50
  683         std     30,432(1)
  684         li      30,0x60
  685         std     31,440(1)
  686         li      31,0x70
  687         or      0,0,0
  688 
  689         subi    9,9,3
  690         subi    5,5,128
  691 
  692         lvx     23,0,6
  693         lvx     30,8,6
  694         addi    6,6,0x20
  695         lvx     31,0,6
  696         vperm   23,30,23,10
  697         addi    11,1,64+15
  698         mtctr   9
  699 
  700 .Load_cbc_dec_key:
  701         vperm   24,31,30,10
  702         lvx     30,8,6
  703         addi    6,6,0x20
  704         stvx    24,0,11
  705         vperm   25,30,31,10
  706         lvx     31,0,6
  707         stvx    25,8,11
  708         addi    11,11,0x20
  709         bdnz    .Load_cbc_dec_key
  710 
  711         lvx     26,8,6
  712         vperm   24,31,30,10
  713         lvx     27,26,6
  714         stvx    24,0,11
  715         vperm   25,26,31,10
  716         lvx     28,27,6
  717         stvx    25,8,11
  718         addi    11,1,64+15
  719         vperm   26,27,26,10
  720         lvx     29,28,6
  721         vperm   27,28,27,10
  722         lvx     30,29,6
  723         vperm   28,29,28,10
  724         lvx     31,30,6
  725         vperm   29,30,29,10
  726         lvx     14,31,6
  727         vperm   30,31,30,10
  728         lvx     24,0,11
  729         vperm   31,14,31,10
  730         lvx     25,8,11
  731 
  732 
  733 
  734         subi    3,3,15
  735 
  736         li      10,8
  737         .long   0x7C001E99
  738         lvsl    6,0,10
  739         vspltisb        3,0x0f
  740         .long   0x7C281E99
  741         vxor    6,6,3
  742         .long   0x7C5A1E99
  743         vperm   0,0,0,6
  744         .long   0x7C7B1E99
  745         vperm   1,1,1,6
  746         .long   0x7D5C1E99
  747         vperm   2,2,2,6
  748         vxor    14,0,23
  749         .long   0x7D7D1E99
  750         vperm   3,3,3,6
  751         vxor    15,1,23
  752         .long   0x7D9E1E99
  753         vperm   10,10,10,6
  754         vxor    16,2,23
  755         .long   0x7DBF1E99
  756         addi    3,3,0x80
  757         vperm   11,11,11,6
  758         vxor    17,3,23
  759         vperm   12,12,12,6
  760         vxor    18,10,23
  761         vperm   13,13,13,6
  762         vxor    19,11,23
  763         vxor    20,12,23
  764         vxor    21,13,23
  765 
  766         mtctr   9
  767         b       .Loop_cbc_dec8x
  768 .align  5
  769 .Loop_cbc_dec8x:
  770         .long   0x11CEC548
  771         .long   0x11EFC548
  772         .long   0x1210C548
  773         .long   0x1231C548
  774         .long   0x1252C548
  775         .long   0x1273C548
  776         .long   0x1294C548
  777         .long   0x12B5C548
  778         lvx     24,26,11
  779         addi    11,11,0x20
  780 
  781         .long   0x11CECD48
  782         .long   0x11EFCD48
  783         .long   0x1210CD48
  784         .long   0x1231CD48
  785         .long   0x1252CD48
  786         .long   0x1273CD48
  787         .long   0x1294CD48
  788         .long   0x12B5CD48
  789         lvx     25,8,11
  790         bdnz    .Loop_cbc_dec8x
  791 
  792         subic   5,5,128
  793         .long   0x11CEC548
  794         .long   0x11EFC548
  795         .long   0x1210C548
  796         .long   0x1231C548
  797         .long   0x1252C548
  798         .long   0x1273C548
  799         .long   0x1294C548
  800         .long   0x12B5C548
  801 
  802         subfe.  0,0,0
  803         .long   0x11CECD48
  804         .long   0x11EFCD48
  805         .long   0x1210CD48
  806         .long   0x1231CD48
  807         .long   0x1252CD48
  808         .long   0x1273CD48
  809         .long   0x1294CD48
  810         .long   0x12B5CD48
  811 
  812         and     0,0,5
  813         .long   0x11CED548
  814         .long   0x11EFD548
  815         .long   0x1210D548
  816         .long   0x1231D548
  817         .long   0x1252D548
  818         .long   0x1273D548
  819         .long   0x1294D548
  820         .long   0x12B5D548
  821 
  822         add     3,3,0
  823 
  824 
  825 
  826         .long   0x11CEDD48
  827         .long   0x11EFDD48
  828         .long   0x1210DD48
  829         .long   0x1231DD48
  830         .long   0x1252DD48
  831         .long   0x1273DD48
  832         .long   0x1294DD48
  833         .long   0x12B5DD48
  834 
  835         addi    11,1,64+15
  836         .long   0x11CEE548
  837         .long   0x11EFE548
  838         .long   0x1210E548
  839         .long   0x1231E548
  840         .long   0x1252E548
  841         .long   0x1273E548
  842         .long   0x1294E548
  843         .long   0x12B5E548
  844         lvx     24,0,11
  845 
  846         .long   0x11CEED48
  847         .long   0x11EFED48
  848         .long   0x1210ED48
  849         .long   0x1231ED48
  850         .long   0x1252ED48
  851         .long   0x1273ED48
  852         .long   0x1294ED48
  853         .long   0x12B5ED48
  854         lvx     25,8,11
  855 
  856         .long   0x11CEF548
  857         vxor    4,4,31
  858         .long   0x11EFF548
  859         vxor    0,0,31
  860         .long   0x1210F548
  861         vxor    1,1,31
  862         .long   0x1231F548
  863         vxor    2,2,31
  864         .long   0x1252F548
  865         vxor    3,3,31
  866         .long   0x1273F548
  867         vxor    10,10,31
  868         .long   0x1294F548
  869         vxor    11,11,31
  870         .long   0x12B5F548
  871         vxor    12,12,31
  872 
  873         .long   0x11CE2549
  874         .long   0x11EF0549
  875         .long   0x7C001E99
  876         .long   0x12100D49
  877         .long   0x7C281E99
  878         .long   0x12311549
  879         vperm   0,0,0,6
  880         .long   0x7C5A1E99
  881         .long   0x12521D49
  882         vperm   1,1,1,6
  883         .long   0x7C7B1E99
  884         .long   0x12735549
  885         vperm   2,2,2,6
  886         .long   0x7D5C1E99
  887         .long   0x12945D49
  888         vperm   3,3,3,6
  889         .long   0x7D7D1E99
  890         .long   0x12B56549
  891         vperm   10,10,10,6
  892         .long   0x7D9E1E99
  893         vor     4,13,13
  894         vperm   11,11,11,6
  895         .long   0x7DBF1E99
  896         addi    3,3,0x80
  897 
  898         vperm   14,14,14,6
  899         vperm   15,15,15,6
  900         .long   0x7DC02799
  901         vperm   12,12,12,6
  902         vxor    14,0,23
  903         vperm   16,16,16,6
  904         .long   0x7DE82799
  905         vperm   13,13,13,6
  906         vxor    15,1,23
  907         vperm   17,17,17,6
  908         .long   0x7E1A2799
  909         vxor    16,2,23
  910         vperm   18,18,18,6
  911         .long   0x7E3B2799
  912         vxor    17,3,23
  913         vperm   19,19,19,6
  914         .long   0x7E5C2799
  915         vxor    18,10,23
  916         vperm   20,20,20,6
  917         .long   0x7E7D2799
  918         vxor    19,11,23
  919         vperm   21,21,21,6
  920         .long   0x7E9E2799
  921         vxor    20,12,23
  922         .long   0x7EBF2799
  923         addi    4,4,0x80
  924         vxor    21,13,23
  925 
  926         mtctr   9
  927         beq     .Loop_cbc_dec8x
  928 
  929         addic.  5,5,128
  930         beq     .Lcbc_dec8x_done
  931         nop     
  932         nop     
  933 
  934 .Loop_cbc_dec8x_tail:
  935         .long   0x11EFC548
  936         .long   0x1210C548
  937         .long   0x1231C548
  938         .long   0x1252C548
  939         .long   0x1273C548
  940         .long   0x1294C548
  941         .long   0x12B5C548
  942         lvx     24,26,11
  943         addi    11,11,0x20
  944 
  945         .long   0x11EFCD48
  946         .long   0x1210CD48
  947         .long   0x1231CD48
  948         .long   0x1252CD48
  949         .long   0x1273CD48
  950         .long   0x1294CD48
  951         .long   0x12B5CD48
  952         lvx     25,8,11
  953         bdnz    .Loop_cbc_dec8x_tail
  954 
  955         .long   0x11EFC548
  956         .long   0x1210C548
  957         .long   0x1231C548
  958         .long   0x1252C548
  959         .long   0x1273C548
  960         .long   0x1294C548
  961         .long   0x12B5C548
  962 
  963         .long   0x11EFCD48
  964         .long   0x1210CD48
  965         .long   0x1231CD48
  966         .long   0x1252CD48
  967         .long   0x1273CD48
  968         .long   0x1294CD48
  969         .long   0x12B5CD48
  970 
  971         .long   0x11EFD548
  972         .long   0x1210D548
  973         .long   0x1231D548
  974         .long   0x1252D548
  975         .long   0x1273D548
  976         .long   0x1294D548
  977         .long   0x12B5D548
  978 
  979         .long   0x11EFDD48
  980         .long   0x1210DD48
  981         .long   0x1231DD48
  982         .long   0x1252DD48
  983         .long   0x1273DD48
  984         .long   0x1294DD48
  985         .long   0x12B5DD48
  986 
  987         .long   0x11EFE548
  988         .long   0x1210E548
  989         .long   0x1231E548
  990         .long   0x1252E548
  991         .long   0x1273E548
  992         .long   0x1294E548
  993         .long   0x12B5E548
  994 
  995         .long   0x11EFED48
  996         .long   0x1210ED48
  997         .long   0x1231ED48
  998         .long   0x1252ED48
  999         .long   0x1273ED48
 1000         .long   0x1294ED48
 1001         .long   0x12B5ED48
 1002 
 1003         .long   0x11EFF548
 1004         vxor    4,4,31
 1005         .long   0x1210F548
 1006         vxor    1,1,31
 1007         .long   0x1231F548
 1008         vxor    2,2,31
 1009         .long   0x1252F548
 1010         vxor    3,3,31
 1011         .long   0x1273F548
 1012         vxor    10,10,31
 1013         .long   0x1294F548
 1014         vxor    11,11,31
 1015         .long   0x12B5F548
 1016         vxor    12,12,31
 1017 
 1018         cmplwi  5,32
 1019         blt     .Lcbc_dec8x_one
 1020         nop     
 1021         beq     .Lcbc_dec8x_two
 1022         cmplwi  5,64
 1023         blt     .Lcbc_dec8x_three
 1024         nop     
 1025         beq     .Lcbc_dec8x_four
 1026         cmplwi  5,96
 1027         blt     .Lcbc_dec8x_five
 1028         nop     
 1029         beq     .Lcbc_dec8x_six
 1030 
 1031 .Lcbc_dec8x_seven:
 1032         .long   0x11EF2549
 1033         .long   0x12100D49
 1034         .long   0x12311549
 1035         .long   0x12521D49
 1036         .long   0x12735549
 1037         .long   0x12945D49
 1038         .long   0x12B56549
 1039         vor     4,13,13
 1040 
 1041         vperm   15,15,15,6
 1042         vperm   16,16,16,6
 1043         .long   0x7DE02799
 1044         vperm   17,17,17,6
 1045         .long   0x7E082799
 1046         vperm   18,18,18,6
 1047         .long   0x7E3A2799
 1048         vperm   19,19,19,6
 1049         .long   0x7E5B2799
 1050         vperm   20,20,20,6
 1051         .long   0x7E7C2799
 1052         vperm   21,21,21,6
 1053         .long   0x7E9D2799
 1054         .long   0x7EBE2799
 1055         addi    4,4,0x70
 1056         b       .Lcbc_dec8x_done
 1057 
 1058 .align  5
 1059 .Lcbc_dec8x_six:
 1060         .long   0x12102549
 1061         .long   0x12311549
 1062         .long   0x12521D49
 1063         .long   0x12735549
 1064         .long   0x12945D49
 1065         .long   0x12B56549
 1066         vor     4,13,13
 1067 
 1068         vperm   16,16,16,6
 1069         vperm   17,17,17,6
 1070         .long   0x7E002799
 1071         vperm   18,18,18,6
 1072         .long   0x7E282799
 1073         vperm   19,19,19,6
 1074         .long   0x7E5A2799
 1075         vperm   20,20,20,6
 1076         .long   0x7E7B2799
 1077         vperm   21,21,21,6
 1078         .long   0x7E9C2799
 1079         .long   0x7EBD2799
 1080         addi    4,4,0x60
 1081         b       .Lcbc_dec8x_done
 1082 
 1083 .align  5
 1084 .Lcbc_dec8x_five:
 1085         .long   0x12312549
 1086         .long   0x12521D49
 1087         .long   0x12735549
 1088         .long   0x12945D49
 1089         .long   0x12B56549
 1090         vor     4,13,13
 1091 
 1092         vperm   17,17,17,6
 1093         vperm   18,18,18,6
 1094         .long   0x7E202799
 1095         vperm   19,19,19,6
 1096         .long   0x7E482799
 1097         vperm   20,20,20,6
 1098         .long   0x7E7A2799
 1099         vperm   21,21,21,6
 1100         .long   0x7E9B2799
 1101         .long   0x7EBC2799
 1102         addi    4,4,0x50
 1103         b       .Lcbc_dec8x_done
 1104 
 1105 .align  5
 1106 .Lcbc_dec8x_four:
 1107         .long   0x12522549
 1108         .long   0x12735549
 1109         .long   0x12945D49
 1110         .long   0x12B56549
 1111         vor     4,13,13
 1112 
 1113         vperm   18,18,18,6
 1114         vperm   19,19,19,6
 1115         .long   0x7E402799
 1116         vperm   20,20,20,6
 1117         .long   0x7E682799
 1118         vperm   21,21,21,6
 1119         .long   0x7E9A2799
 1120         .long   0x7EBB2799
 1121         addi    4,4,0x40
 1122         b       .Lcbc_dec8x_done
 1123 
 1124 .align  5
 1125 .Lcbc_dec8x_three:
 1126         .long   0x12732549
 1127         .long   0x12945D49
 1128         .long   0x12B56549
 1129         vor     4,13,13
 1130 
 1131         vperm   19,19,19,6
 1132         vperm   20,20,20,6
 1133         .long   0x7E602799
 1134         vperm   21,21,21,6
 1135         .long   0x7E882799
 1136         .long   0x7EBA2799
 1137         addi    4,4,0x30
 1138         b       .Lcbc_dec8x_done
 1139 
 1140 .align  5
 1141 .Lcbc_dec8x_two:
 1142         .long   0x12942549
 1143         .long   0x12B56549
 1144         vor     4,13,13
 1145 
 1146         vperm   20,20,20,6
 1147         vperm   21,21,21,6
 1148         .long   0x7E802799
 1149         .long   0x7EA82799
 1150         addi    4,4,0x20
 1151         b       .Lcbc_dec8x_done
 1152 
 1153 .align  5
 1154 .Lcbc_dec8x_one:
 1155         .long   0x12B52549
 1156         vor     4,13,13
 1157 
 1158         vperm   21,21,21,6
 1159         .long   0x7EA02799
 1160         addi    4,4,0x10
 1161 
 1162 .Lcbc_dec8x_done:
 1163         vperm   4,4,4,6
 1164         .long   0x7C803F99
 1165 
 1166         li      10,79
 1167         li      11,95
 1168         stvx    6,10,1
 1169         addi    10,10,32
 1170         stvx    6,11,1
 1171         addi    11,11,32
 1172         stvx    6,10,1
 1173         addi    10,10,32
 1174         stvx    6,11,1
 1175         addi    11,11,32
 1176         stvx    6,10,1
 1177         addi    10,10,32
 1178         stvx    6,11,1
 1179         addi    11,11,32
 1180         stvx    6,10,1
 1181         addi    10,10,32
 1182         stvx    6,11,1
 1183         addi    11,11,32
 1184 
 1185         or      12,12,12
 1186         lvx     20,10,1
 1187         addi    10,10,32
 1188         lvx     21,11,1
 1189         addi    11,11,32
 1190         lvx     22,10,1
 1191         addi    10,10,32
 1192         lvx     23,11,1
 1193         addi    11,11,32
 1194         lvx     24,10,1
 1195         addi    10,10,32
 1196         lvx     25,11,1
 1197         addi    11,11,32
 1198         lvx     26,10,1
 1199         addi    10,10,32
 1200         lvx     27,11,1
 1201         addi    11,11,32
 1202         lvx     28,10,1
 1203         addi    10,10,32
 1204         lvx     29,11,1
 1205         addi    11,11,32
 1206         lvx     30,10,1
 1207         lvx     31,11,1
 1208         ld      26,400(1)
 1209         ld      27,408(1)
 1210         ld      28,416(1)
 1211         ld      29,424(1)
 1212         ld      30,432(1)
 1213         ld      31,440(1)
 1214         addi    1,1,448
 1215         blr     
 1216 .long   0
 1217 .byte   0,12,0x04,0,0x80,6,6,0
 1218 .long   0
 1219 .size   aes_p8_cbc_encrypt,.-aes_p8_cbc_encrypt
 1220 .globl  aes_p8_ctr32_encrypt_blocks
 1221 .type   aes_p8_ctr32_encrypt_blocks,@function
 1222 .align  5
 1223 aes_p8_ctr32_encrypt_blocks:
 1224 .localentry     aes_p8_ctr32_encrypt_blocks,0
 1225 
 1226         cmpldi  5,1
 1227         .long   0x4dc00020
 1228 
 1229         lis     0,0xfff0
 1230         li      12,-1
 1231         or      0,0,0
 1232 
 1233         li      10,15
 1234         vxor    0,0,0
 1235         vspltisb        3,0x0f
 1236 
 1237         lvx     4,0,7
 1238         lvsl    6,0,7
 1239         lvx     5,10,7
 1240         vspltisb        11,1
 1241         vxor    6,6,3
 1242         vperm   4,4,5,6
 1243         vsldoi  11,0,11,1
 1244 
 1245         neg     11,3
 1246         lvsr    10,0,6
 1247         lwz     9,240(6)
 1248 
 1249         lvsr    6,0,11
 1250         lvx     5,0,3
 1251         addi    3,3,15
 1252         vxor    6,6,3
 1253 
 1254         srwi    9,9,1
 1255         li      10,16
 1256         subi    9,9,1
 1257 
 1258         cmpldi  5,8
 1259         bge     _aesp8_ctr32_encrypt8x
 1260 
 1261         lvsl    8,0,4
 1262         vspltisb        9,-1
 1263         lvx     7,0,4
 1264         vperm   9,9,0,8
 1265         vxor    8,8,3
 1266 
 1267         lvx     0,0,6
 1268         mtctr   9
 1269         lvx     1,10,6
 1270         addi    10,10,16
 1271         vperm   0,1,0,10
 1272         vxor    2,4,0
 1273         lvx     0,10,6
 1274         addi    10,10,16
 1275         b       .Loop_ctr32_enc
 1276 
 1277 .align  5
 1278 .Loop_ctr32_enc:
 1279         vperm   1,0,1,10
 1280         .long   0x10420D08
 1281         lvx     1,10,6
 1282         addi    10,10,16
 1283         vperm   0,1,0,10
 1284         .long   0x10420508
 1285         lvx     0,10,6
 1286         addi    10,10,16
 1287         bdnz    .Loop_ctr32_enc
 1288 
 1289         vadduwm 4,4,11
 1290         vor     3,5,5
 1291         lvx     5,0,3
 1292         addi    3,3,16
 1293         subic.  5,5,1
 1294 
 1295         vperm   1,0,1,10
 1296         .long   0x10420D08
 1297         lvx     1,10,6
 1298         vperm   3,3,5,6
 1299         li      10,16
 1300         vperm   1,1,0,10
 1301         lvx     0,0,6
 1302         vxor    3,3,1
 1303         .long   0x10421D09
 1304 
 1305         lvx     1,10,6
 1306         addi    10,10,16
 1307         vperm   2,2,2,8
 1308         vsel    3,7,2,9
 1309         mtctr   9
 1310         vperm   0,1,0,10
 1311         vor     7,2,2
 1312         vxor    2,4,0
 1313         lvx     0,10,6
 1314         addi    10,10,16
 1315         stvx    3,0,4
 1316         addi    4,4,16
 1317         bne     .Loop_ctr32_enc
 1318 
 1319         addi    4,4,-1
 1320         lvx     2,0,4
 1321         vsel    2,7,2,9
 1322         stvx    2,0,4
 1323 
 1324         or      12,12,12
 1325         blr     
 1326 .long   0
 1327 .byte   0,12,0x14,0,0,0,6,0
 1328 .long   0
 1329 .align  5
 1330 _aesp8_ctr32_encrypt8x:
 1331         stdu    1,-448(1)
 1332         li      10,207
 1333         li      11,223
 1334         stvx    20,10,1
 1335         addi    10,10,32
 1336         stvx    21,11,1
 1337         addi    11,11,32
 1338         stvx    22,10,1
 1339         addi    10,10,32
 1340         stvx    23,11,1
 1341         addi    11,11,32
 1342         stvx    24,10,1
 1343         addi    10,10,32
 1344         stvx    25,11,1
 1345         addi    11,11,32
 1346         stvx    26,10,1
 1347         addi    10,10,32
 1348         stvx    27,11,1
 1349         addi    11,11,32
 1350         stvx    28,10,1
 1351         addi    10,10,32
 1352         stvx    29,11,1
 1353         addi    11,11,32
 1354         stvx    30,10,1
 1355         stvx    31,11,1
 1356         li      0,-1
 1357         stw     12,396(1)
 1358         li      8,0x10
 1359         std     26,400(1)
 1360         li      26,0x20
 1361         std     27,408(1)
 1362         li      27,0x30
 1363         std     28,416(1)
 1364         li      28,0x40
 1365         std     29,424(1)
 1366         li      29,0x50
 1367         std     30,432(1)
 1368         li      30,0x60
 1369         std     31,440(1)
 1370         li      31,0x70
 1371         or      0,0,0
 1372 
 1373         subi    9,9,3
 1374 
 1375         lvx     23,0,6
 1376         lvx     30,8,6
 1377         addi    6,6,0x20
 1378         lvx     31,0,6
 1379         vperm   23,30,23,10
 1380         addi    11,1,64+15
 1381         mtctr   9
 1382 
 1383 .Load_ctr32_enc_key:
 1384         vperm   24,31,30,10
 1385         lvx     30,8,6
 1386         addi    6,6,0x20
 1387         stvx    24,0,11
 1388         vperm   25,30,31,10
 1389         lvx     31,0,6
 1390         stvx    25,8,11
 1391         addi    11,11,0x20
 1392         bdnz    .Load_ctr32_enc_key
 1393 
 1394         lvx     26,8,6
 1395         vperm   24,31,30,10
 1396         lvx     27,26,6
 1397         stvx    24,0,11
 1398         vperm   25,26,31,10
 1399         lvx     28,27,6
 1400         stvx    25,8,11
 1401         addi    11,1,64+15
 1402         vperm   26,27,26,10
 1403         lvx     29,28,6
 1404         vperm   27,28,27,10
 1405         lvx     30,29,6
 1406         vperm   28,29,28,10
 1407         lvx     31,30,6
 1408         vperm   29,30,29,10
 1409         lvx     15,31,6
 1410         vperm   30,31,30,10
 1411         lvx     24,0,11
 1412         vperm   31,15,31,10
 1413         lvx     25,8,11
 1414 
 1415         vadduwm 7,11,11
 1416         subi    3,3,15
 1417         sldi    5,5,4
 1418 
 1419         vadduwm 16,4,11
 1420         vadduwm 17,4,7
 1421         vxor    15,4,23
 1422         li      10,8
 1423         vadduwm 18,16,7
 1424         vxor    16,16,23
 1425         lvsl    6,0,10
 1426         vadduwm 19,17,7
 1427         vxor    17,17,23
 1428         vspltisb        3,0x0f
 1429         vadduwm 20,18,7
 1430         vxor    18,18,23
 1431         vxor    6,6,3
 1432         vadduwm 21,19,7
 1433         vxor    19,19,23
 1434         vadduwm 22,20,7
 1435         vxor    20,20,23
 1436         vadduwm 4,21,7
 1437         vxor    21,21,23
 1438         vxor    22,22,23
 1439 
 1440         mtctr   9
 1441         b       .Loop_ctr32_enc8x
 1442 .align  5
 1443 .Loop_ctr32_enc8x:
 1444         .long   0x11EFC508
 1445         .long   0x1210C508
 1446         .long   0x1231C508
 1447         .long   0x1252C508
 1448         .long   0x1273C508
 1449         .long   0x1294C508
 1450         .long   0x12B5C508
 1451         .long   0x12D6C508
 1452 .Loop_ctr32_enc8x_middle:
 1453         lvx     24,26,11
 1454         addi    11,11,0x20
 1455 
 1456         .long   0x11EFCD08
 1457         .long   0x1210CD08
 1458         .long   0x1231CD08
 1459         .long   0x1252CD08
 1460         .long   0x1273CD08
 1461         .long   0x1294CD08
 1462         .long   0x12B5CD08
 1463         .long   0x12D6CD08
 1464         lvx     25,8,11
 1465         bdnz    .Loop_ctr32_enc8x
 1466 
 1467         subic   11,5,256
 1468         .long   0x11EFC508
 1469         .long   0x1210C508
 1470         .long   0x1231C508
 1471         .long   0x1252C508
 1472         .long   0x1273C508
 1473         .long   0x1294C508
 1474         .long   0x12B5C508
 1475         .long   0x12D6C508
 1476 
 1477         subfe   0,0,0
 1478         .long   0x11EFCD08
 1479         .long   0x1210CD08
 1480         .long   0x1231CD08
 1481         .long   0x1252CD08
 1482         .long   0x1273CD08
 1483         .long   0x1294CD08
 1484         .long   0x12B5CD08
 1485         .long   0x12D6CD08
 1486 
 1487         and     0,0,11
 1488         addi    11,1,64+15
 1489         .long   0x11EFD508
 1490         .long   0x1210D508
 1491         .long   0x1231D508
 1492         .long   0x1252D508
 1493         .long   0x1273D508
 1494         .long   0x1294D508
 1495         .long   0x12B5D508
 1496         .long   0x12D6D508
 1497         lvx     24,0,11
 1498 
 1499         subic   5,5,129
 1500         .long   0x11EFDD08
 1501         addi    5,5,1
 1502         .long   0x1210DD08
 1503         .long   0x1231DD08
 1504         .long   0x1252DD08
 1505         .long   0x1273DD08
 1506         .long   0x1294DD08
 1507         .long   0x12B5DD08
 1508         .long   0x12D6DD08
 1509         lvx     25,8,11
 1510 
 1511         .long   0x11EFE508
 1512         .long   0x7C001E99
 1513         .long   0x1210E508
 1514         .long   0x7C281E99
 1515         .long   0x1231E508
 1516         .long   0x7C5A1E99
 1517         .long   0x1252E508
 1518         .long   0x7C7B1E99
 1519         .long   0x1273E508
 1520         .long   0x7D5C1E99
 1521         .long   0x1294E508
 1522         .long   0x7D9D1E99
 1523         .long   0x12B5E508
 1524         .long   0x7DBE1E99
 1525         .long   0x12D6E508
 1526         .long   0x7DDF1E99
 1527         addi    3,3,0x80
 1528 
 1529         .long   0x11EFED08
 1530         vperm   0,0,0,6
 1531         .long   0x1210ED08
 1532         vperm   1,1,1,6
 1533         .long   0x1231ED08
 1534         vperm   2,2,2,6
 1535         .long   0x1252ED08
 1536         vperm   3,3,3,6
 1537         .long   0x1273ED08
 1538         vperm   10,10,10,6
 1539         .long   0x1294ED08
 1540         vperm   12,12,12,6
 1541         .long   0x12B5ED08
 1542         vperm   13,13,13,6
 1543         .long   0x12D6ED08
 1544         vperm   14,14,14,6
 1545 
 1546         add     3,3,0
 1547 
 1548 
 1549 
 1550         subfe.  0,0,0
 1551         .long   0x11EFF508
 1552         vxor    0,0,31
 1553         .long   0x1210F508
 1554         vxor    1,1,31
 1555         .long   0x1231F508
 1556         vxor    2,2,31
 1557         .long   0x1252F508
 1558         vxor    3,3,31
 1559         .long   0x1273F508
 1560         vxor    10,10,31
 1561         .long   0x1294F508
 1562         vxor    12,12,31
 1563         .long   0x12B5F508
 1564         vxor    13,13,31
 1565         .long   0x12D6F508
 1566         vxor    14,14,31
 1567 
 1568         bne     .Lctr32_enc8x_break
 1569 
 1570         .long   0x100F0509
 1571         .long   0x10300D09
 1572         vadduwm 16,4,11
 1573         .long   0x10511509
 1574         vadduwm 17,4,7
 1575         vxor    15,4,23
 1576         .long   0x10721D09
 1577         vadduwm 18,16,7
 1578         vxor    16,16,23
 1579         .long   0x11535509
 1580         vadduwm 19,17,7
 1581         vxor    17,17,23
 1582         .long   0x11946509
 1583         vadduwm 20,18,7
 1584         vxor    18,18,23
 1585         .long   0x11B56D09
 1586         vadduwm 21,19,7
 1587         vxor    19,19,23
 1588         .long   0x11D67509
 1589         vadduwm 22,20,7
 1590         vxor    20,20,23
 1591         vperm   0,0,0,6
 1592         vadduwm 4,21,7
 1593         vxor    21,21,23
 1594         vperm   1,1,1,6
 1595         vxor    22,22,23
 1596         mtctr   9
 1597 
 1598         .long   0x11EFC508
 1599         .long   0x7C002799
 1600         vperm   2,2,2,6
 1601         .long   0x1210C508
 1602         .long   0x7C282799
 1603         vperm   3,3,3,6
 1604         .long   0x1231C508
 1605         .long   0x7C5A2799
 1606         vperm   10,10,10,6
 1607         .long   0x1252C508
 1608         .long   0x7C7B2799
 1609         vperm   12,12,12,6
 1610         .long   0x1273C508
 1611         .long   0x7D5C2799
 1612         vperm   13,13,13,6
 1613         .long   0x1294C508
 1614         .long   0x7D9D2799
 1615         vperm   14,14,14,6
 1616         .long   0x12B5C508
 1617         .long   0x7DBE2799
 1618         .long   0x12D6C508
 1619         .long   0x7DDF2799
 1620         addi    4,4,0x80
 1621 
 1622         b       .Loop_ctr32_enc8x_middle
 1623 
 1624 .align  5
 1625 .Lctr32_enc8x_break:
 1626         cmpwi   5,-0x60
 1627         blt     .Lctr32_enc8x_one
 1628         nop     
 1629         beq     .Lctr32_enc8x_two
 1630         cmpwi   5,-0x40
 1631         blt     .Lctr32_enc8x_three
 1632         nop     
 1633         beq     .Lctr32_enc8x_four
 1634         cmpwi   5,-0x20
 1635         blt     .Lctr32_enc8x_five
 1636         nop     
 1637         beq     .Lctr32_enc8x_six
 1638         cmpwi   5,0x00
 1639         blt     .Lctr32_enc8x_seven
 1640 
 1641 .Lctr32_enc8x_eight:
 1642         .long   0x11EF0509
 1643         .long   0x12100D09
 1644         .long   0x12311509
 1645         .long   0x12521D09
 1646         .long   0x12735509
 1647         .long   0x12946509
 1648         .long   0x12B56D09
 1649         .long   0x12D67509
 1650 
 1651         vperm   15,15,15,6
 1652         vperm   16,16,16,6
 1653         .long   0x7DE02799
 1654         vperm   17,17,17,6
 1655         .long   0x7E082799
 1656         vperm   18,18,18,6
 1657         .long   0x7E3A2799
 1658         vperm   19,19,19,6
 1659         .long   0x7E5B2799
 1660         vperm   20,20,20,6
 1661         .long   0x7E7C2799
 1662         vperm   21,21,21,6
 1663         .long   0x7E9D2799
 1664         vperm   22,22,22,6
 1665         .long   0x7EBE2799
 1666         .long   0x7EDF2799
 1667         addi    4,4,0x80
 1668         b       .Lctr32_enc8x_done
 1669 
 1670 .align  5
 1671 .Lctr32_enc8x_seven:
 1672         .long   0x11EF0D09
 1673         .long   0x12101509
 1674         .long   0x12311D09
 1675         .long   0x12525509
 1676         .long   0x12736509
 1677         .long   0x12946D09
 1678         .long   0x12B57509
 1679 
 1680         vperm   15,15,15,6
 1681         vperm   16,16,16,6
 1682         .long   0x7DE02799
 1683         vperm   17,17,17,6
 1684         .long   0x7E082799
 1685         vperm   18,18,18,6
 1686         .long   0x7E3A2799
 1687         vperm   19,19,19,6
 1688         .long   0x7E5B2799
 1689         vperm   20,20,20,6
 1690         .long   0x7E7C2799
 1691         vperm   21,21,21,6
 1692         .long   0x7E9D2799
 1693         .long   0x7EBE2799
 1694         addi    4,4,0x70
 1695         b       .Lctr32_enc8x_done
 1696 
 1697 .align  5
 1698 .Lctr32_enc8x_six:
 1699         .long   0x11EF1509
 1700         .long   0x12101D09
 1701         .long   0x12315509
 1702         .long   0x12526509
 1703         .long   0x12736D09
 1704         .long   0x12947509
 1705 
 1706         vperm   15,15,15,6
 1707         vperm   16,16,16,6
 1708         .long   0x7DE02799
 1709         vperm   17,17,17,6
 1710         .long   0x7E082799
 1711         vperm   18,18,18,6
 1712         .long   0x7E3A2799
 1713         vperm   19,19,19,6
 1714         .long   0x7E5B2799
 1715         vperm   20,20,20,6
 1716         .long   0x7E7C2799
 1717         .long   0x7E9D2799
 1718         addi    4,4,0x60
 1719         b       .Lctr32_enc8x_done
 1720 
 1721 .align  5
 1722 .Lctr32_enc8x_five:
 1723         .long   0x11EF1D09
 1724         .long   0x12105509
 1725         .long   0x12316509
 1726         .long   0x12526D09
 1727         .long   0x12737509
 1728 
 1729         vperm   15,15,15,6
 1730         vperm   16,16,16,6
 1731         .long   0x7DE02799
 1732         vperm   17,17,17,6
 1733         .long   0x7E082799
 1734         vperm   18,18,18,6
 1735         .long   0x7E3A2799
 1736         vperm   19,19,19,6
 1737         .long   0x7E5B2799
 1738         .long   0x7E7C2799
 1739         addi    4,4,0x50
 1740         b       .Lctr32_enc8x_done
 1741 
 1742 .align  5
 1743 .Lctr32_enc8x_four:
 1744         .long   0x11EF5509
 1745         .long   0x12106509
 1746         .long   0x12316D09
 1747         .long   0x12527509
 1748 
 1749         vperm   15,15,15,6
 1750         vperm   16,16,16,6
 1751         .long   0x7DE02799
 1752         vperm   17,17,17,6
 1753         .long   0x7E082799
 1754         vperm   18,18,18,6
 1755         .long   0x7E3A2799
 1756         .long   0x7E5B2799
 1757         addi    4,4,0x40
 1758         b       .Lctr32_enc8x_done
 1759 
 1760 .align  5
 1761 .Lctr32_enc8x_three:
 1762         .long   0x11EF6509
 1763         .long   0x12106D09
 1764         .long   0x12317509
 1765 
 1766         vperm   15,15,15,6
 1767         vperm   16,16,16,6
 1768         .long   0x7DE02799
 1769         vperm   17,17,17,6
 1770         .long   0x7E082799
 1771         .long   0x7E3A2799
 1772         addi    4,4,0x30
 1773         b       .Lctr32_enc8x_done
 1774 
 1775 .align  5
 1776 .Lctr32_enc8x_two:
 1777         .long   0x11EF6D09
 1778         .long   0x12107509
 1779 
 1780         vperm   15,15,15,6
 1781         vperm   16,16,16,6
 1782         .long   0x7DE02799
 1783         .long   0x7E082799
 1784         addi    4,4,0x20
 1785         b       .Lctr32_enc8x_done
 1786 
 1787 .align  5
 1788 .Lctr32_enc8x_one:
 1789         .long   0x11EF7509
 1790 
 1791         vperm   15,15,15,6
 1792         .long   0x7DE02799
 1793         addi    4,4,0x10
 1794 
 1795 .Lctr32_enc8x_done:
 1796         li      10,79
 1797         li      11,95
 1798         stvx    6,10,1
 1799         addi    10,10,32
 1800         stvx    6,11,1
 1801         addi    11,11,32
 1802         stvx    6,10,1
 1803         addi    10,10,32
 1804         stvx    6,11,1
 1805         addi    11,11,32
 1806         stvx    6,10,1
 1807         addi    10,10,32
 1808         stvx    6,11,1
 1809         addi    11,11,32
 1810         stvx    6,10,1
 1811         addi    10,10,32
 1812         stvx    6,11,1
 1813         addi    11,11,32
 1814 
 1815         or      12,12,12
 1816         lvx     20,10,1
 1817         addi    10,10,32
 1818         lvx     21,11,1
 1819         addi    11,11,32
 1820         lvx     22,10,1
 1821         addi    10,10,32
 1822         lvx     23,11,1
 1823         addi    11,11,32
 1824         lvx     24,10,1
 1825         addi    10,10,32
 1826         lvx     25,11,1
 1827         addi    11,11,32
 1828         lvx     26,10,1
 1829         addi    10,10,32
 1830         lvx     27,11,1
 1831         addi    11,11,32
 1832         lvx     28,10,1
 1833         addi    10,10,32
 1834         lvx     29,11,1
 1835         addi    11,11,32
 1836         lvx     30,10,1
 1837         lvx     31,11,1
 1838         ld      26,400(1)
 1839         ld      27,408(1)
 1840         ld      28,416(1)
 1841         ld      29,424(1)
 1842         ld      30,432(1)
 1843         ld      31,440(1)
 1844         addi    1,1,448
 1845         blr     
 1846 .long   0
 1847 .byte   0,12,0x04,0,0x80,6,6,0
 1848 .long   0
 1849 .size   aes_p8_ctr32_encrypt_blocks,.-aes_p8_ctr32_encrypt_blocks
 1850 .globl  aes_p8_xts_encrypt
 1851 .type   aes_p8_xts_encrypt,@function
 1852 .align  5
 1853 aes_p8_xts_encrypt:
 1854 .localentry     aes_p8_xts_encrypt,0
 1855 
 1856         mr      10,3
 1857         li      3,-1
 1858         cmpldi  5,16
 1859         .long   0x4dc00020
 1860 
 1861         lis     0,0xfff0
 1862         li      12,-1
 1863         li      11,0
 1864         or      0,0,0
 1865 
 1866         vspltisb        9,0x07
 1867         lvsl    6,11,11
 1868         vspltisb        11,0x0f
 1869         vxor    6,6,9
 1870 
 1871         li      3,15
 1872         lvx     8,0,8
 1873         lvsl    5,0,8
 1874         lvx     4,3,8
 1875         vxor    5,5,11
 1876         vperm   8,8,4,5
 1877 
 1878         neg     11,10
 1879         lvsr    5,0,11
 1880         lvx     2,0,10
 1881         addi    10,10,15
 1882         vxor    5,5,11
 1883 
 1884         cmpldi  7,0
 1885         beq     .Lxts_enc_no_key2
 1886 
 1887         lvsr    7,0,7
 1888         lwz     9,240(7)
 1889         srwi    9,9,1
 1890         subi    9,9,1
 1891         li      3,16
 1892 
 1893         lvx     0,0,7
 1894         lvx     1,3,7
 1895         addi    3,3,16
 1896         vperm   0,1,0,7
 1897         vxor    8,8,0
 1898         lvx     0,3,7
 1899         addi    3,3,16
 1900         mtctr   9
 1901 
 1902 .Ltweak_xts_enc:
 1903         vperm   1,0,1,7
 1904         .long   0x11080D08
 1905         lvx     1,3,7
 1906         addi    3,3,16
 1907         vperm   0,1,0,7
 1908         .long   0x11080508
 1909         lvx     0,3,7
 1910         addi    3,3,16
 1911         bdnz    .Ltweak_xts_enc
 1912 
 1913         vperm   1,0,1,7
 1914         .long   0x11080D08
 1915         lvx     1,3,7
 1916         vperm   0,1,0,7
 1917         .long   0x11080509
 1918 
 1919         li      8,0
 1920         b       .Lxts_enc
 1921 
 1922 .Lxts_enc_no_key2:
 1923         li      3,-16
 1924         and     5,5,3
 1925 
 1926 
 1927 .Lxts_enc:
 1928         lvx     4,0,10
 1929         addi    10,10,16
 1930 
 1931         lvsr    7,0,6
 1932         lwz     9,240(6)
 1933         srwi    9,9,1
 1934         subi    9,9,1
 1935         li      3,16
 1936 
 1937         vslb    10,9,9
 1938         vor     10,10,9
 1939         vspltisb        11,1
 1940         vsldoi  10,10,11,15
 1941 
 1942         cmpldi  5,96
 1943         bge     _aesp8_xts_encrypt6x
 1944 
 1945         andi.   7,5,15
 1946         subic   0,5,32
 1947         subi    7,7,16
 1948         subfe   0,0,0
 1949         and     0,0,7
 1950         add     10,10,0
 1951 
 1952         lvx     0,0,6
 1953         lvx     1,3,6
 1954         addi    3,3,16
 1955         vperm   2,2,4,5
 1956         vperm   0,1,0,7
 1957         vxor    2,2,8
 1958         vxor    2,2,0
 1959         lvx     0,3,6
 1960         addi    3,3,16
 1961         mtctr   9
 1962         b       .Loop_xts_enc
 1963 
 1964 .align  5
 1965 .Loop_xts_enc:
 1966         vperm   1,0,1,7
 1967         .long   0x10420D08
 1968         lvx     1,3,6
 1969         addi    3,3,16
 1970         vperm   0,1,0,7
 1971         .long   0x10420508
 1972         lvx     0,3,6
 1973         addi    3,3,16
 1974         bdnz    .Loop_xts_enc
 1975 
 1976         vperm   1,0,1,7
 1977         .long   0x10420D08
 1978         lvx     1,3,6
 1979         li      3,16
 1980         vperm   0,1,0,7
 1981         vxor    0,0,8
 1982         .long   0x10620509
 1983 
 1984         vperm   11,3,3,6
 1985 
 1986         .long   0x7D602799
 1987 
 1988         addi    4,4,16
 1989 
 1990         subic.  5,5,16
 1991         beq     .Lxts_enc_done
 1992 
 1993         vor     2,4,4
 1994         lvx     4,0,10
 1995         addi    10,10,16
 1996         lvx     0,0,6
 1997         lvx     1,3,6
 1998         addi    3,3,16
 1999 
 2000         subic   0,5,32
 2001         subfe   0,0,0
 2002         and     0,0,7
 2003         add     10,10,0
 2004 
 2005         vsrab   11,8,9
 2006         vaddubm 8,8,8
 2007         vsldoi  11,11,11,15
 2008         vand    11,11,10
 2009         vxor    8,8,11
 2010 
 2011         vperm   2,2,4,5
 2012         vperm   0,1,0,7
 2013         vxor    2,2,8
 2014         vxor    3,3,0
 2015         vxor    2,2,0
 2016         lvx     0,3,6
 2017         addi    3,3,16
 2018 
 2019         mtctr   9
 2020         cmpldi  5,16
 2021         bge     .Loop_xts_enc
 2022 
 2023         vxor    3,3,8
 2024         lvsr    5,0,5
 2025         vxor    4,4,4
 2026         vspltisb        11,-1
 2027         vperm   4,4,11,5
 2028         vsel    2,2,3,4
 2029 
 2030         subi    11,4,17
 2031         subi    4,4,16
 2032         mtctr   5
 2033         li      5,16
 2034 .Loop_xts_enc_steal:
 2035         lbzu    0,1(11)
 2036         stb     0,16(11)
 2037         bdnz    .Loop_xts_enc_steal
 2038 
 2039         mtctr   9
 2040         b       .Loop_xts_enc
 2041 
 2042 .Lxts_enc_done:
 2043         cmpldi  8,0
 2044         beq     .Lxts_enc_ret
 2045 
 2046         vsrab   11,8,9
 2047         vaddubm 8,8,8
 2048         vsldoi  11,11,11,15
 2049         vand    11,11,10
 2050         vxor    8,8,11
 2051 
 2052         vperm   8,8,8,6
 2053         .long   0x7D004799
 2054 
 2055 .Lxts_enc_ret:
 2056         or      12,12,12
 2057         li      3,0
 2058         blr     
 2059 .long   0
 2060 .byte   0,12,0x04,0,0x80,6,6,0
 2061 .long   0
 2062 .size   aes_p8_xts_encrypt,.-aes_p8_xts_encrypt
 2063 
 2064 .globl  aes_p8_xts_decrypt
 2065 .type   aes_p8_xts_decrypt,@function
 2066 .align  5
 2067 aes_p8_xts_decrypt:
 2068 .localentry     aes_p8_xts_decrypt,0
 2069 
 2070         mr      10,3
 2071         li      3,-1
 2072         cmpldi  5,16
 2073         .long   0x4dc00020
 2074 
 2075         lis     0,0xfff8
 2076         li      12,-1
 2077         li      11,0
 2078         or      0,0,0
 2079 
 2080         andi.   0,5,15
 2081         neg     0,0
 2082         andi.   0,0,16
 2083         sub     5,5,0
 2084 
 2085         vspltisb        9,0x07
 2086         lvsl    6,11,11
 2087         vspltisb        11,0x0f
 2088         vxor    6,6,9
 2089 
 2090         li      3,15
 2091         lvx     8,0,8
 2092         lvsl    5,0,8
 2093         lvx     4,3,8
 2094         vxor    5,5,11
 2095         vperm   8,8,4,5
 2096 
 2097         neg     11,10
 2098         lvsr    5,0,11
 2099         lvx     2,0,10
 2100         addi    10,10,15
 2101         vxor    5,5,11
 2102 
 2103         cmpldi  7,0
 2104         beq     .Lxts_dec_no_key2
 2105 
 2106         lvsr    7,0,7
 2107         lwz     9,240(7)
 2108         srwi    9,9,1
 2109         subi    9,9,1
 2110         li      3,16
 2111 
 2112         lvx     0,0,7
 2113         lvx     1,3,7
 2114         addi    3,3,16
 2115         vperm   0,1,0,7
 2116         vxor    8,8,0
 2117         lvx     0,3,7
 2118         addi    3,3,16
 2119         mtctr   9
 2120 
 2121 .Ltweak_xts_dec:
 2122         vperm   1,0,1,7
 2123         .long   0x11080D08
 2124         lvx     1,3,7
 2125         addi    3,3,16
 2126         vperm   0,1,0,7
 2127         .long   0x11080508
 2128         lvx     0,3,7
 2129         addi    3,3,16
 2130         bdnz    .Ltweak_xts_dec
 2131 
 2132         vperm   1,0,1,7
 2133         .long   0x11080D08
 2134         lvx     1,3,7
 2135         vperm   0,1,0,7
 2136         .long   0x11080509
 2137 
 2138         li      8,0
 2139         b       .Lxts_dec
 2140 
 2141 .Lxts_dec_no_key2:
 2142         neg     3,5
 2143         andi.   3,3,15
 2144         add     5,5,3
 2145 
 2146 
 2147 .Lxts_dec:
 2148         lvx     4,0,10
 2149         addi    10,10,16
 2150 
 2151         lvsr    7,0,6
 2152         lwz     9,240(6)
 2153         srwi    9,9,1
 2154         subi    9,9,1
 2155         li      3,16
 2156 
 2157         vslb    10,9,9
 2158         vor     10,10,9
 2159         vspltisb        11,1
 2160         vsldoi  10,10,11,15
 2161 
 2162         cmpldi  5,96
 2163         bge     _aesp8_xts_decrypt6x
 2164 
 2165         lvx     0,0,6
 2166         lvx     1,3,6
 2167         addi    3,3,16
 2168         vperm   2,2,4,5
 2169         vperm   0,1,0,7
 2170         vxor    2,2,8
 2171         vxor    2,2,0
 2172         lvx     0,3,6
 2173         addi    3,3,16
 2174         mtctr   9
 2175 
 2176         cmpldi  5,16
 2177         blt     .Ltail_xts_dec
 2178 
 2179 
 2180 .align  5
 2181 .Loop_xts_dec:
 2182         vperm   1,0,1,7
 2183         .long   0x10420D48
 2184         lvx     1,3,6
 2185         addi    3,3,16
 2186         vperm   0,1,0,7
 2187         .long   0x10420548
 2188         lvx     0,3,6
 2189         addi    3,3,16
 2190         bdnz    .Loop_xts_dec
 2191 
 2192         vperm   1,0,1,7
 2193         .long   0x10420D48
 2194         lvx     1,3,6
 2195         li      3,16
 2196         vperm   0,1,0,7
 2197         vxor    0,0,8
 2198         .long   0x10620549
 2199 
 2200         vperm   11,3,3,6
 2201 
 2202         .long   0x7D602799
 2203 
 2204         addi    4,4,16
 2205 
 2206         subic.  5,5,16
 2207         beq     .Lxts_dec_done
 2208 
 2209         vor     2,4,4
 2210         lvx     4,0,10
 2211         addi    10,10,16
 2212         lvx     0,0,6
 2213         lvx     1,3,6
 2214         addi    3,3,16
 2215 
 2216         vsrab   11,8,9
 2217         vaddubm 8,8,8
 2218         vsldoi  11,11,11,15
 2219         vand    11,11,10
 2220         vxor    8,8,11
 2221 
 2222         vperm   2,2,4,5
 2223         vperm   0,1,0,7
 2224         vxor    2,2,8
 2225         vxor    2,2,0
 2226         lvx     0,3,6
 2227         addi    3,3,16
 2228 
 2229         mtctr   9
 2230         cmpldi  5,16
 2231         bge     .Loop_xts_dec
 2232 
 2233 .Ltail_xts_dec:
 2234         vsrab   11,8,9
 2235         vaddubm 12,8,8
 2236         vsldoi  11,11,11,15
 2237         vand    11,11,10
 2238         vxor    12,12,11
 2239 
 2240         subi    10,10,16
 2241         add     10,10,5
 2242 
 2243         vxor    2,2,8
 2244         vxor    2,2,12
 2245 
 2246 .Loop_xts_dec_short:
 2247         vperm   1,0,1,7
 2248         .long   0x10420D48
 2249         lvx     1,3,6
 2250         addi    3,3,16
 2251         vperm   0,1,0,7
 2252         .long   0x10420548
 2253         lvx     0,3,6
 2254         addi    3,3,16
 2255         bdnz    .Loop_xts_dec_short
 2256 
 2257         vperm   1,0,1,7
 2258         .long   0x10420D48
 2259         lvx     1,3,6
 2260         li      3,16
 2261         vperm   0,1,0,7
 2262         vxor    0,0,12
 2263         .long   0x10620549
 2264 
 2265         vperm   11,3,3,6
 2266 
 2267         .long   0x7D602799
 2268 
 2269 
 2270         vor     2,4,4
 2271         lvx     4,0,10
 2272 
 2273         lvx     0,0,6
 2274         lvx     1,3,6
 2275         addi    3,3,16
 2276         vperm   2,2,4,5
 2277         vperm   0,1,0,7
 2278 
 2279         lvsr    5,0,5
 2280         vxor    4,4,4
 2281         vspltisb        11,-1
 2282         vperm   4,4,11,5
 2283         vsel    2,2,3,4
 2284 
 2285         vxor    0,0,8
 2286         vxor    2,2,0
 2287         lvx     0,3,6
 2288         addi    3,3,16
 2289 
 2290         subi    11,4,1
 2291         mtctr   5
 2292         li      5,16
 2293 .Loop_xts_dec_steal:
 2294         lbzu    0,1(11)
 2295         stb     0,16(11)
 2296         bdnz    .Loop_xts_dec_steal
 2297 
 2298         mtctr   9
 2299         b       .Loop_xts_dec
 2300 
 2301 .Lxts_dec_done:
 2302         cmpldi  8,0
 2303         beq     .Lxts_dec_ret
 2304 
 2305         vsrab   11,8,9
 2306         vaddubm 8,8,8
 2307         vsldoi  11,11,11,15
 2308         vand    11,11,10
 2309         vxor    8,8,11
 2310 
 2311         vperm   8,8,8,6
 2312         .long   0x7D004799
 2313 
 2314 .Lxts_dec_ret:
 2315         or      12,12,12
 2316         li      3,0
 2317         blr     
 2318 .long   0
 2319 .byte   0,12,0x04,0,0x80,6,6,0
 2320 .long   0
 2321 .size   aes_p8_xts_decrypt,.-aes_p8_xts_decrypt
 2322 .align  5
 2323 _aesp8_xts_encrypt6x:
 2324         stdu    1,-448(1)
 2325         mflr    11
 2326         li      7,207
 2327         li      3,223
 2328         std     11,464(1)
 2329         stvx    20,7,1
 2330         addi    7,7,32
 2331         stvx    21,3,1
 2332         addi    3,3,32
 2333         stvx    22,7,1
 2334         addi    7,7,32
 2335         stvx    23,3,1
 2336         addi    3,3,32
 2337         stvx    24,7,1
 2338         addi    7,7,32
 2339         stvx    25,3,1
 2340         addi    3,3,32
 2341         stvx    26,7,1
 2342         addi    7,7,32
 2343         stvx    27,3,1
 2344         addi    3,3,32
 2345         stvx    28,7,1
 2346         addi    7,7,32
 2347         stvx    29,3,1
 2348         addi    3,3,32
 2349         stvx    30,7,1
 2350         stvx    31,3,1
 2351         li      0,-1
 2352         stw     12,396(1)
 2353         li      3,0x10
 2354         std     26,400(1)
 2355         li      26,0x20
 2356         std     27,408(1)
 2357         li      27,0x30
 2358         std     28,416(1)
 2359         li      28,0x40
 2360         std     29,424(1)
 2361         li      29,0x50
 2362         std     30,432(1)
 2363         li      30,0x60
 2364         std     31,440(1)
 2365         li      31,0x70
 2366         or      0,0,0
 2367 
 2368         subi    9,9,3
 2369 
 2370         lvx     23,0,6
 2371         lvx     30,3,6
 2372         addi    6,6,0x20
 2373         lvx     31,0,6
 2374         vperm   23,30,23,7
 2375         addi    7,1,64+15
 2376         mtctr   9
 2377 
 2378 .Load_xts_enc_key:
 2379         vperm   24,31,30,7
 2380         lvx     30,3,6
 2381         addi    6,6,0x20
 2382         stvx    24,0,7
 2383         vperm   25,30,31,7
 2384         lvx     31,0,6
 2385         stvx    25,3,7
 2386         addi    7,7,0x20
 2387         bdnz    .Load_xts_enc_key
 2388 
 2389         lvx     26,3,6
 2390         vperm   24,31,30,7
 2391         lvx     27,26,6
 2392         stvx    24,0,7
 2393         vperm   25,26,31,7
 2394         lvx     28,27,6
 2395         stvx    25,3,7
 2396         addi    7,1,64+15
 2397         vperm   26,27,26,7
 2398         lvx     29,28,6
 2399         vperm   27,28,27,7
 2400         lvx     30,29,6
 2401         vperm   28,29,28,7
 2402         lvx     31,30,6
 2403         vperm   29,30,29,7
 2404         lvx     22,31,6
 2405         vperm   30,31,30,7
 2406         lvx     24,0,7
 2407         vperm   31,22,31,7
 2408         lvx     25,3,7
 2409 
 2410         vperm   0,2,4,5
 2411         subi    10,10,31
 2412         vxor    17,8,23
 2413         vsrab   11,8,9
 2414         vaddubm 8,8,8
 2415         vsldoi  11,11,11,15
 2416         vand    11,11,10
 2417         vxor    7,0,17
 2418         vxor    8,8,11
 2419 
 2420         .long   0x7C235699
 2421         vxor    18,8,23
 2422         vsrab   11,8,9
 2423         vaddubm 8,8,8
 2424         vsldoi  11,11,11,15
 2425         vperm   1,1,1,6
 2426         vand    11,11,10
 2427         vxor    12,1,18
 2428         vxor    8,8,11
 2429 
 2430         .long   0x7C5A5699
 2431         andi.   31,5,15
 2432         vxor    19,8,23
 2433         vsrab   11,8,9
 2434         vaddubm 8,8,8
 2435         vsldoi  11,11,11,15
 2436         vperm   2,2,2,6
 2437         vand    11,11,10
 2438         vxor    13,2,19
 2439         vxor    8,8,11
 2440 
 2441         .long   0x7C7B5699
 2442         sub     5,5,31
 2443         vxor    20,8,23
 2444         vsrab   11,8,9
 2445         vaddubm 8,8,8
 2446         vsldoi  11,11,11,15
 2447         vperm   3,3,3,6
 2448         vand    11,11,10
 2449         vxor    14,3,20
 2450         vxor    8,8,11
 2451 
 2452         .long   0x7C9C5699
 2453         subi    5,5,0x60
 2454         vxor    21,8,23
 2455         vsrab   11,8,9
 2456         vaddubm 8,8,8
 2457         vsldoi  11,11,11,15
 2458         vperm   4,4,4,6
 2459         vand    11,11,10
 2460         vxor    15,4,21
 2461         vxor    8,8,11
 2462 
 2463         .long   0x7CBD5699
 2464         addi    10,10,0x60
 2465         vxor    22,8,23
 2466         vsrab   11,8,9
 2467         vaddubm 8,8,8
 2468         vsldoi  11,11,11,15
 2469         vperm   5,5,5,6
 2470         vand    11,11,10
 2471         vxor    16,5,22
 2472         vxor    8,8,11
 2473 
 2474         vxor    31,31,23
 2475         mtctr   9
 2476         b       .Loop_xts_enc6x
 2477 
 2478 .align  5
 2479 .Loop_xts_enc6x:
 2480         .long   0x10E7C508
 2481         .long   0x118CC508
 2482         .long   0x11ADC508
 2483         .long   0x11CEC508
 2484         .long   0x11EFC508
 2485         .long   0x1210C508
 2486         lvx     24,26,7
 2487         addi    7,7,0x20
 2488 
 2489         .long   0x10E7CD08
 2490         .long   0x118CCD08
 2491         .long   0x11ADCD08
 2492         .long   0x11CECD08
 2493         .long   0x11EFCD08
 2494         .long   0x1210CD08
 2495         lvx     25,3,7
 2496         bdnz    .Loop_xts_enc6x
 2497 
 2498         subic   5,5,96
 2499         vxor    0,17,31
 2500         .long   0x10E7C508
 2501         .long   0x118CC508
 2502         vsrab   11,8,9
 2503         vxor    17,8,23
 2504         vaddubm 8,8,8
 2505         .long   0x11ADC508
 2506         .long   0x11CEC508
 2507         vsldoi  11,11,11,15
 2508         .long   0x11EFC508
 2509         .long   0x1210C508
 2510 
 2511         subfe.  0,0,0
 2512         vand    11,11,10
 2513         .long   0x10E7CD08
 2514         .long   0x118CCD08
 2515         vxor    8,8,11
 2516         .long   0x11ADCD08
 2517         .long   0x11CECD08
 2518         vxor    1,18,31
 2519         vsrab   11,8,9
 2520         vxor    18,8,23
 2521         .long   0x11EFCD08
 2522         .long   0x1210CD08
 2523 
 2524         and     0,0,5
 2525         vaddubm 8,8,8
 2526         vsldoi  11,11,11,15
 2527         .long   0x10E7D508
 2528         .long   0x118CD508
 2529         vand    11,11,10
 2530         .long   0x11ADD508
 2531         .long   0x11CED508
 2532         vxor    8,8,11
 2533         .long   0x11EFD508
 2534         .long   0x1210D508
 2535 
 2536         add     10,10,0
 2537 
 2538 
 2539 
 2540         vxor    2,19,31
 2541         vsrab   11,8,9
 2542         vxor    19,8,23
 2543         vaddubm 8,8,8
 2544         .long   0x10E7DD08
 2545         .long   0x118CDD08
 2546         vsldoi  11,11,11,15
 2547         .long   0x11ADDD08
 2548         .long   0x11CEDD08
 2549         vand    11,11,10
 2550         .long   0x11EFDD08
 2551         .long   0x1210DD08
 2552 
 2553         addi    7,1,64+15
 2554         vxor    8,8,11
 2555         .long   0x10E7E508
 2556         .long   0x118CE508
 2557         vxor    3,20,31
 2558         vsrab   11,8,9
 2559         vxor    20,8,23
 2560         .long   0x11ADE508
 2561         .long   0x11CEE508
 2562         vaddubm 8,8,8
 2563         vsldoi  11,11,11,15
 2564         .long   0x11EFE508
 2565         .long   0x1210E508
 2566         lvx     24,0,7
 2567         vand    11,11,10
 2568 
 2569         .long   0x10E7ED08
 2570         .long   0x118CED08
 2571         vxor    8,8,11
 2572         .long   0x11ADED08
 2573         .long   0x11CEED08
 2574         vxor    4,21,31
 2575         vsrab   11,8,9
 2576         vxor    21,8,23
 2577         .long   0x11EFED08
 2578         .long   0x1210ED08
 2579         lvx     25,3,7
 2580         vaddubm 8,8,8
 2581         vsldoi  11,11,11,15
 2582 
 2583         .long   0x10E7F508
 2584         .long   0x118CF508
 2585         vand    11,11,10
 2586         .long   0x11ADF508
 2587         .long   0x11CEF508
 2588         vxor    8,8,11
 2589         .long   0x11EFF508
 2590         .long   0x1210F508
 2591         vxor    5,22,31
 2592         vsrab   11,8,9
 2593         vxor    22,8,23
 2594 
 2595         .long   0x10E70509
 2596         .long   0x7C005699
 2597         vaddubm 8,8,8
 2598         vsldoi  11,11,11,15
 2599         .long   0x118C0D09
 2600         .long   0x7C235699
 2601         .long   0x11AD1509
 2602         vperm   0,0,0,6
 2603         .long   0x7C5A5699
 2604         vand    11,11,10
 2605         .long   0x11CE1D09
 2606         vperm   1,1,1,6
 2607         .long   0x7C7B5699
 2608         .long   0x11EF2509
 2609         vperm   2,2,2,6
 2610         .long   0x7C9C5699
 2611         vxor    8,8,11
 2612         .long   0x11702D09
 2613 
 2614         vperm   3,3,3,6
 2615         .long   0x7CBD5699
 2616         addi    10,10,0x60
 2617         vperm   4,4,4,6
 2618         vperm   5,5,5,6
 2619 
 2620         vperm   7,7,7,6
 2621         vperm   12,12,12,6
 2622         .long   0x7CE02799
 2623         vxor    7,0,17
 2624         vperm   13,13,13,6
 2625         .long   0x7D832799
 2626         vxor    12,1,18
 2627         vperm   14,14,14,6
 2628         .long   0x7DBA2799
 2629         vxor    13,2,19
 2630         vperm   15,15,15,6
 2631         .long   0x7DDB2799
 2632         vxor    14,3,20
 2633         vperm   16,11,11,6
 2634         .long   0x7DFC2799
 2635         vxor    15,4,21
 2636         .long   0x7E1D2799
 2637 
 2638         vxor    16,5,22
 2639         addi    4,4,0x60
 2640 
 2641         mtctr   9
 2642         beq     .Loop_xts_enc6x
 2643 
 2644         addic.  5,5,0x60
 2645         beq     .Lxts_enc6x_zero
 2646         cmpwi   5,0x20
 2647         blt     .Lxts_enc6x_one
 2648         nop     
 2649         beq     .Lxts_enc6x_two
 2650         cmpwi   5,0x40
 2651         blt     .Lxts_enc6x_three
 2652         nop     
 2653         beq     .Lxts_enc6x_four
 2654 
 2655 .Lxts_enc6x_five:
 2656         vxor    7,1,17
 2657         vxor    12,2,18
 2658         vxor    13,3,19
 2659         vxor    14,4,20
 2660         vxor    15,5,21
 2661 
 2662         bl      _aesp8_xts_enc5x
 2663 
 2664         vperm   7,7,7,6
 2665         vor     17,22,22
 2666         vperm   12,12,12,6
 2667         .long   0x7CE02799
 2668         vperm   13,13,13,6
 2669         .long   0x7D832799
 2670         vperm   14,14,14,6
 2671         .long   0x7DBA2799
 2672         vxor    11,15,22
 2673         vperm   15,15,15,6
 2674         .long   0x7DDB2799
 2675         .long   0x7DFC2799
 2676         addi    4,4,0x50
 2677         bne     .Lxts_enc6x_steal
 2678         b       .Lxts_enc6x_done
 2679 
 2680 .align  4
 2681 .Lxts_enc6x_four:
 2682         vxor    7,2,17
 2683         vxor    12,3,18
 2684         vxor    13,4,19
 2685         vxor    14,5,20
 2686         vxor    15,15,15
 2687 
 2688         bl      _aesp8_xts_enc5x
 2689 
 2690         vperm   7,7,7,6
 2691         vor     17,21,21
 2692         vperm   12,12,12,6
 2693         .long   0x7CE02799
 2694         vperm   13,13,13,6
 2695         .long   0x7D832799
 2696         vxor    11,14,21
 2697         vperm   14,14,14,6
 2698         .long   0x7DBA2799
 2699         .long   0x7DDB2799
 2700         addi    4,4,0x40
 2701         bne     .Lxts_enc6x_steal
 2702         b       .Lxts_enc6x_done
 2703 
 2704 .align  4
 2705 .Lxts_enc6x_three:
 2706         vxor    7,3,17
 2707         vxor    12,4,18
 2708         vxor    13,5,19
 2709         vxor    14,14,14
 2710         vxor    15,15,15
 2711 
 2712         bl      _aesp8_xts_enc5x
 2713 
 2714         vperm   7,7,7,6
 2715         vor     17,20,20
 2716         vperm   12,12,12,6
 2717         .long   0x7CE02799
 2718         vxor    11,13,20
 2719         vperm   13,13,13,6
 2720         .long   0x7D832799
 2721         .long   0x7DBA2799
 2722         addi    4,4,0x30
 2723         bne     .Lxts_enc6x_steal
 2724         b       .Lxts_enc6x_done
 2725 
 2726 .align  4
 2727 .Lxts_enc6x_two:
 2728         vxor    7,4,17
 2729         vxor    12,5,18
 2730         vxor    13,13,13
 2731         vxor    14,14,14
 2732         vxor    15,15,15
 2733 
 2734         bl      _aesp8_xts_enc5x
 2735 
 2736         vperm   7,7,7,6
 2737         vor     17,19,19
 2738         vxor    11,12,19
 2739         vperm   12,12,12,6
 2740         .long   0x7CE02799
 2741         .long   0x7D832799
 2742         addi    4,4,0x20
 2743         bne     .Lxts_enc6x_steal
 2744         b       .Lxts_enc6x_done
 2745 
 2746 .align  4
 2747 .Lxts_enc6x_one:
 2748         vxor    7,5,17
 2749         nop     
 2750 .Loop_xts_enc1x:
 2751         .long   0x10E7C508
 2752         lvx     24,26,7
 2753         addi    7,7,0x20
 2754 
 2755         .long   0x10E7CD08
 2756         lvx     25,3,7
 2757         bdnz    .Loop_xts_enc1x
 2758 
 2759         add     10,10,31
 2760         cmpwi   31,0
 2761         .long   0x10E7C508
 2762 
 2763         subi    10,10,16
 2764         .long   0x10E7CD08
 2765 
 2766         lvsr    5,0,31
 2767         .long   0x10E7D508
 2768 
 2769         .long   0x7C005699
 2770         .long   0x10E7DD08
 2771 
 2772         addi    7,1,64+15
 2773         .long   0x10E7E508
 2774         lvx     24,0,7
 2775 
 2776         .long   0x10E7ED08
 2777         lvx     25,3,7
 2778         vxor    17,17,31
 2779 
 2780         vperm   0,0,0,6
 2781         .long   0x10E7F508
 2782 
 2783         vperm   0,0,0,5
 2784         .long   0x10E78D09
 2785 
 2786         vor     17,18,18
 2787         vxor    11,7,18
 2788         vperm   7,7,7,6
 2789         .long   0x7CE02799
 2790         addi    4,4,0x10
 2791         bne     .Lxts_enc6x_steal
 2792         b       .Lxts_enc6x_done
 2793 
 2794 .align  4
 2795 .Lxts_enc6x_zero:
 2796         cmpwi   31,0
 2797         beq     .Lxts_enc6x_done
 2798 
 2799         add     10,10,31
 2800         subi    10,10,16
 2801         .long   0x7C005699
 2802         lvsr    5,0,31
 2803         vperm   0,0,0,6
 2804         vperm   0,0,0,5
 2805         vxor    11,11,17
 2806 .Lxts_enc6x_steal:
 2807         vxor    0,0,17
 2808         vxor    7,7,7
 2809         vspltisb        12,-1
 2810         vperm   7,7,12,5
 2811         vsel    7,0,11,7
 2812 
 2813         subi    30,4,17
 2814         subi    4,4,16
 2815         mtctr   31
 2816 .Loop_xts_enc6x_steal:
 2817         lbzu    0,1(30)
 2818         stb     0,16(30)
 2819         bdnz    .Loop_xts_enc6x_steal
 2820 
 2821         li      31,0
 2822         mtctr   9
 2823         b       .Loop_xts_enc1x
 2824 
 2825 .align  4
 2826 .Lxts_enc6x_done:
 2827         cmpldi  8,0
 2828         beq     .Lxts_enc6x_ret
 2829 
 2830         vxor    8,17,23
 2831         vperm   8,8,8,6
 2832         .long   0x7D004799
 2833 
 2834 .Lxts_enc6x_ret:
 2835         mtlr    11
 2836         li      10,79
 2837         li      11,95
 2838         stvx    9,10,1
 2839         addi    10,10,32
 2840         stvx    9,11,1
 2841         addi    11,11,32
 2842         stvx    9,10,1
 2843         addi    10,10,32
 2844         stvx    9,11,1
 2845         addi    11,11,32
 2846         stvx    9,10,1
 2847         addi    10,10,32
 2848         stvx    9,11,1
 2849         addi    11,11,32
 2850         stvx    9,10,1
 2851         addi    10,10,32
 2852         stvx    9,11,1
 2853         addi    11,11,32
 2854 
 2855         or      12,12,12
 2856         lvx     20,10,1
 2857         addi    10,10,32
 2858         lvx     21,11,1
 2859         addi    11,11,32
 2860         lvx     22,10,1
 2861         addi    10,10,32
 2862         lvx     23,11,1
 2863         addi    11,11,32
 2864         lvx     24,10,1
 2865         addi    10,10,32
 2866         lvx     25,11,1
 2867         addi    11,11,32
 2868         lvx     26,10,1
 2869         addi    10,10,32
 2870         lvx     27,11,1
 2871         addi    11,11,32
 2872         lvx     28,10,1
 2873         addi    10,10,32
 2874         lvx     29,11,1
 2875         addi    11,11,32
 2876         lvx     30,10,1
 2877         lvx     31,11,1
 2878         ld      26,400(1)
 2879         ld      27,408(1)
 2880         ld      28,416(1)
 2881         ld      29,424(1)
 2882         ld      30,432(1)
 2883         ld      31,440(1)
 2884         addi    1,1,448
 2885         blr     
 2886 .long   0
 2887 .byte   0,12,0x04,1,0x80,6,6,0
 2888 .long   0
 2889 
 2890 .align  5
 2891 _aesp8_xts_enc5x:
 2892         .long   0x10E7C508
 2893         .long   0x118CC508
 2894         .long   0x11ADC508
 2895         .long   0x11CEC508
 2896         .long   0x11EFC508
 2897         lvx     24,26,7
 2898         addi    7,7,0x20
 2899 
 2900         .long   0x10E7CD08
 2901         .long   0x118CCD08
 2902         .long   0x11ADCD08
 2903         .long   0x11CECD08
 2904         .long   0x11EFCD08
 2905         lvx     25,3,7
 2906         bdnz    _aesp8_xts_enc5x
 2907 
 2908         add     10,10,31
 2909         cmpwi   31,0
 2910         .long   0x10E7C508
 2911         .long   0x118CC508
 2912         .long   0x11ADC508
 2913         .long   0x11CEC508
 2914         .long   0x11EFC508
 2915 
 2916         subi    10,10,16
 2917         .long   0x10E7CD08
 2918         .long   0x118CCD08
 2919         .long   0x11ADCD08
 2920         .long   0x11CECD08
 2921         .long   0x11EFCD08
 2922         vxor    17,17,31
 2923 
 2924         .long   0x10E7D508
 2925         lvsr    5,0,31
 2926         .long   0x118CD508
 2927         .long   0x11ADD508
 2928         .long   0x11CED508
 2929         .long   0x11EFD508
 2930         vxor    1,18,31
 2931 
 2932         .long   0x10E7DD08
 2933         .long   0x7C005699
 2934         .long   0x118CDD08
 2935         .long   0x11ADDD08
 2936         .long   0x11CEDD08
 2937         .long   0x11EFDD08
 2938         vxor    2,19,31
 2939 
 2940         addi    7,1,64+15
 2941         .long   0x10E7E508
 2942         .long   0x118CE508
 2943         .long   0x11ADE508
 2944         .long   0x11CEE508
 2945         .long   0x11EFE508
 2946         lvx     24,0,7
 2947         vxor    3,20,31
 2948 
 2949         .long   0x10E7ED08
 2950         vperm   0,0,0,6
 2951         .long   0x118CED08
 2952         .long   0x11ADED08
 2953         .long   0x11CEED08
 2954         .long   0x11EFED08
 2955         lvx     25,3,7
 2956         vxor    4,21,31
 2957 
 2958         .long   0x10E7F508
 2959         vperm   0,0,0,5
 2960         .long   0x118CF508
 2961         .long   0x11ADF508
 2962         .long   0x11CEF508
 2963         .long   0x11EFF508
 2964 
 2965         .long   0x10E78D09
 2966         .long   0x118C0D09
 2967         .long   0x11AD1509
 2968         .long   0x11CE1D09
 2969         .long   0x11EF2509
 2970         blr     
 2971 .long   0
 2972 .byte   0,12,0x14,0,0,0,0,0
 2973 
 2974 .align  5
 2975 _aesp8_xts_decrypt6x:
 2976         stdu    1,-448(1)
 2977         mflr    11
 2978         li      7,207
 2979         li      3,223
 2980         std     11,464(1)
 2981         stvx    20,7,1
 2982         addi    7,7,32
 2983         stvx    21,3,1
 2984         addi    3,3,32
 2985         stvx    22,7,1
 2986         addi    7,7,32
 2987         stvx    23,3,1
 2988         addi    3,3,32
 2989         stvx    24,7,1
 2990         addi    7,7,32
 2991         stvx    25,3,1
 2992         addi    3,3,32
 2993         stvx    26,7,1
 2994         addi    7,7,32
 2995         stvx    27,3,1
 2996         addi    3,3,32
 2997         stvx    28,7,1
 2998         addi    7,7,32
 2999         stvx    29,3,1
 3000         addi    3,3,32
 3001         stvx    30,7,1
 3002         stvx    31,3,1
 3003         li      0,-1
 3004         stw     12,396(1)
 3005         li      3,0x10
 3006         std     26,400(1)
 3007         li      26,0x20
 3008         std     27,408(1)
 3009         li      27,0x30
 3010         std     28,416(1)
 3011         li      28,0x40
 3012         std     29,424(1)
 3013         li      29,0x50
 3014         std     30,432(1)
 3015         li      30,0x60
 3016         std     31,440(1)
 3017         li      31,0x70
 3018         or      0,0,0
 3019 
 3020         subi    9,9,3
 3021 
 3022         lvx     23,0,6
 3023         lvx     30,3,6
 3024         addi    6,6,0x20
 3025         lvx     31,0,6
 3026         vperm   23,30,23,7
 3027         addi    7,1,64+15
 3028         mtctr   9
 3029 
 3030 .Load_xts_dec_key:
 3031         vperm   24,31,30,7
 3032         lvx     30,3,6
 3033         addi    6,6,0x20
 3034         stvx    24,0,7
 3035         vperm   25,30,31,7
 3036         lvx     31,0,6
 3037         stvx    25,3,7
 3038         addi    7,7,0x20
 3039         bdnz    .Load_xts_dec_key
 3040 
 3041         lvx     26,3,6
 3042         vperm   24,31,30,7
 3043         lvx     27,26,6
 3044         stvx    24,0,7
 3045         vperm   25,26,31,7
 3046         lvx     28,27,6
 3047         stvx    25,3,7
 3048         addi    7,1,64+15
 3049         vperm   26,27,26,7
 3050         lvx     29,28,6
 3051         vperm   27,28,27,7
 3052         lvx     30,29,6
 3053         vperm   28,29,28,7
 3054         lvx     31,30,6
 3055         vperm   29,30,29,7
 3056         lvx     22,31,6
 3057         vperm   30,31,30,7
 3058         lvx     24,0,7
 3059         vperm   31,22,31,7
 3060         lvx     25,3,7
 3061 
 3062         vperm   0,2,4,5
 3063         subi    10,10,31
 3064         vxor    17,8,23
 3065         vsrab   11,8,9
 3066         vaddubm 8,8,8
 3067         vsldoi  11,11,11,15
 3068         vand    11,11,10
 3069         vxor    7,0,17
 3070         vxor    8,8,11
 3071 
 3072         .long   0x7C235699
 3073         vxor    18,8,23
 3074         vsrab   11,8,9
 3075         vaddubm 8,8,8
 3076         vsldoi  11,11,11,15
 3077         vperm   1,1,1,6
 3078         vand    11,11,10
 3079         vxor    12,1,18
 3080         vxor    8,8,11
 3081 
 3082         .long   0x7C5A5699
 3083         andi.   31,5,15
 3084         vxor    19,8,23
 3085         vsrab   11,8,9
 3086         vaddubm 8,8,8
 3087         vsldoi  11,11,11,15
 3088         vperm   2,2,2,6
 3089         vand    11,11,10
 3090         vxor    13,2,19
 3091         vxor    8,8,11
 3092 
 3093         .long   0x7C7B5699
 3094         sub     5,5,31
 3095         vxor    20,8,23
 3096         vsrab   11,8,9
 3097         vaddubm 8,8,8
 3098         vsldoi  11,11,11,15
 3099         vperm   3,3,3,6
 3100         vand    11,11,10
 3101         vxor    14,3,20
 3102         vxor    8,8,11
 3103 
 3104         .long   0x7C9C5699
 3105         subi    5,5,0x60
 3106         vxor    21,8,23
 3107         vsrab   11,8,9
 3108         vaddubm 8,8,8
 3109         vsldoi  11,11,11,15
 3110         vperm   4,4,4,6
 3111         vand    11,11,10
 3112         vxor    15,4,21
 3113         vxor    8,8,11
 3114 
 3115         .long   0x7CBD5699
 3116         addi    10,10,0x60
 3117         vxor    22,8,23
 3118         vsrab   11,8,9
 3119         vaddubm 8,8,8
 3120         vsldoi  11,11,11,15
 3121         vperm   5,5,5,6
 3122         vand    11,11,10
 3123         vxor    16,5,22
 3124         vxor    8,8,11
 3125 
 3126         vxor    31,31,23
 3127         mtctr   9
 3128         b       .Loop_xts_dec6x
 3129 
 3130 .align  5
 3131 .Loop_xts_dec6x:
 3132         .long   0x10E7C548
 3133         .long   0x118CC548
 3134         .long   0x11ADC548
 3135         .long   0x11CEC548
 3136         .long   0x11EFC548
 3137         .long   0x1210C548
 3138         lvx     24,26,7
 3139         addi    7,7,0x20
 3140 
 3141         .long   0x10E7CD48
 3142         .long   0x118CCD48
 3143         .long   0x11ADCD48
 3144         .long   0x11CECD48
 3145         .long   0x11EFCD48
 3146         .long   0x1210CD48
 3147         lvx     25,3,7
 3148         bdnz    .Loop_xts_dec6x
 3149 
 3150         subic   5,5,96
 3151         vxor    0,17,31
 3152         .long   0x10E7C548
 3153         .long   0x118CC548
 3154         vsrab   11,8,9
 3155         vxor    17,8,23
 3156         vaddubm 8,8,8
 3157         .long   0x11ADC548
 3158         .long   0x11CEC548
 3159         vsldoi  11,11,11,15
 3160         .long   0x11EFC548
 3161         .long   0x1210C548
 3162 
 3163         subfe.  0,0,0
 3164         vand    11,11,10
 3165         .long   0x10E7CD48
 3166         .long   0x118CCD48
 3167         vxor    8,8,11
 3168         .long   0x11ADCD48
 3169         .long   0x11CECD48
 3170         vxor    1,18,31
 3171         vsrab   11,8,9
 3172         vxor    18,8,23
 3173         .long   0x11EFCD48
 3174         .long   0x1210CD48
 3175 
 3176         and     0,0,5
 3177         vaddubm 8,8,8
 3178         vsldoi  11,11,11,15
 3179         .long   0x10E7D548
 3180         .long   0x118CD548
 3181         vand    11,11,10
 3182         .long   0x11ADD548
 3183         .long   0x11CED548
 3184         vxor    8,8,11
 3185         .long   0x11EFD548
 3186         .long   0x1210D548
 3187 
 3188         add     10,10,0
 3189 
 3190 
 3191 
 3192         vxor    2,19,31
 3193         vsrab   11,8,9
 3194         vxor    19,8,23
 3195         vaddubm 8,8,8
 3196         .long   0x10E7DD48
 3197         .long   0x118CDD48
 3198         vsldoi  11,11,11,15
 3199         .long   0x11ADDD48
 3200         .long   0x11CEDD48
 3201         vand    11,11,10
 3202         .long   0x11EFDD48
 3203         .long   0x1210DD48
 3204 
 3205         addi    7,1,64+15
 3206         vxor    8,8,11
 3207         .long   0x10E7E548
 3208         .long   0x118CE548
 3209         vxor    3,20,31
 3210         vsrab   11,8,9
 3211         vxor    20,8,23
 3212         .long   0x11ADE548
 3213         .long   0x11CEE548
 3214         vaddubm 8,8,8
 3215         vsldoi  11,11,11,15
 3216         .long   0x11EFE548
 3217         .long   0x1210E548
 3218         lvx     24,0,7
 3219         vand    11,11,10
 3220 
 3221         .long   0x10E7ED48
 3222         .long   0x118CED48
 3223         vxor    8,8,11
 3224         .long   0x11ADED48
 3225         .long   0x11CEED48
 3226         vxor    4,21,31
 3227         vsrab   11,8,9
 3228         vxor    21,8,23
 3229         .long   0x11EFED48
 3230         .long   0x1210ED48
 3231         lvx     25,3,7
 3232         vaddubm 8,8,8
 3233         vsldoi  11,11,11,15
 3234 
 3235         .long   0x10E7F548
 3236         .long   0x118CF548
 3237         vand    11,11,10
 3238         .long   0x11ADF548
 3239         .long   0x11CEF548
 3240         vxor    8,8,11
 3241         .long   0x11EFF548
 3242         .long   0x1210F548
 3243         vxor    5,22,31
 3244         vsrab   11,8,9
 3245         vxor    22,8,23
 3246 
 3247         .long   0x10E70549
 3248         .long   0x7C005699
 3249         vaddubm 8,8,8
 3250         vsldoi  11,11,11,15
 3251         .long   0x118C0D49
 3252         .long   0x7C235699
 3253         .long   0x11AD1549
 3254         vperm   0,0,0,6
 3255         .long   0x7C5A5699
 3256         vand    11,11,10
 3257         .long   0x11CE1D49
 3258         vperm   1,1,1,6
 3259         .long   0x7C7B5699
 3260         .long   0x11EF2549
 3261         vperm   2,2,2,6
 3262         .long   0x7C9C5699
 3263         vxor    8,8,11
 3264         .long   0x12102D49
 3265         vperm   3,3,3,6
 3266         .long   0x7CBD5699
 3267         addi    10,10,0x60
 3268         vperm   4,4,4,6
 3269         vperm   5,5,5,6
 3270 
 3271         vperm   7,7,7,6
 3272         vperm   12,12,12,6
 3273         .long   0x7CE02799
 3274         vxor    7,0,17
 3275         vperm   13,13,13,6
 3276         .long   0x7D832799
 3277         vxor    12,1,18
 3278         vperm   14,14,14,6
 3279         .long   0x7DBA2799
 3280         vxor    13,2,19
 3281         vperm   15,15,15,6
 3282         .long   0x7DDB2799
 3283         vxor    14,3,20
 3284         vperm   16,16,16,6
 3285         .long   0x7DFC2799
 3286         vxor    15,4,21
 3287         .long   0x7E1D2799
 3288         vxor    16,5,22
 3289         addi    4,4,0x60
 3290 
 3291         mtctr   9
 3292         beq     .Loop_xts_dec6x
 3293 
 3294         addic.  5,5,0x60
 3295         beq     .Lxts_dec6x_zero
 3296         cmpwi   5,0x20
 3297         blt     .Lxts_dec6x_one
 3298         nop     
 3299         beq     .Lxts_dec6x_two
 3300         cmpwi   5,0x40
 3301         blt     .Lxts_dec6x_three
 3302         nop     
 3303         beq     .Lxts_dec6x_four
 3304 
 3305 .Lxts_dec6x_five:
 3306         vxor    7,1,17
 3307         vxor    12,2,18
 3308         vxor    13,3,19
 3309         vxor    14,4,20
 3310         vxor    15,5,21
 3311 
 3312         bl      _aesp8_xts_dec5x
 3313 
 3314         vperm   7,7,7,6
 3315         vor     17,22,22
 3316         vxor    18,8,23
 3317         vperm   12,12,12,6
 3318         .long   0x7CE02799
 3319         vxor    7,0,18
 3320         vperm   13,13,13,6
 3321         .long   0x7D832799
 3322         vperm   14,14,14,6
 3323         .long   0x7DBA2799
 3324         vperm   15,15,15,6
 3325         .long   0x7DDB2799
 3326         .long   0x7DFC2799
 3327         addi    4,4,0x50
 3328         bne     .Lxts_dec6x_steal
 3329         b       .Lxts_dec6x_done
 3330 
 3331 .align  4
 3332 .Lxts_dec6x_four:
 3333         vxor    7,2,17
 3334         vxor    12,3,18
 3335         vxor    13,4,19
 3336         vxor    14,5,20
 3337         vxor    15,15,15
 3338 
 3339         bl      _aesp8_xts_dec5x
 3340 
 3341         vperm   7,7,7,6
 3342         vor     17,21,21
 3343         vor     18,22,22
 3344         vperm   12,12,12,6
 3345         .long   0x7CE02799
 3346         vxor    7,0,22
 3347         vperm   13,13,13,6
 3348         .long   0x7D832799
 3349         vperm   14,14,14,6
 3350         .long   0x7DBA2799
 3351         .long   0x7DDB2799
 3352         addi    4,4,0x40
 3353         bne     .Lxts_dec6x_steal
 3354         b       .Lxts_dec6x_done
 3355 
 3356 .align  4
 3357 .Lxts_dec6x_three:
 3358         vxor    7,3,17
 3359         vxor    12,4,18
 3360         vxor    13,5,19
 3361         vxor    14,14,14
 3362         vxor    15,15,15
 3363 
 3364         bl      _aesp8_xts_dec5x
 3365 
 3366         vperm   7,7,7,6
 3367         vor     17,20,20
 3368         vor     18,21,21
 3369         vperm   12,12,12,6
 3370         .long   0x7CE02799
 3371         vxor    7,0,21
 3372         vperm   13,13,13,6
 3373         .long   0x7D832799
 3374         .long   0x7DBA2799
 3375         addi    4,4,0x30
 3376         bne     .Lxts_dec6x_steal
 3377         b       .Lxts_dec6x_done
 3378 
 3379 .align  4
 3380 .Lxts_dec6x_two:
 3381         vxor    7,4,17
 3382         vxor    12,5,18
 3383         vxor    13,13,13
 3384         vxor    14,14,14
 3385         vxor    15,15,15
 3386 
 3387         bl      _aesp8_xts_dec5x
 3388 
 3389         vperm   7,7,7,6
 3390         vor     17,19,19
 3391         vor     18,20,20
 3392         vperm   12,12,12,6
 3393         .long   0x7CE02799
 3394         vxor    7,0,20
 3395         .long   0x7D832799
 3396         addi    4,4,0x20
 3397         bne     .Lxts_dec6x_steal
 3398         b       .Lxts_dec6x_done
 3399 
 3400 .align  4
 3401 .Lxts_dec6x_one:
 3402         vxor    7,5,17
 3403         nop     
 3404 .Loop_xts_dec1x:
 3405         .long   0x10E7C548
 3406         lvx     24,26,7
 3407         addi    7,7,0x20
 3408 
 3409         .long   0x10E7CD48
 3410         lvx     25,3,7
 3411         bdnz    .Loop_xts_dec1x
 3412 
 3413         subi    0,31,1
 3414         .long   0x10E7C548
 3415 
 3416         andi.   0,0,16
 3417         cmpwi   31,0
 3418         .long   0x10E7CD48
 3419 
 3420         sub     10,10,0
 3421         .long   0x10E7D548
 3422 
 3423         .long   0x7C005699
 3424         .long   0x10E7DD48
 3425 
 3426         addi    7,1,64+15
 3427         .long   0x10E7E548
 3428         lvx     24,0,7
 3429 
 3430         .long   0x10E7ED48
 3431         lvx     25,3,7
 3432         vxor    17,17,31
 3433 
 3434         vperm   0,0,0,6
 3435         .long   0x10E7F548
 3436 
 3437         mtctr   9
 3438         .long   0x10E78D49
 3439 
 3440         vor     17,18,18
 3441         vor     18,19,19
 3442         vperm   7,7,7,6
 3443         .long   0x7CE02799
 3444         addi    4,4,0x10
 3445         vxor    7,0,19
 3446         bne     .Lxts_dec6x_steal
 3447         b       .Lxts_dec6x_done
 3448 
 3449 .align  4
 3450 .Lxts_dec6x_zero:
 3451         cmpwi   31,0
 3452         beq     .Lxts_dec6x_done
 3453 
 3454         .long   0x7C005699
 3455         vperm   0,0,0,6
 3456         vxor    7,0,18
 3457 .Lxts_dec6x_steal:
 3458         .long   0x10E7C548
 3459         lvx     24,26,7
 3460         addi    7,7,0x20
 3461 
 3462         .long   0x10E7CD48
 3463         lvx     25,3,7
 3464         bdnz    .Lxts_dec6x_steal
 3465 
 3466         add     10,10,31
 3467         .long   0x10E7C548
 3468 
 3469         cmpwi   31,0
 3470         .long   0x10E7CD48
 3471 
 3472         .long   0x7C005699
 3473         .long   0x10E7D548
 3474 
 3475         lvsr    5,0,31
 3476         .long   0x10E7DD48
 3477 
 3478         addi    7,1,64+15
 3479         .long   0x10E7E548
 3480         lvx     24,0,7
 3481 
 3482         .long   0x10E7ED48
 3483         lvx     25,3,7
 3484         vxor    18,18,31
 3485 
 3486         vperm   0,0,0,6
 3487         .long   0x10E7F548
 3488 
 3489         vperm   0,0,0,5
 3490         .long   0x11679549
 3491 
 3492         vperm   7,11,11,6
 3493         .long   0x7CE02799
 3494 
 3495 
 3496         vxor    7,7,7
 3497         vspltisb        12,-1
 3498         vperm   7,7,12,5
 3499         vsel    7,0,11,7
 3500         vxor    7,7,17
 3501 
 3502         subi    30,4,1
 3503         mtctr   31
 3504 .Loop_xts_dec6x_steal:
 3505         lbzu    0,1(30)
 3506         stb     0,16(30)
 3507         bdnz    .Loop_xts_dec6x_steal
 3508 
 3509         li      31,0
 3510         mtctr   9
 3511         b       .Loop_xts_dec1x
 3512 
 3513 .align  4
 3514 .Lxts_dec6x_done:
 3515         cmpldi  8,0
 3516         beq     .Lxts_dec6x_ret
 3517 
 3518         vxor    8,17,23
 3519         vperm   8,8,8,6
 3520         .long   0x7D004799
 3521 
 3522 .Lxts_dec6x_ret:
 3523         mtlr    11
 3524         li      10,79
 3525         li      11,95
 3526         stvx    9,10,1
 3527         addi    10,10,32
 3528         stvx    9,11,1
 3529         addi    11,11,32
 3530         stvx    9,10,1
 3531         addi    10,10,32
 3532         stvx    9,11,1
 3533         addi    11,11,32
 3534         stvx    9,10,1
 3535         addi    10,10,32
 3536         stvx    9,11,1
 3537         addi    11,11,32
 3538         stvx    9,10,1
 3539         addi    10,10,32
 3540         stvx    9,11,1
 3541         addi    11,11,32
 3542 
 3543         or      12,12,12
 3544         lvx     20,10,1
 3545         addi    10,10,32
 3546         lvx     21,11,1
 3547         addi    11,11,32
 3548         lvx     22,10,1
 3549         addi    10,10,32
 3550         lvx     23,11,1
 3551         addi    11,11,32
 3552         lvx     24,10,1
 3553         addi    10,10,32
 3554         lvx     25,11,1
 3555         addi    11,11,32
 3556         lvx     26,10,1
 3557         addi    10,10,32
 3558         lvx     27,11,1
 3559         addi    11,11,32
 3560         lvx     28,10,1
 3561         addi    10,10,32
 3562         lvx     29,11,1
 3563         addi    11,11,32
 3564         lvx     30,10,1
 3565         lvx     31,11,1
 3566         ld      26,400(1)
 3567         ld      27,408(1)
 3568         ld      28,416(1)
 3569         ld      29,424(1)
 3570         ld      30,432(1)
 3571         ld      31,440(1)
 3572         addi    1,1,448
 3573         blr     
 3574 .long   0
 3575 .byte   0,12,0x04,1,0x80,6,6,0
 3576 .long   0
 3577 
 3578 .align  5
 3579 _aesp8_xts_dec5x:
 3580         .long   0x10E7C548
 3581         .long   0x118CC548
 3582         .long   0x11ADC548
 3583         .long   0x11CEC548
 3584         .long   0x11EFC548
 3585         lvx     24,26,7
 3586         addi    7,7,0x20
 3587 
 3588         .long   0x10E7CD48
 3589         .long   0x118CCD48
 3590         .long   0x11ADCD48
 3591         .long   0x11CECD48
 3592         .long   0x11EFCD48
 3593         lvx     25,3,7
 3594         bdnz    _aesp8_xts_dec5x
 3595 
 3596         subi    0,31,1
 3597         .long   0x10E7C548
 3598         .long   0x118CC548
 3599         .long   0x11ADC548
 3600         .long   0x11CEC548
 3601         .long   0x11EFC548
 3602 
 3603         andi.   0,0,16
 3604         cmpwi   31,0
 3605         .long   0x10E7CD48
 3606         .long   0x118CCD48
 3607         .long   0x11ADCD48
 3608         .long   0x11CECD48
 3609         .long   0x11EFCD48
 3610         vxor    17,17,31
 3611 
 3612         sub     10,10,0
 3613         .long   0x10E7D548
 3614         .long   0x118CD548
 3615         .long   0x11ADD548
 3616         .long   0x11CED548
 3617         .long   0x11EFD548
 3618         vxor    1,18,31
 3619 
 3620         .long   0x10E7DD48
 3621         .long   0x7C005699
 3622         .long   0x118CDD48
 3623         .long   0x11ADDD48
 3624         .long   0x11CEDD48
 3625         .long   0x11EFDD48
 3626         vxor    2,19,31
 3627 
 3628         addi    7,1,64+15
 3629         .long   0x10E7E548
 3630         .long   0x118CE548
 3631         .long   0x11ADE548
 3632         .long   0x11CEE548
 3633         .long   0x11EFE548
 3634         lvx     24,0,7
 3635         vxor    3,20,31
 3636 
 3637         .long   0x10E7ED48
 3638         vperm   0,0,0,6
 3639         .long   0x118CED48
 3640         .long   0x11ADED48
 3641         .long   0x11CEED48
 3642         .long   0x11EFED48
 3643         lvx     25,3,7
 3644         vxor    4,21,31
 3645 
 3646         .long   0x10E7F548
 3647         .long   0x118CF548
 3648         .long   0x11ADF548
 3649         .long   0x11CEF548
 3650         .long   0x11EFF548
 3651 
 3652         .long   0x10E78D49
 3653         .long   0x118C0D49
 3654         .long   0x11AD1549
 3655         .long   0x11CE1D49
 3656         .long   0x11EF2549
 3657         mtctr   9
 3658         blr     
 3659 .long   0
 3660 .byte   0,12,0x14,0,0,0,0,0

Cache object: d8a49e63420187668ed330bea1a1df41


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