Fixes and additions
This commit is contained in:
parent
b4c5125c32
commit
4e0a99ef38
|
@ -9,3 +9,4 @@ fef.s
|
|||
nop.s
|
||||
shp.s
|
||||
trp.s
|
||||
cfu.s
|
||||
|
|
62
mach/sparc/libem/cfu.s
Normal file
62
mach/sparc/libem/cfu.s
Normal file
|
@ -0,0 +1,62 @@
|
|||
.global cfu4, cfu8
|
||||
|
||||
.align 8
|
||||
Fdmaxint:
|
||||
.double 0r2147483648
|
||||
Fsmaxint:
|
||||
.single 0r2147483648
|
||||
maxint:
|
||||
.word 0x80000000
|
||||
|
||||
cfu4:
|
||||
ld [%l0], %f0
|
||||
set Fsmaxint, %o0
|
||||
ld [%o0], %f1
|
||||
fcmps %f0, %f1
|
||||
nop
|
||||
fbul 1f
|
||||
nop
|
||||
fsubs %f0, %f1, %f0
|
||||
fstoi %f0, %f1
|
||||
st %f1,[%l0]
|
||||
ld [%l0],%o0
|
||||
set maxint, %o1
|
||||
ld [%o1],%o2
|
||||
add %o0, %o2, %o0
|
||||
ba 2f
|
||||
nop
|
||||
1:
|
||||
fstoi %f0, %f1
|
||||
st %f1,[%l0]
|
||||
ld [%l0],%o0
|
||||
2:
|
||||
inc 4,%l0
|
||||
retl
|
||||
nop
|
||||
|
||||
cfu8:
|
||||
ld [%l0], %f0
|
||||
ld [%l0+4], %f1
|
||||
set Fdmaxint, %o0
|
||||
ldd [%o0], %f2
|
||||
fcmpd %f0, %f2
|
||||
nop
|
||||
fbul 1f
|
||||
nop
|
||||
fsubd %f0, %f2, %f0
|
||||
fdtoi %f0, %f2
|
||||
st %f2,[%l0]
|
||||
ld [%l0],%o0
|
||||
set maxint, %o1
|
||||
ld [%o1],%o2
|
||||
add %o0, %o2, %o0
|
||||
ba 2f
|
||||
nop
|
||||
1:
|
||||
fdtoi %f0, %f2
|
||||
st %f2,[%l0]
|
||||
ld [%l0],%o0
|
||||
2:
|
||||
inc 8,%l0
|
||||
retl
|
||||
nop
|
|
@ -1,5 +1,74 @@
|
|||
.global dvu4
|
||||
.global dvi4
|
||||
.global mathdvi4
|
||||
|
||||
dvi4:
|
||||
! %o0' = %o0 / %o1
|
||||
! %o1' = %o0 % %o1
|
||||
tst %o1
|
||||
be 0f
|
||||
clr %o5
|
||||
tst %o0
|
||||
bge 1f
|
||||
nop
|
||||
neg %o0
|
||||
xor %o5, 1, %o5
|
||||
1:
|
||||
tst %o1
|
||||
bge 3f
|
||||
nop
|
||||
neg %o1
|
||||
xor %o5, 2, %o5
|
||||
|
||||
3: /* div common */
|
||||
clr %o2
|
||||
mov %o1, %o3
|
||||
clr %o4
|
||||
|
||||
4:
|
||||
cmp %o1, %o0
|
||||
bgeu 5f
|
||||
nop
|
||||
inc %o4
|
||||
sll %o1, 1, %o1
|
||||
b 4b
|
||||
nop
|
||||
|
||||
5:
|
||||
sll %o2, 1, %o2
|
||||
subcc %o0, %o1, %o0
|
||||
bgeu 3f
|
||||
nop
|
||||
add %o0, %o1, %o0
|
||||
b 4f
|
||||
nop
|
||||
3:
|
||||
inc %o2
|
||||
4:
|
||||
srl %o1, 1, %o1
|
||||
tst %o4
|
||||
bz 5f
|
||||
nop
|
||||
dec %o4
|
||||
b 5b
|
||||
nop
|
||||
|
||||
5:
|
||||
andcc %o5, 1, %g0
|
||||
bz 6f
|
||||
nop
|
||||
neg %o0
|
||||
neg %o2
|
||||
6:
|
||||
andcc %o5, 2, %g0
|
||||
bz 8f
|
||||
nop
|
||||
neg %o2
|
||||
8:
|
||||
mov %o0, %o1
|
||||
mov %o2, %o0
|
||||
retl
|
||||
nop
|
||||
|
||||
dvu4:
|
||||
! %o0' = %o0 / %o1
|
||||
|
@ -24,9 +93,9 @@ dvu4:
|
|||
nop
|
||||
|
||||
|
||||
dvi4:
|
||||
! %o2 = %o0 / %o1
|
||||
! %o3 = %o0 % %o1
|
||||
mathdvi4:
|
||||
! %o0' = %o0 / %o1
|
||||
! %o1' = %o0 % %o1
|
||||
tst %o1
|
||||
be 0f
|
||||
clr %o5
|
||||
|
@ -49,7 +118,7 @@ dvi4:
|
|||
|
||||
4:
|
||||
cmp %o1, %o0
|
||||
bgu 5f
|
||||
bgeu 5f
|
||||
nop
|
||||
inc %o4
|
||||
sll %o1, 1, %o1
|
||||
|
|
Loading…
Reference in a new issue