cutils: add a function to find non-zero content in a buffer
authorPeter Lieven <pl@kamp.de>
Tue, 26 Mar 2013 09:58:32 +0000 (10:58 +0100)
committerJuan Quintela <quintela@redhat.com>
Tue, 26 Mar 2013 12:32:28 +0000 (13:32 +0100)
commit41a259bd2b1796ddabdae600ee539269a7ddb6a5
tree9589401ea053fcdd28086a7f9f8165f4257518cd
parentc61ca00ada744eb24825be2ba4d6ba8fe3a870a4
cutils: add a function to find non-zero content in a buffer

this adds buffer_find_nonzero_offset() which is a SSE2/Altivec
optimized function that searches for non-zero content in a
buffer.

the function starts full unrolling only after the first few chunks have
been checked one by one. analyzing real memory page data has revealed
that non-zero pages are non-zero within the first 256-512 bits in
most cases. as this function is also heavily used to check for zero memory
pages this tweak has been made to avoid the high setup costs of the fully
unrolled check for non-zero pages.

due to the optimizations used in the function there are restrictions
on buffer address and search length. the function
can_use_buffer_find_nonzero_content() can be used to check if
the function can be used safely.

Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Juan Quintela <quintela@redhat.com>
include/qemu-common.h
util/cutils.c