FFmpeg
Macros
neontest.h File Reference
#include <inttypes.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include "libavutil/bswap.h"

Go to the source code of this file.

Macros

#define storeneonregs(mem)
 
#define testneonclobbers(func, ctx, ...)
 
#define wrap(func)
 

Macro Definition Documentation

◆ storeneonregs

#define storeneonregs (   mem)
Value:
__asm__ volatile( \
"stp d8, d9, [%0]\n\t" \
"stp d10, d11, [%0, #16]\n\t" \
"stp d12, d13, [%0, #32]\n\t" \
"stp d14, d15, [%0, #48]\n\t" \
:: "r"(mem) : "memory")

Definition at line 34 of file neontest.h.

◆ testneonclobbers

#define testneonclobbers (   func,
  ctx,
  ... 
)
Value:
uint64_t neon[2][8]; \
int ret; \
storeneonregs(neon[0]); \
ret = __real_ ## func(ctx, __VA_ARGS__); \
storeneonregs(neon[1]); \
if (memcmp(neon[0], neon[1], sizeof(neon[0]))) { \
int i; \
av_log(ctx, AV_LOG_ERROR, \
"NEON REGS CLOBBERED IN %s!\n", #func); \
for (i = 0; i < 8; i ++) \
if (neon[0][i] != neon[1][i]) { \
av_log(ctx, AV_LOG_ERROR, \
"d%-2d = %016"PRIx64"\n", \
8 + i, av_bswap64(neon[0][i])); \
av_log(ctx, AV_LOG_ERROR, \
" -> %016"PRIx64"\n", \
av_bswap64(neon[1][i])); \
} \
abort(); \
} \
return ret

Definition at line 42 of file neontest.h.

◆ wrap

#define wrap (   func)
Value:
int __real_ ## func; \
int __wrap_ ## func; \
int __wrap_ ## func
Examples
decode_video.c.

Definition at line 65 of file neontest.h.

func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:67
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
ctx
AVFormatContext * ctx
Definition: movenc.c:48
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
ret
ret
Definition: filter_design.txt:187
av_bswap64
static uint64_t av_const av_bswap64(uint64_t x)
Definition: bswap.h:73