32 #define CLEAR_BLOCKS(name, n) \
33 static void name(int16_t *blocks) \
36 "pxor %%mm7, %%mm7 \n\t" \
37 "mov %1, %%"REG_a" \n\t" \
39 "movq %%mm7, (%0, %%"REG_a") \n\t" \
40 "movq %%mm7, 8(%0, %%"REG_a") \n\t" \
41 "movq %%mm7, 16(%0, %%"REG_a") \n\t" \
42 "movq %%mm7, 24(%0, %%"REG_a") \n\t" \
43 "add $32, %%"REG_a" \n\t" \
45 :: "r"(((uint8_t *) blocks) + 128 * n), \
49 CLEAR_BLOCKS(clear_blocks_mmx, 6)
50 CLEAR_BLOCKS(clear_block_mmx, 1)
52 static
void clear_block_sse(int16_t *
block)
55 "xorps %%xmm0, %%xmm0 \n"
56 "movaps %%xmm0, (%0) \n"
57 "movaps %%xmm0, 16(%0) \n"
58 "movaps %%xmm0, 32(%0) \n"
59 "movaps %%xmm0, 48(%0) \n"
60 "movaps %%xmm0, 64(%0) \n"
61 "movaps %%xmm0, 80(%0) \n"
62 "movaps %%xmm0, 96(%0) \n"
63 "movaps %%xmm0, 112(%0) \n"
68 static void clear_blocks_sse(int16_t *blocks)
71 "xorps %%xmm0, %%xmm0 \n"
72 "mov %1, %%"REG_a
" \n"
74 "movaps %%xmm0, (%0, %%"REG_a
") \n"
75 "movaps %%xmm0, 16(%0, %%"REG_a
") \n"
76 "movaps %%xmm0, 32(%0, %%"REG_a
") \n"
77 "movaps %%xmm0, 48(%0, %%"REG_a
") \n"
78 "movaps %%xmm0, 64(%0, %%"REG_a
") \n"
79 "movaps %%xmm0, 80(%0, %%"REG_a
") \n"
80 "movaps %%xmm0, 96(%0, %%"REG_a
") \n"
81 "movaps %%xmm0, 112(%0, %%"REG_a
") \n"
82 "add $128, %%"REG_a
" \n"
84 ::
"r"(((
uint8_t *) blocks) + 128 * 6),
"i"(-128 * 6)
100 if (!high_bit_depth) {
void(* clear_block)(int16_t *block)
void(* clear_blocks)(int16_t *blocks)
Macro definitions for various function/variable attributes.
Libavcodec version macros.
#define INLINE_MMX(flags)
common internal API header
#define INLINE_SSE(flags)
av_cold void ff_blockdsp_init_x86(BlockDSPContext *c, unsigned high_bit_depth)
main external API structure.
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
#define FF_DISABLE_DEPRECATION_WARNINGS
#define FF_ENABLE_DEPRECATION_WARNINGS
#define CONFIG_MPEG_XVMC_DECODER