Coverage Report

Created: 2026-10-28 07:09

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
#include "libavutil/sanitizer.h"
36
37
#include "ops_chain.h"
38
#include "uops_macros.h"
39
40
#ifndef SWS_BLOCK_SIZE
41
0
#  define SWS_BLOCK_SIZE 32
42
#endif
43
44
typedef union block_t {
45
    uint8_t   u8[SWS_BLOCK_SIZE];
46
    uint16_t u16[SWS_BLOCK_SIZE];
47
    uint32_t u32[SWS_BLOCK_SIZE];
48
    float    f32[SWS_BLOCK_SIZE];
49
} block_t;
50
51
0
#define SIZEOF_BLOCK (sizeof(pixel_t) * SWS_BLOCK_SIZE)
52
53
/**
54
 * Internal context holding per-iter execution data. The data pointers will be
55
 * directly incremented by the corresponding read/write functions.
56
 */
57
typedef struct SwsOpIter {
58
    uintptr_t in[4];
59
    uintptr_t out[4];
60
    int x, y;
61
62
    /* Link back to per-slice execution context */
63
    const SwsOpExec *exec;
64
} SwsOpIter;
65
66
/* UBSan checks inside the loop body defeat the vectorizer, so do not ask
67
 * for it in those builds. Clang warns for every loop otherwise. */
68
#if HAVE_UBSAN
69
#  define SWS_LOOP
70
#elif defined(__clang__)
71
0
#  define SWS_LOOP AV_PRAGMA(clang loop vectorize(assume_safety))
72
#elif defined(__GNUC__)
73
#  define SWS_LOOP AV_PRAGMA(GCC ivdep)
74
#else
75
#  define SWS_LOOP
76
#endif
77
78
/* Miscellaneous helpers */
79
0
#define bitfn2(name, ext) name ## _ ## ext
80
0
#define bitfn(name, ext)  bitfn2(name, ext)
81
0
#define fn(name)          bitfn(name, PX)
82
83
0
#define bump_ptr(ptr, bump) ((pixel_t *) ((uintptr_t) (ptr) + (bump)))
84
85
/* Helpers for dealing with component masks */
86
0
#define X SWS_COMP_TEST(mask, 0)
87
0
#define Y SWS_COMP_TEST(mask, 1)
88
0
#define Z SWS_COMP_TEST(mask, 2)
89
0
#define W SWS_COMP_TEST(mask, 3)
90
91
/* Helper macros to make writing common function signatures less painful */
92
#define DECL_FUNC(NAME, ...)                                                    \
93
    av_always_inline static void                                                \
94
        fn(NAME)(SwsOpIter *restrict iter, const SwsOpImpl *restrict impl,      \
95
                 pixel_t *restrict x, pixel_t *restrict y,                      \
96
                 pixel_t *restrict z, pixel_t *restrict w,                      \
97
                 __VA_ARGS__)
98
99
#define DECL_READ(NAME, ...)                                                    \
100
    DECL_FUNC(NAME, __VA_ARGS__,                                                \
101
              const pixel_t *restrict in0, const pixel_t *restrict in1,         \
102
              const pixel_t *restrict in2, const pixel_t *restrict in3)         \
103
104
#define DECL_WRITE(NAME, ...)                                                   \
105
    DECL_FUNC(NAME, __VA_ARGS__,                                                \
106
              pixel_t *restrict out0, pixel_t *restrict out1,                   \
107
              pixel_t *restrict out2, pixel_t *restrict out3)                   \
108
109
0
#define CALL(NAME, ...) fn(NAME)(iter, impl, x, y, z, w, __VA_ARGS__)
110
111
/* Helper macro to call into the next continuation with a given type */
112
#define CONTINUE(...)                                                           \
113
0
    ((void (*)(SwsOpIter *, const SwsOpImpl *,                                  \
114
0
               void *restrict x, void *restrict y,                              \
115
0
               void *restrict z, void *restrict w)) impl->cont)                 \
116
0
        (iter, &impl[1], __VA_ARGS__)
117
118
/* Helper macros for common op setup code */
119
#define DECL_SETUP(NAME, PARAMS, OUT)                                           \
120
    av_unused static int fn(NAME)(const SwsImplParams *PARAMS,                  \
121
                                  SwsImplResult *OUT)
122
123
/* Helper macro for declaring kernel entry points */
124
#define DECL_IMPL(FUNC, NAME, TYPE, UOP, ...)                                   \
125
    av_flatten static void NAME##_c(SwsOpIter *restrict iter,                   \
126
                                    const SwsOpImpl *restrict impl,             \
127
                                    void *restrict x, void *restrict y,         \
128
                                    void *restrict z, void *restrict w)         \
129
0
    {                                                                           \
130
0
        CALL(FUNC, __VA_ARGS__);                                                \
131
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_u16_xyzw_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:u8_linear_x_x000x_c
Unexecuted instantiation: uops_backend.c:u8_linear_y_0x000_c
Unexecuted instantiation: uops_backend.c:u8_linear_xyz_x000x_0x00x_00x0x_c
Unexecuted instantiation: uops_backend.c:u8_linear_xyz_x0000_0x000_00x00_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:u16_linear_x_x000x_c
Unexecuted instantiation: uops_backend.c:u16_linear_xyz_x000x_0x00x_00x0x_c
Unexecuted instantiation: uops_backend.c:u16_linear_xyz_x0000_0x000_00x00_c
Unexecuted instantiation: uops_backend.c:u16_linear_xyzw_x0000_0x000_00x00_000x0_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_y_aaa2_c
Unexecuted instantiation: uops_backend.c:u32_unpack_z_2aaa_c
Unexecuted instantiation: uops_backend.c:u32_unpack_xyz_aaa2_c
Unexecuted instantiation: uops_backend.c:u32_unpack_yzw_2aaa_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:u32_linear_x_x000x_c
Unexecuted instantiation: uops_backend.c:u32_linear_xyz_x000x_0x00x_00x0x_c
Unexecuted instantiation: uops_backend.c:u32_linear_xyz_x0000_0x000_00x00_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_y_c
Unexecuted instantiation: uops_backend.c:f32_min_xy_c
Unexecuted instantiation: uops_backend.c:f32_min_z_c
Unexecuted instantiation: uops_backend.c:f32_min_xz_c
Unexecuted instantiation: uops_backend.c:f32_min_xyz_c
Unexecuted instantiation: uops_backend.c:f32_min_w_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_w_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
Unexecuted instantiation: uops_backend.c:f32_lut_3d_xyz_static_c
Unexecuted instantiation: uops_backend.c:f32_lut_3d_xyz_dynamic_c
Unexecuted instantiation: uops_backend.c:f32_lut_3d_xyzw_static_c
Unexecuted instantiation: uops_backend.c:f32_lut_3d_xyzw_dynamic_c
132
133
#define DECL_IMPL_READ(...)                                                     \
134
    DECL_IMPL(__VA_ARGS__,                                                      \
135
              (const pixel_t *) iter->in[0], (const pixel_t *) iter->in[1],     \
136
              (const pixel_t *) iter->in[2], (const pixel_t *) iter->in[3])
137
138
#define DECL_IMPL_WRITE(...)                                                    \
139
    DECL_IMPL(__VA_ARGS__,                                                      \
140
              (pixel_t *) iter->out[0], (pixel_t *) iter->out[1],               \
141
              (pixel_t *) iter->out[2], (pixel_t *) iter->out[3])
142
143
#define REF_ENTRY(DUMMY, NAME, ...) &uop_##NAME,
144
#define DECL_ENTRY(SETUP, NAME, ...)                                            \
145
    static const SwsUOpEntry uop_##NAME = {                                     \
146
        .func = (SwsFuncPtr) NAME##_c,                                          \
147
        __VA_ARGS__,                                                            \
148
        SETUP                                                                   \
149
    };
150
151
#endif