Annotation of gcc/config/sparc/lb1spl.asm, revision 1.1.1.1

1.1       root        1: /* This is an assembly language implementation of libgcc1.c for the sparclite
                      2:    processor.
                      3: 
                      4:    These routines are all from the Sparclite User's Guide, slightly edited
                      5:    to match the desired calling convention, and also to optimize them.  */
                      6: 
                      7: #ifdef L_udivsi3
                      8: .text
                      9:        .align 4
                     10:        .global .udiv
                     11:        .proc   04
                     12: .udiv:
                     13:        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
                     14:        tst     %g0
                     15:        divscc  %o0,%o1,%g1
                     16:        divscc  %g1,%o1,%g1
                     17:        divscc  %g1,%o1,%g1
                     18:        divscc  %g1,%o1,%g1
                     19:        divscc  %g1,%o1,%g1
                     20:        divscc  %g1,%o1,%g1
                     21:        divscc  %g1,%o1,%g1
                     22:        divscc  %g1,%o1,%g1
                     23:        divscc  %g1,%o1,%g1
                     24:        divscc  %g1,%o1,%g1
                     25:        divscc  %g1,%o1,%g1
                     26:        divscc  %g1,%o1,%g1
                     27:        divscc  %g1,%o1,%g1
                     28:        divscc  %g1,%o1,%g1
                     29:        divscc  %g1,%o1,%g1
                     30:        divscc  %g1,%o1,%g1
                     31:        divscc  %g1,%o1,%g1
                     32:        divscc  %g1,%o1,%g1
                     33:        divscc  %g1,%o1,%g1
                     34:        divscc  %g1,%o1,%g1
                     35:        divscc  %g1,%o1,%g1
                     36:        divscc  %g1,%o1,%g1
                     37:        divscc  %g1,%o1,%g1
                     38:        divscc  %g1,%o1,%g1
                     39:        divscc  %g1,%o1,%g1
                     40:        divscc  %g1,%o1,%g1
                     41:        divscc  %g1,%o1,%g1
                     42:        divscc  %g1,%o1,%g1
                     43:        divscc  %g1,%o1,%g1
                     44:        divscc  %g1,%o1,%g1
                     45:        divscc  %g1,%o1,%g1
                     46:        retl
                     47:        divscc  %g1,%o1,%o0
                     48: #endif
                     49: 
                     50: #ifdef L_umodsi3
                     51: .text
                     52:        .align 4
                     53:        .global .urem
                     54:        .proc   04
                     55: .urem:
                     56:        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
                     57:        tst     %g0
                     58:        divscc  %o0,%o1,%g1
                     59:        divscc  %g1,%o1,%g1
                     60:        divscc  %g1,%o1,%g1
                     61:        divscc  %g1,%o1,%g1
                     62:        divscc  %g1,%o1,%g1
                     63:        divscc  %g1,%o1,%g1
                     64:        divscc  %g1,%o1,%g1
                     65:        divscc  %g1,%o1,%g1
                     66:        divscc  %g1,%o1,%g1
                     67:        divscc  %g1,%o1,%g1
                     68:        divscc  %g1,%o1,%g1
                     69:        divscc  %g1,%o1,%g1
                     70:        divscc  %g1,%o1,%g1
                     71:        divscc  %g1,%o1,%g1
                     72:        divscc  %g1,%o1,%g1
                     73:        divscc  %g1,%o1,%g1
                     74:        divscc  %g1,%o1,%g1
                     75:        divscc  %g1,%o1,%g1
                     76:        divscc  %g1,%o1,%g1
                     77:        divscc  %g1,%o1,%g1
                     78:        divscc  %g1,%o1,%g1
                     79:        divscc  %g1,%o1,%g1
                     80:        divscc  %g1,%o1,%g1
                     81:        divscc  %g1,%o1,%g1
                     82:        divscc  %g1,%o1,%g1
                     83:        divscc  %g1,%o1,%g1
                     84:        divscc  %g1,%o1,%g1
                     85:        divscc  %g1,%o1,%g1
                     86:        divscc  %g1,%o1,%g1
                     87:        divscc  %g1,%o1,%g1
                     88:        divscc  %g1,%o1,%g1
                     89:        divscc  %g1,%o1,%g1
                     90:        bl 1f
                     91:        rd      %y,%o0
                     92:        retl
                     93:        nop
                     94: 1:     retl
                     95:        add     %o0,%o1,%o0
                     96: #endif
                     97: 
                     98: #ifdef L_divsi3
                     99: .text
                    100:        .align 4
                    101:        .global .div
                    102:        .proc   04
                    103: ! ??? This routine could be made faster if was optimized, and if it was
                    104: ! rewritten to only calculate the quotient.
                    105: .div:
                    106:        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
                    107:        mov     %o1,%o4
                    108:        tst     %o1
                    109:        bl,a    1f
                    110:        sub     %g0,%o4,%o4
                    111: 1:     tst     %o0
                    112:        bl,a    2f
                    113:        mov     -1,%y
                    114: 2:     divscc  %o0,%o4,%g1
                    115:        divscc  %g1,%o4,%g1
                    116:        divscc  %g1,%o4,%g1
                    117:        divscc  %g1,%o4,%g1
                    118:        divscc  %g1,%o4,%g1
                    119:        divscc  %g1,%o4,%g1
                    120:        divscc  %g1,%o4,%g1
                    121:        divscc  %g1,%o4,%g1
                    122:        divscc  %g1,%o4,%g1
                    123:        divscc  %g1,%o4,%g1
                    124:        divscc  %g1,%o4,%g1
                    125:        divscc  %g1,%o4,%g1
                    126:        divscc  %g1,%o4,%g1
                    127:        divscc  %g1,%o4,%g1
                    128:        divscc  %g1,%o4,%g1
                    129:        divscc  %g1,%o4,%g1
                    130:        divscc  %g1,%o4,%g1
                    131:        divscc  %g1,%o4,%g1
                    132:        divscc  %g1,%o4,%g1
                    133:        divscc  %g1,%o4,%g1
                    134:        divscc  %g1,%o4,%g1
                    135:        divscc  %g1,%o4,%g1
                    136:        divscc  %g1,%o4,%g1
                    137:        divscc  %g1,%o4,%g1
                    138:        divscc  %g1,%o4,%g1
                    139:        divscc  %g1,%o4,%g1
                    140:        divscc  %g1,%o4,%g1
                    141:        divscc  %g1,%o4,%g1
                    142:        divscc  %g1,%o4,%g1
                    143:        divscc  %g1,%o4,%g1
                    144:        divscc  %g1,%o4,%g1
                    145:        divscc  %g1,%o4,%g1
                    146:        be      6f
                    147:        mov     %y,%o3
                    148:        bg      4f
                    149:        addcc   %o3,%o4,%g0
                    150:        be,a    6f
                    151:        mov     %g0,%o3
                    152:        tst     %o0
                    153:        bl      5f
                    154:        tst     %g1
                    155:        ba      5f
                    156:        add     %o3,%o4,%o3
                    157: 4:     subcc   %o3,%o4,%g0
                    158:        be,a    6f
                    159:        mov     %g0,%o3
                    160:        tst     %o0
                    161:        bge     5f
                    162:        tst     %g1
                    163:        sub     %o3,%o4,%o3
                    164: 5:     bl,a    6f
                    165:        add     %g1,1,%g1
                    166: 6:     tst     %o1
                    167:        bl,a    7f
                    168:        sub     %g0,%g1,%g1
                    169: 7:     retl
                    170:        mov     %g1,%o0         ! Quotient is in %g1.
                    171: #endif
                    172: 
                    173: #ifdef L_modsi3
                    174: .text
                    175:        .align 4
                    176:        .global .rem
                    177:        .proc   04
                    178: ! ??? This routine could be made faster if was optimized, and if it was
                    179: ! rewritten to only calculate the remainder.
                    180: .rem:
                    181:        wr      %g0,%g0,%y      ! Not a delayed write for sparclite
                    182:        mov     %o1,%o4
                    183:        tst     %o1
                    184:        bl,a    1f
                    185:        sub     %g0,%o4,%o4
                    186: 1:     tst     %o0
                    187:        bl,a    2f
                    188:        mov     -1,%y
                    189: 2:     divscc  %o0,%o4,%g1
                    190:        divscc  %g1,%o4,%g1
                    191:        divscc  %g1,%o4,%g1
                    192:        divscc  %g1,%o4,%g1
                    193:        divscc  %g1,%o4,%g1
                    194:        divscc  %g1,%o4,%g1
                    195:        divscc  %g1,%o4,%g1
                    196:        divscc  %g1,%o4,%g1
                    197:        divscc  %g1,%o4,%g1
                    198:        divscc  %g1,%o4,%g1
                    199:        divscc  %g1,%o4,%g1
                    200:        divscc  %g1,%o4,%g1
                    201:        divscc  %g1,%o4,%g1
                    202:        divscc  %g1,%o4,%g1
                    203:        divscc  %g1,%o4,%g1
                    204:        divscc  %g1,%o4,%g1
                    205:        divscc  %g1,%o4,%g1
                    206:        divscc  %g1,%o4,%g1
                    207:        divscc  %g1,%o4,%g1
                    208:        divscc  %g1,%o4,%g1
                    209:        divscc  %g1,%o4,%g1
                    210:        divscc  %g1,%o4,%g1
                    211:        divscc  %g1,%o4,%g1
                    212:        divscc  %g1,%o4,%g1
                    213:        divscc  %g1,%o4,%g1
                    214:        divscc  %g1,%o4,%g1
                    215:        divscc  %g1,%o4,%g1
                    216:        divscc  %g1,%o4,%g1
                    217:        divscc  %g1,%o4,%g1
                    218:        divscc  %g1,%o4,%g1
                    219:        divscc  %g1,%o4,%g1
                    220:        divscc  %g1,%o4,%g1
                    221:        be      6f
                    222:        mov     %y,%o3
                    223:        bg      4f
                    224:        addcc   %o3,%o4,%g0
                    225:        be,a    6f
                    226:        mov     %g0,%o3
                    227:        tst     %o0
                    228:        bl      5f
                    229:        tst     %g1
                    230:        ba      5f
                    231:        add     %o3,%o4,%o3
                    232: 4:     subcc   %o3,%o4,%g0
                    233:        be,a    6f
                    234:        mov     %g0,%o3
                    235:        tst     %o0
                    236:        bge     5f
                    237:        tst     %g1
                    238:        sub     %o3,%o4,%o3
                    239: 5:     bl,a    6f
                    240:        add     %g1,1,%g1
                    241: 6:     tst     %o1
                    242:        bl,a    7f
                    243:        sub     %g0,%g1,%g1
                    244: 7:     retl
                    245:        mov     %o3,%o0         ! Remainder is in %o3.
                    246: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.