📄 dp32.s
字号:
/* dp32.s - VxWorks conversion from Microtek tools to Sun native *//* Copyright 1984-1992 Wind River Systems, Inc. *//*modification history--------------------01a,05aug92,jwt converted.*//*! ! ! ! !! SPARClite Floating Point Library!! Copyright (C) 1992 By! United States Software Corporation! 14215 N.W. Science Park Drive! Portland, Oregon 97229!! This software is furnished under a license and may be used! and copied only in accordance with the terms of such license! and with the inclusion of the above copyright notice.! This software or any other copies thereof may not be provided! or otherwise made available to any other person. No title to! and ownership of the software is hereby transferred.!! The information in this software is subject to change without ! notice and should not be construed as a commitment by United! States Software Corporation.!! First Release: V1.02 March 26 1992! ! ! ! ! .macro scan,p1,p2,p3 .word 0x81602000 | (&p3<<25) | (&p1<<14) | p2 .endm .macro umul,p1,p2,p3 .word 0x80500000 | (&p3<<25) | (&p1<<14) | &p2 .endm .macro divscc,p1,p2,p3 .word 0x80e80000 | (&p3<<25) | (&p1<<14) | &p2 .endm*/#include "arch/sparc/ussSun4.h" .text .align 4 .global _dpsub_dpsub: .global __dsub__dsub: sethi %hi(0x80000000),%g1 xor %o2,%g1,%o2 .global _dpadd_dpadd: .global __dadd__dadd: save %sp,-96,%sp sll %i0,1,%l4 srl %l4,21,%l4 sll %i0,11,%l2 srl %i1,21,%g1 or %l2,%g1,%l2 sll %i1,11,%l3 sethi %hi(0x80000000),%l1 or %l2,%l1,%l2 sll %i2,1,%l7 srl %l7,21,%l7 sll %i2,11,%l5 srl %i3,21,%g1 or %l5,%g1,%l5 sll %i3,11,%l6 or %l5,%l1,%l5 and %l1,%i0,%l1 sub %l4,1,%g1 subcc %g1,0x7fe,%g0 bcc BspecA Blab1: sub %l7,1,%g1 subcc %g1,0x7fe,%g0 bcc BspecB NOPBlab2: subcc %l4,%l7,%i4 be Badd3 subcc %i4,0,%i4 ble i1 NOPL1: subcc %i4,32,%g0 bcs L2 orcc %l6,0,%g0 sub %i4,32,%i4 or %l5,0,%l6 or %g0,0,%l5 be L3 orcc %l6,0,%g0 or %l6,2,%l6L3: bne L1 NOP ba,a Badd3 L2: subcc %g0,%i4,%i5 be Badd3 sll %l6,%i5,%l0 orcc %l0,0,%g0 sll %l5,%i5,%i5 srl %l6,%i4,%l6 srl %l5,%i4,%l5 or %l6,%i5,%l6 bne,a Badd3 or %l6,2,%l6 ba,a Badd3 i1: or %g0,%l7,%l4 sub %g0,%i4,%i4L5: subcc %i4,32,%g0 bcs L6 orcc %l3,0,%g0 sub %i4,32,%i4 or %l2,0,%l3 or %g0,0,%l2 be L7 orcc %l3,0,%g0 or %l3,2,%l3L7: bne L5 NOP ba,a Badd3 L6: subcc %g0,%i4,%i5 be Badd3 sll %l3,%i5,%l0 orcc %l0,0,%g0 sll %l2,%i5,%i5 srl %l3,%i4,%l3 srl %l2,%i4,%l2 or %l3,%i5,%l3 bne,a Badd3 or %l3,2,%l3Badd3: xorcc %i0,%i2,%g1 bneg Bsub1 NOP addcc %l3,%l6,%l3 addxcc %l2,%l5,%l2 bcc Bres andcc %l3,1,%g1 bne,a i3 or %l3,2,%l3i3: srl %l3,1,%l3 sll %l2,31,%g1 srl %l2,1,%l2 or %l3,%g1,%l3 sethi %hi(0x80000000),%g1 or %l2,%g1,%l2 add %l4,1,%l4 subcc %l4,0x7ff,%g0 be Binf NOP ba,a Bres Bsub1: subcc %l3,%l6,%l3 subxcc %l2,%l5,%l2 bcc i4 NOP sethi %hi(0x80000000),%g1 xor %l1,%g1,%l1 subcc %g0,%l3,%l3 subx %g0,%l2,%l2i4:/* scan %l2,0,%i4 */ SCAN | (lo2 << 14) | 0 | (in4 << 25) subcc %i4,63,%g0 bne L9 NOP or %l3,0,%l2 or %g0,0,%l3 sub %l4,32,%l4/* scan %l2,0,%i4 */ SCAN | (lo2 << 14) | 0 | (in4 << 25) subcc %i4,63,%g0 be,a L9 or %i4,0,%l4L9: subcc %g0,%i4,%i5 be Bres sub %l4,%i4,%l4 sll %l2,%i4,%l2 srl %l3,%i5,%i5 or %i5,%l2,%l2 sll %l3,%i4,%l3Bres: subcc %l4,0,%l4 ble Bund NOPBlab8: addcc %l3,0x400,%l3 addxcc %l2,0,%l2 addx %l4,0,%l4 srl %l3,11,%g1 and %g1,1,%g1 sub %l3,%g1,%l3 srl %l3,11,%i1 sll %l2,21,%g1 or %i1,%g1,%i1 srl %l2,11,%i0 sethi %hi(0xfffff),%g1 or %g1,0x3ff,%g1 and %i0,%g1,%i0 sll %l4,20,%g1 or %i0,%g1,%i0Bret: or %i0,%l1,%i0B999: jmpl %i7+8,%g0 restore %g0,0,%g0BspecA: subcc %l4,0,%l4 bne i5 NOP addcc %l3,%l3,%l3 addx %l2,%l2,%l2 orcc %l2,%l3,%g1 be i6 NOP/* scan %l2,0,%i4 */ SCAN | (lo2 << 14) | 0 | (in4 << 25) subcc %i4,63,%g0 bne L11 NOP or %l3,0,%l2 or %g0,0,%l3 sub %l4,32,%l4/* scan %l2,0,%i4 */ SCAN | (lo2 << 14) | 0 | (in4 << 25) subcc %i4,63,%g0 be,a L11 or %i4,0,%l4L11: subcc %g0,%i4,%i5 be Blab1 sub %l4,%i4,%l4 sll %l2,%i4,%l2 srl %l3,%i5,%i5 or %i5,%l2,%l2 sll %l3,%i4,%l3 ba,a Blab1 i6: subcc %l7,0x7ff,%g0 be BspecB NOP ba,a BretB i5: sll %l2,1,%g1 orcc %g1,%l3,%g1 bne Bnan subcc %l7,0x7ff,%g0 bne BretA xorcc %i0,%i2,%g1 bneg Bnan NOP ba,a BretB BspecB: subcc %l7,0,%l7 bne i8 NOP addcc %l6,%l6,%l6 addx %l5,%l5,%l5 orcc %l5,%l6,%g1 be BretA NOP/* scan %l5,0,%i4 */ SCAN | (lo5 << 14) | 0 | (in4 << 25) subcc %i4,63,%g0 bne L13 NOP or %l6,0,%l5 or %g0,0,%l6 sub %l7,32,%l7/* scan %l5,0,%i4 */ SCAN | (lo5 << 14) | 0 | (in4 << 25) subcc %i4,63,%g0 be,a L13 or %i4,0,%l7L13: subcc %g0,%i4,%i5 be Blab2 sub %l7,%i4,%l7 sll %l5,%i4,%l5 srl %l6,%i5,%i5 or %i5,%l5,%l5 sll %l6,%i4,%l6 ba,a Blab2 i8: sll %l5,1,%g1 orcc %g1,%l6,%g1 bne Bnan NOPBretB: or %g0,%i2,%i0 ba B999 or %g0,%i3,%i1BretA: ba,a B999 Bnan: sethi %hi(0xfff80000),%i0 ba Bret or %g0,0,%i1Bund: or %g0,1,%i4 sub %i4,%l4,%i4L15: subcc %i4,32,%g0 bcs L16 orcc %l3,0,%g0 sub %i4,32,%i4 or %l2,0,%l3 or %g0,0,%l2 be L17 orcc %l3,0,%g0 or %l3,2,%l3L17: bne L15 NOP ba,a L18 L16: subcc %g0,%i4,%i5 be L18 sll %l3,%i5,%l0 orcc %l0,0,%g0 sll %l2,%i5,%i5 srl %l3,%i4,%l3 srl %l2,%i4,%l2 or %l3,%i5,%l3 bne,a L18 or %l3,2,%l3L18: ba Blab8 or %g0,0,%l4Binf: sethi %hi(0x7ff00000),%i0 ba Bret or %g0,0,%i1 .global _dpmul_dpmul: .global __dmul__dmul: save %sp,-96,%sp sll %i0,1,%l0 srl %l0,21,%l0 sll %i0,11,%i4 srl %i1,21,%g1 or %i4,%g1,%i4 sll %i1,11,%i5 sethi %hi(0x80000000),%l5 or %i4,%l5,%i4 sll %i2,1,%l3 srl %l3,21,%l3 sll %i2,11,%l1 srl %i3,21,%g1 or %l1,%g1,%l1 sll %i3,11,%l2 or %l1,%l5,%l1 xor %i0,%i2,%g1 and %l5,%g1,%l5 sub %l0,1,%g1 subcc %g1,0x7fe,%g0 bcc CspecA Clab1: sub %l3,1,%g1 subcc %g1,0x7fe,%g0 bcc CspecB NOPClab2: umul %i4,%l1,%i2 rd %y,%l6 umul %i5,%l2,%l4 rd %y,%i3 umul %i4,%l2,%l2 rd %y,%l7 addcc %i3,%l2,%i3 addxcc %i2,%l7,%i2 addx %l6,0,%l6 umul %i5,%l1,%i5 rd %y,%l7 addcc %i3,%i5,%i3 addxcc %i2,%l7,%i2 addx %l6,0,%l6 orcc %l4,%i3,%g1 bne,a i10 or %i2,1,%i2i10: orcc %g0,%l6,%i4 bneg i11 or %g0,%i2,%i5 addcc %i5,%i5,%i5 addx %i4,%i4,%i4 sub %l0,1,%l0i11: sub %l3,0x3fe,%g1 add %l0,%g1,%l0 sub %l0,1,%g1 subcc %g1,0x7fe,%g0 bcc Coveund NOPClab8: addcc %i5,0x400,%i5 addxcc %i4,0,%i4 addx %l0,0,%l0 srl %i5,11,%g1 and %g1,1,%g1 sub %i5,%g1,%i5 srl %i5,11,%i1 sll %i4,21,%g1 or %i1,%g1,%i1 srl %i4,11,%i0 sethi %hi(0xfffff),%g1 or %g1,0x3ff,%g1 and %i0,%g1,%i0 sll %l0,20,%g1 or %i0,%g1,%i0Cret: or %i0,%l5,%i0Cret2:C999: jmpl %i7+8,%g0 restore %g0,0,%g0CspecA: subcc %l0,0,%l0 bne i12 NOP addcc %i5,%i5,%i5 addx %i4,%i4,%i4 orcc %i4,%i5,%g1 be i12 NOP/* scan %i4,0,%l6 */ SCAN | (in4 << 14) | 0 | (lo6 << 25) subcc %l6,63,%g0 bne L19 NOP or %i5,0,%i4 or %g0,0,%i5 sub %l0,32,%l0/* scan %i4,0,%l6 */ SCAN | (in4 << 14) | 0 | (lo6 << 25) subcc %l6,63,%g0 be,a L19 or %l6,0,%l0L19: subcc %g0,%l6,%i2 be Clab1 sub %l0,%l6,%l0 sll %i4,%l6,%i4 srl %i5,%i2,%i2 or %i2,%i4,%i4 sll %i5,%l6,%i5 ba,a Clab1 i12: add %l0,%l3,%g1 subcc %g1,0x7ff,%g0 be Cnan subcc %l0,0,%l0 be Czer sll %i4,1,%g1 orcc %g1,%i5,%g1 bne Cnan subcc %l3,0x7ff,%g0 bne Cinf CspecB: subcc %l3,0,%l3 bne i14 NOP addcc %l2,%l2,%l2 addx %l1,%l1,%l1 orcc %l1,%l2,%g1 be Czer NOP/* scan %l1,0,%l7 */ SCAN | (lo1 << 14) | 0 | (lo7 << 25) subcc %l7,63,%g0 bne L21 NOP or %l2,0,%l1 or %g0,0,%l2 sub %l3,32,%l3/* scan %l1,0,%l7 */ SCAN | (lo1 << 14) | 0 | (lo7 << 25) subcc %l7,63,%g0 be,a L21 or %l7,0,%l3L21: subcc %g0,%l7,%l6 be Clab2 sub %l3,%l7,%l3 sll %l1,%l7,%l1 srl %l2,%l6,%l6 or %l6,%l1,%l1 sll %l2,%l7,%l2 ba,a Clab2 i14: sll %l1,1,%g1 orcc %g1,%l2,%g1 bne Cnan NOPCinf: sethi %hi(0x7ff00000),%i0 ba Cret or %g0,0,%i1Cnan: sethi %hi(0xfff80000),%i0 ba Cret or %g0,0,%i1Coveund: subcc %l0,0,%l0 bg Cinf NOP or %g0,1,%l6 sub %l6,%l0,%l6L23: subcc %l6,32,%g0 bcs L24 orcc %i5,0,%g0 sub %l6,32,%l6 or %i4,0,%i5 or %g0,0,%i4 be L25 orcc %i5,0,%g0 or %i5,2,%i5L25: bne L23 NOP ba,a L26 L24: subcc %g0,%l6,%i2 be L26 sll %i5,%i2,%i3 orcc %i3,0,%g0 sll %i4,%i2,%i2 srl %i5,%l6,%i5 srl %i4,%l6,%i4 or %i5,%i2,%i5 bne,a L26 or %i5,2,%i5L26: ba Clab8 or %g0,0,%l0Czer: or %g0,0,%i0 ba Cret or %g0,%i0,%i1 .global _dpdiv_dpdiv: .global __ddiv__ddiv: save %sp,-96,%sp sll %i0,1,%l0 srl %l0,21,%l0 sll %i0,11,%i4 srl %i1,21,%g1 or %i4,%g1,%i4 sll %i1,11,%i5 sethi %hi(0x80000000),%l4 or %i4,%l4,%i4 sll %i2,1,%l3 srl %l3,21,%l3 sll %i2,11,%l1 srl %i3,21,%g1 or %l1,%g1,%l1 sll %i3,11,%l2 or %l1,%l4,%l1 xor %i0,%i2,%g1 and %l4,%g1,%l4 sub %l0,1,%g1 subcc %g1,0x7fe,%g0 bcc DspecA Dlab1: sub %l3,1,%g1 subcc %g1,0x7fe,%g0 bcc DspecB NOPDlab2: srl %i5,1,%i5 sll %i4,31,%g1 srl %i4,1,%i4 or %i5,%g1,%i5 wr %i4,0,%y or %g0,%i5,%l5 orcc %g0,0,%g0#if 0 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5 divscc %l5,%l1,%l5#else DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25) DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25) DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25) DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25) DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25) DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25) DIVSCC | (lo5 << 14) | lo1 | (lo5 << 25)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -