/work/dav1d/include/common/intops.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright © 2018, VideoLAN and dav1d authors |
3 | | * Copyright © 2018, Two Orioles, LLC |
4 | | * All rights reserved. |
5 | | * |
6 | | * Redistribution and use in source and binary forms, with or without |
7 | | * modification, are permitted provided that the following conditions are met: |
8 | | * |
9 | | * 1. Redistributions of source code must retain the above copyright notice, this |
10 | | * list of conditions and the following disclaimer. |
11 | | * |
12 | | * 2. Redistributions in binary form must reproduce the above copyright notice, |
13 | | * this list of conditions and the following disclaimer in the documentation |
14 | | * and/or other materials provided with the distribution. |
15 | | * |
16 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
17 | | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
20 | | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | | */ |
27 | | |
28 | | #ifndef DAV1D_COMMON_INTOPS_H |
29 | | #define DAV1D_COMMON_INTOPS_H |
30 | | |
31 | | #include <stdint.h> |
32 | | |
33 | | #include "common/attributes.h" |
34 | | |
35 | 0 | static inline int imax(const int a, const int b) { |
36 | 0 | return a > b ? a : b; |
37 | 0 | } Unexecuted instantiation: lib.c:imax Unexecuted instantiation: log.c:imax Unexecuted instantiation: mem.c:imax Unexecuted instantiation: obu.c:imax Unexecuted instantiation: picture.c:imax Unexecuted instantiation: refmvs.c:imax Unexecuted instantiation: tables.c:imax Unexecuted instantiation: thread_task.c:imax Unexecuted instantiation: wedge.c:imax Unexecuted instantiation: fg_apply_tmpl.c:imax Unexecuted instantiation: cdf.c:imax Unexecuted instantiation: decode.c:imax Unexecuted instantiation: getbits.c:imax Unexecuted instantiation: lf_mask.c:imax Unexecuted instantiation: msac.c:imax Unexecuted instantiation: warpmv.c:imax Unexecuted instantiation: cdef_tmpl.c:imax Unexecuted instantiation: filmgrain_tmpl.c:imax Unexecuted instantiation: ipred_tmpl.c:imax Unexecuted instantiation: itx_tmpl.c:imax Unexecuted instantiation: loopfilter_tmpl.c:imax Unexecuted instantiation: looprestoration_tmpl.c:imax Unexecuted instantiation: mc_tmpl.c:imax Unexecuted instantiation: recon_tmpl.c:imax Unexecuted instantiation: ctx.c:imax Unexecuted instantiation: itx_1d.c:imax Unexecuted instantiation: scan.c:imax Unexecuted instantiation: cdef_apply_tmpl.c:imax Unexecuted instantiation: ipred_prepare_tmpl.c:imax Unexecuted instantiation: lf_apply_tmpl.c:imax Unexecuted instantiation: lr_apply_tmpl.c:imax |
38 | | |
39 | 0 | static inline int imin(const int a, const int b) { |
40 | 0 | return a < b ? a : b; |
41 | 0 | } Unexecuted instantiation: lib.c:imin Unexecuted instantiation: log.c:imin Unexecuted instantiation: mem.c:imin Unexecuted instantiation: obu.c:imin Unexecuted instantiation: picture.c:imin Unexecuted instantiation: refmvs.c:imin Unexecuted instantiation: tables.c:imin Unexecuted instantiation: thread_task.c:imin Unexecuted instantiation: wedge.c:imin Unexecuted instantiation: fg_apply_tmpl.c:imin Unexecuted instantiation: cdf.c:imin Unexecuted instantiation: decode.c:imin Unexecuted instantiation: getbits.c:imin Unexecuted instantiation: lf_mask.c:imin Unexecuted instantiation: msac.c:imin Unexecuted instantiation: warpmv.c:imin Unexecuted instantiation: cdef_tmpl.c:imin Unexecuted instantiation: filmgrain_tmpl.c:imin Unexecuted instantiation: ipred_tmpl.c:imin Unexecuted instantiation: itx_tmpl.c:imin Unexecuted instantiation: loopfilter_tmpl.c:imin Unexecuted instantiation: looprestoration_tmpl.c:imin Unexecuted instantiation: mc_tmpl.c:imin Unexecuted instantiation: recon_tmpl.c:imin Unexecuted instantiation: ctx.c:imin Unexecuted instantiation: itx_1d.c:imin Unexecuted instantiation: scan.c:imin Unexecuted instantiation: cdef_apply_tmpl.c:imin Unexecuted instantiation: ipred_prepare_tmpl.c:imin Unexecuted instantiation: lf_apply_tmpl.c:imin Unexecuted instantiation: lr_apply_tmpl.c:imin |
42 | | |
43 | 0 | static inline unsigned umax(const unsigned a, const unsigned b) { |
44 | 0 | return a > b ? a : b; |
45 | 0 | } Unexecuted instantiation: lib.c:umax Unexecuted instantiation: log.c:umax Unexecuted instantiation: mem.c:umax Unexecuted instantiation: obu.c:umax Unexecuted instantiation: picture.c:umax Unexecuted instantiation: refmvs.c:umax Unexecuted instantiation: tables.c:umax Unexecuted instantiation: thread_task.c:umax Unexecuted instantiation: wedge.c:umax Unexecuted instantiation: fg_apply_tmpl.c:umax Unexecuted instantiation: cdf.c:umax Unexecuted instantiation: decode.c:umax Unexecuted instantiation: getbits.c:umax Unexecuted instantiation: lf_mask.c:umax Unexecuted instantiation: msac.c:umax Unexecuted instantiation: warpmv.c:umax Unexecuted instantiation: cdef_tmpl.c:umax Unexecuted instantiation: filmgrain_tmpl.c:umax Unexecuted instantiation: ipred_tmpl.c:umax Unexecuted instantiation: itx_tmpl.c:umax Unexecuted instantiation: loopfilter_tmpl.c:umax Unexecuted instantiation: looprestoration_tmpl.c:umax Unexecuted instantiation: mc_tmpl.c:umax Unexecuted instantiation: recon_tmpl.c:umax Unexecuted instantiation: ctx.c:umax Unexecuted instantiation: itx_1d.c:umax Unexecuted instantiation: scan.c:umax Unexecuted instantiation: cdef_apply_tmpl.c:umax Unexecuted instantiation: ipred_prepare_tmpl.c:umax Unexecuted instantiation: lf_apply_tmpl.c:umax Unexecuted instantiation: lr_apply_tmpl.c:umax |
46 | | |
47 | 0 | static inline unsigned umin(const unsigned a, const unsigned b) { |
48 | 0 | return a < b ? a : b; |
49 | 0 | } Unexecuted instantiation: lib.c:umin Unexecuted instantiation: log.c:umin Unexecuted instantiation: mem.c:umin Unexecuted instantiation: obu.c:umin Unexecuted instantiation: picture.c:umin Unexecuted instantiation: refmvs.c:umin Unexecuted instantiation: tables.c:umin Unexecuted instantiation: thread_task.c:umin Unexecuted instantiation: wedge.c:umin Unexecuted instantiation: fg_apply_tmpl.c:umin Unexecuted instantiation: cdf.c:umin Unexecuted instantiation: decode.c:umin Unexecuted instantiation: getbits.c:umin Unexecuted instantiation: lf_mask.c:umin Unexecuted instantiation: msac.c:umin Unexecuted instantiation: warpmv.c:umin Unexecuted instantiation: cdef_tmpl.c:umin Unexecuted instantiation: filmgrain_tmpl.c:umin Unexecuted instantiation: ipred_tmpl.c:umin Unexecuted instantiation: itx_tmpl.c:umin Unexecuted instantiation: loopfilter_tmpl.c:umin Unexecuted instantiation: looprestoration_tmpl.c:umin Unexecuted instantiation: mc_tmpl.c:umin Unexecuted instantiation: recon_tmpl.c:umin Unexecuted instantiation: ctx.c:umin Unexecuted instantiation: itx_1d.c:umin Unexecuted instantiation: scan.c:umin Unexecuted instantiation: cdef_apply_tmpl.c:umin Unexecuted instantiation: ipred_prepare_tmpl.c:umin Unexecuted instantiation: lf_apply_tmpl.c:umin Unexecuted instantiation: lr_apply_tmpl.c:umin |
50 | | |
51 | 0 | static inline int iclip(const int v, const int min, const int max) { |
52 | 0 | return v < min ? min : v > max ? max : v; |
53 | 0 | } Unexecuted instantiation: lib.c:iclip Unexecuted instantiation: log.c:iclip Unexecuted instantiation: mem.c:iclip Unexecuted instantiation: obu.c:iclip Unexecuted instantiation: picture.c:iclip Unexecuted instantiation: refmvs.c:iclip Unexecuted instantiation: tables.c:iclip Unexecuted instantiation: thread_task.c:iclip Unexecuted instantiation: wedge.c:iclip Unexecuted instantiation: fg_apply_tmpl.c:iclip Unexecuted instantiation: cdf.c:iclip Unexecuted instantiation: decode.c:iclip Unexecuted instantiation: getbits.c:iclip Unexecuted instantiation: lf_mask.c:iclip Unexecuted instantiation: msac.c:iclip Unexecuted instantiation: warpmv.c:iclip Unexecuted instantiation: cdef_tmpl.c:iclip Unexecuted instantiation: filmgrain_tmpl.c:iclip Unexecuted instantiation: ipred_tmpl.c:iclip Unexecuted instantiation: itx_tmpl.c:iclip Unexecuted instantiation: loopfilter_tmpl.c:iclip Unexecuted instantiation: looprestoration_tmpl.c:iclip Unexecuted instantiation: mc_tmpl.c:iclip Unexecuted instantiation: recon_tmpl.c:iclip Unexecuted instantiation: ctx.c:iclip Unexecuted instantiation: itx_1d.c:iclip Unexecuted instantiation: scan.c:iclip Unexecuted instantiation: cdef_apply_tmpl.c:iclip Unexecuted instantiation: ipred_prepare_tmpl.c:iclip Unexecuted instantiation: lf_apply_tmpl.c:iclip Unexecuted instantiation: lr_apply_tmpl.c:iclip |
54 | | |
55 | 0 | static inline int iclip_u8(const int v) { |
56 | 0 | return iclip(v, 0, 255); |
57 | 0 | } Unexecuted instantiation: lib.c:iclip_u8 Unexecuted instantiation: log.c:iclip_u8 Unexecuted instantiation: mem.c:iclip_u8 Unexecuted instantiation: obu.c:iclip_u8 Unexecuted instantiation: picture.c:iclip_u8 Unexecuted instantiation: refmvs.c:iclip_u8 Unexecuted instantiation: tables.c:iclip_u8 Unexecuted instantiation: thread_task.c:iclip_u8 Unexecuted instantiation: wedge.c:iclip_u8 Unexecuted instantiation: fg_apply_tmpl.c:iclip_u8 Unexecuted instantiation: cdf.c:iclip_u8 Unexecuted instantiation: decode.c:iclip_u8 Unexecuted instantiation: getbits.c:iclip_u8 Unexecuted instantiation: lf_mask.c:iclip_u8 Unexecuted instantiation: msac.c:iclip_u8 Unexecuted instantiation: warpmv.c:iclip_u8 Unexecuted instantiation: cdef_tmpl.c:iclip_u8 Unexecuted instantiation: filmgrain_tmpl.c:iclip_u8 Unexecuted instantiation: ipred_tmpl.c:iclip_u8 Unexecuted instantiation: itx_tmpl.c:iclip_u8 Unexecuted instantiation: loopfilter_tmpl.c:iclip_u8 Unexecuted instantiation: looprestoration_tmpl.c:iclip_u8 Unexecuted instantiation: mc_tmpl.c:iclip_u8 Unexecuted instantiation: recon_tmpl.c:iclip_u8 Unexecuted instantiation: ctx.c:iclip_u8 Unexecuted instantiation: itx_1d.c:iclip_u8 Unexecuted instantiation: scan.c:iclip_u8 Unexecuted instantiation: cdef_apply_tmpl.c:iclip_u8 Unexecuted instantiation: ipred_prepare_tmpl.c:iclip_u8 Unexecuted instantiation: lf_apply_tmpl.c:iclip_u8 Unexecuted instantiation: lr_apply_tmpl.c:iclip_u8 |
58 | | |
59 | 0 | static inline int apply_sign(const int v, const int s) { |
60 | 0 | return s < 0 ? -v : v; |
61 | 0 | } Unexecuted instantiation: lib.c:apply_sign Unexecuted instantiation: log.c:apply_sign Unexecuted instantiation: mem.c:apply_sign Unexecuted instantiation: obu.c:apply_sign Unexecuted instantiation: picture.c:apply_sign Unexecuted instantiation: refmvs.c:apply_sign Unexecuted instantiation: tables.c:apply_sign Unexecuted instantiation: thread_task.c:apply_sign Unexecuted instantiation: wedge.c:apply_sign Unexecuted instantiation: fg_apply_tmpl.c:apply_sign Unexecuted instantiation: cdf.c:apply_sign Unexecuted instantiation: decode.c:apply_sign Unexecuted instantiation: getbits.c:apply_sign Unexecuted instantiation: lf_mask.c:apply_sign Unexecuted instantiation: msac.c:apply_sign Unexecuted instantiation: warpmv.c:apply_sign Unexecuted instantiation: cdef_tmpl.c:apply_sign Unexecuted instantiation: filmgrain_tmpl.c:apply_sign Unexecuted instantiation: ipred_tmpl.c:apply_sign Unexecuted instantiation: itx_tmpl.c:apply_sign Unexecuted instantiation: loopfilter_tmpl.c:apply_sign Unexecuted instantiation: looprestoration_tmpl.c:apply_sign Unexecuted instantiation: mc_tmpl.c:apply_sign Unexecuted instantiation: recon_tmpl.c:apply_sign Unexecuted instantiation: ctx.c:apply_sign Unexecuted instantiation: itx_1d.c:apply_sign Unexecuted instantiation: scan.c:apply_sign Unexecuted instantiation: cdef_apply_tmpl.c:apply_sign Unexecuted instantiation: ipred_prepare_tmpl.c:apply_sign Unexecuted instantiation: lf_apply_tmpl.c:apply_sign Unexecuted instantiation: lr_apply_tmpl.c:apply_sign |
62 | | |
63 | 0 | static inline int apply_sign64(const int v, const int64_t s) { |
64 | 0 | return s < 0 ? -v : v; |
65 | 0 | } Unexecuted instantiation: lib.c:apply_sign64 Unexecuted instantiation: log.c:apply_sign64 Unexecuted instantiation: mem.c:apply_sign64 Unexecuted instantiation: obu.c:apply_sign64 Unexecuted instantiation: picture.c:apply_sign64 Unexecuted instantiation: refmvs.c:apply_sign64 Unexecuted instantiation: tables.c:apply_sign64 Unexecuted instantiation: thread_task.c:apply_sign64 Unexecuted instantiation: wedge.c:apply_sign64 Unexecuted instantiation: fg_apply_tmpl.c:apply_sign64 Unexecuted instantiation: cdf.c:apply_sign64 Unexecuted instantiation: decode.c:apply_sign64 Unexecuted instantiation: getbits.c:apply_sign64 Unexecuted instantiation: lf_mask.c:apply_sign64 Unexecuted instantiation: msac.c:apply_sign64 Unexecuted instantiation: warpmv.c:apply_sign64 Unexecuted instantiation: cdef_tmpl.c:apply_sign64 Unexecuted instantiation: filmgrain_tmpl.c:apply_sign64 Unexecuted instantiation: ipred_tmpl.c:apply_sign64 Unexecuted instantiation: itx_tmpl.c:apply_sign64 Unexecuted instantiation: loopfilter_tmpl.c:apply_sign64 Unexecuted instantiation: looprestoration_tmpl.c:apply_sign64 Unexecuted instantiation: mc_tmpl.c:apply_sign64 Unexecuted instantiation: recon_tmpl.c:apply_sign64 Unexecuted instantiation: ctx.c:apply_sign64 Unexecuted instantiation: itx_1d.c:apply_sign64 Unexecuted instantiation: scan.c:apply_sign64 Unexecuted instantiation: cdef_apply_tmpl.c:apply_sign64 Unexecuted instantiation: ipred_prepare_tmpl.c:apply_sign64 Unexecuted instantiation: lf_apply_tmpl.c:apply_sign64 Unexecuted instantiation: lr_apply_tmpl.c:apply_sign64 |
66 | | |
67 | 0 | static inline int ulog2(const unsigned v) { |
68 | 0 | return 31 ^ clz(v); |
69 | 0 | } Unexecuted instantiation: lib.c:ulog2 Unexecuted instantiation: log.c:ulog2 Unexecuted instantiation: mem.c:ulog2 Unexecuted instantiation: obu.c:ulog2 Unexecuted instantiation: picture.c:ulog2 Unexecuted instantiation: refmvs.c:ulog2 Unexecuted instantiation: tables.c:ulog2 Unexecuted instantiation: thread_task.c:ulog2 Unexecuted instantiation: wedge.c:ulog2 Unexecuted instantiation: fg_apply_tmpl.c:ulog2 Unexecuted instantiation: cdf.c:ulog2 Unexecuted instantiation: decode.c:ulog2 Unexecuted instantiation: getbits.c:ulog2 Unexecuted instantiation: lf_mask.c:ulog2 Unexecuted instantiation: msac.c:ulog2 Unexecuted instantiation: warpmv.c:ulog2 Unexecuted instantiation: cdef_tmpl.c:ulog2 Unexecuted instantiation: filmgrain_tmpl.c:ulog2 Unexecuted instantiation: ipred_tmpl.c:ulog2 Unexecuted instantiation: itx_tmpl.c:ulog2 Unexecuted instantiation: loopfilter_tmpl.c:ulog2 Unexecuted instantiation: looprestoration_tmpl.c:ulog2 Unexecuted instantiation: mc_tmpl.c:ulog2 Unexecuted instantiation: recon_tmpl.c:ulog2 Unexecuted instantiation: ctx.c:ulog2 Unexecuted instantiation: itx_1d.c:ulog2 Unexecuted instantiation: scan.c:ulog2 Unexecuted instantiation: cdef_apply_tmpl.c:ulog2 Unexecuted instantiation: ipred_prepare_tmpl.c:ulog2 Unexecuted instantiation: lf_apply_tmpl.c:ulog2 Unexecuted instantiation: lr_apply_tmpl.c:ulog2 |
70 | | |
71 | 0 | static inline int u64log2(const uint64_t v) { |
72 | 0 | return 63 ^ clzll(v); |
73 | 0 | } Unexecuted instantiation: lib.c:u64log2 Unexecuted instantiation: log.c:u64log2 Unexecuted instantiation: mem.c:u64log2 Unexecuted instantiation: obu.c:u64log2 Unexecuted instantiation: picture.c:u64log2 Unexecuted instantiation: refmvs.c:u64log2 Unexecuted instantiation: tables.c:u64log2 Unexecuted instantiation: thread_task.c:u64log2 Unexecuted instantiation: wedge.c:u64log2 Unexecuted instantiation: fg_apply_tmpl.c:u64log2 Unexecuted instantiation: cdf.c:u64log2 Unexecuted instantiation: decode.c:u64log2 Unexecuted instantiation: getbits.c:u64log2 Unexecuted instantiation: lf_mask.c:u64log2 Unexecuted instantiation: msac.c:u64log2 Unexecuted instantiation: warpmv.c:u64log2 Unexecuted instantiation: cdef_tmpl.c:u64log2 Unexecuted instantiation: filmgrain_tmpl.c:u64log2 Unexecuted instantiation: ipred_tmpl.c:u64log2 Unexecuted instantiation: itx_tmpl.c:u64log2 Unexecuted instantiation: loopfilter_tmpl.c:u64log2 Unexecuted instantiation: looprestoration_tmpl.c:u64log2 Unexecuted instantiation: mc_tmpl.c:u64log2 Unexecuted instantiation: recon_tmpl.c:u64log2 Unexecuted instantiation: ctx.c:u64log2 Unexecuted instantiation: itx_1d.c:u64log2 Unexecuted instantiation: scan.c:u64log2 Unexecuted instantiation: cdef_apply_tmpl.c:u64log2 Unexecuted instantiation: ipred_prepare_tmpl.c:u64log2 Unexecuted instantiation: lf_apply_tmpl.c:u64log2 Unexecuted instantiation: lr_apply_tmpl.c:u64log2 |
74 | | |
75 | 0 | static inline unsigned inv_recenter(const unsigned r, const unsigned v) { |
76 | 0 | if (v > (r << 1)) |
77 | 0 | return v; |
78 | 0 | else if ((v & 1) == 0) |
79 | 0 | return (v >> 1) + r; |
80 | 0 | else |
81 | 0 | return r - ((v + 1) >> 1); |
82 | 0 | } Unexecuted instantiation: lib.c:inv_recenter Unexecuted instantiation: log.c:inv_recenter Unexecuted instantiation: mem.c:inv_recenter Unexecuted instantiation: obu.c:inv_recenter Unexecuted instantiation: picture.c:inv_recenter Unexecuted instantiation: refmvs.c:inv_recenter Unexecuted instantiation: tables.c:inv_recenter Unexecuted instantiation: thread_task.c:inv_recenter Unexecuted instantiation: wedge.c:inv_recenter Unexecuted instantiation: fg_apply_tmpl.c:inv_recenter Unexecuted instantiation: cdf.c:inv_recenter Unexecuted instantiation: decode.c:inv_recenter Unexecuted instantiation: getbits.c:inv_recenter Unexecuted instantiation: lf_mask.c:inv_recenter Unexecuted instantiation: msac.c:inv_recenter Unexecuted instantiation: warpmv.c:inv_recenter Unexecuted instantiation: cdef_tmpl.c:inv_recenter Unexecuted instantiation: filmgrain_tmpl.c:inv_recenter Unexecuted instantiation: ipred_tmpl.c:inv_recenter Unexecuted instantiation: itx_tmpl.c:inv_recenter Unexecuted instantiation: loopfilter_tmpl.c:inv_recenter Unexecuted instantiation: looprestoration_tmpl.c:inv_recenter Unexecuted instantiation: mc_tmpl.c:inv_recenter Unexecuted instantiation: recon_tmpl.c:inv_recenter Unexecuted instantiation: ctx.c:inv_recenter Unexecuted instantiation: itx_1d.c:inv_recenter Unexecuted instantiation: scan.c:inv_recenter Unexecuted instantiation: cdef_apply_tmpl.c:inv_recenter Unexecuted instantiation: ipred_prepare_tmpl.c:inv_recenter Unexecuted instantiation: lf_apply_tmpl.c:inv_recenter Unexecuted instantiation: lr_apply_tmpl.c:inv_recenter |
83 | | |
84 | | #endif /* DAV1D_COMMON_INTOPS_H */ |