do { \
LOCAL_ALIGNED_16(type, y0, [
BUF_SIZE]); \
LOCAL_ALIGNED_16(type, y1, [
BUF_SIZE]); \
LOCAL_ALIGNED_16(type, u0, [
BUF_SIZE / 2]); \
LOCAL_ALIGNED_16(type, u1, [
BUF_SIZE / 2]); \
LOCAL_ALIGNED_16(type, v1, [
BUF_SIZE / 2]); \
declare_func(
void,
const type * y,
const type *
u,
const type * v, \
ptrdiff_t
width, step = 12 /
sizeof(type);
\ for (width = step; width <
BUF_SIZE - 15; width += step) { \
int y_offset =
rnd() & 15; \
int uv_offset = y_offset / 2; \
randomize_buffers(
mask); \
call_ref(y0 + y_offset, u0 + uv_offset,
v0 + uv_offset, dst0, width); \
call_new(y1 + y_offset, u1 + uv_offset, v1 + uv_offset, dst1, width); \
if (memcmp(y0, y1, BUF_SIZE) || memcmp(u0, u1, BUF_SIZE / 2) || \
memcmp(
v0, v1, BUF_SIZE / 2) || memcmp(dst0, dst1, width * 8 / 3)) \
fail(); \
bench_new(y1 + y_offset, u1 + uv_offset, v1 + uv_offset, dst1, width); \
} \
} while (0)
static const uint16_t mask[17]
#define declare_func(ret,...)