Bug Summary

File:root/firefox-clang/obj-x86_64-pc-linux-gnu/media/libdav1d/8bd_itx_tmpl.c
Warning:line 111, column 32
The left operand of '+' is a garbage value

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -O2 -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name 8bd_itx_tmpl.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -analyzer-config-compatibility-mode=true -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=all -relaxed-aliasing -ffp-contract=off -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/root/firefox-clang/obj-x86_64-pc-linux-gnu/media/libdav1d -fcoverage-compilation-dir=/root/firefox-clang/obj-x86_64-pc-linux-gnu/media/libdav1d -resource-dir /usr/lib/llvm-23/lib/clang/23 -include /root/firefox-clang/config/gcc_hidden.h -include /root/firefox-clang/obj-x86_64-pc-linux-gnu/mozilla-config.h -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/system_wrappers -U _FORTIFY_SOURCE -D _FORTIFY_SOURCE=2 -D DEBUG=1 -D DAV1D_API= -D STACK_ALIGNMENT=16 -D MOZ_HAS_MOZGLUE -D MOZILLA_INTERNAL_API -D IMPL_LIBXUL -D MOZ_SUPPORT_LEAKCHECKING -D STATIC_EXPORTABLE_JS_API -I /root/firefox-clang/media/libdav1d -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/media/libdav1d -I /root/firefox-clang/third_party/dav1d -I /root/firefox-clang/third_party/dav1d/include -I /root/firefox-clang/third_party/dav1d/include/dav1d -I /root/firefox-clang/third_party/dav1d/src -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/include -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/include/nspr -I /root/firefox-clang/obj-x86_64-pc-linux-gnu/dist/include/nss -D MOZILLA_CLIENT -internal-isystem /usr/lib/llvm-23/lib/clang/23/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/16/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wno-error=tautological-type-limit-compare -Wno-range-loop-analysis -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-psabi -Wno-error=builtin-macro-redefined -Wno-unknown-warning-option -Wno-character-conversion -ferror-limit 19 -fstrict-flex-arrays=1 -stack-protector 2 -fstack-clash-protection -ftrivial-auto-var-init=pattern -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fdiagnostics-absolute-paths -vectorize-loops -vectorize-slp -analyzer-checker optin.performance.Padding -analyzer-output=html -analyzer-config stable-report-filename=true -mllvm -dwarf-linkage-names=Abstract -faddrsig -fdwarf2-cfi-asm -o /tmp/scan-build-2026-09-01-224014-2642839-1 -x c 8bd_itx_tmpl.c
1#define BITDEPTH8 8
2/*
3 * Copyright © 2018-2019, VideoLAN and dav1d authors
4 * Copyright © 2018-2019, Two Orioles, LLC
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright notice,
14 * this list of conditions and the following disclaimer in the documentation
15 * and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
21 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include "config.h"
30
31#include <stddef.h>
32#include <stdint.h>
33#include <stdlib.h>
34#include <string.h>
35
36#include "common/attributes.h"
37#include "common/intops.h"
38
39#include "src/itx.h"
40#include "src/itx_1d.h"
41#include "src/scan.h"
42#include "src/tables.h"
43
44static NOINLINE__attribute__((noinline)) void
45inv_txfm_add_c(pixel *dst, const ptrdiff_t stride, coef *const coeff,
46 const int eob, const /*enum RectTxfmSize*/ int tx, const int shift,
47 const enum TxfmType txtp HIGHBD_DECL_SUFFIX)
48{
49 const TxfmInfo *const t_dim = &dav1d_txfm_dimensions[tx];
50 const int w = 4 * t_dim->w, h = 4 * t_dim->h;
51 const int has_dconly = txtp == DCT_DCT;
52 assert(w >= 4 && w <= 64)((void) sizeof ((w >= 4 && w <= 64) ? 1 : 0), __extension__
({ if (w >= 4 && w <= 64) ; else __assert_fail
("w >= 4 && w <= 64", "8bd_itx_tmpl.c", 52, __extension__
__PRETTY_FUNCTION__); }))
;
2
Assuming 'w' is >= 4
3
Assuming 'w' is <= 64
4
Taking true branch
53 assert(h >= 4 && h <= 64)((void) sizeof ((h >= 4 && h <= 64) ? 1 : 0), __extension__
({ if (h >= 4 && h <= 64) ; else __assert_fail
("h >= 4 && h <= 64", "8bd_itx_tmpl.c", 53, __extension__
__PRETTY_FUNCTION__); }))
;
5
Assuming 'h' is >= 4
6
Assuming 'h' is <= 64
7
Taking true branch
54 assert(eob >= 0)((void) sizeof ((eob >= 0) ? 1 : 0), __extension__ ({ if (
eob >= 0) ; else __assert_fail ("eob >= 0", "8bd_itx_tmpl.c"
, 54, __extension__ __PRETTY_FUNCTION__); }))
;
8
Assuming 'eob' is >= 0
9
Taking true branch
55
56 const int is_rect2 = w * 2 == h || h * 2 == w;
10
Assuming the condition is true
57 const int rnd = (1 << shift) >> 1;
58
59 if (eob < has_dconly) {
11
Assuming 'eob' is >= 'has_dconly'
12
Taking false branch
60 int dc = coeff[0];
61 coeff[0] = 0;
62 if (is_rect2)
63 dc = (dc * 181 + 128) >> 8;
64 dc = (dc * 181 + 128) >> 8;
65 dc = (dc + rnd) >> shift;
66 dc = (dc * 181 + 128 + 2048) >> 12;
67 for (int y = 0; y < h; y++, dst += PXSTRIDE(stride)(stride))
68 for (int x = 0; x < w; x++)
69 dst[x] = iclip_pixeliclip_u8(dst[x] + dc);
70 return;
71 }
72
73 const uint8_t *const txtps = dav1d_tx1d_types[txtp];
74 const itx_1d_fn first_1d_fn = dav1d_tx1d_fns[t_dim->lw][txtps[0]];
75 const itx_1d_fn second_1d_fn = dav1d_tx1d_fns[t_dim->lh][txtps[1]];
76 const int sh = imin(h, 32), sw = imin(w, 32);
77#if BITDEPTH8 == 8
78 const int row_clip_min = INT16_MIN(-32767-1);
79 const int col_clip_min = INT16_MIN(-32767-1);
80#else
81 const int row_clip_min = (int) ((unsigned) ~bitdepth_max << 7);
82 const int col_clip_min = (int) ((unsigned) ~bitdepth_max << 5);
83#endif
84 const int row_clip_max = ~row_clip_min;
85 const int col_clip_max = ~col_clip_min;
86
87 int32_t tmp[64 * 64], *c = tmp;
88 int last_nonzero_col; // in first 1d itx
89 if (txtps[1] == IDENTITY && txtps[0] != IDENTITY) {
13
Assuming the condition is false
90 last_nonzero_col = imin(sh - 1, eob);
91 } else if (txtps[0] == IDENTITY && txtps[1] != IDENTITY) {
14
Assuming the condition is false
92 last_nonzero_col = eob >> (t_dim->lw + 2);
93 } else {
94 last_nonzero_col = dav1d_last_nonzero_col_from_eob[tx][eob];
95 }
96 assert(last_nonzero_col < sh)((void) sizeof ((last_nonzero_col < sh) ? 1 : 0), __extension__
({ if (last_nonzero_col < sh) ; else __assert_fail ("last_nonzero_col < sh"
, "8bd_itx_tmpl.c", 96, __extension__ __PRETTY_FUNCTION__); }
))
;
15
Assuming 'last_nonzero_col' is < 'sh'
16
Taking true branch
97 for (int y = 0; y <= last_nonzero_col; y++, c += w) {
17
Assuming 'y' is > 'last_nonzero_col'
18
Loop condition is false. Execution continues on line 106
98 if (is_rect2)
99 for (int x = 0; x < sw; x++)
100 c[x] = (coeff[y + x * sh] * 181 + 128) >> 8;
101 else
102 for (int x = 0; x < sw; x++)
103 c[x] = coeff[y + x * sh];
104 first_1d_fn(c, 1, row_clip_min, row_clip_max);
105 }
106 if (last_nonzero_col + 1 < sh)
19
Assuming the condition is false
20
Taking false branch
107 memset(c, 0, sizeof(*c) * (sh - last_nonzero_col - 1) * w);
108
109 memset(coeff, 0, sizeof(*coeff) * sw * sh);
110 for (int i = 0; i < w * sh; i++)
21
'i' initialized to 0
22
Assuming the condition is true
23
Loop condition is true. Entering loop body
111 tmp[i] = iclip((tmp[i] + rnd) >> shift, col_clip_min, col_clip_max);
24
The left operand of '+' is a garbage value
112
113 for (int x = 0; x < w; x++)
114 second_1d_fn(&tmp[x], w, col_clip_min, col_clip_max);
115
116 c = tmp;
117 for (int y = 0; y < h; y++, dst += PXSTRIDE(stride)(stride))
118 for (int x = 0; x < w; x++)
119 dst[x] = iclip_pixeliclip_u8(dst[x] + ((*c++ + 8) >> 4));
120}
121
122#define inv_txfm_fn(type1, type2, type, pfx, w, h, shift)static void inv_txfm_add_type1_type2_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, type ); }
\
123static void \
124inv_txfm_add_##type1##_##type2##_##w##x##h##_c(pixel *dst, \
125 const ptrdiff_t stride, \
126 coef *const coeff, \
127 const int eob \
128 HIGHBD_DECL_SUFFIX) \
129{ \
130 inv_txfm_add_c(dst, stride, coeff, eob, pfx##TX_##w##X##h, shift, type \
131 HIGHBD_TAIL_SUFFIX); \
132}
133
134#define inv_txfm_fn64(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); }
\static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); }
135inv_txfm_fn(dct, dct, DCT_DCT, pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); }
136
137#define inv_txfm_fn32(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); }
\static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); }
138inv_txfm_fn64(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); }
\static void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); }
139inv_txfm_fn(identity, identity, IDTX, pfx, w, h, shift)static void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); }
140
141#define inv_txfm_fn16(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); } static void
inv_txfm_add_adst_dct_wxh_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, pfxTX_wXh, shift, ADST_DCT ); } static void inv_txfm_add_dct_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_ADST ); } static void inv_txfm_add_adst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_ADST ); } static void inv_txfm_add_dct_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, H_DCT ); } static void inv_txfm_add_dct_identity_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, V_DCT ); }
\static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); }
142inv_txfm_fn32(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); }
\static void inv_txfm_add_adst_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, ADST_DCT ); }
143inv_txfm_fn(adst, dct, ADST_DCT, pfx, w, h, shift)static void inv_txfm_add_adst_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, ADST_DCT ); }
\static void inv_txfm_add_dct_adst_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_ADST ); }
144inv_txfm_fn(dct, adst, DCT_ADST, pfx, w, h, shift)static void inv_txfm_add_dct_adst_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_ADST ); }
\static void inv_txfm_add_adst_adst_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, ADST_ADST ); }
145inv_txfm_fn(adst, adst, ADST_ADST, pfx, w, h, shift)static void inv_txfm_add_adst_adst_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, ADST_ADST ); }
\static void inv_txfm_add_dct_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_FLIPADST ); }
146inv_txfm_fn(dct, flipadst, DCT_FLIPADST, pfx, w, h, shift)static void inv_txfm_add_dct_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_FLIPADST ); }
\static void inv_txfm_add_flipadst_dct_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, FLIPADST_DCT ); }
147inv_txfm_fn(flipadst, dct, FLIPADST_DCT, pfx, w, h, shift)static void inv_txfm_add_flipadst_dct_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, FLIPADST_DCT ); }
\static void inv_txfm_add_adst_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, ADST_FLIPADST ); }
148inv_txfm_fn(adst, flipadst, ADST_FLIPADST, pfx, w, h, shift)static void inv_txfm_add_adst_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, ADST_FLIPADST ); }
\static void inv_txfm_add_flipadst_adst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, FLIPADST_ADST ); }
149inv_txfm_fn(flipadst, adst, FLIPADST_ADST, pfx, w, h, shift)static void inv_txfm_add_flipadst_adst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, FLIPADST_ADST ); }
\static void inv_txfm_add_flipadst_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, FLIPADST_FLIPADST
); }
150inv_txfm_fn(flipadst, flipadst, FLIPADST_FLIPADST, pfx, w, h, shift)static void inv_txfm_add_flipadst_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, FLIPADST_FLIPADST
); }
\static void inv_txfm_add_identity_dct_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, H_DCT ); }
151inv_txfm_fn(identity, dct, H_DCT, pfx, w, h, shift)static void inv_txfm_add_identity_dct_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, H_DCT ); }
\static void inv_txfm_add_dct_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, V_DCT ); }
152inv_txfm_fn(dct, identity, V_DCT, pfx, w, h, shift)static void inv_txfm_add_dct_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, V_DCT ); }
\
153
154#define inv_txfm_fn84(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); } static void
inv_txfm_add_adst_dct_wxh_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, pfxTX_wXh, shift, ADST_DCT ); } static void inv_txfm_add_dct_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_ADST ); } static void inv_txfm_add_adst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_ADST ); } static void inv_txfm_add_dct_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, H_DCT ); } static void inv_txfm_add_dct_identity_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, V_DCT ); } static void inv_txfm_add_identity_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, H_FLIPADST ); } static void inv_txfm_add_flipadst_identity_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, V_FLIPADST ); } static void inv_txfm_add_identity_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, H_ADST ); } static void inv_txfm_add_adst_identity_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, V_ADST ); }
\static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); } static void
inv_txfm_add_adst_dct_wxh_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, pfxTX_wXh, shift, ADST_DCT ); } static void inv_txfm_add_dct_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_ADST ); } static void inv_txfm_add_adst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_ADST ); } static void inv_txfm_add_dct_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, H_DCT ); } static void inv_txfm_add_dct_identity_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, V_DCT ); }
155inv_txfm_fn16(pfx, w, h, shift)static void inv_txfm_add_dct_dct_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, DCT_DCT ); } static
void inv_txfm_add_identity_identity_wxh_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, pfxTX_wXh, shift, IDTX ); } static void
inv_txfm_add_adst_dct_wxh_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, pfxTX_wXh, shift, ADST_DCT ); } static void inv_txfm_add_dct_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_ADST ); } static void inv_txfm_add_adst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_ADST ); } static void inv_txfm_add_dct_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, H_DCT ); } static void inv_txfm_add_dct_identity_wxh_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, pfxTX_wXh
, shift, V_DCT ); }
\static void inv_txfm_add_identity_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, H_FLIPADST ); }
156inv_txfm_fn(identity, flipadst, H_FLIPADST, pfx, w, h, shift)static void inv_txfm_add_identity_flipadst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, H_FLIPADST ); }
\static void inv_txfm_add_flipadst_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, V_FLIPADST ); }
157inv_txfm_fn(flipadst, identity, V_FLIPADST, pfx, w, h, shift)static void inv_txfm_add_flipadst_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, V_FLIPADST ); }
\static void inv_txfm_add_identity_adst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, H_ADST ); }
158inv_txfm_fn(identity, adst, H_ADST, pfx, w, h, shift)static void inv_txfm_add_identity_adst_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, H_ADST ); }
\static void inv_txfm_add_adst_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, V_ADST ); }
159inv_txfm_fn(adst, identity, V_ADST, pfx, w, h, shift)static void inv_txfm_add_adst_identity_wxh_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, pfxTX_wXh, shift, V_ADST ); }
\
160
161inv_txfm_fn84( , 4, 4, 0)static void inv_txfm_add_dct_dct_4x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_4X4, 0, DCT_DCT ); } static void inv_txfm_add_identity_identity_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, IDTX ); } static void inv_txfm_add_adst_dct_4x4_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0, ADST_DCT )
; } static void inv_txfm_add_dct_adst_4x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, TX_4X4, 0, DCT_ADST ); } static void
inv_txfm_add_adst_adst_4x4_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, TX_4X4, 0, ADST_ADST ); } static void inv_txfm_add_dct_flipadst_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_4x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0
, H_DCT ); } static void inv_txfm_add_dct_identity_4x4_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0, V_DCT
); } static void inv_txfm_add_identity_flipadst_4x4_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0, H_FLIPADST
); } static void inv_txfm_add_flipadst_identity_4x4_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0, V_FLIPADST
); } static void inv_txfm_add_identity_adst_4x4_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_4X4, 0, H_ADST );
} static void inv_txfm_add_adst_identity_4x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, TX_4X4, 0, V_ADST ); }
162inv_txfm_fn84(R, 4, 8, 0)static void inv_txfm_add_dct_dct_4x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X8, 0, DCT_DCT ); } static void
inv_txfm_add_identity_identity_4x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X8, 0, IDTX ); } static void inv_txfm_add_adst_dct_4x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8,
0, ADST_DCT ); } static void inv_txfm_add_dct_adst_4x8_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8, 0, DCT_ADST
); } static void inv_txfm_add_adst_adst_4x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_4X8, 0, ADST_ADST ); } static void
inv_txfm_add_dct_flipadst_4x8_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, RTX_4X8, 0, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_4x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8,
0, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_4x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8,
0, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_4x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8,
0, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_4x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8,
0, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_4x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8,
0, H_DCT ); } static void inv_txfm_add_dct_identity_4x8_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8, 0, V_DCT
); } static void inv_txfm_add_identity_flipadst_4x8_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8, 0, H_FLIPADST
); } static void inv_txfm_add_flipadst_identity_4x8_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8, 0, V_FLIPADST
); } static void inv_txfm_add_identity_adst_4x8_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X8, 0, H_ADST )
; } static void inv_txfm_add_adst_identity_4x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_4X8, 0, V_ADST ); }
163inv_txfm_fn84(R, 4, 16, 1)static void inv_txfm_add_dct_dct_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, DCT_DCT ); } static void
inv_txfm_add_identity_identity_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, IDTX ); } static void inv_txfm_add_adst_dct_4x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X16
, 1, ADST_DCT ); } static void inv_txfm_add_dct_adst_4x16_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X16, 1, DCT_ADST
); } static void inv_txfm_add_adst_adst_4x16_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_4X16, 1, ADST_ADST ); } static void
inv_txfm_add_dct_flipadst_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, DCT_FLIPADST ); } static
void inv_txfm_add_flipadst_dct_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, FLIPADST_DCT ); } static
void inv_txfm_add_adst_flipadst_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, ADST_FLIPADST ); } static
void inv_txfm_add_flipadst_adst_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, FLIPADST_ADST ); } static
void inv_txfm_add_flipadst_flipadst_4x16_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_4X16, 1, FLIPADST_FLIPADST ); }
static void inv_txfm_add_identity_dct_4x16_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_4X16, 1, H_DCT ); } static void
inv_txfm_add_dct_identity_4x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_4X16, 1, V_DCT ); } static void inv_txfm_add_identity_flipadst_4x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X16
, 1, H_FLIPADST ); } static void inv_txfm_add_flipadst_identity_4x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X16
, 1, V_FLIPADST ); } static void inv_txfm_add_identity_adst_4x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X16
, 1, H_ADST ); } static void inv_txfm_add_adst_identity_4x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_4X16
, 1, V_ADST ); }
164inv_txfm_fn84(R, 8, 4, 0)static void inv_txfm_add_dct_dct_8x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X4, 0, DCT_DCT ); } static void
inv_txfm_add_identity_identity_8x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X4, 0, IDTX ); } static void inv_txfm_add_adst_dct_8x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4,
0, ADST_DCT ); } static void inv_txfm_add_dct_adst_8x4_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4, 0, DCT_ADST
); } static void inv_txfm_add_adst_adst_8x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_8X4, 0, ADST_ADST ); } static void
inv_txfm_add_dct_flipadst_8x4_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, RTX_8X4, 0, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_8x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4,
0, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_8x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4,
0, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_8x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4,
0, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_8x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4,
0, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_8x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4,
0, H_DCT ); } static void inv_txfm_add_dct_identity_8x4_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4, 0, V_DCT
); } static void inv_txfm_add_identity_flipadst_8x4_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4, 0, H_FLIPADST
); } static void inv_txfm_add_flipadst_identity_8x4_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4, 0, V_FLIPADST
); } static void inv_txfm_add_identity_adst_8x4_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X4, 0, H_ADST )
; } static void inv_txfm_add_adst_identity_8x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_8X4, 0, V_ADST ); }
165inv_txfm_fn84( , 8, 8, 1)static void inv_txfm_add_dct_dct_8x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_8X8, 1, DCT_DCT ); } static void inv_txfm_add_identity_identity_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, IDTX ); } static void inv_txfm_add_adst_dct_8x8_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1, ADST_DCT )
; } static void inv_txfm_add_dct_adst_8x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, TX_8X8, 1, DCT_ADST ); } static void
inv_txfm_add_adst_adst_8x8_c(pixel *dst, const ptrdiff_t stride
, coef *const coeff, const int eob ) { inv_txfm_add_c(dst, stride
, coeff, eob, TX_8X8, 1, ADST_ADST ); } static void inv_txfm_add_dct_flipadst_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, DCT_FLIPADST ); } static void inv_txfm_add_flipadst_dct_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, FLIPADST_DCT ); } static void inv_txfm_add_adst_flipadst_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, ADST_FLIPADST ); } static void inv_txfm_add_flipadst_adst_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, FLIPADST_ADST ); } static void inv_txfm_add_flipadst_flipadst_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, FLIPADST_FLIPADST ); } static void inv_txfm_add_identity_dct_8x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1
, H_DCT ); } static void inv_txfm_add_dct_identity_8x8_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1, V_DCT
); } static void inv_txfm_add_identity_flipadst_8x8_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1, H_FLIPADST
); } static void inv_txfm_add_flipadst_identity_8x8_c(pixel *
dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1, V_FLIPADST
); } static void inv_txfm_add_identity_adst_8x8_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_8X8, 1, H_ADST );
} static void inv_txfm_add_adst_identity_8x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, TX_8X8, 1, V_ADST ); }
166inv_txfm_fn84(R, 8, 16, 1)static void inv_txfm_add_dct_dct_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, DCT_DCT ); } static void
inv_txfm_add_identity_identity_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, IDTX ); } static void inv_txfm_add_adst_dct_8x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X16
, 1, ADST_DCT ); } static void inv_txfm_add_dct_adst_8x16_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X16, 1, DCT_ADST
); } static void inv_txfm_add_adst_adst_8x16_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_8X16, 1, ADST_ADST ); } static void
inv_txfm_add_dct_flipadst_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, DCT_FLIPADST ); } static
void inv_txfm_add_flipadst_dct_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, FLIPADST_DCT ); } static
void inv_txfm_add_adst_flipadst_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, ADST_FLIPADST ); } static
void inv_txfm_add_flipadst_adst_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, FLIPADST_ADST ); } static
void inv_txfm_add_flipadst_flipadst_8x16_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_8X16, 1, FLIPADST_FLIPADST ); }
static void inv_txfm_add_identity_dct_8x16_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_8X16, 1, H_DCT ); } static void
inv_txfm_add_dct_identity_8x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X16, 1, V_DCT ); } static void inv_txfm_add_identity_flipadst_8x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X16
, 1, H_FLIPADST ); } static void inv_txfm_add_flipadst_identity_8x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X16
, 1, V_FLIPADST ); } static void inv_txfm_add_identity_adst_8x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X16
, 1, H_ADST ); } static void inv_txfm_add_adst_identity_8x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_8X16
, 1, V_ADST ); }
167inv_txfm_fn32(R, 8, 32, 2)static void inv_txfm_add_dct_dct_8x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X32, 2, DCT_DCT ); } static void
inv_txfm_add_identity_identity_8x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_8X32, 2, IDTX ); }
168inv_txfm_fn84(R, 16, 4, 1)static void inv_txfm_add_dct_dct_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, DCT_DCT ); } static void
inv_txfm_add_identity_identity_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, IDTX ); } static void inv_txfm_add_adst_dct_16x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X4
, 1, ADST_DCT ); } static void inv_txfm_add_dct_adst_16x4_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X4, 1, DCT_ADST
); } static void inv_txfm_add_adst_adst_16x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_16X4, 1, ADST_ADST ); } static void
inv_txfm_add_dct_flipadst_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, DCT_FLIPADST ); } static
void inv_txfm_add_flipadst_dct_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, FLIPADST_DCT ); } static
void inv_txfm_add_adst_flipadst_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, ADST_FLIPADST ); } static
void inv_txfm_add_flipadst_adst_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, FLIPADST_ADST ); } static
void inv_txfm_add_flipadst_flipadst_16x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_16X4, 1, FLIPADST_FLIPADST ); }
static void inv_txfm_add_identity_dct_16x4_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_16X4, 1, H_DCT ); } static void
inv_txfm_add_dct_identity_16x4_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X4, 1, V_DCT ); } static void inv_txfm_add_identity_flipadst_16x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X4
, 1, H_FLIPADST ); } static void inv_txfm_add_flipadst_identity_16x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X4
, 1, V_FLIPADST ); } static void inv_txfm_add_identity_adst_16x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X4
, 1, H_ADST ); } static void inv_txfm_add_adst_identity_16x4_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X4
, 1, V_ADST ); }
169inv_txfm_fn84(R, 16, 8, 1)static void inv_txfm_add_dct_dct_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, DCT_DCT ); } static void
inv_txfm_add_identity_identity_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, IDTX ); } static void inv_txfm_add_adst_dct_16x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X8
, 1, ADST_DCT ); } static void inv_txfm_add_dct_adst_16x8_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X8, 1, DCT_ADST
); } static void inv_txfm_add_adst_adst_16x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_16X8, 1, ADST_ADST ); } static void
inv_txfm_add_dct_flipadst_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, DCT_FLIPADST ); } static
void inv_txfm_add_flipadst_dct_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, FLIPADST_DCT ); } static
void inv_txfm_add_adst_flipadst_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, ADST_FLIPADST ); } static
void inv_txfm_add_flipadst_adst_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, FLIPADST_ADST ); } static
void inv_txfm_add_flipadst_flipadst_16x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_16X8, 1, FLIPADST_FLIPADST ); }
static void inv_txfm_add_identity_dct_16x8_c(pixel *dst, const
ptrdiff_t stride, coef *const coeff, const int eob ) { inv_txfm_add_c
(dst, stride, coeff, eob, RTX_16X8, 1, H_DCT ); } static void
inv_txfm_add_dct_identity_16x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X8, 1, V_DCT ); } static void inv_txfm_add_identity_flipadst_16x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X8
, 1, H_FLIPADST ); } static void inv_txfm_add_flipadst_identity_16x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X8
, 1, V_FLIPADST ); } static void inv_txfm_add_identity_adst_16x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X8
, 1, H_ADST ); } static void inv_txfm_add_adst_identity_16x8_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, RTX_16X8
, 1, V_ADST ); }
170inv_txfm_fn16( , 16, 16, 2)static void inv_txfm_add_dct_dct_16x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_16X16, 2, DCT_DCT ); } static void
inv_txfm_add_identity_identity_16x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_16X16, 2, IDTX ); } static void inv_txfm_add_adst_dct_16x16_c
(pixel *dst, const ptrdiff_t stride, coef *const coeff, const
int eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16
, 2, ADST_DCT ); } static void inv_txfm_add_dct_adst_16x16_c(
pixel *dst, const ptrdiff_t stride, coef *const coeff, const int
eob ) { inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2,
DCT_ADST ); } static void inv_txfm_add_adst_adst_16x16_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, ADST_ADST
); } static void inv_txfm_add_dct_flipadst_16x16_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, DCT_FLIPADST
); } static void inv_txfm_add_flipadst_dct_16x16_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, FLIPADST_DCT
); } static void inv_txfm_add_adst_flipadst_16x16_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, ADST_FLIPADST
); } static void inv_txfm_add_flipadst_adst_16x16_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, FLIPADST_ADST
); } static void inv_txfm_add_flipadst_flipadst_16x16_c(pixel
*dst, const ptrdiff_t stride, coef *const coeff, const int eob
) { inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, FLIPADST_FLIPADST
); } static void inv_txfm_add_identity_dct_16x16_c(pixel *dst
, const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, H_DCT )
; } static void inv_txfm_add_dct_identity_16x16_c(pixel *dst,
const ptrdiff_t stride, coef *const coeff, const int eob ) {
inv_txfm_add_c(dst, stride, coeff, eob, TX_16X16, 2, V_DCT )
; }
171inv_txfm_fn32(R, 16, 32, 1)static void inv_txfm_add_dct_dct_16x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X32, 1, DCT_DCT ); } static void
inv_txfm_add_identity_identity_16x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X32, 1, IDTX ); }
172inv_txfm_fn64(R, 16, 64, 2)static void inv_txfm_add_dct_dct_16x64_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_16X64, 2, DCT_DCT ); }
173inv_txfm_fn32(R, 32, 8, 2)static void inv_txfm_add_dct_dct_32x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_32X8, 2, DCT_DCT ); } static void
inv_txfm_add_identity_identity_32x8_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_32X8, 2, IDTX ); }
174inv_txfm_fn32(R, 32, 16, 1)static void inv_txfm_add_dct_dct_32x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_32X16, 1, DCT_DCT ); } static void
inv_txfm_add_identity_identity_32x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_32X16, 1, IDTX ); }
175inv_txfm_fn32( , 32, 32, 2)static void inv_txfm_add_dct_dct_32x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_32X32, 2, DCT_DCT ); } static void
inv_txfm_add_identity_identity_32x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_32X32, 2, IDTX ); }
176inv_txfm_fn64(R, 32, 64, 1)static void inv_txfm_add_dct_dct_32x64_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_32X64, 1, DCT_DCT ); }
177inv_txfm_fn64(R, 64, 16, 2)static void inv_txfm_add_dct_dct_64x16_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_64X16, 2, DCT_DCT ); }
178inv_txfm_fn64(R, 64, 32, 1)static void inv_txfm_add_dct_dct_64x32_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, RTX_64X32, 1, DCT_DCT ); }
179inv_txfm_fn64( , 64, 64, 2)static void inv_txfm_add_dct_dct_64x64_c(pixel *dst, const ptrdiff_t
stride, coef *const coeff, const int eob ) { inv_txfm_add_c(
dst, stride, coeff, eob, TX_64X64, 2, DCT_DCT ); }
1
Calling 'inv_txfm_add_c'
180
181#if !(HAVE_ASM1 && TRIM_DSP_FUNCTIONS && ( \
182 ARCH_AARCH640 || \
183 (ARCH_ARM0 && (defined(__ARM_NEON) || defined(__APPLE__) || defined(_WIN32))) \
184))
185static void inv_txfm_add_wht_wht_4x4_c(pixel *dst, const ptrdiff_t stride,
186 coef *const coeff, const int eob
187 HIGHBD_DECL_SUFFIX)
188{
189 int32_t tmp[4 * 4], *c = tmp;
190 for (int y = 0; y < 4; y++, c += 4) {
191 for (int x = 0; x < 4; x++)
192 c[x] = coeff[y + x * 4] >> 2;
193 dav1d_inv_wht4_1d_c(c, 1);
194 }
195 memset(coeff, 0, sizeof(*coeff) * 4 * 4);
196
197 for (int x = 0; x < 4; x++)
198 dav1d_inv_wht4_1d_c(&tmp[x], 4);
199
200 c = tmp;
201 for (int y = 0; y < 4; y++, dst += PXSTRIDE(stride)(stride))
202 for (int x = 0; x < 4; x++)
203 dst[x] = iclip_pixeliclip_u8(dst[x] + *c++);
204}
205#endif
206
207#if HAVE_ASM1
208#if ARCH_AARCH640 || ARCH_ARM0
209#include "src/arm/itx.h"
210#elif ARCH_LOONGARCH64
211#include "src/loongarch/itx.h"
212#elif ARCH_PPC64LE
213#include "src/ppc/itx.h"
214#elif ARCH_RISCV
215#include "src/riscv/itx.h"
216#elif ARCH_X861
217#include "src/x86/itx.h"
218#endif
219#endif
220
221COLD__attribute__((cold)) void bitfn(dav1d_itx_dsp_init)dav1d_itx_dsp_init_8bpc(Dav1dInvTxfmDSPContext *const c, int bpc) {
222#define assign_itx_all_fn64(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c \
223 c->itxfm_add[pfx##TX_##w##X##h][DCT_DCT ] = \
224 inv_txfm_add_dct_dct_##w##x##h##_c
225
226#define assign_itx_all_fn32(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][IDTX] = inv_txfm_add_identity_identity_wxh_c
\
227 assign_itx_all_fn64(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c; \
228 c->itxfm_add[pfx##TX_##w##X##h][IDTX] = \
229 inv_txfm_add_identity_identity_##w##x##h##_c
230
231#define assign_itx_all_fn16(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][IDTX] = inv_txfm_add_identity_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][DCT_ADST ] = inv_txfm_add_adst_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_DCT ] = inv_txfm_add_dct_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_ADST] = inv_txfm_add_adst_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][H_DCT] = inv_txfm_add_dct_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][V_DCT] = inv_txfm_add_identity_dct_wxh_c
\
232 assign_itx_all_fn32(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][IDTX] = inv_txfm_add_identity_identity_wxh_c
; \
233 c->itxfm_add[pfx##TX_##w##X##h][DCT_ADST ] = \
234 inv_txfm_add_adst_dct_##w##x##h##_c; \
235 c->itxfm_add[pfx##TX_##w##X##h][ADST_DCT ] = \
236 inv_txfm_add_dct_adst_##w##x##h##_c; \
237 c->itxfm_add[pfx##TX_##w##X##h][ADST_ADST] = \
238 inv_txfm_add_adst_adst_##w##x##h##_c; \
239 c->itxfm_add[pfx##TX_##w##X##h][ADST_FLIPADST] = \
240 inv_txfm_add_flipadst_adst_##w##x##h##_c; \
241 c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_ADST] = \
242 inv_txfm_add_adst_flipadst_##w##x##h##_c; \
243 c->itxfm_add[pfx##TX_##w##X##h][DCT_FLIPADST] = \
244 inv_txfm_add_flipadst_dct_##w##x##h##_c; \
245 c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_DCT] = \
246 inv_txfm_add_dct_flipadst_##w##x##h##_c; \
247 c->itxfm_add[pfx##TX_##w##X##h][FLIPADST_FLIPADST] = \
248 inv_txfm_add_flipadst_flipadst_##w##x##h##_c; \
249 c->itxfm_add[pfx##TX_##w##X##h][H_DCT] = \
250 inv_txfm_add_dct_identity_##w##x##h##_c; \
251 c->itxfm_add[pfx##TX_##w##X##h][V_DCT] = \
252 inv_txfm_add_identity_dct_##w##x##h##_c
253
254#define assign_itx_all_fn84(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][IDTX] = inv_txfm_add_identity_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][DCT_ADST ] = inv_txfm_add_adst_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_DCT ] = inv_txfm_add_dct_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_ADST] = inv_txfm_add_adst_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][H_DCT] = inv_txfm_add_dct_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][V_DCT] = inv_txfm_add_identity_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][H_FLIPADST] = inv_txfm_add_flipadst_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][V_FLIPADST] = inv_txfm_add_identity_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][H_ADST] = inv_txfm_add_adst_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][V_ADST] = inv_txfm_add_identity_adst_wxh_c
;
\
255 assign_itx_all_fn16(w, h, pfx)c->itxfm_add[pfxTX_wXh][DCT_DCT ] = inv_txfm_add_dct_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][IDTX] = inv_txfm_add_identity_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][DCT_ADST ] = inv_txfm_add_adst_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_DCT ] = inv_txfm_add_dct_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_ADST] = inv_txfm_add_adst_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_wxh_c
; c->itxfm_add[pfxTX_wXh][H_DCT] = inv_txfm_add_dct_identity_wxh_c
; c->itxfm_add[pfxTX_wXh][V_DCT] = inv_txfm_add_identity_dct_wxh_c
; \
256 c->itxfm_add[pfx##TX_##w##X##h][H_FLIPADST] = \
257 inv_txfm_add_flipadst_identity_##w##x##h##_c; \
258 c->itxfm_add[pfx##TX_##w##X##h][V_FLIPADST] = \
259 inv_txfm_add_identity_flipadst_##w##x##h##_c; \
260 c->itxfm_add[pfx##TX_##w##X##h][H_ADST] = \
261 inv_txfm_add_adst_identity_##w##x##h##_c; \
262 c->itxfm_add[pfx##TX_##w##X##h][V_ADST] = \
263 inv_txfm_add_identity_adst_##w##x##h##_c; \
264
265#if !(HAVE_ASM1 && TRIM_DSP_FUNCTIONS && ( \
266 ARCH_AARCH640 || \
267 (ARCH_ARM0 && (defined(__ARM_NEON) || defined(__APPLE__) || defined(_WIN32))) \
268))
269 c->itxfm_add[TX_4X4][WHT_WHT] = inv_txfm_add_wht_wht_4x4_c;
270#endif
271 assign_itx_all_fn84( 4, 4, )c->itxfm_add[TX_4X4][DCT_DCT ] = inv_txfm_add_dct_dct_4x4_c
; c->itxfm_add[TX_4X4][IDTX] = inv_txfm_add_identity_identity_4x4_c
; c->itxfm_add[TX_4X4][DCT_ADST ] = inv_txfm_add_adst_dct_4x4_c
; c->itxfm_add[TX_4X4][ADST_DCT ] = inv_txfm_add_dct_adst_4x4_c
; c->itxfm_add[TX_4X4][ADST_ADST] = inv_txfm_add_adst_adst_4x4_c
; c->itxfm_add[TX_4X4][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_4x4_c
; c->itxfm_add[TX_4X4][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_4x4_c
; c->itxfm_add[TX_4X4][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_4x4_c
; c->itxfm_add[TX_4X4][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_4x4_c
; c->itxfm_add[TX_4X4][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_4x4_c
; c->itxfm_add[TX_4X4][H_DCT] = inv_txfm_add_dct_identity_4x4_c
; c->itxfm_add[TX_4X4][V_DCT] = inv_txfm_add_identity_dct_4x4_c
; c->itxfm_add[TX_4X4][H_FLIPADST] = inv_txfm_add_flipadst_identity_4x4_c
; c->itxfm_add[TX_4X4][V_FLIPADST] = inv_txfm_add_identity_flipadst_4x4_c
; c->itxfm_add[TX_4X4][H_ADST] = inv_txfm_add_adst_identity_4x4_c
; c->itxfm_add[TX_4X4][V_ADST] = inv_txfm_add_identity_adst_4x4_c
;
;
272 assign_itx_all_fn84( 4, 8, R)c->itxfm_add[RTX_4X8][DCT_DCT ] = inv_txfm_add_dct_dct_4x8_c
; c->itxfm_add[RTX_4X8][IDTX] = inv_txfm_add_identity_identity_4x8_c
; c->itxfm_add[RTX_4X8][DCT_ADST ] = inv_txfm_add_adst_dct_4x8_c
; c->itxfm_add[RTX_4X8][ADST_DCT ] = inv_txfm_add_dct_adst_4x8_c
; c->itxfm_add[RTX_4X8][ADST_ADST] = inv_txfm_add_adst_adst_4x8_c
; c->itxfm_add[RTX_4X8][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_4x8_c
; c->itxfm_add[RTX_4X8][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_4x8_c
; c->itxfm_add[RTX_4X8][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_4x8_c
; c->itxfm_add[RTX_4X8][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_4x8_c
; c->itxfm_add[RTX_4X8][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_4x8_c
; c->itxfm_add[RTX_4X8][H_DCT] = inv_txfm_add_dct_identity_4x8_c
; c->itxfm_add[RTX_4X8][V_DCT] = inv_txfm_add_identity_dct_4x8_c
; c->itxfm_add[RTX_4X8][H_FLIPADST] = inv_txfm_add_flipadst_identity_4x8_c
; c->itxfm_add[RTX_4X8][V_FLIPADST] = inv_txfm_add_identity_flipadst_4x8_c
; c->itxfm_add[RTX_4X8][H_ADST] = inv_txfm_add_adst_identity_4x8_c
; c->itxfm_add[RTX_4X8][V_ADST] = inv_txfm_add_identity_adst_4x8_c
;
;
273 assign_itx_all_fn84( 4, 16, R)c->itxfm_add[RTX_4X16][DCT_DCT ] = inv_txfm_add_dct_dct_4x16_c
; c->itxfm_add[RTX_4X16][IDTX] = inv_txfm_add_identity_identity_4x16_c
; c->itxfm_add[RTX_4X16][DCT_ADST ] = inv_txfm_add_adst_dct_4x16_c
; c->itxfm_add[RTX_4X16][ADST_DCT ] = inv_txfm_add_dct_adst_4x16_c
; c->itxfm_add[RTX_4X16][ADST_ADST] = inv_txfm_add_adst_adst_4x16_c
; c->itxfm_add[RTX_4X16][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_4x16_c
; c->itxfm_add[RTX_4X16][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_4x16_c
; c->itxfm_add[RTX_4X16][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_4x16_c
; c->itxfm_add[RTX_4X16][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_4x16_c
; c->itxfm_add[RTX_4X16][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_4x16_c
; c->itxfm_add[RTX_4X16][H_DCT] = inv_txfm_add_dct_identity_4x16_c
; c->itxfm_add[RTX_4X16][V_DCT] = inv_txfm_add_identity_dct_4x16_c
; c->itxfm_add[RTX_4X16][H_FLIPADST] = inv_txfm_add_flipadst_identity_4x16_c
; c->itxfm_add[RTX_4X16][V_FLIPADST] = inv_txfm_add_identity_flipadst_4x16_c
; c->itxfm_add[RTX_4X16][H_ADST] = inv_txfm_add_adst_identity_4x16_c
; c->itxfm_add[RTX_4X16][V_ADST] = inv_txfm_add_identity_adst_4x16_c
;
;
274 assign_itx_all_fn84( 8, 4, R)c->itxfm_add[RTX_8X4][DCT_DCT ] = inv_txfm_add_dct_dct_8x4_c
; c->itxfm_add[RTX_8X4][IDTX] = inv_txfm_add_identity_identity_8x4_c
; c->itxfm_add[RTX_8X4][DCT_ADST ] = inv_txfm_add_adst_dct_8x4_c
; c->itxfm_add[RTX_8X4][ADST_DCT ] = inv_txfm_add_dct_adst_8x4_c
; c->itxfm_add[RTX_8X4][ADST_ADST] = inv_txfm_add_adst_adst_8x4_c
; c->itxfm_add[RTX_8X4][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_8x4_c
; c->itxfm_add[RTX_8X4][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_8x4_c
; c->itxfm_add[RTX_8X4][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_8x4_c
; c->itxfm_add[RTX_8X4][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_8x4_c
; c->itxfm_add[RTX_8X4][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_8x4_c
; c->itxfm_add[RTX_8X4][H_DCT] = inv_txfm_add_dct_identity_8x4_c
; c->itxfm_add[RTX_8X4][V_DCT] = inv_txfm_add_identity_dct_8x4_c
; c->itxfm_add[RTX_8X4][H_FLIPADST] = inv_txfm_add_flipadst_identity_8x4_c
; c->itxfm_add[RTX_8X4][V_FLIPADST] = inv_txfm_add_identity_flipadst_8x4_c
; c->itxfm_add[RTX_8X4][H_ADST] = inv_txfm_add_adst_identity_8x4_c
; c->itxfm_add[RTX_8X4][V_ADST] = inv_txfm_add_identity_adst_8x4_c
;
;
275 assign_itx_all_fn84( 8, 8, )c->itxfm_add[TX_8X8][DCT_DCT ] = inv_txfm_add_dct_dct_8x8_c
; c->itxfm_add[TX_8X8][IDTX] = inv_txfm_add_identity_identity_8x8_c
; c->itxfm_add[TX_8X8][DCT_ADST ] = inv_txfm_add_adst_dct_8x8_c
; c->itxfm_add[TX_8X8][ADST_DCT ] = inv_txfm_add_dct_adst_8x8_c
; c->itxfm_add[TX_8X8][ADST_ADST] = inv_txfm_add_adst_adst_8x8_c
; c->itxfm_add[TX_8X8][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_8x8_c
; c->itxfm_add[TX_8X8][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_8x8_c
; c->itxfm_add[TX_8X8][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_8x8_c
; c->itxfm_add[TX_8X8][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_8x8_c
; c->itxfm_add[TX_8X8][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_8x8_c
; c->itxfm_add[TX_8X8][H_DCT] = inv_txfm_add_dct_identity_8x8_c
; c->itxfm_add[TX_8X8][V_DCT] = inv_txfm_add_identity_dct_8x8_c
; c->itxfm_add[TX_8X8][H_FLIPADST] = inv_txfm_add_flipadst_identity_8x8_c
; c->itxfm_add[TX_8X8][V_FLIPADST] = inv_txfm_add_identity_flipadst_8x8_c
; c->itxfm_add[TX_8X8][H_ADST] = inv_txfm_add_adst_identity_8x8_c
; c->itxfm_add[TX_8X8][V_ADST] = inv_txfm_add_identity_adst_8x8_c
;
;
276 assign_itx_all_fn84( 8, 16, R)c->itxfm_add[RTX_8X16][DCT_DCT ] = inv_txfm_add_dct_dct_8x16_c
; c->itxfm_add[RTX_8X16][IDTX] = inv_txfm_add_identity_identity_8x16_c
; c->itxfm_add[RTX_8X16][DCT_ADST ] = inv_txfm_add_adst_dct_8x16_c
; c->itxfm_add[RTX_8X16][ADST_DCT ] = inv_txfm_add_dct_adst_8x16_c
; c->itxfm_add[RTX_8X16][ADST_ADST] = inv_txfm_add_adst_adst_8x16_c
; c->itxfm_add[RTX_8X16][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_8x16_c
; c->itxfm_add[RTX_8X16][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_8x16_c
; c->itxfm_add[RTX_8X16][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_8x16_c
; c->itxfm_add[RTX_8X16][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_8x16_c
; c->itxfm_add[RTX_8X16][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_8x16_c
; c->itxfm_add[RTX_8X16][H_DCT] = inv_txfm_add_dct_identity_8x16_c
; c->itxfm_add[RTX_8X16][V_DCT] = inv_txfm_add_identity_dct_8x16_c
; c->itxfm_add[RTX_8X16][H_FLIPADST] = inv_txfm_add_flipadst_identity_8x16_c
; c->itxfm_add[RTX_8X16][V_FLIPADST] = inv_txfm_add_identity_flipadst_8x16_c
; c->itxfm_add[RTX_8X16][H_ADST] = inv_txfm_add_adst_identity_8x16_c
; c->itxfm_add[RTX_8X16][V_ADST] = inv_txfm_add_identity_adst_8x16_c
;
;
277 assign_itx_all_fn32( 8, 32, R)c->itxfm_add[RTX_8X32][DCT_DCT ] = inv_txfm_add_dct_dct_8x32_c
; c->itxfm_add[RTX_8X32][IDTX] = inv_txfm_add_identity_identity_8x32_c
;
278 assign_itx_all_fn84(16, 4, R)c->itxfm_add[RTX_16X4][DCT_DCT ] = inv_txfm_add_dct_dct_16x4_c
; c->itxfm_add[RTX_16X4][IDTX] = inv_txfm_add_identity_identity_16x4_c
; c->itxfm_add[RTX_16X4][DCT_ADST ] = inv_txfm_add_adst_dct_16x4_c
; c->itxfm_add[RTX_16X4][ADST_DCT ] = inv_txfm_add_dct_adst_16x4_c
; c->itxfm_add[RTX_16X4][ADST_ADST] = inv_txfm_add_adst_adst_16x4_c
; c->itxfm_add[RTX_16X4][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_16x4_c
; c->itxfm_add[RTX_16X4][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_16x4_c
; c->itxfm_add[RTX_16X4][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_16x4_c
; c->itxfm_add[RTX_16X4][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_16x4_c
; c->itxfm_add[RTX_16X4][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_16x4_c
; c->itxfm_add[RTX_16X4][H_DCT] = inv_txfm_add_dct_identity_16x4_c
; c->itxfm_add[RTX_16X4][V_DCT] = inv_txfm_add_identity_dct_16x4_c
; c->itxfm_add[RTX_16X4][H_FLIPADST] = inv_txfm_add_flipadst_identity_16x4_c
; c->itxfm_add[RTX_16X4][V_FLIPADST] = inv_txfm_add_identity_flipadst_16x4_c
; c->itxfm_add[RTX_16X4][H_ADST] = inv_txfm_add_adst_identity_16x4_c
; c->itxfm_add[RTX_16X4][V_ADST] = inv_txfm_add_identity_adst_16x4_c
;
;
279 assign_itx_all_fn84(16, 8, R)c->itxfm_add[RTX_16X8][DCT_DCT ] = inv_txfm_add_dct_dct_16x8_c
; c->itxfm_add[RTX_16X8][IDTX] = inv_txfm_add_identity_identity_16x8_c
; c->itxfm_add[RTX_16X8][DCT_ADST ] = inv_txfm_add_adst_dct_16x8_c
; c->itxfm_add[RTX_16X8][ADST_DCT ] = inv_txfm_add_dct_adst_16x8_c
; c->itxfm_add[RTX_16X8][ADST_ADST] = inv_txfm_add_adst_adst_16x8_c
; c->itxfm_add[RTX_16X8][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_16x8_c
; c->itxfm_add[RTX_16X8][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_16x8_c
; c->itxfm_add[RTX_16X8][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_16x8_c
; c->itxfm_add[RTX_16X8][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_16x8_c
; c->itxfm_add[RTX_16X8][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_16x8_c
; c->itxfm_add[RTX_16X8][H_DCT] = inv_txfm_add_dct_identity_16x8_c
; c->itxfm_add[RTX_16X8][V_DCT] = inv_txfm_add_identity_dct_16x8_c
; c->itxfm_add[RTX_16X8][H_FLIPADST] = inv_txfm_add_flipadst_identity_16x8_c
; c->itxfm_add[RTX_16X8][V_FLIPADST] = inv_txfm_add_identity_flipadst_16x8_c
; c->itxfm_add[RTX_16X8][H_ADST] = inv_txfm_add_adst_identity_16x8_c
; c->itxfm_add[RTX_16X8][V_ADST] = inv_txfm_add_identity_adst_16x8_c
;
;
280 assign_itx_all_fn16(16, 16, )c->itxfm_add[TX_16X16][DCT_DCT ] = inv_txfm_add_dct_dct_16x16_c
; c->itxfm_add[TX_16X16][IDTX] = inv_txfm_add_identity_identity_16x16_c
; c->itxfm_add[TX_16X16][DCT_ADST ] = inv_txfm_add_adst_dct_16x16_c
; c->itxfm_add[TX_16X16][ADST_DCT ] = inv_txfm_add_dct_adst_16x16_c
; c->itxfm_add[TX_16X16][ADST_ADST] = inv_txfm_add_adst_adst_16x16_c
; c->itxfm_add[TX_16X16][ADST_FLIPADST] = inv_txfm_add_flipadst_adst_16x16_c
; c->itxfm_add[TX_16X16][FLIPADST_ADST] = inv_txfm_add_adst_flipadst_16x16_c
; c->itxfm_add[TX_16X16][DCT_FLIPADST] = inv_txfm_add_flipadst_dct_16x16_c
; c->itxfm_add[TX_16X16][FLIPADST_DCT] = inv_txfm_add_dct_flipadst_16x16_c
; c->itxfm_add[TX_16X16][FLIPADST_FLIPADST] = inv_txfm_add_flipadst_flipadst_16x16_c
; c->itxfm_add[TX_16X16][H_DCT] = inv_txfm_add_dct_identity_16x16_c
; c->itxfm_add[TX_16X16][V_DCT] = inv_txfm_add_identity_dct_16x16_c
;
281 assign_itx_all_fn32(16, 32, R)c->itxfm_add[RTX_16X32][DCT_DCT ] = inv_txfm_add_dct_dct_16x32_c
; c->itxfm_add[RTX_16X32][IDTX] = inv_txfm_add_identity_identity_16x32_c
;
282 assign_itx_all_fn64(16, 64, R)c->itxfm_add[RTX_16X64][DCT_DCT ] = inv_txfm_add_dct_dct_16x64_c;
283 assign_itx_all_fn32(32, 8, R)c->itxfm_add[RTX_32X8][DCT_DCT ] = inv_txfm_add_dct_dct_32x8_c
; c->itxfm_add[RTX_32X8][IDTX] = inv_txfm_add_identity_identity_32x8_c
;
284 assign_itx_all_fn32(32, 16, R)c->itxfm_add[RTX_32X16][DCT_DCT ] = inv_txfm_add_dct_dct_32x16_c
; c->itxfm_add[RTX_32X16][IDTX] = inv_txfm_add_identity_identity_32x16_c
;
285 assign_itx_all_fn32(32, 32, )c->itxfm_add[TX_32X32][DCT_DCT ] = inv_txfm_add_dct_dct_32x32_c
; c->itxfm_add[TX_32X32][IDTX] = inv_txfm_add_identity_identity_32x32_c
;
286 assign_itx_all_fn64(32, 64, R)c->itxfm_add[RTX_32X64][DCT_DCT ] = inv_txfm_add_dct_dct_32x64_c;
287 assign_itx_all_fn64(64, 16, R)c->itxfm_add[RTX_64X16][DCT_DCT ] = inv_txfm_add_dct_dct_64x16_c;
288 assign_itx_all_fn64(64, 32, R)c->itxfm_add[RTX_64X32][DCT_DCT ] = inv_txfm_add_dct_dct_64x32_c;
289 assign_itx_all_fn64(64, 64, )c->itxfm_add[TX_64X64][DCT_DCT ] = inv_txfm_add_dct_dct_64x64_c;
290
291 int all_simd = 0;
292#if HAVE_ASM1
293#if ARCH_AARCH640 || ARCH_ARM0
294 itx_dsp_init_arm(c, bpc, &all_simd);
295#endif
296#if ARCH_LOONGARCH64
297 itx_dsp_init_loongarch(c, bpc);
298#endif
299#if ARCH_PPC64LE
300 itx_dsp_init_ppc(c, bpc);
301#endif
302#if ARCH_RISCV
303 itx_dsp_init_riscv(c, bpc);
304#endif
305#if ARCH_X861
306 itx_dsp_init_x86(c, bpc, &all_simd);
307#endif
308#endif
309
310 if (!all_simd)
311 dav1d_init_last_nonzero_col_from_eob_tables();
312}