Added fef,fif and fixes
This commit is contained in:
parent
7a725ce340
commit
cb4e69cba9
|
@ -4,6 +4,8 @@ csb.s
|
|||
dvu.s
|
||||
lar.s
|
||||
muldiv.s
|
||||
fif.s
|
||||
fef.s
|
||||
nop.s
|
||||
shp.s
|
||||
trp.s
|
||||
|
|
27
mach/sparc/libem/fef.s
Normal file
27
mach/sparc/libem/fef.s
Normal file
|
@ -0,0 +1,27 @@
|
|||
.global fef8, Fd0
|
||||
|
||||
fef8:
|
||||
dec 4,%l0
|
||||
ld [%l0+4], %f0
|
||||
ld [%l0+8], %f1
|
||||
set Fd0, %o0
|
||||
ldd [%o0], %f8
|
||||
fcmpd %f0, %f8
|
||||
nop
|
||||
fbne 1f
|
||||
nop
|
||||
st %g0,[%l0]
|
||||
retl
|
||||
nop
|
||||
1: ld [%l0+4],%o0
|
||||
srl %o0, 20, %o1
|
||||
and %o1, 0x7ff, %o1
|
||||
dec 0x3fe, %o1
|
||||
st %o1,[%l0]
|
||||
set 0x7ff00000, %o1
|
||||
andn %o0, %o1, %o0
|
||||
set 0x3fe00000, %o1
|
||||
or %o0, %o1, %o0
|
||||
st %o0,[%l0+4]
|
||||
retl
|
||||
nop
|
67
mach/sparc/libem/fif.s
Normal file
67
mach/sparc/libem/fif.s
Normal file
|
@ -0,0 +1,67 @@
|
|||
.global fif8, Fd0, Fd1, Fd80000000, Fs80000000, Fs0
|
||||
|
||||
.align 8
|
||||
Fd0:
|
||||
.double 0r0
|
||||
Fd1:
|
||||
.double 0r1
|
||||
FxE15:
|
||||
.word 0x43300000, 0x0 ! magic const: (a.b + x) - x == a.0
|
||||
Fd80000000:
|
||||
.align 8
|
||||
.double 0r4294967296
|
||||
Fs80000000:
|
||||
.single 0r2147483648
|
||||
Fs0:
|
||||
.single 0r0
|
||||
|
||||
fif8:
|
||||
ld [%l0], %f0
|
||||
ld [%l0+4], %f1
|
||||
ld [%l0+8], %f2
|
||||
ld [%l0+12], %f3
|
||||
fmuld %f0, %f2, %f0
|
||||
fmovs %f0, %f6
|
||||
fmovs %f1, %f7
|
||||
set Fd0, %o0
|
||||
ldd [%o0], %f8
|
||||
fcmpd %f0, %f8
|
||||
nop
|
||||
fbuge,a 1f
|
||||
mov %g0, %o1
|
||||
set 1, %o1
|
||||
fnegs %f0, %f0
|
||||
1:
|
||||
set FxE15, %o0
|
||||
ldd [%o0], %f10
|
||||
fcmpd %f0, %f10
|
||||
nop
|
||||
fbuge 2f
|
||||
nop
|
||||
faddd %f0, %f10, %f4
|
||||
fsubd %f4, %f10, %f4
|
||||
fsubd %f0, %f4, %f2
|
||||
set Fd1, %o0
|
||||
ldd [%o0], %f12
|
||||
4: fcmpd %f2, %f12
|
||||
nop
|
||||
fbge,a 4b
|
||||
fsubd %f2, %f12, %f2
|
||||
5: fcmpd %f2, %f8
|
||||
nop
|
||||
fbl,a 5b
|
||||
faddd %f2, %f12, %f2
|
||||
fsubd %f0, %f2, %f0
|
||||
2:
|
||||
tst %o1
|
||||
bz 3f
|
||||
nop
|
||||
fnegs %f0, %f0
|
||||
3:
|
||||
fsubd %f6, %f0, %f2
|
||||
st %f0, [%l0]
|
||||
st %f1, [%l0+4]
|
||||
st %f2, [%l0+8]
|
||||
st %f3, [%l0+12]
|
||||
retl
|
||||
nop
|
|
@ -10,11 +10,12 @@ trp:
|
|||
retl
|
||||
nop
|
||||
2:
|
||||
set trppc, %o1
|
||||
ld [%o1], %o1
|
||||
set trppc, %o2
|
||||
ld [%o2], %o1
|
||||
tst %o1
|
||||
bz 1f
|
||||
nop
|
||||
st %g0,[%o2]
|
||||
dec 4, %l0
|
||||
st %o0, [%l0]
|
||||
jmp %o1
|
||||
|
|
Loading…
Reference in a new issue