Annotation of coherent/b/bin/c/n1/i386/tables/amul.t, revision 1.1

1.1     ! root        1: //////////
        !             2: / n1/i386/tables/amul.t
        !             3: //////////
        !             4: 
        !             5: /////////
        !             6: /
        !             7: / Assigned multiplication (*=).
        !             8: / Immediate byte operands use the three-operand multiply immediate form.
        !             9: / Otherwise, the multiply is done in EDX:EAX.
        !            10: / [TL ZIMUL] is ZIMUL if signed, ZMUL if unsigned; cf. n1/i386/outmch.c.
        !            11: / Signed multiply should use the i386 two-operand MUL but currently does not.
        !            12: /
        !            13: /////////
        !            14: 
        !            15: AMUL:
        !            16: 
        !            17: //////////
        !            18: / Long.
        !            19: //////////
        !            20: 
        !            21: / Long *= byte constant.
        !            22: %      PEFFECT|PVALUE
        !            23:        LONG            ANYR    *       *       TEMP
        !            24:                ADR|LV          LONG
        !            25:                SBYTE|MMX       LONG
        !            26:                        [ZIMULI]        [R],[AL],[AR]
        !            27:                        [ZMOV]          [AL],[R]
        !            28: 
        !            29: / Long *= long.
        !            30: %      PEFFECT|PVALUE
        !            31:        LONG            EDXEAX  *       *       EAX
        !            32:                ADR|LV          LONG
        !            33:                ADR             LONG
        !            34:                        [ZMOV]          [REGNO EAX],[AL]
        !            35:                        [TL ZIMUL]      [AR]
        !            36:                        [ZMOV]          [AL],[REGNO EAX]
        !            37: 
        !            38: //////////
        !            39: / Short.
        !            40: / Sign- or zero-extend the result in value context.
        !            41: //////////
        !            42: 
        !            43: / Short *= long.
        !            44: %      PEFFECT|PVALUE
        !            45:        LONG            EDXEAX  *       *       EAX
        !            46:                ADR|LV          WORD|BYTE
        !            47:                ADR             LONG
        !            48:                        [TL ZMOVSX]     [REGNO EAX],[AL]
        !            49:                        [TL ZIMUL]      [AR]
        !            50:                        [TL ZMOV]       [AL],[TL REGNO EAX]
        !            51:                [IFV]   [TL ZMOVSX]     [REGNO EAX],[TL REGNO EAX]
        !            52: 
        !            53: //////////
        !            54: / Fields.
        !            55: //////////
        !            56: 
        !            57: / Field.
        !            58: %      PEFFECT|PVALUE
        !            59:        LONG            EDXEAX  *       *       EAX
        !            60:                ADR|LV          FLD
        !            61:                ADR             LONG
        !            62:                        [TL ZMOVZX]     [REGNO EAX],[AL]        / fetch
        !            63:                        [ZAND]          [REGNO EAX],[EMASK]     / extract
        !            64:                        [ZMUL]          [AR]                    / multiply
        !            65:                        [ZAND]          [REGNO EAX],[EMASK]     / mask
        !            66:                        [TL ZAND]       [AL],[TL CMASK]         / clear
        !            67:                        [TL ZOR]        [AL],[TL REGNO EAX]     / store
        !            68: 
        !            69: //////////
        !            70: / Floating point.
        !            71: //////////
        !            72: 
        !            73: / IEEE or DECVAX software floating point.
        !            74: / Double *= double.
        !            75: %      PEFFECT|PVALUE|P_SRT|PDECVAX|PIEEE
        !            76:        FF64            EDXEAX  *       EDXEAX  TEMP
        !            77:                ADR|LV          FF64
        !            78:                TREG            FF64
        !            79:                        [ZPUSH] [HI AL]
        !            80:                        [ZPUSH] [LO AL]
        !            81:                        [ZCALL] [GID _dmul]
        !            82:                        [ZADD]  [REGNO ESP],[CONST 8]
        !            83:                        [ZMOV]  [HI AL],[HI R]
        !            84:                        [ZMOV]  [LO AL],[LO R]
        !            85: 
        !            86: / Float *= double.
        !            87: %      PEFFECT|PVALUE|P_SRT|PDECVAX|PIEEE
        !            88:        FF64            EDXEAX  *       EDXEAX  TEMP
        !            89:                ADR|LV          FF32
        !            90:                TREG            FF64
        !            91:                        [ZPUSH] [AL]
        !            92:                        [ZCALL] [GID _fmul]
        !            93:                        [ZADD]  [REGNO ESP],[CONST 4]
        !            94:                        [ZCALL] [GID _fdcvt]
        !            95:                        [ZMOV]  [AL], [LO R]
        !            96:                [IFV]   [ZCALL] [GID _dfcvt]
        !            97: 
        !            98: / Hardware coprocessor (NDP) floating point.
        !            99: %      PEFFECT|PVALUE|PNDP
        !           100:        FLOAT           FPAC    *       FPAC    FPAC
        !           101:                ADR|LV          FLOAT
        !           102:                TREG            FF64
        !           103:                        [TL ZFMULD]     [AL]
        !           104:                [IFV]   [TL ZFSTD]      [AL]
        !           105:                [IFE]   [TL ZFSTPD]     [AL]
        !           106: 
        !           107: //////////
        !           108: / end of n1/i386/tables/amul.t
        !           109: //////////

unix.superglobalmegacorp.com

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