mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
migration/xbzrle: Use i386 host/cpuinfo.h
Perform the function selection once, and only if CONFIG_AVX512_OPT is enabled. Centralize the selection to xbzrle.c, instead of spreading the init across 3 files. Remove xbzrle-bench.c. The benefit of being able to benchmark the different implementations is less important than not peeking into the internals of the implementation. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
1b48d0abdf
commit
7ba7db9fa1
6 changed files with 39 additions and 550 deletions
|
@ -17,8 +17,9 @@
|
|||
|
||||
#if defined(CONFIG_AVX512BW_OPT)
|
||||
#include <immintrin.h>
|
||||
#include "host/cpuinfo.h"
|
||||
|
||||
int __attribute__((target("avx512bw")))
|
||||
static int __attribute__((target("avx512bw")))
|
||||
xbzrle_encode_buffer_avx512(uint8_t *old_buf, uint8_t *new_buf, int slen,
|
||||
uint8_t *dst, int dlen)
|
||||
{
|
||||
|
@ -135,6 +136,29 @@ xbzrle_encode_buffer_avx512(uint8_t *old_buf, uint8_t *new_buf, int slen,
|
|||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
static int xbzrle_encode_buffer_int(uint8_t *old_buf, uint8_t *new_buf,
|
||||
int slen, uint8_t *dst, int dlen);
|
||||
|
||||
static int (*accel_func)(uint8_t *, uint8_t *, int, uint8_t *, int);
|
||||
|
||||
static void __attribute__((constructor)) init_accel(void)
|
||||
{
|
||||
unsigned info = cpuinfo_init();
|
||||
if (info & CPUINFO_AVX512BW) {
|
||||
accel_func = xbzrle_encode_buffer_avx512;
|
||||
} else {
|
||||
accel_func = xbzrle_encode_buffer_int;
|
||||
}
|
||||
}
|
||||
|
||||
int xbzrle_encode_buffer(uint8_t *old_buf, uint8_t *new_buf, int slen,
|
||||
uint8_t *dst, int dlen)
|
||||
{
|
||||
return accel_func(old_buf, new_buf, slen, dst, dlen);
|
||||
}
|
||||
|
||||
#define xbzrle_encode_buffer xbzrle_encode_buffer_int
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue