📄 fppow32.s
字号:
/* fppow32.s - VxWorks conversion from Microtek tools to Sun native *//* Copyright 1984-1992 Wind River Systems, Inc. *//*modification history--------------------01b,13nov92,jwt added temporary (until USS patch) fix for pow(0.0,0.0) = 0.0.01a,06aug92,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" .global _fpexlog .global _fpexexp .text .align 4 .global _fppow_fppow: .global _powf_powf: save %sp,-96,%sp /* Test for positive or negative zero */ set 0x7F800000,%l4 /* exponent (30-23) */ andcc %l4,%i0,%g0 bne powNonZero andcc %l4,%i1,%g0 bne powNonZero nop set 0x3F300000,%i0 /* return 1.0 */ ret restorepowNonZero: srl %i0,23,%l2 and %l2,0xff,%l2 srl %i1,23,%l5 and %l5,0xff,%l5 sethi %hi(0x80000000),%i2 sll %i0,8,%l1 or %l1,%i2,%l1 sll %i1,8,%l4 or %l4,%i2,%l4 and %i1,%i2,%l6 and %i2,%i0,%i2 sub %l2,1,%l7 subcc %l7,0xfe,%g0 bcc AspecA Alab1: sub %l5,1,%l7 subcc %l7,0xfe,%g0 bcc AspecB NOP sub %l5,0x7e,%i4 subcc %i2,0,%i2 be i1 subcc %i4,0,%i4 ble Anan subcc %i4,0x20,%g0 bcs i2 NOP ba i1 or %g0,0,%i2i2: sll %l4,%i4,%l7 subcc %l7,0,%l7 bne Anan sub %i4,1,%g1 sll %l4,%g1,%l7 subcc %l7,0,%l7 be,a i1 or %g0,0,%i2i1: subcc %i4,0xc,%g0 bcc i4 sll %l4,%i4,%l7 subcc %l7,0,%l7 be Apow20 i4: or %g0,%l1,%o0 or %g0,%l2,%o1 call _fpexlog or %g0,%l3,%o2 or %g0,%o0,%l1 or %g0,%o1,%l2 or %g0,%o2,%l3 sub %l2,0x7e,%l7 add %l5,%l7,%l5 xor %l6,%l3,%l6 umul %l1,%l4,%i3 rd %y,%l4 subcc %l4,0,%l4 ble i5 NOP addcc %i3,%i3,%i3 addx %l4,%l4,%l4 sub %l5,1,%l5i5: addcc %i3,%i3,%i3 addx %l4,0,%l4 or %g0,%l4,%o0 or %g0,%l5,%o1 call _fpexexp or %g0,%l6,%o2 or %g0,%o0,%l1 or %g0,%o1,%l2 or %g0,%o2,%l3Aret2: sub %l2,1,%l7 subcc %l7,0xfe,%g0 bcs i6 subcc %l2,0,%l2 bg Ainf NOP or %g0,9,%i3 sub %i3,%l2,%i3 subcc %i3,32,%g0 bcc,a L1 or %g0,0,%l1L1: srl %l1,%i3,%l1 ba A999 or %l1,%i2,%i0i6: sll %l1,1,%l1 srl %l1,9,%l1 sll %l2,23,%l7 or %l1,%l7,%l1 or %l1,%i2,%i0A999: jmpl %i7+8,%g0 restore %g0,0,%g0Apow20: or %g0,0x20,%l7 sub %l7,%i4,%l7 srl %l4,%l7,%l0 or %g0,%l1,%l4 or %g0,%l2,%l5 andcc %l0,1,%l7 bne i7 NOP sethi %hi(0x80000000),%l1 or %g0,0x7f,%l2i7: srl %l0,1,%l0b8: subcc %l0,0,%l0 be i8 NOP sll %l5,1,%l5 sub %l5,0x7e,%l5 umul %l4,%l4,%l4 rd %y,%l4 subcc %l4,0,%l4 ble i9 NOP sll %l4,1,%l4 sub %l5,1,%l5i9: andcc %l0,1,%l7 be i10 NOP sub %l5,0x7e,%l7 add %l2,%l7,%l2 umul %l1,%l4,%l1 rd %y,%l1 subcc %l1,0,%l1 ble i10 NOP sll %l1,1,%l1 sub %l2,1,%l2i10: ba b8 srl %l0,1,%l0i8: subcc %l6,0,%l6 be Aret2 NOP sethi %hi(0x40000000),%l4 or %g0,0xfe,%l7 sub %l7,%l2,%l2 or %g0,%l1,%i5 wr %l4,0,%y or %g0,0x0,%l1 orcc %g0,0,%g0#if 0 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1 divscc %l1,%i5,%l1#else DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25) DIVSCC | (lo1 << 14) | in5 | (lo1 << 25)#endif subcc %l1,0,%l1 ble Aret2 NOP sll %l1,1,%l1 ba Aret2 sub %l2,1,%l2AspecA: subcc %l2,0,%l2 bne i14 NOP addcc %l1,%l1,%l1 be i14 NOP/* scan %l1,0,%i3 */ SCAN | (lo1 << 14) | 0 | (in3 << 25) sll %l1,%i3,%l1 subcc %l2,%i3,%l2 ba,a Alab1 i14: addcc %i1,%i1,%l7 be Anan subcc %l2,0,%l2 bne i16 subcc %l5,0xff,%g0 be Anan subcc %i1,0,%i1 bneg Ainf NOP ba,a Azer i16: addcc %l1,%l1,%l7 bne Anan subcc %l5,0x7f,%g0 bcc Alab1 NOP or %g0,0x7f,%l5 ba Alab1 or %g0,-1,%l4AspecB: add %l4,%l4,%l4 subcc %l5,0,%l5 bne i18 subcc %l4,0,%l4 be Aone subcc %i2,0,%i2 be Aone i18: subcc %l4,0,%l4 bne Anan NOP ba,a Aovr Ainf: sethi %hi(0x7f800000),%l7 ba A999 or %l7,%i2,%i0Anan: ba A999 sethi %hi(0xffc00000),%i0Azer: ba A999 or %g0,%i2,%i0Aone: ba A999 sethi %hi(0x3f800000),%i0Aovr: subcc %i2,0,%i2 bne Anan subcc %i1,0,%i1 bpos i19 subcc %l2,0x7f,%g0 bge Azer NOP ba,a Ainf i19: subcc %l2,0x7f,%g0 bge Ainf NOP ba,a Azer ! .end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -