Coverage Report

Created: 2026-07-15 07:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ffmpeg/libswscale/uops_tmpl.h
Line
Count
Source
1
/**
2
 * Copyright (C) 2026 Niklas Haas
3
 *
4
 * This file is part of FFmpeg.
5
 *
6
 * FFmpeg is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * FFmpeg is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with FFmpeg; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20
21
#ifndef SWSCALE_UOPS_TMPL_H
22
#define SWSCALE_UOPS_TMPL_H
23
24
/**
25
 * Helper macros for the C-based backend.
26
 *
27
 * To use these macros, `pixel_t` should be defined as the type of pixels.
28
 */
29
30
#include <assert.h>
31
#include <float.h>
32
#include <stdint.h>
33
34
#include "libavutil/attributes.h"
35
36
#include "ops_chain.h"
37
#include "uops_macros.h"
38
39
#ifndef SWS_BLOCK_SIZE
40
0
#  define SWS_BLOCK_SIZE 32
41
#endif
42
43
typedef union block_t {
44
    uint8_t   u8[SWS_BLOCK_SIZE];
45
    uint16_t u16[SWS_BLOCK_SIZE];
46
    uint32_t u32[SWS_BLOCK_SIZE];
47
    float    f32[SWS_BLOCK_SIZE];
48
} block_t;
49
50
0
#define SIZEOF_BLOCK (sizeof(pixel_t) * SWS_BLOCK_SIZE)
51
52
/**
53
 * Internal context holding per-iter execution data. The data pointers will be
54
 * directly incremented by the corresponding read/write functions.
55
 */
56
typedef struct SwsOpIter {
57
    uintptr_t in[4];
58
    uintptr_t out[4];
59
    int x, y;
60
61
    /* Link back to per-slice execution context */
62
    const SwsOpExec *exec;
63
} SwsOpIter;
64
65
#ifdef __clang__
66
0
#  define SWS_LOOP AV_PRAGMA(clang loop vectorize(assume_safety))
67
#elif defined(__GNUC__)
68
#  define SWS_LOOP AV_PRAGMA(GCC ivdep)
69
#else
70
#  define SWS_LOOP
71
#endif
72
73
/* Miscellaneous helpers */
74
0
#define bitfn2(name, ext) name ## _ ## ext
75
0
#define bitfn(name, ext)  bitfn2(name, ext)
76
0
#define fn(name)          bitfn(name, PX)
77
78
0
#define bump_ptr(ptr, bump) ((pixel_t *) ((uintptr_t) (ptr) + (bump)))
79
80
/* Helpers for dealing with component masks */
81
0
#define X SWS_COMP_TEST(mask, 0)
82
0
#define Y SWS_COMP_TEST(mask, 1)
83
0
#define Z SWS_COMP_TEST(mask, 2)
84
0
#define W SWS_COMP_TEST(mask, 3)
85
86
/* Helper macros to make writing common function signatures less painful */
87
#define DECL_FUNC(NAME, ...)                                                    \
88
    av_always_inline static void                                                \
89
        fn(NAME)(SwsOpIter *restrict iter, const SwsOpImpl *restrict impl,      \
90
                 pixel_t *restrict x, pixel_t *restrict y,                      \
91
                 pixel_t *restrict z, pixel_t *restrict w,                      \
92
                 __VA_ARGS__)
93
94
#define DECL_READ(NAME, ...)                                                    \
95
    DECL_FUNC(NAME, __VA_ARGS__,                                                \
96
              const pixel_t *restrict in0, const pixel_t *restrict in1,         \
97
              const pixel_t *restrict in2, const pixel_t *restrict in3)         \
98
99
#define DECL_WRITE(NAME, ...)                                                   \
100
    DECL_FUNC(NAME, __VA_ARGS__,                                                \
101
              pixel_t *restrict out0, pixel_t *restrict out1,                   \
102
              pixel_t *restrict out2, pixel_t *restrict out3)                   \
103
104
0
#define CALL(NAME, ...) fn(NAME)(iter, impl, x, y, z, w, __VA_ARGS__)
105
106
/* Helper macro to call into the next continuation with a given type */
107
#define CONTINUE(...)                                                           \
108
0
    ((void (*)(SwsOpIter *, const SwsOpImpl *,                                  \
109
0
               void *restrict x, void *restrict y,                              \
110
0
               void *restrict z, void *restrict w)) impl->cont)                 \
111
0
        (iter, &impl[1], __VA_ARGS__)
112
113
/* Helper macros for common op setup code */
114
#define DECL_SETUP(NAME, PARAMS, OUT)                                           \
115
    av_unused static int fn(NAME)(const SwsImplParams *PARAMS,                  \
116
                                  SwsImplResult *OUT)
117
118
/* Helper macro for declaring kernel entry points */
119
#define DECL_IMPL(FUNC, NAME, TYPE, UOP, ...)                                   \
120
    av_flatten static void NAME##_c(SwsOpIter *restrict iter,                   \
121
                                    const SwsOpImpl *restrict impl,             \
122
                                    void *restrict x, void *restrict y,         \
123
                                    void *restrict z, void *restrict w)         \
124
0
    {                                                                           \
125
0
        CALL(FUNC, __VA_ARGS__);                                                \
126
0
    }
Unexecuted instantiation: uops_backend.c:u8_read_planar_x_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_xy_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_xyz_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fv_x_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fv_xy_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fv_xyz_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fv_xyzw_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fh_x_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fh_xy_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fh_xyz_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_planar_fh_xyzw_f32_c
Unexecuted instantiation: uops_backend.c:u8_read_packed_xy_c
Unexecuted instantiation: uops_backend.c:u8_read_packed_xyz_c
Unexecuted instantiation: uops_backend.c:u8_read_packed_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_read_nibble_x_c
Unexecuted instantiation: uops_backend.c:u8_read_bit_x_c
Unexecuted instantiation: uops_backend.c:u8_read_palette_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_permute_xy_xy_zw_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyz_x_w_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyz_y_w_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyz_xy_yw_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyz_yx_xw_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyz_xyz_yzw_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyz_xtyz_wyzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyw_x_z_c
Unexecuted instantiation: uops_backend.c:u8_permute_xzw_x_y_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_y_x_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_z_x_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_w_x_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_wz_zx_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_wyz_yzx_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_wzy_zyx_c
Unexecuted instantiation: uops_backend.c:u8_permute_yzw_wtyz_xyzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txy_xyt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txz_xzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_tyz_yzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_tyw_ywt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txyz_xyzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txzy_xzyt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txzw_xzwt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txwz_xwzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_tyzw_yzwt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txyzw_xyzwt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txwyz_xwyzt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txwzy_xwzyt_c
Unexecuted instantiation: uops_backend.c:u8_permute_xyzw_txwtyz_xwtyzt_c
Unexecuted instantiation: uops_backend.c:u8_copy_yzw_yzw_xxx_c
Unexecuted instantiation: uops_backend.c:u8_copy_xyzw_yz_xx_c
Unexecuted instantiation: uops_backend.c:u8_copy_xyzw_zwy_xyx_c
Unexecuted instantiation: uops_backend.c:u8_copy_xyzw_zxyw_xyzz_c
Unexecuted instantiation: uops_backend.c:u8_write_planar_x_c
Unexecuted instantiation: uops_backend.c:u8_write_planar_xy_c
Unexecuted instantiation: uops_backend.c:u8_write_planar_xyz_c
Unexecuted instantiation: uops_backend.c:u8_write_planar_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_write_packed_xy_c
Unexecuted instantiation: uops_backend.c:u8_write_packed_xyz_c
Unexecuted instantiation: uops_backend.c:u8_write_packed_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_write_nibble_x_c
Unexecuted instantiation: uops_backend.c:u8_write_bit_x_c
Unexecuted instantiation: uops_backend.c:u8_expand_bit_x_c
Unexecuted instantiation: uops_backend.c:u8_expand_pair_x_c
Unexecuted instantiation: uops_backend.c:u8_expand_pair_xy_c
Unexecuted instantiation: uops_backend.c:u8_expand_pair_xyz_c
Unexecuted instantiation: uops_backend.c:u8_expand_pair_yzw_c
Unexecuted instantiation: uops_backend.c:u8_expand_pair_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_to_u16_x_c
Unexecuted instantiation: uops_backend.c:u8_to_u16_xyz_c
Unexecuted instantiation: uops_backend.c:u8_to_u16_yzw_c
Unexecuted instantiation: uops_backend.c:u8_to_u32_x_c
Unexecuted instantiation: uops_backend.c:u8_to_u32_xyz_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_x_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_y_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_xy_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_z_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_xyz_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_yw_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_zw_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_yzw_c
Unexecuted instantiation: uops_backend.c:u8_to_f32_xyzw_c
Unexecuted instantiation: uops_backend.c:u8_scale_xyz_c
Unexecuted instantiation: uops_backend.c:u8_unpack_xyz_121_c
Unexecuted instantiation: uops_backend.c:u8_unpack_xyz_233_c
Unexecuted instantiation: uops_backend.c:u8_unpack_xyz_332_c
Unexecuted instantiation: uops_backend.c:u8_pack_xyz_121_c
Unexecuted instantiation: uops_backend.c:u8_pack_xyz_233_c
Unexecuted instantiation: uops_backend.c:u8_pack_xyz_332_c
Unexecuted instantiation: uops_backend.c:u8_clear_x_0_c
Unexecuted instantiation: uops_backend.c:u8_clear_x_1_c
Unexecuted instantiation: uops_backend.c:u8_clear_y_1_c
Unexecuted instantiation: uops_backend.c:u8_clear_xy_xx_c
Unexecuted instantiation: uops_backend.c:u8_clear_xz_xx_c
Unexecuted instantiation: uops_backend.c:u8_clear_yz_xx_c
Unexecuted instantiation: uops_backend.c:u8_clear_xyz_1xx_c
Unexecuted instantiation: uops_backend.c:u8_clear_w_0_c
Unexecuted instantiation: uops_backend.c:u8_clear_w_1_c
Unexecuted instantiation: uops_backend.c:u8_clear_xyw_xx0_c
Unexecuted instantiation: uops_backend.c:u8_clear_xyw_xx1_c
Unexecuted instantiation: uops_backend.c:u8_clear_zw_xx_c
Unexecuted instantiation: uops_backend.c:u8_clear_xzw_1xx_c
Unexecuted instantiation: uops_backend.c:u8_clear_xzw_xx1_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_x_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_xy_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_xyz_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_xyzw_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fv_x_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fv_xy_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fv_xyz_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fv_xyzw_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fh_x_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fh_xy_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fh_xyz_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_planar_fh_xyzw_f32_c
Unexecuted instantiation: uops_backend.c:u16_read_packed_xy_c
Unexecuted instantiation: uops_backend.c:u16_read_packed_xyz_c
Unexecuted instantiation: uops_backend.c:u16_read_packed_xyzw_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyz_x_w_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyz_y_w_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyz_xz_zw_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyz_yx_xw_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyz_xyz_yzw_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyz_xtyz_wyzt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyw_x_z_c
Unexecuted instantiation: uops_backend.c:u16_permute_xzw_x_y_c
Unexecuted instantiation: uops_backend.c:u16_permute_yzw_y_x_c
Unexecuted instantiation: uops_backend.c:u16_permute_yzw_w_x_c
Unexecuted instantiation: uops_backend.c:u16_permute_yzw_wz_zx_c
Unexecuted instantiation: uops_backend.c:u16_permute_yzw_wzy_zyx_c
Unexecuted instantiation: uops_backend.c:u16_permute_yzw_wtyz_xyzt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txy_xyt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txz_xzt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txyz_xyzt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txzy_xzyt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_tyzw_yzwt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txyzw_xyzwt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txwzy_xwzyt_c
Unexecuted instantiation: uops_backend.c:u16_permute_xyzw_txwtyz_xwtyzt_c
Unexecuted instantiation: uops_backend.c:u16_copy_xyzw_yz_xx_c
Unexecuted instantiation: uops_backend.c:u16_copy_xyzw_zwy_xyx_c
Unexecuted instantiation: uops_backend.c:u16_write_planar_x_c
Unexecuted instantiation: uops_backend.c:u16_write_planar_xy_c
Unexecuted instantiation: uops_backend.c:u16_write_planar_xyz_c
Unexecuted instantiation: uops_backend.c:u16_write_planar_xyzw_c
Unexecuted instantiation: uops_backend.c:u16_write_packed_xy_c
Unexecuted instantiation: uops_backend.c:u16_write_packed_xyz_c
Unexecuted instantiation: uops_backend.c:u16_write_packed_xyzw_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_x_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_y_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_xy_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_xyz_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_xw_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_yzw_c
Unexecuted instantiation: uops_backend.c:u16_swap_bytes_xyzw_c
Unexecuted instantiation: uops_backend.c:u16_expand_bit_x_c
Unexecuted instantiation: uops_backend.c:u16_to_u8_xyz_c
Unexecuted instantiation: uops_backend.c:u16_to_u32_x_c
Unexecuted instantiation: uops_backend.c:u16_to_u32_xyz_c
Unexecuted instantiation: uops_backend.c:u16_to_f32_x_c
Unexecuted instantiation: uops_backend.c:u16_to_f32_y_c
Unexecuted instantiation: uops_backend.c:u16_to_f32_xy_c
Unexecuted instantiation: uops_backend.c:u16_to_f32_xyz_c
Unexecuted instantiation: uops_backend.c:u16_to_f32_yzw_c
Unexecuted instantiation: uops_backend.c:u16_to_f32_xyzw_c
Unexecuted instantiation: uops_backend.c:u16_scale_x_c
Unexecuted instantiation: uops_backend.c:u16_scale_xyz_c
Unexecuted instantiation: uops_backend.c:u16_unpack_xyz_444_c
Unexecuted instantiation: uops_backend.c:u16_unpack_xyz_555_c
Unexecuted instantiation: uops_backend.c:u16_unpack_xyz_565_c
Unexecuted instantiation: uops_backend.c:u16_pack_xyz_444_c
Unexecuted instantiation: uops_backend.c:u16_pack_xyz_555_c
Unexecuted instantiation: uops_backend.c:u16_pack_xyz_565_c
Unexecuted instantiation: uops_backend.c:u16_lshift_x_4_c
Unexecuted instantiation: uops_backend.c:u16_lshift_x_6_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_1_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_2_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_3_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_4_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_5_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_6_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_7_c
Unexecuted instantiation: uops_backend.c:u16_lshift_xyz_8_c
Unexecuted instantiation: uops_backend.c:u16_lshift_yzw_1_c
Unexecuted instantiation: uops_backend.c:u16_lshift_yzw_2_c
Unexecuted instantiation: uops_backend.c:u16_lshift_yzw_4_c
Unexecuted instantiation: uops_backend.c:u16_lshift_yzw_6_c
Unexecuted instantiation: uops_backend.c:u16_lshift_yzw_8_c
Unexecuted instantiation: uops_backend.c:u16_rshift_x_4_c
Unexecuted instantiation: uops_backend.c:u16_rshift_x_6_c
Unexecuted instantiation: uops_backend.c:u16_rshift_y_4_c
Unexecuted instantiation: uops_backend.c:u16_rshift_xyz_4_c
Unexecuted instantiation: uops_backend.c:u16_rshift_xyz_6_c
Unexecuted instantiation: uops_backend.c:u16_clear_x_x_c
Unexecuted instantiation: uops_backend.c:u16_clear_x_1_c
Unexecuted instantiation: uops_backend.c:u16_clear_y_1_c
Unexecuted instantiation: uops_backend.c:u16_clear_xy_xx_c
Unexecuted instantiation: uops_backend.c:u16_clear_xyz_xxx_c
Unexecuted instantiation: uops_backend.c:u16_clear_xyz_1xx_c
Unexecuted instantiation: uops_backend.c:u16_clear_w_x_c
Unexecuted instantiation: uops_backend.c:u16_clear_w_0_c
Unexecuted instantiation: uops_backend.c:u16_clear_w_1_c
Unexecuted instantiation: uops_backend.c:u16_clear_zw_xx_c
Unexecuted instantiation: uops_backend.c:u16_clear_xzw_xx0_c
Unexecuted instantiation: uops_backend.c:u16_clear_xzw_1xx_c
Unexecuted instantiation: uops_backend.c:u32_read_planar_x_c
Unexecuted instantiation: uops_backend.c:u32_read_planar_xyz_c
Unexecuted instantiation: uops_backend.c:u32_read_planar_xyzw_c
Unexecuted instantiation: uops_backend.c:u32_read_packed_xy_c
Unexecuted instantiation: uops_backend.c:u32_read_packed_xyz_c
Unexecuted instantiation: uops_backend.c:u32_read_packed_xyzw_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_x_w_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_y_w_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_xz_zw_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_zx_xw_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_xyz_yzw_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_xzy_zyw_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyz_xtyz_wyzt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyw_x_z_c
Unexecuted instantiation: uops_backend.c:u32_permute_xzw_x_y_c
Unexecuted instantiation: uops_backend.c:u32_permute_xzw_w_y_c
Unexecuted instantiation: uops_backend.c:u32_permute_xzw_wx_xy_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_y_x_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_z_x_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_w_x_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_wy_yx_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_wz_zx_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_wyz_yzx_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_wzy_zyx_c
Unexecuted instantiation: uops_backend.c:u32_permute_yzw_wtyz_xyzt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txy_xyt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txz_xzt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_tyz_yzt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_tyw_ywt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txyz_xyzt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txzy_xzyt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txyzw_xyzwt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txwyz_xwyzt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txwzy_xwzyt_c
Unexecuted instantiation: uops_backend.c:u32_permute_xyzw_txwtyz_xwtyzt_c
Unexecuted instantiation: uops_backend.c:u32_copy_yzw_yzw_xxx_c
Unexecuted instantiation: uops_backend.c:u32_copy_xyzw_yz_xx_c
Unexecuted instantiation: uops_backend.c:u32_copy_xyzw_zwy_xyx_c
Unexecuted instantiation: uops_backend.c:u32_write_planar_x_c
Unexecuted instantiation: uops_backend.c:u32_write_planar_xy_c
Unexecuted instantiation: uops_backend.c:u32_write_planar_xyz_c
Unexecuted instantiation: uops_backend.c:u32_write_planar_xyzw_c
Unexecuted instantiation: uops_backend.c:u32_write_packed_xy_c
Unexecuted instantiation: uops_backend.c:u32_write_packed_xyz_c
Unexecuted instantiation: uops_backend.c:u32_write_packed_xyzw_c
Unexecuted instantiation: uops_backend.c:u32_swap_bytes_x_c
Unexecuted instantiation: uops_backend.c:u32_swap_bytes_xy_c
Unexecuted instantiation: uops_backend.c:u32_swap_bytes_xyz_c
Unexecuted instantiation: uops_backend.c:u32_swap_bytes_xw_c
Unexecuted instantiation: uops_backend.c:u32_swap_bytes_yzw_c
Unexecuted instantiation: uops_backend.c:u32_swap_bytes_xyzw_c
Unexecuted instantiation: uops_backend.c:u32_to_u16_y_c
Unexecuted instantiation: uops_backend.c:u32_to_u16_z_c
Unexecuted instantiation: uops_backend.c:u32_to_u16_xyz_c
Unexecuted instantiation: uops_backend.c:u32_to_u16_yzw_c
Unexecuted instantiation: uops_backend.c:u32_to_f32_y_c
Unexecuted instantiation: uops_backend.c:u32_to_f32_z_c
Unexecuted instantiation: uops_backend.c:u32_to_f32_xyz_c
Unexecuted instantiation: uops_backend.c:u32_to_f32_yzw_c
Unexecuted instantiation: uops_backend.c:u32_scale_x_c
Unexecuted instantiation: uops_backend.c:u32_scale_xyz_c
Unexecuted instantiation: uops_backend.c:u32_unpack_xyzw_2aaa_c
Unexecuted instantiation: uops_backend.c:u32_unpack_xyzw_aaa2_c
Unexecuted instantiation: uops_backend.c:u32_pack_xyzw_2aaa_c
Unexecuted instantiation: uops_backend.c:u32_pack_xyzw_aaa2_c
Unexecuted instantiation: uops_backend.c:u32_lshift_xyz_2_c
Unexecuted instantiation: uops_backend.c:u32_clear_x_x_c
Unexecuted instantiation: uops_backend.c:u32_clear_y_x_c
Unexecuted instantiation: uops_backend.c:u32_clear_xz_xx_c
Unexecuted instantiation: uops_backend.c:u32_clear_w_x_c
Unexecuted instantiation: uops_backend.c:u32_clear_yw_xx_c
Unexecuted instantiation: uops_backend.c:u32_clear_xyw_xxx_c
Unexecuted instantiation: uops_backend.c:u32_clear_xzw_xxx_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fv_x_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fv_xy_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fv_xyz_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fv_xyzw_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fh_x_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fh_xy_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fh_xyz_f32_c
Unexecuted instantiation: uops_backend.c:f32_read_planar_fh_xyzw_f32_c
Unexecuted instantiation: uops_backend.c:f32_to_u8_x_c
Unexecuted instantiation: uops_backend.c:f32_to_u8_xy_c
Unexecuted instantiation: uops_backend.c:f32_to_u8_xyz_c
Unexecuted instantiation: uops_backend.c:f32_to_u8_xw_c
Unexecuted instantiation: uops_backend.c:f32_to_u8_yzw_c
Unexecuted instantiation: uops_backend.c:f32_to_u8_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_to_u16_x_c
Unexecuted instantiation: uops_backend.c:f32_to_u16_xy_c
Unexecuted instantiation: uops_backend.c:f32_to_u16_xyz_c
Unexecuted instantiation: uops_backend.c:f32_to_u16_xw_c
Unexecuted instantiation: uops_backend.c:f32_to_u16_yzw_c
Unexecuted instantiation: uops_backend.c:f32_to_u16_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_to_u32_x_c
Unexecuted instantiation: uops_backend.c:f32_to_u32_xyz_c
Unexecuted instantiation: uops_backend.c:f32_to_u32_xw_c
Unexecuted instantiation: uops_backend.c:f32_to_u32_yzw_c
Unexecuted instantiation: uops_backend.c:f32_to_u32_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_scale_x_c
Unexecuted instantiation: uops_backend.c:f32_scale_xy_c
Unexecuted instantiation: uops_backend.c:f32_scale_xyz_c
Unexecuted instantiation: uops_backend.c:f32_scale_yzw_c
Unexecuted instantiation: uops_backend.c:f32_scale_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_add_x_c
Unexecuted instantiation: uops_backend.c:f32_add_xy_c
Unexecuted instantiation: uops_backend.c:f32_add_xz_c
Unexecuted instantiation: uops_backend.c:f32_add_xyz_c
Unexecuted instantiation: uops_backend.c:f32_add_w_c
Unexecuted instantiation: uops_backend.c:f32_add_xw_c
Unexecuted instantiation: uops_backend.c:f32_add_yzw_c
Unexecuted instantiation: uops_backend.c:f32_add_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_min_x_c
Unexecuted instantiation: uops_backend.c:f32_min_xy_c
Unexecuted instantiation: uops_backend.c:f32_min_xyz_c
Unexecuted instantiation: uops_backend.c:f32_min_xw_c
Unexecuted instantiation: uops_backend.c:f32_min_yzw_c
Unexecuted instantiation: uops_backend.c:f32_min_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_max_x_c
Unexecuted instantiation: uops_backend.c:f32_max_xy_c
Unexecuted instantiation: uops_backend.c:f32_max_xyz_c
Unexecuted instantiation: uops_backend.c:f32_max_xw_c
Unexecuted instantiation: uops_backend.c:f32_max_xyzw_c
Unexecuted instantiation: uops_backend.c:f32_linear_x_xxx0x_c
Unexecuted instantiation: uops_backend.c:f32_linear_x_x000x_c
Unexecuted instantiation: uops_backend.c:f32_linear_x_xxx00_c
Unexecuted instantiation: uops_backend.c:f32_linear_y_0x000_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyz_xxx0x_xxx0x_xxx0x_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyz_x0x0x_xxx0x_xx00x_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyz_xxx00_xxx0x_xxx0x_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyz_x000x_0x00x_00x0x_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyz_x0000_0x000_00x00_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyz_10x0x_1xx0x_1x00x_c
Unexecuted instantiation: uops_backend.c:f32_linear_w_000x0_c
Unexecuted instantiation: uops_backend.c:f32_linear_xw_x000x_000x0_c
Unexecuted instantiation: uops_backend.c:f32_linear_xw_xxx00_000x0_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyzw_xxx0x_xxx0x_xxx0x_000x0_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyzw_x0x0x_xxx0x_xx00x_000x0_c
Unexecuted instantiation: uops_backend.c:f32_linear_xyzw_x0000_0x000_00x00_000x0_c
Unexecuted instantiation: uops_backend.c:f32_dither_x_0_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_y_3_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xy_0_3_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_z_2_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xz_0_2_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyz_0_0_0_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyz_0_3_2_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyz_2_0_3_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyz_2_3_0_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyz_3_0_2_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyz_3_2_0_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_w_5_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xw_0_3_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xw_0_5_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_yzw_0_3_2_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_yzw_2_0_3_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_yzw_2_3_0_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_0_0_0_3_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_0_3_2_5_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_2_3_0_5_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_3_0_2_5_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_3_2_0_5_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_5_0_3_2_16x16_c
Unexecuted instantiation: uops_backend.c:f32_dither_xyzw_5_2_3_0_16x16_c
127
128
#define DECL_IMPL_READ(...)                                                     \
129
    DECL_IMPL(__VA_ARGS__,                                                      \
130
              (const pixel_t *) iter->in[0], (const pixel_t *) iter->in[1],     \
131
              (const pixel_t *) iter->in[2], (const pixel_t *) iter->in[3])
132
133
#define DECL_IMPL_WRITE(...)                                                    \
134
    DECL_IMPL(__VA_ARGS__,                                                      \
135
              (pixel_t *) iter->out[0], (pixel_t *) iter->out[1],               \
136
              (pixel_t *) iter->out[2], (pixel_t *) iter->out[3])
137
138
#define REF_ENTRY(DUMMY, NAME, ...) &uop_##NAME,
139
#define DECL_ENTRY(SETUP, NAME, ...)                                            \
140
    static const SwsUOpEntry uop_##NAME = {                                     \
141
        .func = (SwsFuncPtr) NAME##_c,                                          \
142
        __VA_ARGS__,                                                            \
143
        SETUP                                                                   \
144
    };
145
146
#endif