"Ronald S. Bultje" <[email protected]> writes:

> +#define testxmmclobbers(func, ctx, ...)                      \
> +    uint64_t xmm[2][10 * 2];                                 \
> +    int ret;                                                 \
> +    __asm__ volatile(                                        \
> +        "movups %%xmm6 , 0x00(%0)\n\t"                       \
> +        "movups %%xmm7 , 0x10(%0)\n\t"                       \
> +        "movups %%xmm8 , 0x20(%0)\n\t"                       \
> +        "movups %%xmm9 , 0x30(%0)\n\t"                       \
> +        "movups %%xmm10, 0x40(%0)\n\t"                       \
> +        "movups %%xmm11, 0x50(%0)\n\t"                       \
> +        "movups %%xmm12, 0x60(%0)\n\t"                       \
> +        "movups %%xmm13, 0x70(%0)\n\t"                       \
> +        "movups %%xmm14, 0x80(%0)\n\t"                       \
> +        "movups %%xmm15, 0x90(%0)\n\t"                       \
> +        :: "r"(xmm[0]) : "memory");                          \
> +    ret = __real_ ## func(ctx, __VA_ARGS__);                 \
> +    __asm__ volatile(                                        \
> +        "movups %%xmm6 , 0x00(%0)\n\t"                       \
> +        "movups %%xmm7 , 0x10(%0)\n\t"                       \
> +        "movups %%xmm8 , 0x20(%0)\n\t"                       \
> +        "movups %%xmm9 , 0x30(%0)\n\t"                       \
> +        "movups %%xmm10, 0x40(%0)\n\t"                       \
> +        "movups %%xmm11, 0x50(%0)\n\t"                       \
> +        "movups %%xmm12, 0x60(%0)\n\t"                       \
> +        "movups %%xmm13, 0x70(%0)\n\t"                       \
> +        "movups %%xmm14, 0x80(%0)\n\t"                       \
> +        "movups %%xmm15, 0x90(%0)\n\t"                       \
> +        :: "r"(xmm[1]) : "memory");                          \

Come to think of it, these asm statements could be turned into a
twice-called macro.

-- 
Måns Rullgård
[email protected]
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to