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