Go to the source code of this file.
|
#define | OP(LOAD, STORE) |
|
#define | OP_X2(LOAD, STORE) |
|
#define | OP_Y2(LOAD, STORE) |
|
#define | OP_XY2(LOAD, STORE) |
|
#define | MAKE_OP(OPNAME, SUFF, OPKIND, STORE) |
|
#define | PIXOP(OPNAME, STORE) |
|
#define | AVG2 avg2 |
|
#define | AVG4 avg4 |
|
#define | AVG4_ROUNDER BYTE_VEC(0x02) |
|
#define | STORE(l, b) stq(l, b) |
|
#define | STORE(l, b) stq(AVG2(l, ldq(b)), b); |
|
#define | AVG2 avg2_no_rnd |
|
#define | AVG4 avg4_no_rnd |
|
#define | AVG4_ROUNDER BYTE_VEC(0x01) |
|
#define | STORE(l, b) stq(l, b) |
|
#define | STORE(l, b) stq(AVG2(l, ldq(b)), b); |
|
|
static uint64_t | avg2_no_rnd (uint64_t a, uint64_t b) |
|
static uint64_t | avg2 (uint64_t a, uint64_t b) |
|
| PIXOP (put, STORE) |
|
| PIXOP (avg, STORE) |
|
| PIXOP (put_no_rnd, STORE) |
|
| PIXOP (avg_no_rnd, STORE) |
|
static void | put_pixels16_axp_asm (uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h) |
|
av_cold void | ff_hpeldsp_init_alpha (HpelDSPContext *c, int flags) |
|
◆ OP
Value: do { \
pixels += line_size; \
block += line_size; \
Definition at line 55 of file hpeldsp_alpha.c.
◆ OP_X2
Value: do { \
uint64_t pix1, pix2; \
\
pix2 = pix1 >> 8 | ((uint64_t) pixels[8] << 56); \
pixels += line_size; \
block += line_size; \
Definition at line 62 of file hpeldsp_alpha.c.
◆ OP_Y2
Value: do { \
uint64_t pix =
LOAD(pixels); \
do { \
uint64_t next_pix; \
\
pixels += line_size; \
next_pix =
LOAD(pixels); \
block += line_size; \
pix = next_pix; \
} while (0)
Definition at line 73 of file hpeldsp_alpha.c.
◆ OP_XY2
Value: do { \
uint64_t pix1 =
LOAD(pixels); \
uint64_t pix2 = pix1 >> 8 | ((uint64_t) pixels[8] << 56); \
uint64_t pix_l = (pix1 &
BYTE_VEC(0x03)) \
uint64_t pix_h = ((pix1 & ~
BYTE_VEC(0x03)) >> 2) \
\
do { \
uint64_t npix1, npix2; \
uint64_t npix_l, npix_h; \
\
pixels += line_size; \
npix2 = npix1 >> 8 | ((uint64_t) pixels[8] << 56); \
npix_h = ((npix1 & ~
BYTE_VEC(0x03)) >> 2) \
+ pix_h + npix_h; \
\
block += line_size; \
pix_l = npix_l; \
pix_h = npix_h; \
} while (0)
Definition at line 87 of file hpeldsp_alpha.c.
◆ MAKE_OP
#define MAKE_OP |
( |
|
OPNAME, |
|
|
|
SUFF, |
|
|
|
OPKIND, |
|
|
|
STORE |
|
) |
| |
Value:static void OPNAME ## _pixels ## SUFF ## _axp \
(uint8_t *restrict
block,
const uint8_t *restrict pixels, \
ptrdiff_t line_size,
int h) \
{ \
if ((size_t) pixels & 0x7) { \
} else { \
} \
} \
\
static void OPNAME ## _pixels16 ## SUFF ## _axp \
(uint8_t *restrict
block,
const uint8_t *restrict pixels, \
ptrdiff_t line_size,
int h) \
{ \
OPNAME ## _pixels ## SUFF ## _axp(
block, pixels, line_size,
h); \
OPNAME ## _pixels ## SUFF ## _axp(
block + 8, pixels + 8, line_size,
h); \
}
Definition at line 118 of file hpeldsp_alpha.c.
◆ PIXOP
#define PIXOP |
( |
|
OPNAME, |
|
|
|
STORE |
|
) |
| |
◆ AVG2 [1/2]
◆ AVG4 [1/2]
◆ AVG4_ROUNDER [1/2]
◆ STORE [1/4]
#define STORE |
( |
|
l, |
|
|
|
b |
|
) |
| stq(l, b) |
◆ STORE [2/4]
◆ AVG2 [2/2]
◆ AVG4 [2/2]
◆ AVG4_ROUNDER [2/2]
◆ STORE [3/4]
#define STORE |
( |
|
l, |
|
|
|
b |
|
) |
| stq(l, b) |
◆ STORE [4/4]
◆ avg2_no_rnd()
static uint64_t avg2_no_rnd |
( |
uint64_t |
a, |
|
|
uint64_t |
b |
|
) |
| |
|
inlinestatic |
◆ avg2()
static uint64_t avg2 |
( |
uint64_t |
a, |
|
|
uint64_t |
b |
|
) |
| |
|
inlinestatic |
◆ PIXOP() [1/4]
◆ PIXOP() [2/4]
◆ PIXOP() [3/4]
PIXOP |
( |
put_no_rnd |
, |
|
|
STORE |
|
|
) |
| |
◆ PIXOP() [4/4]
PIXOP |
( |
avg_no_rnd |
, |
|
|
STORE |
|
|
) |
| |
◆ put_pixels16_axp_asm()
static void put_pixels16_axp_asm |
( |
uint8_t * |
block, |
|
|
const uint8_t * |
pixels, |
|
|
ptrdiff_t |
line_size, |
|
|
int |
h |
|
) |
| |
|
static |
◆ ff_hpeldsp_init_alpha()