29 #include "libavutil/attributes.h"
30 #include "libavutil/cpu.h"
31 #include "libavutil/mem.h"
57 register int misal = (
unsigned long) blocks & 0x00000010, i = 0;
60 ((
unsigned long *) blocks)[0] = 0
L;
61 ((
unsigned long *) blocks)[1] = 0
L;
62 ((
unsigned long *) blocks)[2] = 0
L;
63 ((
unsigned long *) blocks)[3] = 0
L;
66 for (; i <
sizeof(int16_t) * 6 * 64 - 31; i += 32)
67 __asm__
volatile (
"dcbz %0,%1" ::
"b" (blocks),
"r" (i) :
"memory");
69 ((
unsigned long *) blocks)[188] = 0
L;
70 ((
unsigned long *) blocks)[189] = 0
L;
71 ((
unsigned long *) blocks)[190] = 0
L;
72 ((
unsigned long *) blocks)[191] = 0
L;
82 register int misal = (
unsigned long) blocks & 0x0000007f, i = 0;
88 memset(blocks, 0,
sizeof(int16_t) * 6 * 64);
90 for (; i <
sizeof(int16_t) * 6 * 64; i += 128)
91 __asm__
volatile (
"dcbzl %0,%1" ::
"b" (blocks),
"r" (i) :
"memory");
94 memset(blocks, 0,
sizeof(int16_t) * 6 * 64);
106 register char *fakedata =
av_malloc(1024);
107 register char *fakedata_middle;
108 register long zero = 0, i = 0;
113 fakedata_middle = fakedata + 512;
115 memset(fakedata, 0xFF, 1024);
119 __asm__
volatile (
"dcbzl %0, %1" ::
"b" (fakedata_middle),
"r" (zero));
121 for (i = 0; i < 1024; i++)
122 if (fakedata[i] == (
char) 0)
132 static void clear_block_altivec(int16_t *
block)
149 if (!high_bit_depth) {
static void clear_blocks_dcbz128_ppc(int16_t *blocks)
void(* clear_block)(int16_t *block)
static void clear_blocks_dcbz32_ppc(int16_t *blocks)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
void av_free(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc(). ...
void(* clear_blocks)(int16_t *blocks)
void * av_malloc(size_t size) av_malloc_attrib 1(1)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
av_cold void ff_blockdsp_init_ppc(BlockDSPContext *c, unsigned high_bit_depth)
static long check_dcbzl_effect(void)
#define PPC_ALTIVEC(flags)