projects
/
fw
/
sdcc
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
Improvements to float support in printf_fast
[fw/sdcc]
/
device
/
lib
/
_fsrshift.c
1
#define SDCC_FLOAT_LIB
2
#include <float.h>
3
4
5
static void dummy(void) _naked
6
{
7
_asm
8
.globl fs_rshift_a
9
fs_rshift_a:
10
jz 00020$
11
mov r0, a
12
add a, exp_a // adjust exponent
13
jnc 00001$
14
mov a, #255 // don't roll over
15
00001$:
16
mov exp_a, a
17
#ifdef FLOAT_SHIFT_SPEEDUP
18
mov a, r0
19
add a, #248
20
jnc 00003$
21
xch a, r4
22
xch a, r3
23
xch a, r2
24
mov r1, a
25
clr a
26
xch a, r4
27
//mov r1, ar2 // avoid dependence on register bank
28
//mov r2, ar3
29
//mov r3, ar4
30
//mov r4, #0
31
add a, #248
32
jnc 00003$
33
xch a, r3
34
xch a, r2
35
mov r1, a
36
clr a
37
xch a, r3
38
//mov r1, ar2
39
//mov r2, ar3
40
//mov r3, #0
41
add a, #248
42
jnc 00003$
43
xch a, r2
44
mov r1, a
45
clr a
46
xch a, r2
47
//mov r1, ar2
48
//mov r2, #0
49
add a, #248
50
jnc 00003$
51
mov r1, #0
52
ret
53
00003$:
54
add a, #8
55
jz 00020$
56
mov r0, a
57
#endif
58
00005$:
59
clr c
60
mov a, r4
61
rrc a
62
mov r4, a
63
mov a, r3
64
rrc a
65
mov r3, a
66
mov a, r2
67
rrc a
68
mov r2, a
69
mov a, r1
70
rrc a
71
mov r1, a
72
djnz r0, 00005$
73
00020$:
74
ret
75
_endasm;
76
}
77