projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6c0c0d4
)
lib: vsprintf: optimize division by 10 for small integers
author
George Spelvin
<
[email protected]
>
Fri, 5 Oct 2012 00:12:27 +0000
(17:12 -0700)
committer
Linus Torvalds
<
[email protected]
>
Fri, 5 Oct 2012 18:04:48 +0000
(
03:04
+0900)
Shrink the reciprocal approximations used in put_dec_full4() based on the
comments in put_dec_full9().
Signed-off-by: George Spelvin <
[email protected]
>
Cc: Denys Vlasenko <
[email protected]
>
Cc: Michal Nazarewicz <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
lib/vsprintf.c
patch
|
blob
|
history
diff --git
a/lib/vsprintf.c
b/lib/vsprintf.c
index 0e337541f005d8f29a36434dae555b7477d12164..67e74cbefa9047dc9de24dac7c6ad71520c0d0d1 100644
(file)
--- a/
lib/vsprintf.c
+++ b/
lib/vsprintf.c
@@
-243,13
+243,14
@@
char *put_dec(char *buf, unsigned long long n)
/* Second algorithm: valid only for 64-bit long longs */
+/* See comment in put_dec_full9 for choice of constants */
static noinline_for_stack
char *put_dec_full4(char *buf, unsigned q)
{
unsigned r;
- r = (q * 0xcc
cd) >> 19
;
+ r = (q * 0xcc
d) >> 15
;
*buf++ = (q - 10 * r) + '0';
- q = (r * 0x
199a) >> 16
;
+ q = (r * 0x
cd) >> 11
;
*buf++ = (r - 10 * q) + '0';
r = (q * 0xcd) >> 11;
*buf++ = (q - 10 * r) + '0';