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/powerpc/ppc-mont.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 ppc-mont.pl. */
    3 .machine        "any"
    4 .text
    5 
    6 .globl  bn_mul_mont_int
    7 .type   bn_mul_mont_int,@function
    8 .align  5
    9 bn_mul_mont_int:
   10         mr      9,3
   11         li      3,0
   12         cmpwi   8,32
   13         bgelr   
   14         slwi    8,8,2
   15         li      12,-4096
   16         addi    3,8,256
   17         subf    3,3,1
   18         and     3,3,12
   19         subf    3,1,3
   20         mr      12,1
   21         srwi    8,8,2
   22         stwux   1,1,3
   23 
   24         stw     20,-48(12)
   25         stw     21,-44(12)
   26         stw     22,-40(12)
   27         stw     23,-36(12)
   28         stw     24,-32(12)
   29         stw     25,-28(12)
   30         stw     26,-24(12)
   31         stw     27,-20(12)
   32         stw     28,-16(12)
   33         stw     29,-12(12)
   34         stw     30,-8(12)
   35         stw     31,-4(12)
   36 
   37         lwz     7,0(7)
   38         addi    8,8,-2
   39 
   40         lwz     23,0(5)
   41         lwz     10,0(4)
   42         addi    22,1,32
   43         mullw   25,10,23
   44         mulhwu  26,10,23
   45 
   46         lwz     10,4(4)
   47         lwz     11,0(6)
   48 
   49         mullw   24,25,7
   50 
   51         mullw   29,10,23
   52         mulhwu  30,10,23
   53 
   54         mullw   27,11,24
   55         mulhwu  28,11,24
   56         lwz     11,4(6)
   57         addc    27,27,25
   58         addze   28,28
   59 
   60         mullw   31,11,24
   61         mulhwu  0,11,24
   62 
   63         mtctr   8
   64         li      21,8
   65 .align  4
   66 .L1st:
   67         lwzx    10,4,21
   68         addc    25,29,26
   69         lwzx    11,6,21
   70         addze   26,30
   71         mullw   29,10,23
   72         addc    27,31,28
   73         mulhwu  30,10,23
   74         addze   28,0
   75         mullw   31,11,24
   76         addc    27,27,25
   77         mulhwu  0,11,24
   78         addze   28,28
   79         stw     27,0(22)
   80 
   81         addi    21,21,4
   82         addi    22,22,4
   83         bdnz    .L1st
   84 
   85         addc    25,29,26
   86         addze   26,30
   87 
   88         addc    27,31,28
   89         addze   28,0
   90         addc    27,27,25
   91         addze   28,28
   92         stw     27,0(22)
   93 
   94         li      3,0
   95         addc    28,28,26
   96         addze   3,3
   97         stw     28,4(22)
   98 
   99         li      20,4
  100 .align  4
  101 .Louter:
  102         lwzx    23,5,20
  103         lwz     10,0(4)
  104         addi    22,1,32
  105         lwz     12,32(1)
  106         mullw   25,10,23
  107         mulhwu  26,10,23
  108         lwz     10,4(4)
  109         lwz     11,0(6)
  110         addc    25,25,12
  111         mullw   29,10,23
  112         addze   26,26
  113         mullw   24,25,7
  114         mulhwu  30,10,23
  115         mullw   27,11,24
  116         mulhwu  28,11,24
  117         lwz     11,4(6)
  118         addc    27,27,25
  119         mullw   31,11,24
  120         addze   28,28
  121         mulhwu  0,11,24
  122 
  123         mtctr   8
  124         li      21,8
  125 .align  4
  126 .Linner:
  127         lwzx    10,4,21
  128         addc    25,29,26
  129         lwz     12,4(22)
  130         addze   26,30
  131         lwzx    11,6,21
  132         addc    27,31,28
  133         mullw   29,10,23
  134         addze   28,0
  135         mulhwu  30,10,23
  136         addc    25,25,12
  137         mullw   31,11,24
  138         addze   26,26
  139         mulhwu  0,11,24
  140         addc    27,27,25
  141         addi    21,21,4
  142         addze   28,28
  143         stw     27,0(22)
  144         addi    22,22,4
  145         bdnz    .Linner
  146 
  147         lwz     12,4(22)
  148         addc    25,29,26
  149         addze   26,30
  150         addc    25,25,12
  151         addze   26,26
  152 
  153         addc    27,31,28
  154         addze   28,0
  155         addc    27,27,25
  156         addze   28,28
  157         stw     27,0(22)
  158 
  159         addic   3,3,-1
  160         li      3,0
  161         adde    28,28,26
  162         addze   3,3
  163         stw     28,4(22)
  164 
  165         slwi    12,8,2
  166         .long   0x7c146040
  167         addi    20,20,4
  168         ble     .Louter
  169 
  170         addi    8,8,2
  171         subfc   21,21,21
  172         addi    22,1,32
  173         mtctr   8
  174 
  175 .align  4
  176 .Lsub:  lwzx    12,22,21
  177         lwzx    11,6,21
  178         subfe   10,11,12
  179         stwx    10,9,21
  180         addi    21,21,4
  181         bdnz    .Lsub
  182 
  183         li      21,0
  184         mtctr   8
  185         subfe   3,21,3
  186 
  187 .align  4
  188 .Lcopy:
  189         lwzx    12,22,21
  190         lwzx    10,9,21
  191         and     12,12,3
  192         andc    10,10,3
  193         stwx    21,22,21
  194         or      10,10,12
  195         stwx    10,9,21
  196         addi    21,21,4
  197         bdnz    .Lcopy
  198 
  199         lwz     12,0(1)
  200         li      3,1
  201         lwz     20,-48(12)
  202         lwz     21,-44(12)
  203         lwz     22,-40(12)
  204         lwz     23,-36(12)
  205         lwz     24,-32(12)
  206         lwz     25,-28(12)
  207         lwz     26,-24(12)
  208         lwz     27,-20(12)
  209         lwz     28,-16(12)
  210         lwz     29,-12(12)
  211         lwz     30,-8(12)
  212         lwz     31,-4(12)
  213         mr      1,12
  214         blr     
  215 .long   0
  216 .byte   0,12,4,0,0x80,12,6,0
  217 .long   0
  218 .size   bn_mul_mont_int,.-bn_mul_mont_int
  219 .globl  bn_mul4x_mont_int
  220 .type   bn_mul4x_mont_int,@function
  221 .align  5
  222 bn_mul4x_mont_int:
  223         andi.   0,8,7
  224         bne     .Lmul4x_do
  225         .long   0x7c042840
  226         bne     .Lmul4x_do
  227         b       .Lsqr8x_do
  228 .Lmul4x_do:
  229         slwi    8,8,2
  230         mr      9,1
  231         li      10,-32*4
  232         sub     10,10,8
  233         stwux   1,1,10
  234 
  235         stw     14,-4*18(9)
  236         stw     15,-4*17(9)
  237         stw     16,-4*16(9)
  238         stw     17,-4*15(9)
  239         stw     18,-4*14(9)
  240         stw     19,-4*13(9)
  241         stw     20,-4*12(9)
  242         stw     21,-4*11(9)
  243         stw     22,-4*10(9)
  244         stw     23,-4*9(9)
  245         stw     24,-4*8(9)
  246         stw     25,-4*7(9)
  247         stw     26,-4*6(9)
  248         stw     27,-4*5(9)
  249         stw     28,-4*4(9)
  250         stw     29,-4*3(9)
  251         stw     30,-4*2(9)
  252         stw     31,-4*1(9)
  253 
  254         subi    4,4,4
  255         subi    6,6,4
  256         subi    3,3,4
  257         lwz     7,0(7)
  258 
  259         add     14,5,8
  260         add     30,4,8
  261         subi    14,14,4*4
  262 
  263         lwz     27,4*0(5)
  264         li      22,0
  265         lwz     9,4*1(4)
  266         li      23,0
  267         lwz     10,4*2(4)
  268         li      24,0
  269         lwz     11,4*3(4)
  270         li      25,0
  271         lwzu    12,4*4(4)
  272         lwz     18,4*1(6)
  273         lwz     19,4*2(6)
  274         lwz     20,4*3(6)
  275         lwzu    21,4*4(6)
  276 
  277         stw     3,4*6(1)
  278         stw     14,4*7(1)
  279         li      3,0
  280         addic   29,1,4*7
  281         li      31,0
  282         li      0,0
  283         b       .Loop_mul4x_1st_reduction
  284 
  285 .align  5
  286 .Loop_mul4x_1st_reduction:
  287         mullw   14,9,27
  288         addze   3,3
  289         mullw   15,10,27
  290         addi    31,31,4
  291         mullw   16,11,27
  292         andi.   31,31,4*4-1
  293         mullw   17,12,27
  294         addc    22,22,14
  295         mulhwu  14,9,27
  296         adde    23,23,15
  297         mulhwu  15,10,27
  298         adde    24,24,16
  299         mullw   28,22,7
  300         adde    25,25,17
  301         mulhwu  16,11,27
  302         addze   26,0
  303         mulhwu  17,12,27
  304         lwzx    27,5,31
  305         addc    23,23,14
  306 
  307         stwu    28,4(29)
  308         adde    24,24,15
  309         mullw   15,19,28
  310         adde    25,25,16
  311         mullw   16,20,28
  312         adde    26,26,17
  313         mullw   17,21,28
  314 
  315 
  316 
  317 
  318 
  319 
  320 
  321 
  322 
  323 
  324         addic   22,22,-1
  325         mulhwu  14,18,28
  326         adde    22,23,15
  327         mulhwu  15,19,28
  328         adde    23,24,16
  329         mulhwu  16,20,28
  330         adde    24,25,17
  331         mulhwu  17,21,28
  332         adde    25,26,3
  333         addze   3,0
  334         addc    22,22,14
  335         adde    23,23,15
  336         adde    24,24,16
  337         adde    25,25,17
  338 
  339         bne     .Loop_mul4x_1st_reduction
  340 
  341         .long   0x7c1e2040
  342         beq     .Lmul4x4_post_condition
  343 
  344         lwz     9,4*1(4)
  345         lwz     10,4*2(4)
  346         lwz     11,4*3(4)
  347         lwzu    12,4*4(4)
  348         lwz     28,4*8(1)
  349         lwz     18,4*1(6)
  350         lwz     19,4*2(6)
  351         lwz     20,4*3(6)
  352         lwzu    21,4*4(6)
  353         b       .Loop_mul4x_1st_tail
  354 
  355 .align  5
  356 .Loop_mul4x_1st_tail:
  357         mullw   14,9,27
  358         addze   3,3
  359         mullw   15,10,27
  360         addi    31,31,4
  361         mullw   16,11,27
  362         andi.   31,31,4*4-1
  363         mullw   17,12,27
  364         addc    22,22,14
  365         mulhwu  14,9,27
  366         adde    23,23,15
  367         mulhwu  15,10,27
  368         adde    24,24,16
  369         mulhwu  16,11,27
  370         adde    25,25,17
  371         mulhwu  17,12,27
  372         addze   26,0
  373         lwzx    27,5,31
  374         addc    23,23,14
  375         mullw   14,18,28
  376         adde    24,24,15
  377         mullw   15,19,28
  378         adde    25,25,16
  379         mullw   16,20,28
  380         adde    26,26,17
  381         mullw   17,21,28
  382         addc    22,22,14
  383         mulhwu  14,18,28
  384         adde    23,23,15
  385         mulhwu  15,19,28
  386         adde    24,24,16
  387         mulhwu  16,20,28
  388         adde    25,25,17
  389         adde    26,26,3
  390         mulhwu  17,21,28
  391         addze   3,0
  392         addi    28,1,4*8
  393         lwzx    28,28,31
  394         stwu    22,4(29)
  395         addc    22,23,14
  396         adde    23,24,15
  397         adde    24,25,16
  398         adde    25,26,17
  399 
  400         bne     .Loop_mul4x_1st_tail
  401 
  402         sub     15,30,8
  403         .long   0x7c1e2040
  404         beq     .Lmul4x_proceed
  405 
  406         lwz     9,4*1(4)
  407         lwz     10,4*2(4)
  408         lwz     11,4*3(4)
  409         lwzu    12,4*4(4)
  410         lwz     18,4*1(6)
  411         lwz     19,4*2(6)
  412         lwz     20,4*3(6)
  413         lwzu    21,4*4(6)
  414         b       .Loop_mul4x_1st_tail
  415 
  416 .align  5
  417 .Lmul4x_proceed:
  418         lwzu    27,4*4(5)
  419         addze   3,3
  420         lwz     9,4*1(15)
  421         lwz     10,4*2(15)
  422         lwz     11,4*3(15)
  423         lwz     12,4*4(15)
  424         addi    4,15,4*4
  425         sub     6,6,8
  426 
  427         stw     22,4*1(29)
  428         stw     23,4*2(29)
  429         stw     24,4*3(29)
  430         stw     25,4*4(29)
  431         stw     3,4*5(29)
  432         lwz     22,4*12(1)
  433         lwz     23,4*13(1)
  434         lwz     24,4*14(1)
  435         lwz     25,4*15(1)
  436 
  437         lwz     18,4*1(6)
  438         lwz     19,4*2(6)
  439         lwz     20,4*3(6)
  440         lwzu    21,4*4(6)
  441         addic   29,1,4*7
  442         li      3,0
  443         b       .Loop_mul4x_reduction
  444 
  445 .align  5
  446 .Loop_mul4x_reduction:
  447         mullw   14,9,27
  448         addze   3,3
  449         mullw   15,10,27
  450         addi    31,31,4
  451         mullw   16,11,27
  452         andi.   31,31,4*4-1
  453         mullw   17,12,27
  454         addc    22,22,14
  455         mulhwu  14,9,27
  456         adde    23,23,15
  457         mulhwu  15,10,27
  458         adde    24,24,16
  459         mullw   28,22,7
  460         adde    25,25,17
  461         mulhwu  16,11,27
  462         addze   26,0
  463         mulhwu  17,12,27
  464         lwzx    27,5,31
  465         addc    23,23,14
  466 
  467         stwu    28,4(29)
  468         adde    24,24,15
  469         mullw   15,19,28
  470         adde    25,25,16
  471         mullw   16,20,28
  472         adde    26,26,17
  473         mullw   17,21,28
  474 
  475         addic   22,22,-1
  476         mulhwu  14,18,28
  477         adde    22,23,15
  478         mulhwu  15,19,28
  479         adde    23,24,16
  480         mulhwu  16,20,28
  481         adde    24,25,17
  482         mulhwu  17,21,28
  483         adde    25,26,3
  484         addze   3,0
  485         addc    22,22,14
  486         adde    23,23,15
  487         adde    24,24,16
  488         adde    25,25,17
  489 
  490         bne     .Loop_mul4x_reduction
  491 
  492         lwz     14,4*5(29)
  493         addze   3,3
  494         lwz     15,4*6(29)
  495         lwz     16,4*7(29)
  496         lwz     17,4*8(29)
  497         lwz     9,4*1(4)
  498         lwz     10,4*2(4)
  499         lwz     11,4*3(4)
  500         lwzu    12,4*4(4)
  501         addc    22,22,14
  502         adde    23,23,15
  503         adde    24,24,16
  504         adde    25,25,17
  505 
  506 
  507         lwz     28,4*8(1)
  508         lwz     18,4*1(6)
  509         lwz     19,4*2(6)
  510         lwz     20,4*3(6)
  511         lwzu    21,4*4(6)
  512         b       .Loop_mul4x_tail
  513 
  514 .align  5
  515 .Loop_mul4x_tail:
  516         mullw   14,9,27
  517         addze   3,3
  518         mullw   15,10,27
  519         addi    31,31,4
  520         mullw   16,11,27
  521         andi.   31,31,4*4-1
  522         mullw   17,12,27
  523         addc    22,22,14
  524         mulhwu  14,9,27
  525         adde    23,23,15
  526         mulhwu  15,10,27
  527         adde    24,24,16
  528         mulhwu  16,11,27
  529         adde    25,25,17
  530         mulhwu  17,12,27
  531         addze   26,0
  532         lwzx    27,5,31
  533         addc    23,23,14
  534         mullw   14,18,28
  535         adde    24,24,15
  536         mullw   15,19,28
  537         adde    25,25,16
  538         mullw   16,20,28
  539         adde    26,26,17
  540         mullw   17,21,28
  541         addc    22,22,14
  542         mulhwu  14,18,28
  543         adde    23,23,15
  544         mulhwu  15,19,28
  545         adde    24,24,16
  546         mulhwu  16,20,28
  547         adde    25,25,17
  548         mulhwu  17,21,28
  549         adde    26,26,3
  550         addi    28,1,4*8
  551         lwzx    28,28,31
  552         addze   3,0
  553         stwu    22,4(29)
  554         addc    22,23,14
  555         adde    23,24,15
  556         adde    24,25,16
  557         adde    25,26,17
  558 
  559         bne     .Loop_mul4x_tail
  560 
  561         lwz     14,4*5(29)
  562         sub     15,6,8
  563         addze   3,3
  564         .long   0x7c1e2040
  565         beq     .Loop_mul4x_break
  566 
  567         lwz     15,4*6(29)
  568         lwz     16,4*7(29)
  569         lwz     17,4*8(29)
  570         lwz     9,4*1(4)
  571         lwz     10,4*2(4)
  572         lwz     11,4*3(4)
  573         lwzu    12,4*4(4)
  574         addc    22,22,14
  575         adde    23,23,15
  576         adde    24,24,16
  577         adde    25,25,17
  578 
  579 
  580         lwz     18,4*1(6)
  581         lwz     19,4*2(6)
  582         lwz     20,4*3(6)
  583         lwzu    21,4*4(6)
  584         b       .Loop_mul4x_tail
  585 
  586 .align  5
  587 .Loop_mul4x_break:
  588         lwz     16,4*6(1)
  589         lwz     17,4*7(1)
  590         addc    9,22,14
  591         lwz     22,4*12(1)
  592         addze   10,23
  593         lwz     23,4*13(1)
  594         addze   11,24
  595         lwz     24,4*14(1)
  596         addze   12,25
  597         lwz     25,4*15(1)
  598         addze   3,3
  599         stw     9,4*1(29)
  600         sub     4,30,8
  601         stw     10,4*2(29)
  602         stw     11,4*3(29)
  603         stw     12,4*4(29)
  604         stw     3,4*5(29)
  605 
  606         lwz     18,4*1(15)
  607         lwz     19,4*2(15)
  608         lwz     20,4*3(15)
  609         lwz     21,4*4(15)
  610         addi    6,15,4*4
  611         .long   0x7c058840
  612         beq     .Lmul4x_post
  613 
  614         lwzu    27,4*4(5)
  615         lwz     9,4*1(4)
  616         lwz     10,4*2(4)
  617         lwz     11,4*3(4)
  618         lwzu    12,4*4(4)
  619         li      3,0
  620         addic   29,1,4*7
  621         b       .Loop_mul4x_reduction
  622 
  623 .align  5
  624 .Lmul4x_post:
  625 
  626 
  627 
  628 
  629         srwi    31,8,4
  630         mr      5,16
  631         subi    31,31,1
  632         mr      30,16
  633         subfc   14,18,22
  634         addi    29,1,4*15
  635         subfe   15,19,23
  636 
  637         mtctr   31
  638 .Lmul4x_sub:
  639         lwz     18,4*1(6)
  640         lwz     22,4*1(29)
  641         subfe   16,20,24
  642         lwz     19,4*2(6)
  643         lwz     23,4*2(29)
  644         subfe   17,21,25
  645         lwz     20,4*3(6)
  646         lwz     24,4*3(29)
  647         lwzu    21,4*4(6)
  648         lwzu    25,4*4(29)
  649         stw     14,4*1(5)
  650         stw     15,4*2(5)
  651         subfe   14,18,22
  652         stw     16,4*3(5)
  653         stwu    17,4*4(5)
  654         subfe   15,19,23
  655         bdnz    .Lmul4x_sub
  656 
  657         lwz     9,4*1(30)
  658         stw     14,4*1(5)
  659         lwz     14,4*12(1)
  660         subfe   16,20,24
  661         lwz     10,4*2(30)
  662         stw     15,4*2(5)
  663         lwz     15,4*13(1)
  664         subfe   17,21,25
  665         subfe   3,0,3
  666         addi    29,1,4*12
  667         lwz     11,4*3(30)
  668         stw     16,4*3(5)
  669         lwz     16,4*14(1)
  670         lwz     12,4*4(30)
  671         stw     17,4*4(5)
  672         lwz     17,4*15(1)
  673 
  674         mtctr   31
  675 .Lmul4x_cond_copy:
  676         and     14,14,3
  677         andc    9,9,3
  678         stw     0,4*0(29)
  679         and     15,15,3
  680         andc    10,10,3
  681         stw     0,4*1(29)
  682         and     16,16,3
  683         andc    11,11,3
  684         stw     0,4*2(29)
  685         and     17,17,3
  686         andc    12,12,3
  687         stw     0,4*3(29)
  688         or      22,14,9
  689         lwz     9,4*5(30)
  690         lwz     14,4*4(29)
  691         or      23,15,10
  692         lwz     10,4*6(30)
  693         lwz     15,4*5(29)
  694         or      24,16,11
  695         lwz     11,4*7(30)
  696         lwz     16,4*6(29)
  697         or      25,17,12
  698         lwz     12,4*8(30)
  699         lwz     17,4*7(29)
  700         addi    29,29,4*4
  701         stw     22,4*1(30)
  702         stw     23,4*2(30)
  703         stw     24,4*3(30)
  704         stwu    25,4*4(30)
  705         bdnz    .Lmul4x_cond_copy
  706 
  707         lwz     5,0(1)
  708         and     14,14,3
  709         andc    9,9,3
  710         stw     0,4*0(29)
  711         and     15,15,3
  712         andc    10,10,3
  713         stw     0,4*1(29)
  714         and     16,16,3
  715         andc    11,11,3
  716         stw     0,4*2(29)
  717         and     17,17,3
  718         andc    12,12,3
  719         stw     0,4*3(29)
  720         or      22,14,9
  721         or      23,15,10
  722         stw     0,4*4(29)
  723         or      24,16,11
  724         or      25,17,12
  725         stw     22,4*1(30)
  726         stw     23,4*2(30)
  727         stw     24,4*3(30)
  728         stw     25,4*4(30)
  729 
  730         b       .Lmul4x_done
  731 
  732 .align  4
  733 .Lmul4x4_post_condition:
  734         lwz     4,4*6(1)
  735         lwz     5,0(1)
  736         addze   3,3
  737 
  738         subfc   9,18,22
  739         subfe   10,19,23
  740         subfe   11,20,24
  741         subfe   12,21,25
  742         subfe   3,0,3
  743 
  744         and     18,18,3
  745         and     19,19,3
  746         addc    9,9,18
  747         and     20,20,3
  748         adde    10,10,19
  749         and     21,21,3
  750         adde    11,11,20
  751         adde    12,12,21
  752 
  753         stw     9,4*1(4)
  754         stw     10,4*2(4)
  755         stw     11,4*3(4)
  756         stw     12,4*4(4)
  757 
  758 .Lmul4x_done:
  759         stw     0,4*8(1)
  760         stw     0,4*9(1)
  761         stw     0,4*10(1)
  762         stw     0,4*11(1)
  763         li      3,1
  764         lwz     14,-4*18(5)
  765         lwz     15,-4*17(5)
  766         lwz     16,-4*16(5)
  767         lwz     17,-4*15(5)
  768         lwz     18,-4*14(5)
  769         lwz     19,-4*13(5)
  770         lwz     20,-4*12(5)
  771         lwz     21,-4*11(5)
  772         lwz     22,-4*10(5)
  773         lwz     23,-4*9(5)
  774         lwz     24,-4*8(5)
  775         lwz     25,-4*7(5)
  776         lwz     26,-4*6(5)
  777         lwz     27,-4*5(5)
  778         lwz     28,-4*4(5)
  779         lwz     29,-4*3(5)
  780         lwz     30,-4*2(5)
  781         lwz     31,-4*1(5)
  782         mr      1,5
  783         blr     
  784 .long   0
  785 .byte   0,12,4,0x20,0x80,18,6,0
  786 .long   0
  787 .size   bn_mul4x_mont_int,.-bn_mul4x_mont_int
  788 .align  5
  789 __bn_sqr8x_mont:
  790 .Lsqr8x_do:
  791         mr      9,1
  792         slwi    10,8,3
  793         li      11,-32*4
  794         sub     10,11,10
  795         slwi    8,8,2
  796         stwux   1,1,10
  797 
  798         stw     14,-4*18(9)
  799         stw     15,-4*17(9)
  800         stw     16,-4*16(9)
  801         stw     17,-4*15(9)
  802         stw     18,-4*14(9)
  803         stw     19,-4*13(9)
  804         stw     20,-4*12(9)
  805         stw     21,-4*11(9)
  806         stw     22,-4*10(9)
  807         stw     23,-4*9(9)
  808         stw     24,-4*8(9)
  809         stw     25,-4*7(9)
  810         stw     26,-4*6(9)
  811         stw     27,-4*5(9)
  812         stw     28,-4*4(9)
  813         stw     29,-4*3(9)
  814         stw     30,-4*2(9)
  815         stw     31,-4*1(9)
  816 
  817         subi    4,4,4
  818         subi    18,6,4
  819         subi    3,3,4
  820         lwz     7,0(7)
  821         li      0,0
  822 
  823         add     6,4,8
  824         lwz     9,4*1(4)
  825 
  826         lwz     10,4*2(4)
  827         li      23,0
  828         lwz     11,4*3(4)
  829         li      24,0
  830         lwz     12,4*4(4)
  831         li      25,0
  832         lwz     14,4*5(4)
  833         li      26,0
  834         lwz     15,4*6(4)
  835         li      27,0
  836         lwz     16,4*7(4)
  837         li      28,0
  838         lwzu    17,4*8(4)
  839         li      29,0
  840 
  841         addi    5,1,4*11
  842         subic.  30,8,4*8
  843         b       .Lsqr8x_zero_start
  844 
  845 .align  5
  846 .Lsqr8x_zero:
  847         subic.  30,30,4*8
  848         stw     0,4*1(5)
  849         stw     0,4*2(5)
  850         stw     0,4*3(5)
  851         stw     0,4*4(5)
  852         stw     0,4*5(5)
  853         stw     0,4*6(5)
  854         stw     0,4*7(5)
  855         stw     0,4*8(5)
  856 .Lsqr8x_zero_start:
  857         stw     0,4*9(5)
  858         stw     0,4*10(5)
  859         stw     0,4*11(5)
  860         stw     0,4*12(5)
  861         stw     0,4*13(5)
  862         stw     0,4*14(5)
  863         stw     0,4*15(5)
  864         stwu    0,4*16(5)
  865         bne     .Lsqr8x_zero
  866 
  867         stw     3,4*6(1)
  868         stw     18,4*7(1)
  869         stw     7,4*8(1)
  870         stw     5,4*9(1)
  871         stw     0,4*10(1)
  872         addi    5,1,4*11
  873 
  874 
  875 .align  5
  876 .Lsqr8x_outer_loop:
  877 
  878 
  879 
  880 
  881 
  882 
  883 
  884 
  885 
  886 
  887 
  888 
  889 
  890 
  891 
  892 
  893 
  894 
  895 
  896 
  897 
  898 
  899 
  900 
  901 
  902 
  903 
  904 
  905 
  906         mullw   18,10,9
  907         mullw   19,11,9
  908         mullw   20,12,9
  909         mullw   21,14,9
  910         addc    23,23,18
  911         mullw   18,15,9
  912         adde    24,24,19
  913         mullw   19,16,9
  914         adde    25,25,20
  915         mullw   20,17,9
  916         adde    26,26,21
  917         mulhwu  21,10,9
  918         adde    27,27,18
  919         mulhwu  18,11,9
  920         adde    28,28,19
  921         mulhwu  19,12,9
  922         adde    29,29,20
  923         mulhwu  20,14,9
  924         stw     22,4*1(5)
  925         addze   22,0
  926         stw     23,4*2(5)
  927         addc    24,24,21
  928         mulhwu  21,15,9
  929         adde    25,25,18
  930         mulhwu  18,16,9
  931         adde    26,26,19
  932         mulhwu  19,17,9
  933         adde    27,27,20
  934         mullw   20,11,10
  935         adde    28,28,21
  936         mullw   21,12,10
  937         adde    29,29,18
  938         mullw   18,14,10
  939         adde    22,22,19
  940 
  941         mullw   19,15,10
  942         addc    25,25,20
  943         mullw   20,16,10
  944         adde    26,26,21
  945         mullw   21,17,10
  946         adde    27,27,18
  947         mulhwu  18,11,10
  948         adde    28,28,19
  949         mulhwu  19,12,10
  950         adde    29,29,20
  951         mulhwu  20,14,10
  952         adde    22,22,21
  953         mulhwu  21,15,10
  954         stw     24,4*3(5)
  955         addze   23,0
  956         stw     25,4*4(5)
  957         addc    26,26,18
  958         mulhwu  18,16,10
  959         adde    27,27,19
  960         mulhwu  19,17,10
  961         adde    28,28,20
  962         mullw   20,12,11
  963         adde    29,29,21
  964         mullw   21,14,11
  965         adde    22,22,18
  966         mullw   18,15,11
  967         adde    23,23,19
  968 
  969         mullw   19,16,11
  970         addc    27,27,20
  971         mullw   20,17,11
  972         adde    28,28,21
  973         mulhwu  21,12,11
  974         adde    29,29,18
  975         mulhwu  18,14,11
  976         adde    22,22,19
  977         mulhwu  19,15,11
  978         adde    23,23,20
  979         mulhwu  20,16,11
  980         stw     26,4*5(5)
  981         addze   24,0
  982         stw     27,4*6(5)
  983         addc    28,28,21
  984         mulhwu  21,17,11
  985         adde    29,29,18
  986         mullw   18,14,12
  987         adde    22,22,19
  988         mullw   19,15,12
  989         adde    23,23,20
  990         mullw   20,16,12
  991         adde    24,24,21
  992 
  993         mullw   21,17,12
  994         addc    29,29,18
  995         mulhwu  18,14,12
  996         adde    22,22,19
  997         mulhwu  19,15,12
  998         adde    23,23,20
  999         mulhwu  20,16,12
 1000         adde    24,24,21
 1001         mulhwu  21,17,12
 1002         stw     28,4*7(5)
 1003         addze   25,0
 1004         stwu    29,4*8(5)
 1005         addc    22,22,18
 1006         mullw   18,15,14
 1007         adde    23,23,19
 1008         mullw   19,16,14
 1009         adde    24,24,20
 1010         mullw   20,17,14
 1011         adde    25,25,21
 1012 
 1013         mulhwu  21,15,14
 1014         addc    23,23,18
 1015         mulhwu  18,16,14
 1016         adde    24,24,19
 1017         mulhwu  19,17,14
 1018         adde    25,25,20
 1019         mullw   20,16,15
 1020         addze   26,0
 1021         addc    24,24,21
 1022         mullw   21,17,15
 1023         adde    25,25,18
 1024         mulhwu  18,16,15
 1025         adde    26,26,19
 1026 
 1027         mulhwu  19,17,15
 1028         addc    25,25,20
 1029         mullw   20,17,16
 1030         adde    26,26,21
 1031         mulhwu  21,17,16
 1032         addze   27,0
 1033         addc    26,26,18
 1034         .long   0x7c062040
 1035         adde    27,27,19
 1036 
 1037         addc    27,27,20
 1038         sub     18,6,8
 1039         addze   28,0
 1040         add     28,28,21
 1041 
 1042         beq     .Lsqr8x_outer_break
 1043 
 1044         mr      7,9
 1045         lwz     9,4*1(5)
 1046         lwz     10,4*2(5)
 1047         lwz     11,4*3(5)
 1048         lwz     12,4*4(5)
 1049         lwz     14,4*5(5)
 1050         lwz     15,4*6(5)
 1051         lwz     16,4*7(5)
 1052         lwz     17,4*8(5)
 1053         addc    22,22,9
 1054         lwz     9,4*1(4)
 1055         adde    23,23,10
 1056         lwz     10,4*2(4)
 1057         adde    24,24,11
 1058         lwz     11,4*3(4)
 1059         adde    25,25,12
 1060         lwz     12,4*4(4)
 1061         adde    26,26,14
 1062         lwz     14,4*5(4)
 1063         adde    27,27,15
 1064         lwz     15,4*6(4)
 1065         adde    28,28,16
 1066         lwz     16,4*7(4)
 1067         subi    3,4,4*7
 1068         addze   29,17
 1069         lwzu    17,4*8(4)
 1070 
 1071         li      30,0
 1072         b       .Lsqr8x_mul
 1073 
 1074 
 1075 
 1076 
 1077 
 1078 
 1079 
 1080 
 1081 
 1082 
 1083 
 1084 
 1085 
 1086 
 1087 
 1088 
 1089 
 1090 
 1091 
 1092 
 1093 
 1094 
 1095 
 1096 .align  5
 1097 .Lsqr8x_mul:
 1098         mullw   18,9,7
 1099         addze   31,0
 1100         mullw   19,10,7
 1101         addi    30,30,4
 1102         mullw   20,11,7
 1103         andi.   30,30,4*8-1
 1104         mullw   21,12,7
 1105         addc    22,22,18
 1106         mullw   18,14,7
 1107         adde    23,23,19
 1108         mullw   19,15,7
 1109         adde    24,24,20
 1110         mullw   20,16,7
 1111         adde    25,25,21
 1112         mullw   21,17,7
 1113         adde    26,26,18
 1114         mulhwu  18,9,7
 1115         adde    27,27,19
 1116         mulhwu  19,10,7
 1117         adde    28,28,20
 1118         mulhwu  20,11,7
 1119         adde    29,29,21
 1120         mulhwu  21,12,7
 1121         addze   31,31
 1122         stwu    22,4(5)
 1123         addc    22,23,18
 1124         mulhwu  18,14,7
 1125         adde    23,24,19
 1126         mulhwu  19,15,7
 1127         adde    24,25,20
 1128         mulhwu  20,16,7
 1129         adde    25,26,21
 1130         mulhwu  21,17,7
 1131         lwzx    7,3,30
 1132         adde    26,27,18
 1133         adde    27,28,19
 1134         adde    28,29,20
 1135         adde    29,31,21
 1136 
 1137         bne     .Lsqr8x_mul
 1138 
 1139 
 1140         .long   0x7c043040
 1141         beq     .Lsqr8x_break
 1142 
 1143         lwz     9,4*1(5)
 1144         lwz     10,4*2(5)
 1145         lwz     11,4*3(5)
 1146         lwz     12,4*4(5)
 1147         lwz     14,4*5(5)
 1148         lwz     15,4*6(5)
 1149         lwz     16,4*7(5)
 1150         lwz     17,4*8(5)
 1151         addc    22,22,9
 1152         lwz     9,4*1(4)
 1153         adde    23,23,10
 1154         lwz     10,4*2(4)
 1155         adde    24,24,11
 1156         lwz     11,4*3(4)
 1157         adde    25,25,12
 1158         lwz     12,4*4(4)
 1159         adde    26,26,14
 1160         lwz     14,4*5(4)
 1161         adde    27,27,15
 1162         lwz     15,4*6(4)
 1163         adde    28,28,16
 1164         lwz     16,4*7(4)
 1165         adde    29,29,17
 1166         lwzu    17,4*8(4)
 1167 
 1168         b       .Lsqr8x_mul
 1169 
 1170 .align  5
 1171 .Lsqr8x_break:
 1172         lwz     9,4*8(3)
 1173         addi    4,3,4*15
 1174         lwz     10,4*9(3)
 1175         sub.    18,6,4
 1176         lwz     11,4*10(3)
 1177         sub     19,5,18
 1178         lwz     12,4*11(3)
 1179         lwz     14,4*12(3)
 1180         lwz     15,4*13(3)
 1181         lwz     16,4*14(3)
 1182         lwz     17,4*15(3)
 1183         beq     .Lsqr8x_outer_loop
 1184 
 1185         stw     22,4*1(5)
 1186         lwz     22,4*1(19)
 1187         stw     23,4*2(5)
 1188         lwz     23,4*2(19)
 1189         stw     24,4*3(5)
 1190         lwz     24,4*3(19)
 1191         stw     25,4*4(5)
 1192         lwz     25,4*4(19)
 1193         stw     26,4*5(5)
 1194         lwz     26,4*5(19)
 1195         stw     27,4*6(5)
 1196         lwz     27,4*6(19)
 1197         stw     28,4*7(5)
 1198         lwz     28,4*7(19)
 1199         stw     29,4*8(5)
 1200         lwz     29,4*8(19)
 1201         mr      5,19
 1202         b       .Lsqr8x_outer_loop
 1203 
 1204 .align  5
 1205 .Lsqr8x_outer_break:
 1206 
 1207 
 1208         lwz     10,4*1(18)
 1209         lwz     12,4*2(18)
 1210         lwz     15,4*3(18)
 1211         lwz     17,4*4(18)
 1212         addi    4,18,4*4
 1213 
 1214         lwz     19,4*13(1)
 1215         lwz     20,4*14(1)
 1216         lwz     21,4*15(1)
 1217         lwz     18,4*16(1)
 1218 
 1219         stw     22,4*1(5)
 1220         srwi    30,8,4
 1221         stw     23,4*2(5)
 1222         subi    30,30,1
 1223         stw     24,4*3(5)
 1224         stw     25,4*4(5)
 1225         stw     26,4*5(5)
 1226         stw     27,4*6(5)
 1227         stw     28,4*7(5)
 1228 
 1229         addi    5,1,4*11
 1230         mullw   22,10,10
 1231         mulhwu  10,10,10
 1232         add     23,19,19
 1233         srwi    19,19,32-1
 1234         mullw   11,12,12
 1235         mulhwu  12,12,12
 1236         addc    23,23,10
 1237         add     24,20,20
 1238         srwi    20,20,32-1
 1239         add     25,21,21
 1240         srwi    21,21,32-1
 1241         or      24,24,19
 1242 
 1243         mtctr   30
 1244 .Lsqr4x_shift_n_add:
 1245         mullw   14,15,15
 1246         mulhwu  15,15,15
 1247         lwz     19,4*6(5)
 1248         lwz     10,4*1(4)
 1249         adde    24,24,11
 1250         add     26,18,18
 1251         srwi    18,18,32-1
 1252         or      25,25,20
 1253         lwz     20,4*7(5)
 1254         adde    25,25,12
 1255         lwz     12,4*2(4)
 1256         add     27,19,19
 1257         srwi    19,19,32-1
 1258         or      26,26,21
 1259         lwz     21,4*8(5)
 1260         mullw   16,17,17
 1261         mulhwu  17,17,17
 1262         adde    26,26,14
 1263         add     28,20,20
 1264         srwi    20,20,32-1
 1265         or      27,27,18
 1266         lwz     18,4*9(5)
 1267         adde    27,27,15
 1268         lwz     15,4*3(4)
 1269         add     29,21,21
 1270         srwi    21,21,32-1
 1271         or      28,28,19
 1272         lwz     19,4*10(5)
 1273         mullw   9,10,10
 1274         mulhwu  10,10,10
 1275         adde    28,28,16
 1276         stw     22,4*1(5)
 1277         add     22,18,18
 1278         srwi    18,18,32-1
 1279         or      29,29,20
 1280         lwz     20,4*11(5)
 1281         adde    29,29,17
 1282         lwzu    17,4*4(4)
 1283         stw     23,4*2(5)
 1284         add     23,19,19
 1285         srwi    19,19,32-1
 1286         or      22,22,21
 1287         lwz     21,4*12(5)
 1288         mullw   11,12,12
 1289         mulhwu  12,12,12
 1290         adde    22,22,9
 1291         stw     24,4*3(5)
 1292         add     24,20,20
 1293         srwi    20,20,32-1
 1294         or      23,23,18
 1295         lwz     18,4*13(5)
 1296         adde    23,23,10
 1297         stw     25,4*4(5)
 1298         stw     26,4*5(5)
 1299         stw     27,4*6(5)
 1300         stw     28,4*7(5)
 1301         stwu    29,4*8(5)
 1302         add     25,21,21
 1303         srwi    21,21,32-1
 1304         or      24,24,19
 1305         bdnz    .Lsqr4x_shift_n_add
 1306         lwz     4,4*7(1)
 1307         lwz     7,4*8(1)
 1308 
 1309         mullw   14,15,15
 1310         mulhwu  15,15,15
 1311         stw     22,4*1(5)
 1312         lwz     22,4*12(1)
 1313         lwz     19,4*6(5)
 1314         adde    24,24,11
 1315         add     26,18,18
 1316         srwi    18,18,32-1
 1317         or      25,25,20
 1318         lwz     20,4*7(5)
 1319         adde    25,25,12
 1320         add     27,19,19
 1321         srwi    19,19,32-1
 1322         or      26,26,21
 1323         mullw   16,17,17
 1324         mulhwu  17,17,17
 1325         adde    26,26,14
 1326         add     28,20,20
 1327         srwi    20,20,32-1
 1328         or      27,27,18
 1329         stw     23,4*2(5)
 1330         lwz     23,4*13(1)
 1331         adde    27,27,15
 1332         or      28,28,19
 1333         lwz     9,4*1(4)
 1334         lwz     10,4*2(4)
 1335         adde    28,28,16
 1336         lwz     11,4*3(4)
 1337         lwz     12,4*4(4)
 1338         adde    29,17,20
 1339         lwz     14,4*5(4)
 1340         lwz     15,4*6(4)
 1341 
 1342 
 1343 
 1344         mullw   31,7,22
 1345         li      30,8
 1346         lwz     16,4*7(4)
 1347         add     6,4,8
 1348         lwzu    17,4*8(4)
 1349         stw     24,4*3(5)
 1350         lwz     24,4*14(1)
 1351         stw     25,4*4(5)
 1352         lwz     25,4*15(1)
 1353         stw     26,4*5(5)
 1354         lwz     26,4*16(1)
 1355         stw     27,4*6(5)
 1356         lwz     27,4*17(1)
 1357         stw     28,4*7(5)
 1358         lwz     28,4*18(1)
 1359         stw     29,4*8(5)
 1360         lwz     29,4*19(1)
 1361         addi    5,1,4*11
 1362         mtctr   30
 1363         b       .Lsqr8x_reduction
 1364 
 1365 .align  5
 1366 .Lsqr8x_reduction:
 1367 
 1368         mullw   19,10,31
 1369         mullw   20,11,31
 1370         stwu    31,4(5)
 1371         mullw   21,12,31
 1372 
 1373         addic   22,22,-1
 1374         mullw   18,14,31
 1375         adde    22,23,19
 1376         mullw   19,15,31
 1377         adde    23,24,20
 1378         mullw   20,16,31
 1379         adde    24,25,21
 1380         mullw   21,17,31
 1381         adde    25,26,18
 1382         mulhwu  18,9,31
 1383         adde    26,27,19
 1384         mulhwu  19,10,31
 1385         adde    27,28,20
 1386         mulhwu  20,11,31
 1387         adde    28,29,21
 1388         mulhwu  21,12,31
 1389         addze   29,0
 1390         addc    22,22,18
 1391         mulhwu  18,14,31
 1392         adde    23,23,19
 1393         mulhwu  19,15,31
 1394         adde    24,24,20
 1395         mulhwu  20,16,31
 1396         adde    25,25,21
 1397         mulhwu  21,17,31
 1398         mullw   31,7,22
 1399         adde    26,26,18
 1400         adde    27,27,19
 1401         adde    28,28,20
 1402         adde    29,29,21
 1403         bdnz    .Lsqr8x_reduction
 1404 
 1405         lwz     18,4*1(5)
 1406         lwz     19,4*2(5)
 1407         lwz     20,4*3(5)
 1408         lwz     21,4*4(5)
 1409         subi    3,5,4*7
 1410         .long   0x7c062040
 1411         addc    22,22,18
 1412         lwz     18,4*5(5)
 1413         adde    23,23,19
 1414         lwz     19,4*6(5)
 1415         adde    24,24,20
 1416         lwz     20,4*7(5)
 1417         adde    25,25,21
 1418         lwz     21,4*8(5)
 1419         adde    26,26,18
 1420         adde    27,27,19
 1421         adde    28,28,20
 1422         adde    29,29,21
 1423 
 1424         beq     .Lsqr8x8_post_condition
 1425 
 1426         lwz     7,4*0(3)
 1427         lwz     9,4*1(4)
 1428         lwz     10,4*2(4)
 1429         lwz     11,4*3(4)
 1430         lwz     12,4*4(4)
 1431         lwz     14,4*5(4)
 1432         lwz     15,4*6(4)
 1433         lwz     16,4*7(4)
 1434         lwzu    17,4*8(4)
 1435         li      30,0
 1436 
 1437 .align  5
 1438 .Lsqr8x_tail:
 1439         mullw   18,9,7
 1440         addze   31,0
 1441         mullw   19,10,7
 1442         addi    30,30,4
 1443         mullw   20,11,7
 1444         andi.   30,30,4*8-1
 1445         mullw   21,12,7
 1446         addc    22,22,18
 1447         mullw   18,14,7
 1448         adde    23,23,19
 1449         mullw   19,15,7
 1450         adde    24,24,20
 1451         mullw   20,16,7
 1452         adde    25,25,21
 1453         mullw   21,17,7
 1454         adde    26,26,18
 1455         mulhwu  18,9,7
 1456         adde    27,27,19
 1457         mulhwu  19,10,7
 1458         adde    28,28,20
 1459         mulhwu  20,11,7
 1460         adde    29,29,21
 1461         mulhwu  21,12,7
 1462         addze   31,31
 1463         stwu    22,4(5)
 1464         addc    22,23,18
 1465         mulhwu  18,14,7
 1466         adde    23,24,19
 1467         mulhwu  19,15,7
 1468         adde    24,25,20
 1469         mulhwu  20,16,7
 1470         adde    25,26,21
 1471         mulhwu  21,17,7
 1472         lwzx    7,3,30
 1473         adde    26,27,18
 1474         adde    27,28,19
 1475         adde    28,29,20
 1476         adde    29,31,21
 1477 
 1478         bne     .Lsqr8x_tail
 1479 
 1480 
 1481         lwz     9,4*1(5)
 1482         lwz     31,4*10(1)
 1483         .long   0x7c062040
 1484         lwz     10,4*2(5)
 1485         sub     20,6,8
 1486         lwz     11,4*3(5)
 1487         lwz     12,4*4(5)
 1488         lwz     14,4*5(5)
 1489         lwz     15,4*6(5)
 1490         lwz     16,4*7(5)
 1491         lwz     17,4*8(5)
 1492         beq     .Lsqr8x_tail_break
 1493 
 1494         addc    22,22,9
 1495         lwz     9,4*1(4)
 1496         adde    23,23,10
 1497         lwz     10,4*2(4)
 1498         adde    24,24,11
 1499         lwz     11,4*3(4)
 1500         adde    25,25,12
 1501         lwz     12,4*4(4)
 1502         adde    26,26,14
 1503         lwz     14,4*5(4)
 1504         adde    27,27,15
 1505         lwz     15,4*6(4)
 1506         adde    28,28,16
 1507         lwz     16,4*7(4)
 1508         adde    29,29,17
 1509         lwzu    17,4*8(4)
 1510 
 1511         b       .Lsqr8x_tail
 1512 
 1513 .align  5
 1514 .Lsqr8x_tail_break:
 1515         lwz     7,4*8(1)
 1516         lwz     21,4*9(1)
 1517         addi    30,5,4*8
 1518 
 1519         addic   31,31,-1
 1520         adde    18,22,9
 1521         lwz     22,4*8(3)
 1522         lwz     9,4*1(20)
 1523         adde    19,23,10
 1524         lwz     23,4*9(3)
 1525         lwz     10,4*2(20)
 1526         adde    24,24,11
 1527         lwz     11,4*3(20)
 1528         adde    25,25,12
 1529         lwz     12,4*4(20)
 1530         adde    26,26,14
 1531         lwz     14,4*5(20)
 1532         adde    27,27,15
 1533         lwz     15,4*6(20)
 1534         adde    28,28,16
 1535         lwz     16,4*7(20)
 1536         adde    29,29,17
 1537         lwz     17,4*8(20)
 1538         addi    4,20,4*8
 1539         addze   20,0
 1540         mullw   31,7,22
 1541         stw     18,4*1(5)
 1542         .long   0x7c1ea840
 1543         stw     19,4*2(5)
 1544         li      30,8
 1545         stw     24,4*3(5)
 1546         lwz     24,4*10(3)
 1547         stw     25,4*4(5)
 1548         lwz     25,4*11(3)
 1549         stw     26,4*5(5)
 1550         lwz     26,4*12(3)
 1551         stw     27,4*6(5)
 1552         lwz     27,4*13(3)
 1553         stw     28,4*7(5)
 1554         lwz     28,4*14(3)
 1555         stw     29,4*8(5)
 1556         lwz     29,4*15(3)
 1557         stw     20,4*10(1)
 1558         addi    5,3,4*7
 1559         mtctr   30
 1560         bne     .Lsqr8x_reduction
 1561 
 1562 
 1563 
 1564 
 1565 
 1566 
 1567         lwz     3,4*6(1)
 1568         srwi    30,8,5
 1569         mr      7,5
 1570         addi    5,5,4*8
 1571         subi    30,30,1
 1572         subfc   18,9,22
 1573         subfe   19,10,23
 1574         mr      31,20
 1575         mr      6,3
 1576 
 1577         mtctr   30
 1578         b       .Lsqr8x_sub
 1579 
 1580 .align  5
 1581 .Lsqr8x_sub:
 1582         lwz     9,4*1(4)
 1583         lwz     22,4*1(5)
 1584         lwz     10,4*2(4)
 1585         lwz     23,4*2(5)
 1586         subfe   20,11,24
 1587         lwz     11,4*3(4)
 1588         lwz     24,4*3(5)
 1589         subfe   21,12,25
 1590         lwz     12,4*4(4)
 1591         lwz     25,4*4(5)
 1592         stw     18,4*1(3)
 1593         subfe   18,14,26
 1594         lwz     14,4*5(4)
 1595         lwz     26,4*5(5)
 1596         stw     19,4*2(3)
 1597         subfe   19,15,27
 1598         lwz     15,4*6(4)
 1599         lwz     27,4*6(5)
 1600         stw     20,4*3(3)
 1601         subfe   20,16,28
 1602         lwz     16,4*7(4)
 1603         lwz     28,4*7(5)
 1604         stw     21,4*4(3)
 1605         subfe   21,17,29
 1606         lwzu    17,4*8(4)
 1607         lwzu    29,4*8(5)
 1608         stw     18,4*5(3)
 1609         subfe   18,9,22
 1610         stw     19,4*6(3)
 1611         subfe   19,10,23
 1612         stw     20,4*7(3)
 1613         stwu    21,4*8(3)
 1614         bdnz    .Lsqr8x_sub
 1615 
 1616         srwi    30,8,4
 1617         lwz     9,4*1(6)
 1618         lwz     22,4*1(7)
 1619         subi    30,30,1
 1620         lwz     10,4*2(6)
 1621         lwz     23,4*2(7)
 1622         subfe   20,11,24
 1623         lwz     11,4*3(6)
 1624         lwz     24,4*3(7)
 1625         subfe   21,12,25
 1626         lwz     12,4*4(6)
 1627         lwzu    25,4*4(7)
 1628         stw     18,4*1(3)
 1629         subfe   18,14,26
 1630         stw     19,4*2(3)
 1631         subfe   19,15,27
 1632         stw     20,4*3(3)
 1633         subfe   20,16,28
 1634         stw     21,4*4(3)
 1635         subfe   21,17,29
 1636         stw     18,4*5(3)
 1637         subfe   31,0,31
 1638         stw     19,4*6(3)
 1639         stw     20,4*7(3)
 1640         stw     21,4*8(3)
 1641 
 1642         addi    5,1,4*11
 1643         mtctr   30
 1644 
 1645 .Lsqr4x_cond_copy:
 1646         andc    9,9,31
 1647         stw     0,-4*3(7)
 1648         and     22,22,31
 1649         stw     0,-4*2(7)
 1650         andc    10,10,31
 1651         stw     0,-4*1(7)
 1652         and     23,23,31
 1653         stw     0,-4*0(7)
 1654         andc    11,11,31
 1655         stw     0,4*1(5)
 1656         and     24,24,31
 1657         stw     0,4*2(5)
 1658         andc    12,12,31
 1659         stw     0,4*3(5)
 1660         and     25,25,31
 1661         stwu    0,4*4(5)
 1662         or      18,9,22
 1663         lwz     9,4*5(6)
 1664         lwz     22,4*1(7)
 1665         or      19,10,23
 1666         lwz     10,4*6(6)
 1667         lwz     23,4*2(7)
 1668         or      20,11,24
 1669         lwz     11,4*7(6)
 1670         lwz     24,4*3(7)
 1671         or      21,12,25
 1672         lwz     12,4*8(6)
 1673         lwzu    25,4*4(7)
 1674         stw     18,4*1(6)
 1675         stw     19,4*2(6)
 1676         stw     20,4*3(6)
 1677         stwu    21,4*4(6)
 1678         bdnz    .Lsqr4x_cond_copy
 1679 
 1680         lwz     4,0(1)
 1681         andc    9,9,31
 1682         and     22,22,31
 1683         andc    10,10,31
 1684         and     23,23,31
 1685         andc    11,11,31
 1686         and     24,24,31
 1687         andc    12,12,31
 1688         and     25,25,31
 1689         or      18,9,22
 1690         or      19,10,23
 1691         or      20,11,24
 1692         or      21,12,25
 1693         stw     18,4*1(6)
 1694         stw     19,4*2(6)
 1695         stw     20,4*3(6)
 1696         stw     21,4*4(6)
 1697 
 1698         b       .Lsqr8x_done
 1699 
 1700 .align  5
 1701 .Lsqr8x8_post_condition:
 1702         lwz     3,4*6(1)
 1703         lwz     4,0(1)
 1704         addze   31,0
 1705 
 1706 
 1707         subfc   22,9,22
 1708         subfe   23,10,23
 1709         stw     0,4*12(1)
 1710         stw     0,4*13(1)
 1711         subfe   24,11,24
 1712         stw     0,4*14(1)
 1713         stw     0,4*15(1)
 1714         subfe   25,12,25
 1715         stw     0,4*16(1)
 1716         stw     0,4*17(1)
 1717         subfe   26,14,26
 1718         stw     0,4*18(1)
 1719         stw     0,4*19(1)
 1720         subfe   27,15,27
 1721         stw     0,4*20(1)
 1722         stw     0,4*21(1)
 1723         subfe   28,16,28
 1724         stw     0,4*22(1)
 1725         stw     0,4*23(1)
 1726         subfe   29,17,29
 1727         stw     0,4*24(1)
 1728         stw     0,4*25(1)
 1729         subfe   31,0,31
 1730         stw     0,4*26(1)
 1731         stw     0,4*27(1)
 1732 
 1733         and     9,9,31
 1734         and     10,10,31
 1735         addc    22,22,9
 1736         and     11,11,31
 1737         adde    23,23,10
 1738         and     12,12,31
 1739         adde    24,24,11
 1740         and     14,14,31
 1741         adde    25,25,12
 1742         and     15,15,31
 1743         adde    26,26,14
 1744         and     16,16,31
 1745         adde    27,27,15
 1746         and     17,17,31
 1747         adde    28,28,16
 1748         adde    29,29,17
 1749         stw     22,4*1(3)
 1750         stw     23,4*2(3)
 1751         stw     24,4*3(3)
 1752         stw     25,4*4(3)
 1753         stw     26,4*5(3)
 1754         stw     27,4*6(3)
 1755         stw     28,4*7(3)
 1756         stw     29,4*8(3)
 1757 
 1758 .Lsqr8x_done:
 1759         stw     0,4*8(1)
 1760         stw     0,4*10(1)
 1761 
 1762         lwz     14,-4*18(4)
 1763         li      3,1
 1764         lwz     15,-4*17(4)
 1765         lwz     16,-4*16(4)
 1766         lwz     17,-4*15(4)
 1767         lwz     18,-4*14(4)
 1768         lwz     19,-4*13(4)
 1769         lwz     20,-4*12(4)
 1770         lwz     21,-4*11(4)
 1771         lwz     22,-4*10(4)
 1772         lwz     23,-4*9(4)
 1773         lwz     24,-4*8(4)
 1774         lwz     25,-4*7(4)
 1775         lwz     26,-4*6(4)
 1776         lwz     27,-4*5(4)
 1777         lwz     28,-4*4(4)
 1778         lwz     29,-4*3(4)
 1779         lwz     30,-4*2(4)
 1780         lwz     31,-4*1(4)
 1781         mr      1,4
 1782         blr     
 1783 .long   0
 1784 .byte   0,12,4,0x20,0x80,18,6,0
 1785 .long   0
 1786 .size   __bn_sqr8x_mont,.-__bn_sqr8x_mont
 1787 .byte   77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,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
 1788 .align  2

Cache object: 4f4633a8b5b9a26db5a0ec4f97119b10


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