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

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

1.1       maekawa     1: ; $Id: kerPPC.s,v 1.1.1.1 1999/09/16 13:47:57 karim Exp $
                      2:        import hiremainder,overflow
                      3:
                      4:        toc
                      5:                tc hiremainder[TC], hiremainder
                      6:                tc overflow[TC], overflow
                      7:
                      8:        export addll[DS],.addll[PR],addllx[DS],.addllx[PR]
                      9:        export subll[DS],.subll[PR],subllx[DS],.subllx[PR]
                     10:        export mulll[DS],.mulll[PR],addmul[DS],.addmul[PR]
                     11:        export divll[DS],.divll[PR],bfffo[DS],.bfffo[PR]
                     12:
                     13:        toc
                     14:                tc addll[TC], addll[DS]
                     15:                tc addllx[TC], addllx[DS]
                     16:                tc subll[TC], subll[DS]
                     17:                tc subllx[TC], subllx[DS]
                     18:                tc mulll[TC], mulll[DS]
                     19:                tc addmul[TC], addmul[DS]
                     20:                tc divll[TC], divll[DS]
                     21:                tc bfffo[TC], bfffo[DS]
                     22:
                     23:        csect   addll[DS]
                     24:                dc.l    .addll[PR]
                     25:                dc.l    TOC[tc0]
                     26:                dc.l    0
                     27:
                     28:        csect   .addll[PR]
                     29:                addc    r3,r3,r4
                     30:                subfe   r5,r5,r5
                     31:                addi    r5,r5,1
                     32:                lwz             r6,overflow{TC}(RTOC)
                     33:                stw             r5,0x0000(r6)
                     34:                blr
                     35:
                     36:        csect   addllx[DS]
                     37:                dc.l    .addllx[PR]
                     38:                dc.l    TOC[tc0]
                     39:                dc.l    0
                     40:
                     41:        csect   .addllx[PR]
                     42:                addc    r3,r3,r4
                     43:                subfe   r5,r5,r5
                     44:                lwz             r6,overflow{TC}(RTOC)
                     45:                lwz             r7,0x0000(r6)
                     46:                addc    r3,r7,r3
                     47:                subfe   r8,r8,r8
                     48:                addc    r5,r8,r5
                     49:                addi    r5,r5,2
                     50:                stw             r5,0x0000(r6)
                     51:                blr
                     52:
                     53:        csect   subll[DS]
                     54:                dc.l    .subll[PR]
                     55:                dc.l    TOC[tc0]
                     56:                dc.l    0
                     57:
                     58:        csect   .subll[PR]
                     59:                subfc   r3,r4,r3
                     60:                subfe   r5,r5,r5
                     61:                neg             r5,r5
                     62:                lwz             r6,overflow{TC}(RTOC)
                     63:                stw             r5,0x0000(r6)
                     64:                blr
                     65:
                     66:        csect   subllx[DS]
                     67:                dc.l    .subllx[PR]
                     68:                dc.l    TOC[tc0]
                     69:                dc.l    0
                     70:
                     71:        csect   .subllx[PR]
                     72:                subfc   r3,r4,r3
                     73:                subfe   r5,r5,r5
                     74:                lwz             r6,overflow{TC}(RTOC)
                     75:                lwz             r7,0x0000(r6)
                     76:                subfc   r3,r7,r3
                     77:                subfe   r8,r8,r8
                     78:                addc    r5,r8,r5
                     79:                neg             r5,r5
                     80:                stw             r5,0x0000(r6)
                     81:                blr
                     82:
                     83:        csect   mulll[DS]
                     84:                dc.l    .mulll[PR]
                     85:                dc.l    TOC[tc0]
                     86:                dc.l    0
                     87:
                     88:        csect   .mulll[PR]
                     89:
                     90: ; version PowerPC, plus lente
                     91: ;              mulhwu  r5,r3,r4
                     92: ;              lwz             r6,hiremainder{TC}(RTOC)
                     93: ;              stw             r5,0x0000(r6)
                     94: ;              mullw   r3,r3,r4
                     95: ;              blr
                     96: ; version POWER
                     97:                lwz             r6,hiremainder{TC}(RTOC)
                     98:                dialect POWER
                     99:                mul             r5,r3,r4
                    100:                dialect POWERPC
                    101:                cmpwi   r3,0
                    102:                bge             @1
                    103:                add             r5,r5,r4
                    104: @1             cmpwi   r4,0
                    105:                bge             @2
                    106:                add             r5,r5,r3
                    107: @2             stw             r5,0x0000(r6)
                    108:                mfspr   r3,mq
                    109:                blr
                    110:
                    111:        csect   addmul[DS]
                    112:                dc.l    .addmul[PR]
                    113:                dc.l    TOC[tc0]
                    114:                dc.l    0
                    115:
                    116:        csect   .addmul[PR]
                    117: ; version PowerPC, plus lente
                    118: ;              mulhwu  r5,r3,r4
                    119: ;              mullw   r3,r3,r4
                    120: ;              lwz             r6,hiremainder{TC}(RTOC)
                    121: ;              lwz             r7,0x0000(r6)
                    122: ;              addc    r3,r7,r3
                    123: ;              addze   r5,r5
                    124: ;              stw             r5,0x0000(r6)
                    125: ;              blr
                    126: ; version POWER
                    127:                lwz             r6,hiremainder{TC}(RTOC)
                    128:                dialect POWER
                    129:                mul             r5,r3,r4
                    130:                dialect POWERPC
                    131:                cmpwi   r3,0
                    132:                bge             @1
                    133:                add             r5,r5,r4
                    134: @1             cmpwi   r4,0
                    135:                bge             @2
                    136:                add             r5,r5,r3
                    137: @2             lwz             r7,0x0000(r6)
                    138:                mfspr   r3,mq
                    139:                addc    r3,r7,r3
                    140:                addze   r5,r5
                    141:                stw             r5,0x0000(r6)
                    142:                blr
                    143:
                    144:        csect   divll[DS]
                    145:                dc.l    .divll[PR]
                    146:                dc.l    TOC[tc0]
                    147:                dc.l    0
                    148:
                    149:        csect   .divll[PR]
                    150:
                    151: ; version POWER
                    152: ; chargement de a puis a1 dans r5, b puis b1 dans r3 et c puis c1 dans r4
                    153:                lwz             r6,hiremainder{TC}(RTOC)
                    154:                lwz             r5,0x0000(r6)
                    155:
                    156: ; etape 1, f est code dans cr5, eb dans r7 et ec dans cr6
                    157: ; si f = 1, on garde une copie de c dans r10
                    158:                cmpwi   5,r4,0
                    159:                bge             5,@1
                    160:                andi.   r7,r4,1
                    161:                mcrf    6,0
                    162:                mr              r10,r4
                    163:                srwi    r4,r4,1
                    164:                andi.   r7,r3,1
                    165:                srwi    r3,r3,1
                    166:                rlwimi  r3,r5,31,0,0
                    167:                srwi    r5,r5,1
                    168:
                    169: ; modif
                    170:                cmplw   r5,r4
                    171:                bne             @1
                    172:                slwi    r3,r3,1
                    173:                add             r3,r3,r7
                    174:                addc    r4,r3,r10
                    175:                subfe.  r5,r5,r5
                    176:                li              r3,-1
                    177:                beq             @5
                    178:                subi    r3,r3,1
                    179:                add             r4,r10,r4
                    180:                b               @5
                    181:
                    182: ; etape 2 r3 recoit q et mq recoit r
                    183: @1             add             r8,r5,r5
                    184:                addi    r8,r8,1
                    185:                cmplw   r4,r8
                    186:                bgt             @2
                    187:                bne             @3
                    188:                cmpwi   r3,0
                    189:                bge             @2
                    190: @3             slwi    r9,r4,31
                    191:                srwi    r8,r4,1
                    192:                subfc   r3,r9,r3
                    193:                subfe   r5,r8,r5
                    194:                mtspr   mq,r3
                    195:                dialect POWER
                    196:                div             r3,r5,r4
                    197:                dialect POWERPC
                    198:                mfspr   r4,mq
                    199:                oris    r3,r3,0x8000
                    200:                b               @4
                    201: @2             mtspr   mq,r3
                    202:                dialect POWER
                    203:                div             r3,r5,r4
                    204:                dialect POWERPC
                    205:                mfspr   r4,mq
                    206:
                    207: ; etape 3 r4 recoit r
                    208: @4             bge             5,@5
                    209:                slwi    r4,r4,1
                    210:                add             r4,r4,r7
                    211:                beq             6,@5
                    212:
                    213: ; etape 4 modifiee
                    214:                subfc   r4,r3,r4
                    215:                subfe.  r5,r5,r5
                    216:                beq             @5
                    217:                subi    r3,r3,1
                    218:                addc    r4,r4,r10
                    219:                subfe.  r5,r5,r5
                    220:                beq             @5
                    221:                subi    r3,r3,1
                    222:                addc    r4,r4,r10
                    223:
                    224: ; retour
                    225: @5             stw             r4,0x0000(r6)
                    226:                blr
                    227:
                    228:        csect   bfffo[DS]
                    229:                dc.l    .bfffo[PR]
                    230:                dc.l    TOC[tc0]
                    231:                dc.l    0
                    232:
                    233:        csect   .bfffo[PR]
                    234:                cntlzw  r3,r3
                    235:                blr
                    236:

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