Re: [PATCH RESEND v2 1/2] migration/xbzrle: use ctz64 to avoid undefined result

2023-03-15 Thread Juan Quintela
Matheus Tavares Bernardino  wrote:
> __builtin_ctzll() produces undefined results when the argument is 0.
> This can be seen through test-xbzrle, which produces the following
> warning:
>
> ../migration/xbzrle.c:265: runtime error: passing zero to ctz(), which is not 
> a valid argument
>
> Replace __builtin_ctzll() with our ctz64() wrapper which properly
> handles 0.
>
> Signed-off-by: Matheus Tavares Bernardino 

Reviewed-by: Juan Quintela 

queued.




Re: [PATCH RESEND v2 1/2] migration/xbzrle: use ctz64 to avoid undefined result

2023-03-15 Thread Dr. David Alan Gilbert
* Matheus Tavares Bernardino (quic_mathb...@quicinc.com) wrote:
> __builtin_ctzll() produces undefined results when the argument is 0.
> This can be seen through test-xbzrle, which produces the following
> warning:
> 
> ../migration/xbzrle.c:265: runtime error: passing zero to ctz(), which is not 
> a valid argument
> 
> Replace __builtin_ctzll() with our ctz64() wrapper which properly
> handles 0.
> 
> Signed-off-by: Matheus Tavares Bernardino 

Reviewed-by: Dr. David Alan Gilbert 

> ---
>  migration/xbzrle.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/migration/xbzrle.c b/migration/xbzrle.c
> index 05366e86c0..21b92d4eae 100644
> --- a/migration/xbzrle.c
> +++ b/migration/xbzrle.c
> @@ -12,6 +12,7 @@
>   */
>  #include "qemu/osdep.h"
>  #include "qemu/cutils.h"
> +#include "qemu/host-utils.h"
>  #include "xbzrle.h"
>  
>  /*
> @@ -233,7 +234,7 @@ int xbzrle_encode_buffer_avx512(uint8_t *old_buf, uint8_t 
> *new_buf, int slen,
>  break;
>  }
>  never_same = false;
> -num = __builtin_ctzll(~comp);
> +num = ctz64(~comp);
>  num = (num < bytes_to_check) ? num : bytes_to_check;
>  zrun_len += num;
>  bytes_to_check -= num;
> @@ -262,7 +263,7 @@ int xbzrle_encode_buffer_avx512(uint8_t *old_buf, uint8_t 
> *new_buf, int slen,
>  nzrun_len += 64;
>  break;
>  }
> -num = __builtin_ctzll(comp);
> +num = ctz64(comp);
>  num = (num < bytes_to_check) ? num : bytes_to_check;
>  nzrun_len += num;
>  bytes_to_check -= num;
> -- 
> 2.39.1
> 
-- 
Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK




[PATCH RESEND v2 1/2] migration/xbzrle: use ctz64 to avoid undefined result

2023-03-13 Thread Matheus Tavares Bernardino
__builtin_ctzll() produces undefined results when the argument is 0.
This can be seen through test-xbzrle, which produces the following
warning:

../migration/xbzrle.c:265: runtime error: passing zero to ctz(), which is not a 
valid argument

Replace __builtin_ctzll() with our ctz64() wrapper which properly
handles 0.

Signed-off-by: Matheus Tavares Bernardino 
---
 migration/xbzrle.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/migration/xbzrle.c b/migration/xbzrle.c
index 05366e86c0..21b92d4eae 100644
--- a/migration/xbzrle.c
+++ b/migration/xbzrle.c
@@ -12,6 +12,7 @@
  */
 #include "qemu/osdep.h"
 #include "qemu/cutils.h"
+#include "qemu/host-utils.h"
 #include "xbzrle.h"
 
 /*
@@ -233,7 +234,7 @@ int xbzrle_encode_buffer_avx512(uint8_t *old_buf, uint8_t 
*new_buf, int slen,
 break;
 }
 never_same = false;
-num = __builtin_ctzll(~comp);
+num = ctz64(~comp);
 num = (num < bytes_to_check) ? num : bytes_to_check;
 zrun_len += num;
 bytes_to_check -= num;
@@ -262,7 +263,7 @@ int xbzrle_encode_buffer_avx512(uint8_t *old_buf, uint8_t 
*new_buf, int slen,
 nzrun_len += 64;
 break;
 }
-num = __builtin_ctzll(comp);
+num = ctz64(comp);
 num = (num < bytes_to_check) ? num : bytes_to_check;
 nzrun_len += num;
 bytes_to_check -= num;
-- 
2.39.1