tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

cdef.h (2555B)


      1 /*
      2 * Copyright © 2019, Luca Barbato
      3 * All rights reserved.
      4 *
      5 * Redistribution and use in source and binary forms, with or without
      6 * modification, are permitted provided that the following conditions are met:
      7 *
      8 * 1. Redistributions of source code must retain the above copyright notice, this
      9 *    list of conditions and the following disclaimer.
     10 *
     11 * 2. Redistributions in binary form must reproduce the above copyright notice,
     12 *    this list of conditions and the following disclaimer in the documentation
     13 *    and/or other materials provided with the distribution.
     14 *
     15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
     19 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     22 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     24 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     25 */
     26 
     27 #include <stdlib.h>
     28 
     29 #include "common/bitdepth.h"
     30 #include "common/intops.h"
     31 
     32 #include "src/cdef.h"
     33 #include "src/cpu.h"
     34 
     35 #define cdef_vsx_fn(w, h) \
     36 void dav1d_cdef_filter_##w##x##h##_vsx(pixel *const dst, \
     37                                       const ptrdiff_t dst_stride, \
     38                                       const pixel (*left)[2], \
     39                                       const pixel *const top, \
     40                                       const pixel *const bottom, \
     41                                       const int pri_strength, \
     42                                       const int sec_strength, \
     43                                       const int dir, \
     44                                       const int damping, \
     45                                       const enum CdefEdgeFlags edges)
     46 
     47 cdef_vsx_fn(4, 4);
     48 cdef_vsx_fn(4, 8);
     49 cdef_vsx_fn(8, 8);
     50 
     51 static ALWAYS_INLINE void cdef_dsp_init_ppc(Dav1dCdefDSPContext *const c) {
     52    const unsigned flags = dav1d_get_cpu_flags();
     53 
     54    if (!(flags & DAV1D_PPC_CPU_FLAG_VSX)) return;
     55 
     56 #if BITDEPTH == 8
     57    c->fb[0] = dav1d_cdef_filter_8x8_vsx;
     58    c->fb[1] = dav1d_cdef_filter_4x8_vsx;
     59    c->fb[2] = dav1d_cdef_filter_4x4_vsx;
     60 #endif
     61 }