This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "uClibc-ng - small C library for embedded systems".
The branch, 1.0 has been updated via 296327d3f891053c7ab63065e48965fbf6b710f0 (commit) from c9bf93d68431692808acf3c2c527a6b2735fa254 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 296327d3f891053c7ab63065e48965fbf6b710f0 Author: Claudiu Zissulescu claziss@synopsys.com Date: Mon Jul 20 17:12:32 2015 +0300
ARCv2: update memset() so it could be used without double load/stores
Existing version of memset() relies on existence of 64-bit load/stores. While ARC HS38 may not have those instructions implemented in SoC.
Proposed implementation checks if "-mno-ll64" option was passed to gcc (for ARCv2 "-mll64" is set implicitly by default) by checking __LL64__ definition and if it is not defined uses 32-bit load/stores.
Signed-off-by: Claudiu Zissulescu claziss@synopsys.com Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Vineet Gupta vgupta@synopsys.com
-----------------------------------------------------------------------
Summary of changes: libc/string/arc/arcv2/memset.S | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
diff --git a/libc/string/arc/arcv2/memset.S b/libc/string/arc/arcv2/memset.S index d076ad1..0918d37 100644 --- a/libc/string/arc/arcv2/memset.S +++ b/libc/string/arc/arcv2/memset.S @@ -52,6 +52,7 @@ ENTRY(memset) lpnz @.Lset64bytes ;; LOOP START PREWRITE(r3, 64) ;Prefetch the next write location +#ifdef __LL64__ std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] @@ -60,16 +61,45 @@ ENTRY(memset) std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] +#else + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] +#endif .Lset64bytes:
lsr.f lp_count, r2, 5 ;Last remaining max 124 bytes lpnz .Lset32bytes ;; LOOP START prefetchw [r3, 32] ;Prefetch the next write location +#ifdef __LL64__ std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] std.ab r4, [r3, 8] +#else + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] + st.ab r4, [r3, 4] +#endif .Lset32bytes:
and.f lp_count, r2, 0x1F ;Last remaining 31 bytes
hooks/post-receive