[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCHv5 02/10] add a zero splat vector to qemu-common.
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCHv5 02/10] add a zero splat vector to qemu-common.h |
Date: |
Tue, 26 Mar 2013 11:14:05 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 |
Il 26/03/2013 10:58, Peter Lieven ha scritto:
> Signed-off-by: Peter Lieven <address@hidden>
> ---
> include/qemu-common.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/include/qemu-common.h b/include/qemu-common.h
> index d7ad3a7..9022646 100644
> --- a/include/qemu-common.h
> +++ b/include/qemu-common.h
> @@ -453,6 +453,7 @@ void hexdump(const char *buf, FILE *fp, const char
> *prefix, size_t size);
> #include <altivec.h>
> #define VECTYPE vector unsigned char
> #define SPLAT(p) vec_splat(vec_ld(0, p), 0)
> +#define ZERO_SPLAT vec_splat(vec_ld(0, 0), 0)
> #define ALL_EQ(v1, v2) vec_all_eq(v1, v2)
> /* altivec.h may redefine the bool macro as vector type.
> * Reset it to POSIX semantics. */
> @@ -462,10 +463,12 @@ void hexdump(const char *buf, FILE *fp, const char
> *prefix, size_t size);
> #include <emmintrin.h>
> #define VECTYPE __m128i
> #define SPLAT(p) _mm_set1_epi8(*(p))
> +#define ZERO_SPLAT _mm_setzero_si128()
> #define ALL_EQ(v1, v2) (_mm_movemask_epi8(_mm_cmpeq_epi8(v1, v2)) == 0xFFFF)
> #else
> #define VECTYPE unsigned long
> #define SPLAT(p) (*(p) * (~0UL / 255))
> +#define ZERO_SPLAT 0x0UL
> #define ALL_EQ(v1, v2) ((v1) == (v2))
> #endif
C trivia of the day: this can be written simply as
(VECTYPE) {0}
Yes, it works even with unsigned long. :) It is a C99 compound literal.
Paolo
- [Qemu-devel] [PATCHv5 00/10] buffer_is_zero / migration optimizations, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 04/10] buffer_is_zero: use vector optimizations if possible, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 05/10] bitops: unroll while loop in find_next_bit(), Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 08/10] migration: do not sent zero pages in bulk stage, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 09/10] migration: do not search dirty pages in bulk stage, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 07/10] migration: add an indicator for bulk state of ram migration, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 06/10] migration: search for zero instead of dup pages, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 10/10] migration: use XBZRLE only after bulk stage, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 01/10] move vector definitions to qemu-common.h, Peter Lieven, 2013/03/26
- [Qemu-devel] [PATCHv5 02/10] add a zero splat vector to qemu-common.h, Peter Lieven, 2013/03/26
- Re: [Qemu-devel] [PATCHv5 02/10] add a zero splat vector to qemu-common.h,
Paolo Bonzini <=
[Qemu-devel] [PATCHv5 03/10] cutils: add a function to find non-zero content in a buffer, Peter Lieven, 2013/03/26
Re: [Qemu-devel] [PATCHv5 00/10] buffer_is_zero / migration optimizations, Juan Quintela, 2013/03/26