URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 207 |
Rev 345 |
.title "H8/500 DIVIDE"
|
.title "H8/500 DIVIDE"
|
!! 2 byte integer Divide code for the H8/500
|
!! 2 byte integer Divide code for the H8/500
|
!!
|
!!
|
!! Steve Chamberlain
|
!! Steve Chamberlain
|
!! sac@cygnus.com
|
!! sac@cygnus.com
|
!!
|
!!
|
!!
|
!!
|
|
|
!! args in r1 and r4, result in r0/r1
|
!! args in r1 and r4, result in r0/r1
|
|
|
#if __CODE__==32
|
#if __CODE__==32
|
#define RET prts
|
#define RET prts
|
#else
|
#else
|
#define RET rts
|
#define RET rts
|
#endif
|
#endif
|
.global __divmodhi4
|
.global __divmodhi4
|
|
|
|
|
__divmodhi4:
|
__divmodhi4:
|
clr.w r0
|
clr.w r0
|
tst.w r1 ! neg arg1
|
tst.w r1 ! neg arg1
|
bpl PU
|
bpl PU
|
|
|
|
|
neg.w r1
|
neg.w r1
|
NU: tst.w r4
|
NU: tst.w r4
|
bmi NN
|
bmi NN
|
|
|
NP: divxu.w r4,r0
|
NP: divxu.w r4,r0
|
neg.w r0
|
neg.w r0
|
neg.w r1
|
neg.w r1
|
RET
|
RET
|
|
|
NN: neg.w r4
|
NN: neg.w r4
|
divxu.w r4,r0
|
divxu.w r4,r0
|
neg.w r0 ! get rem sign right
|
neg.w r0 ! get rem sign right
|
RET
|
RET
|
|
|
|
|
PU:
|
PU:
|
tst.w r4
|
tst.w r4
|
bpl PP
|
bpl PP
|
|
|
|
|
PN: neg.w r4
|
PN: neg.w r4
|
divxu.w r4,r0
|
divxu.w r4,r0
|
neg.w r1
|
neg.w r1
|
RET
|
RET
|
|
|
PP: divxu.w r4,r0 ! rem in r0, q in r1
|
PP: divxu.w r4,r0 ! rem in r0, q in r1
|
RET
|
RET
|
|
|
|
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.