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