Annotation of coherent/b/bin/c/n1/i386/tables/adiv.t, revision 1.1.1.1

1.1       root        1: //////////
                      2: / n1/i386/tables/adiv.t
                      3: //////////
                      4: 
                      5: /////////
                      6: /
                      7: / Assigned divide (/=).
                      8: / Use unsigned divide if either left or right operand is unsigned.
                      9: /
                     10: /////////
                     11: 
                     12: ADIV:
                     13: 
                     14: / Unsigned integer by unsigned.
                     15: / The result word or byte does not have to be sign- or zero-extended
                     16: / in value context, the result is already correct.
                     17: %      PEFFECT|PVALUE
                     18:        LONG            EDXEAX  *       *       EAX
                     19:                ADR|LV          UINT
                     20:                ADR             LONG
                     21: / Signed long by unsigned.
                     22: %      PEFFECT|PVALUE
                     23:        LONG            EDXEAX  *       *       EAX
                     24:                ADR|LV          FS32
                     25:                ADR             FU32
                     26:                        [TL ZMOVSX]     [REGNO EAX], [AL]
                     27:                        [ZSUB]          [REGNO EDX], [REGNO EDX]
                     28:                        [ZDIV]          [AR]
                     29:                        [TL ZMOV]       [AL], [TL REGNO EAX]
                     30: 
                     31: / Signed word or byte by unsigned.
                     32: / The result must be sign- or zero-extended in value context.
                     33: %      PEFFECT|PVALUE
                     34:        LONG            EDXEAX  *       *       EAX
                     35:                ADR|LV          FS16|FS8
                     36:                ADR             FU32
                     37:                        [TL ZMOVSX]     [REGNO EAX], [AL]
                     38:                        [ZSUB]          [REGNO EDX], [REGNO EDX]
                     39:                        [ZDIV]          [AR]
                     40:                        [TL ZMOV]       [AL], [TL REGNO EAX]
                     41:                [IFV]   [TL ZMOVSX]     [REGNO EAX], [TL REGNO EAX]
                     42: 
                     43: / Signed integer by signed.
                     44: / The result word or byte does not have to be sign- or zero-extended
                     45: / in value context, the result is already correct.
                     46: %      PEFFECT|PVALUE
                     47:        LONG            EDXEAX  *       *       EAX
                     48:                ADR|LV          SINT
                     49:                ADR             FS32
                     50:                        [TL ZMOVSX]     [REGNO EAX], [AL]
                     51:                        [ZCDQ]
                     52:                        [ZIDIV]         [AR]
                     53:                        [TL ZMOV]       [AL], [TL REGNO EAX]
                     54: 
                     55: //////////
                     56: / Fields.
                     57: / The right hand operand of the field is not preshifted
                     58: / like it is for add, subtract and the increment/decrement ops. 
                     59: //////////
                     60: 
                     61: / Field.
                     62: %      PEFFECT|PVALUE
                     63:        LONG            EDXEAX  *       *       EAX
                     64:                ADR|LV          FLD
                     65:                ADR             LONG
                     66:                        [TL ZMOVZX]     [REGNO EAX],[AL]        / fetch
                     67:                        [ZAND]          [REGNO EAX],[EMASK]     / extract
                     68:                        [ZSUB]          [REGNO EDX],[REGNO EDX] / widen
                     69:                        [ZDIV]          [AR]                    / divide
                     70:                        [ZAND]          [REGNO EAX],[EMASK]     / mask
                     71:                        [TL ZAND]       [AL],[TL CMASK]         / clear
                     72:                        [TL ZOR]        [AL],[TL REGNO EAX]     / store
                     73: 
                     74: //////////
                     75: / Floating point.
                     76: //////////
                     77: 
                     78: / IEEE or DECVAX software floating point.
                     79: / Double /= double.
                     80: %      PEFFECT|PVALUE|P_SRT|PDECVAX|PIEEE
                     81:        FF64            EDXEAX  *       EDXEAX  TEMP
                     82:                ADR|LV          FF64
                     83:                TREG            FF64
                     84:                        [ZPUSH] [HI AL]
                     85:                        [ZPUSH] [LO AL]
                     86:                        [ZCALL] [GID _ddiv]
                     87:                        [ZADD]  [REGNO ESP],[CONST 8]
                     88:                        [ZMOV]  [HI AL],[HI R]
                     89:                        [ZMOV]  [LO AL],[LO R]
                     90: 
                     91: / Float /= double.
                     92: %      PEFFECT|PVALUE|P_SRT|PDECVAX|PIEEE
                     93:        FF64            EDXEAX  *       EDXEAX  TEMP
                     94:                ADR|LV          FF32
                     95:                TREG            FF64
                     96:                        [ZPUSH] [AL]
                     97:                        [ZCALL] [GID _fdiv]
                     98:                        [ZADD]  [REGNO ESP],[CONST 4]
                     99:                        [ZCALL] [GID _fdcvt]
                    100:                        [ZMOV]  [AL], [LO R]
                    101:                [IFV]   [ZCALL] [GID _dfcvt]
                    102: 
                    103: / Hardware coprocessor (NDP) floating point.
                    104: %      PEFFECT|PVALUE|PNDP
                    105:        FLOAT           FPAC    *       FPAC    FPAC
                    106:                ADR|LV          FLOAT
                    107:                TREG            FF64
                    108:                        [TL ZFRDIVD]    [AL]
                    109:                [IFV]   [TL ZFSTD]      [AL]
                    110:                [IFE]   [TL ZFSTPD]     [AL]
                    111: 
                    112: //////////
                    113: / end of n1/i386/tables/adiv.t
                    114: //////////

unix.superglobalmegacorp.com

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