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)
Macro definitions for various function/variable attributes.
Libavcodec version macros.
#define INLINE_MMX(flags)
void(* clear_blocks)(int16_t *blocks)
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