29 static const uint32_t
pixel_mask[] = { 0xffffffff, 0x01ff01ff, 0x03ff03ff, 0x07ff07ff, 0x0fff0fff };
30 static const uint32_t
pixel_mask16[] = { 0x00ff00ff, 0x01ff01ff, 0x03ff03ff, 0x07ff07ff, 0x0fff0fff };
31 static const int sizes[] = { -1, 4, 6, 8, 12, 16, 24, 32, 48, 64 };
32 static const int weights[] = { 0, 128, 255, -1 };
33 static const int denoms[] = {0, 7, 12, -1 };
34 static const int offsets[] = {0, 255, -1 };
36 #define SIZEOF_PIXEL ((bit_depth + 7) / 8)
37 #define BUF_SIZE (2 * MAX_PB_SIZE * (2 * 4 + MAX_PB_SIZE))
39 #define randomize_buffers() \
41 uint32_t mask = pixel_mask[bit_depth - 8]; \
43 for (k = 0; k < BUF_SIZE; k += 4) { \
44 uint32_t r = rnd() & mask; \
45 AV_WN32A(buf0 + k, r); \
46 AV_WN32A(buf1 + k, r); \
48 AV_WN32A(dst0 + k, r); \
49 AV_WN32A(dst1 + k, r); \
53 #define randomize_buffers_ref() \
54 randomize_buffers(); \
56 uint32_t mask = pixel_mask16[bit_depth - 8]; \
58 for (k = 0; k < BUF_SIZE; k += 2) { \
59 uint32_t r = rnd() & mask; \
60 AV_WN32A(ref0 + k, r); \
61 AV_WN32A(ref1 + k, r); \
65 #define src0 (buf0 + 2 * 4 * MAX_PB_SIZE)
66 #define src1 (buf1 + 2 * 4 * MAX_PB_SIZE)
83 for (
i = 0;
i < 2;
i++) {
84 for (j = 0; j < 2; j++) {
87 switch ((j << 1) |
i) {
88 case 0:
type =
"pel_pixels";
break;
89 case 1:
type =
"qpel_h";
break;
90 case 2:
type =
"qpel_v";
break;
91 case 3:
type =
"qpel_hv";
break;
95 int16_t *dstw0 = (int16_t *) dst0, *dstw1 = (int16_t *) dst1;
127 for (
i = 0;
i < 2;
i++) {
128 for (j = 0; j < 2; j++) {
131 switch ((j << 1) |
i) {
132 case 0:
type =
"pel_uni_pixels";
break;
133 case 1:
type =
"qpel_uni_h";
break;
134 case 2:
type =
"qpel_uni_v";
break;
135 case 3:
type =
"qpel_uni_hv";
break;
162 const int *denom, *wx, *ox;
164 int height,
int denom,
int wx,
int ox, intptr_t mx, intptr_t my,
int width);
169 for (
i = 0;
i < 2;
i++) {
170 for (j = 0; j < 2; j++) {
173 switch ((j << 1) |
i) {
174 case 0:
type =
"pel_uni_w_pixels";
break;
175 case 1:
type =
"qpel_uni_w_h";
break;
176 case 2:
type =
"qpel_uni_w_v";
break;
177 case 3:
type =
"qpel_uni_w_hv";
break;
181 for (denom =
denoms; *denom >= 0; denom++) {
182 for (wx =
weights; *wx >= 0; wx++) {
183 for (ox =
offsets; *ox >= 0; ox++) {
185 call_ref(dst0,
sizes[
size] *
SIZEOF_PIXEL,
src0,
sizes[
size] *
SIZEOF_PIXEL,
sizes[
size], *denom, *wx, *ox,
i, j,
sizes[
size]);
186 call_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL,
sizes[
size], *denom, *wx, *ox,
i, j,
sizes[
size]);
189 bench_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL,
sizes[
size], *denom, *wx, *ox,
i, j,
sizes[
size]);
219 for (
i = 0;
i < 2;
i++) {
220 for (j = 0; j < 2; j++) {
223 switch ((j << 1) |
i) {
224 case 0:
type =
"pel_bi_pixels";
break;
225 case 1:
type =
"qpel_bi_h";
break;
226 case 2:
type =
"qpel_bi_v";
break;
227 case 3:
type =
"qpel_bi_hv";
break;
256 const int *denom, *wx, *ox;
259 int height,
int denom,
int wx0,
int wx1,
260 int ox0,
int ox1, intptr_t mx, intptr_t my,
int width);
265 for (
i = 0;
i < 2;
i++) {
266 for (j = 0; j < 2; j++) {
269 switch ((j << 1) |
i) {
270 case 0:
type =
"pel_bi_w_pixels";
break;
271 case 1:
type =
"qpel_bi_w_h";
break;
272 case 2:
type =
"qpel_bi_w_v";
break;
273 case 3:
type =
"qpel_bi_w_hv";
break;
277 for (denom =
denoms; *denom >= 0; denom++) {
278 for (wx =
weights; *wx >= 0; wx++) {
279 for (ox =
offsets; *ox >= 0; ox++) {
281 call_ref(dst0,
sizes[
size] *
SIZEOF_PIXEL,
src0,
sizes[
size] *
SIZEOF_PIXEL, ref0,
sizes[
size], *denom, *wx, *wx, *ox, *ox,
i, j,
sizes[
size]);
282 call_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL, ref1,
sizes[
size], *denom, *wx, *wx, *ox, *ox,
i, j,
sizes[
size]);
285 bench_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL, ref1,
sizes[
size], *denom, *wx, *wx, *ox, *ox,
i, j,
sizes[
size]);
312 for (
i = 0;
i < 2;
i++) {
313 for (j = 0; j < 2; j++) {
316 switch ((j << 1) |
i) {
317 case 0:
type =
"pel_pixels";
break;
318 case 1:
type =
"epel_h";
break;
319 case 2:
type =
"epel_v";
break;
320 case 3:
type =
"epel_hv";
break;
324 int16_t *dstw0 = (int16_t *) dst0, *dstw1 = (int16_t *) dst1;
328 for (row = 0; row <
size[
sizes]; row++) {
356 for (
i = 0;
i < 2;
i++) {
357 for (j = 0; j < 2; j++) {
360 switch ((j << 1) |
i) {
361 case 0:
type =
"pel_uni_pixels";
break;
362 case 1:
type =
"epel_uni_h";
break;
363 case 2:
type =
"epel_uni_v";
break;
364 case 3:
type =
"epel_uni_hv";
break;
391 const int *denom, *wx, *ox;
393 int height,
int denom,
int wx,
int ox, intptr_t mx, intptr_t my,
int width);
398 for (
i = 0;
i < 2;
i++) {
399 for (j = 0; j < 2; j++) {
402 switch ((j << 1) |
i) {
403 case 0:
type =
"pel_uni_w_pixels";
break;
404 case 1:
type =
"epel_uni_w_h";
break;
405 case 2:
type =
"epel_uni_w_v";
break;
406 case 3:
type =
"epel_uni_w_hv";
break;
410 for (denom =
denoms; *denom >= 0; denom++) {
411 for (wx =
weights; *wx >= 0; wx++) {
412 for (ox =
offsets; *ox >= 0; ox++) {
414 call_ref(dst0,
sizes[
size] *
SIZEOF_PIXEL,
src0,
sizes[
size] *
SIZEOF_PIXEL,
sizes[
size], *denom, *wx, *ox,
i, j,
sizes[
size]);
415 call_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL,
sizes[
size], *denom, *wx, *ox,
i, j,
sizes[
size]);
418 bench_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL,
sizes[
size], *denom, *wx, *ox,
i, j,
sizes[
size]);
448 for (
i = 0;
i < 2;
i++) {
449 for (j = 0; j < 2; j++) {
452 switch ((j << 1) |
i) {
453 case 0:
type =
"pel_bi_pixels";
break;
454 case 1:
type =
"epel_bi_h";
break;
455 case 2:
type =
"epel_bi_v";
break;
456 case 3:
type =
"epel_bi_hv";
break;
485 const int *denom, *wx, *ox;
488 int height,
int denom,
int wx0,
int wx1,
489 int ox0,
int ox1, intptr_t mx, intptr_t my,
int width);
494 for (
i = 0;
i < 2;
i++) {
495 for (j = 0; j < 2; j++) {
498 switch ((j << 1) |
i) {
499 case 0:
type =
"pel_bi_w_pixels";
break;
500 case 1:
type =
"epel_bi_w_h";
break;
501 case 2:
type =
"epel_bi_w_v";
break;
502 case 3:
type =
"epel_bi_w_hv";
break;
506 for (denom =
denoms; *denom >= 0; denom++) {
507 for (wx =
weights; *wx >= 0; wx++) {
508 for (ox =
offsets; *ox >= 0; ox++) {
510 call_ref(dst0,
sizes[
size] *
SIZEOF_PIXEL,
src0,
sizes[
size] *
SIZEOF_PIXEL, ref0,
sizes[
size], *denom, *wx, *wx, *ox, *ox,
i, j,
sizes[
size]);
511 call_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL, ref1,
sizes[
size], *denom, *wx, *wx, *ox, *ox,
i, j,
sizes[
size]);
514 bench_new(dst1,
sizes[
size] *
SIZEOF_PIXEL,
src1,
sizes[
size] *
SIZEOF_PIXEL, ref1,
sizes[
size], *denom, *wx, *wx, *ox, *ox,
i, j,
sizes[
size]);