[BACK]Return to kerPPC.s CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2 / src / kernel / ppc

Annotation of OpenXM_contrib/pari-2.2/src/kernel/ppc/kerPPC.s, Revision 1.1.1.1

1.1       noro        1: ; $Id: kerPPC.s,v 1.2 2000/11/03 21:00:26 karim Exp $
                      2: ;
                      3: ; Copyright (C) 2000  The PARI group.
                      4: ;
                      5: ; This file is part of the PARI/GP package.
                      6: ;
                      7: ; PARI/GP is free software; you can redistribute it and/or modify it under the
                      8: ; terms of the GNU General Public License as published by the Free Software
                      9: ; Foundation. It is distributed in the hope that it will be useful, but WITHOUT
                     10: ; ANY WARRANTY WHATSOEVER.
                     11: ;
                     12: ; Check the License for details. You should have received a copy of it, along
                     13: ; with the package; see the file 'COPYING'. If not, write to the Free Software
                     14: ; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
                     15:
                     16:        import hiremainder,overflow
                     17:
                     18:        toc
                     19:                tc hiremainder[TC], hiremainder
                     20:                tc overflow[TC], overflow
                     21:
                     22:        export addll[DS],.addll[PR],addllx[DS],.addllx[PR]
                     23:        export subll[DS],.subll[PR],subllx[DS],.subllx[PR]
                     24:        export mulll[DS],.mulll[PR],addmul[DS],.addmul[PR]
                     25:        export divll[DS],.divll[PR],bfffo[DS],.bfffo[PR]
                     26:
                     27:        toc
                     28:                tc addll[TC], addll[DS]
                     29:                tc addllx[TC], addllx[DS]
                     30:                tc subll[TC], subll[DS]
                     31:                tc subllx[TC], subllx[DS]
                     32:                tc mulll[TC], mulll[DS]
                     33:                tc addmul[TC], addmul[DS]
                     34:                tc divll[TC], divll[DS]
                     35:                tc bfffo[TC], bfffo[DS]
                     36:
                     37:        csect   addll[DS]
                     38:                dc.l    .addll[PR]
                     39:                dc.l    TOC[tc0]
                     40:                dc.l    0
                     41:
                     42:        csect   .addll[PR]
                     43:                addc    r3,r3,r4
                     44:                subfe   r5,r5,r5
                     45:                addi    r5,r5,1
                     46:                lwz             r6,overflow{TC}(RTOC)
                     47:                stw             r5,0x0000(r6)
                     48:                blr
                     49:
                     50:        csect   addllx[DS]
                     51:                dc.l    .addllx[PR]
                     52:                dc.l    TOC[tc0]
                     53:                dc.l    0
                     54:
                     55:        csect   .addllx[PR]
                     56:                addc    r3,r3,r4
                     57:                subfe   r5,r5,r5
                     58:                lwz             r6,overflow{TC}(RTOC)
                     59:                lwz             r7,0x0000(r6)
                     60:                addc    r3,r7,r3
                     61:                subfe   r8,r8,r8
                     62:                addc    r5,r8,r5
                     63:                addi    r5,r5,2
                     64:                stw             r5,0x0000(r6)
                     65:                blr
                     66:
                     67:        csect   subll[DS]
                     68:                dc.l    .subll[PR]
                     69:                dc.l    TOC[tc0]
                     70:                dc.l    0
                     71:
                     72:        csect   .subll[PR]
                     73:                subfc   r3,r4,r3
                     74:                subfe   r5,r5,r5
                     75:                neg             r5,r5
                     76:                lwz             r6,overflow{TC}(RTOC)
                     77:                stw             r5,0x0000(r6)
                     78:                blr
                     79:
                     80:        csect   subllx[DS]
                     81:                dc.l    .subllx[PR]
                     82:                dc.l    TOC[tc0]
                     83:                dc.l    0
                     84:
                     85:        csect   .subllx[PR]
                     86:                subfc   r3,r4,r3
                     87:                subfe   r5,r5,r5
                     88:                lwz             r6,overflow{TC}(RTOC)
                     89:                lwz             r7,0x0000(r6)
                     90:                subfc   r3,r7,r3
                     91:                subfe   r8,r8,r8
                     92:                addc    r5,r8,r5
                     93:                neg             r5,r5
                     94:                stw             r5,0x0000(r6)
                     95:                blr
                     96:
                     97:        csect   mulll[DS]
                     98:                dc.l    .mulll[PR]
                     99:                dc.l    TOC[tc0]
                    100:                dc.l    0
                    101:
                    102:        csect   .mulll[PR]
                    103:
                    104: ; version PowerPC, plus lente
                    105: ;              mulhwu  r5,r3,r4
                    106: ;              lwz             r6,hiremainder{TC}(RTOC)
                    107: ;              stw             r5,0x0000(r6)
                    108: ;              mullw   r3,r3,r4
                    109: ;              blr
                    110: ; version POWER
                    111:                lwz             r6,hiremainder{TC}(RTOC)
                    112:                dialect POWER
                    113:                mul             r5,r3,r4
                    114:                dialect POWERPC
                    115:                cmpwi   r3,0
                    116:                bge             @1
                    117:                add             r5,r5,r4
                    118: @1             cmpwi   r4,0
                    119:                bge             @2
                    120:                add             r5,r5,r3
                    121: @2             stw             r5,0x0000(r6)
                    122:                mfspr   r3,mq
                    123:                blr
                    124:
                    125:        csect   addmul[DS]
                    126:                dc.l    .addmul[PR]
                    127:                dc.l    TOC[tc0]
                    128:                dc.l    0
                    129:
                    130:        csect   .addmul[PR]
                    131: ; version PowerPC, plus lente
                    132: ;              mulhwu  r5,r3,r4
                    133: ;              mullw   r3,r3,r4
                    134: ;              lwz             r6,hiremainder{TC}(RTOC)
                    135: ;              lwz             r7,0x0000(r6)
                    136: ;              addc    r3,r7,r3
                    137: ;              addze   r5,r5
                    138: ;              stw             r5,0x0000(r6)
                    139: ;              blr
                    140: ; version POWER
                    141:                lwz             r6,hiremainder{TC}(RTOC)
                    142:                dialect POWER
                    143:                mul             r5,r3,r4
                    144:                dialect POWERPC
                    145:                cmpwi   r3,0
                    146:                bge             @1
                    147:                add             r5,r5,r4
                    148: @1             cmpwi   r4,0
                    149:                bge             @2
                    150:                add             r5,r5,r3
                    151: @2             lwz             r7,0x0000(r6)
                    152:                mfspr   r3,mq
                    153:                addc    r3,r7,r3
                    154:                addze   r5,r5
                    155:                stw             r5,0x0000(r6)
                    156:                blr
                    157:
                    158:        csect   divll[DS]
                    159:                dc.l    .divll[PR]
                    160:                dc.l    TOC[tc0]
                    161:                dc.l    0
                    162:
                    163:        csect   .divll[PR]
                    164:
                    165: ; version POWER
                    166: ; chargement de a puis a1 dans r5, b puis b1 dans r3 et c puis c1 dans r4
                    167:                lwz             r6,hiremainder{TC}(RTOC)
                    168:                lwz             r5,0x0000(r6)
                    169:
                    170: ; etape 1, f est code dans cr5, eb dans r7 et ec dans cr6
                    171: ; si f = 1, on garde une copie de c dans r10
                    172:                cmpwi   5,r4,0
                    173:                bge             5,@1
                    174:                andi.   r7,r4,1
                    175:                mcrf    6,0
                    176:                mr              r10,r4
                    177:                srwi    r4,r4,1
                    178:                andi.   r7,r3,1
                    179:                srwi    r3,r3,1
                    180:                rlwimi  r3,r5,31,0,0
                    181:                srwi    r5,r5,1
                    182:
                    183: ; modif
                    184:                cmplw   r5,r4
                    185:                bne             @1
                    186:                slwi    r3,r3,1
                    187:                add             r3,r3,r7
                    188:                addc    r4,r3,r10
                    189:                subfe.  r5,r5,r5
                    190:                li              r3,-1
                    191:                beq             @5
                    192:                subi    r3,r3,1
                    193:                add             r4,r10,r4
                    194:                b               @5
                    195:
                    196: ; etape 2 r3 recoit q et mq recoit r
                    197: @1             add             r8,r5,r5
                    198:                addi    r8,r8,1
                    199:                cmplw   r4,r8
                    200:                bgt             @2
                    201:                bne             @3
                    202:                cmpwi   r3,0
                    203:                bge             @2
                    204: @3             slwi    r9,r4,31
                    205:                srwi    r8,r4,1
                    206:                subfc   r3,r9,r3
                    207:                subfe   r5,r8,r5
                    208:                mtspr   mq,r3
                    209:                dialect POWER
                    210:                div             r3,r5,r4
                    211:                dialect POWERPC
                    212:                mfspr   r4,mq
                    213:                oris    r3,r3,0x8000
                    214:                b               @4
                    215: @2             mtspr   mq,r3
                    216:                dialect POWER
                    217:                div             r3,r5,r4
                    218:                dialect POWERPC
                    219:                mfspr   r4,mq
                    220:
                    221: ; etape 3 r4 recoit r
                    222: @4             bge             5,@5
                    223:                slwi    r4,r4,1
                    224:                add             r4,r4,r7
                    225:                beq             6,@5
                    226:
                    227: ; etape 4 modifiee
                    228:                subfc   r4,r3,r4
                    229:                subfe.  r5,r5,r5
                    230:                beq             @5
                    231:                subi    r3,r3,1
                    232:                addc    r4,r4,r10
                    233:                subfe.  r5,r5,r5
                    234:                beq             @5
                    235:                subi    r3,r3,1
                    236:                addc    r4,r4,r10
                    237:
                    238: ; retour
                    239: @5             stw             r4,0x0000(r6)
                    240:                blr
                    241:
                    242:        csect   bfffo[DS]
                    243:                dc.l    .bfffo[PR]
                    244:                dc.l    TOC[tc0]
                    245:                dc.l    0
                    246:
                    247:        csect   .bfffo[PR]
                    248:                cntlzw  r3,r3
                    249:                blr
                    250:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>