/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 |