#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.
◆ storeneonregs
#define storeneonregs |
( |
|
mem | ) |
|
Value:
"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")
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
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]))) { \
"NEON REGS CLOBBERED IN %s!\n", #
func); \
for (
i = 0;
i < 8;
i ++) \
if (neon[0][
i] != neon[1][
i]) { \
"d%-2d = %016"PRIx64"\n", \
" -> %016"PRIx64"\n", \
} \
abort(); \
} \
return ret
static uint64_t av_const av_bswap64(uint64_t x)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition at line 42 of file neontest.h.
◆ wrap