1*09537850SAkhilesh Sanikop /* 2*09537850SAkhilesh Sanikop * Copyright 2020 The libgav1 Authors 3*09537850SAkhilesh Sanikop * 4*09537850SAkhilesh Sanikop * Licensed under the Apache License, Version 2.0 (the "License"); 5*09537850SAkhilesh Sanikop * you may not use this file except in compliance with the License. 6*09537850SAkhilesh Sanikop * You may obtain a copy of the License at 7*09537850SAkhilesh Sanikop * 8*09537850SAkhilesh Sanikop * http://www.apache.org/licenses/LICENSE-2.0 9*09537850SAkhilesh Sanikop * 10*09537850SAkhilesh Sanikop * Unless required by applicable law or agreed to in writing, software 11*09537850SAkhilesh Sanikop * distributed under the License is distributed on an "AS IS" BASIS, 12*09537850SAkhilesh Sanikop * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*09537850SAkhilesh Sanikop * See the License for the specific language governing permissions and 14*09537850SAkhilesh Sanikop * limitations under the License. 15*09537850SAkhilesh Sanikop */ 16*09537850SAkhilesh Sanikop 17*09537850SAkhilesh Sanikop #ifndef LIBGAV1_SRC_DSP_X86_CONVOLVE_AVX2_H_ 18*09537850SAkhilesh Sanikop #define LIBGAV1_SRC_DSP_X86_CONVOLVE_AVX2_H_ 19*09537850SAkhilesh Sanikop 20*09537850SAkhilesh Sanikop #include "src/dsp/dsp.h" 21*09537850SAkhilesh Sanikop #include "src/utils/cpu.h" 22*09537850SAkhilesh Sanikop 23*09537850SAkhilesh Sanikop namespace libgav1 { 24*09537850SAkhilesh Sanikop namespace dsp { 25*09537850SAkhilesh Sanikop 26*09537850SAkhilesh Sanikop // Initializes Dsp::convolve, see the defines below for specifics. This 27*09537850SAkhilesh Sanikop // function is not thread-safe. 28*09537850SAkhilesh Sanikop void ConvolveInit_AVX2(); 29*09537850SAkhilesh Sanikop 30*09537850SAkhilesh Sanikop } // namespace dsp 31*09537850SAkhilesh Sanikop } // namespace libgav1 32*09537850SAkhilesh Sanikop 33*09537850SAkhilesh Sanikop // If avx2 is enabled and the baseline isn't set due to a higher level of 34*09537850SAkhilesh Sanikop // optimization being enabled, signal the avx2 implementation should be used. 35*09537850SAkhilesh Sanikop #if LIBGAV1_TARGETING_AVX2 36*09537850SAkhilesh Sanikop 37*09537850SAkhilesh Sanikop #ifndef LIBGAV1_Dsp8bpp_ConvolveHorizontal 38*09537850SAkhilesh Sanikop #define LIBGAV1_Dsp8bpp_ConvolveHorizontal LIBGAV1_CPU_AVX2 39*09537850SAkhilesh Sanikop #endif 40*09537850SAkhilesh Sanikop 41*09537850SAkhilesh Sanikop #ifndef LIBGAV1_Dsp8bpp_ConvolveCompoundHorizontal 42*09537850SAkhilesh Sanikop #define LIBGAV1_Dsp8bpp_ConvolveCompoundHorizontal LIBGAV1_CPU_AVX2 43*09537850SAkhilesh Sanikop #endif 44*09537850SAkhilesh Sanikop 45*09537850SAkhilesh Sanikop #ifndef LIBGAV1_Dsp8bpp_ConvolveVertical 46*09537850SAkhilesh Sanikop #define LIBGAV1_Dsp8bpp_ConvolveVertical LIBGAV1_CPU_AVX2 47*09537850SAkhilesh Sanikop #endif 48*09537850SAkhilesh Sanikop 49*09537850SAkhilesh Sanikop #ifndef LIBGAV1_Dsp8bpp_Convolve2D 50*09537850SAkhilesh Sanikop #define LIBGAV1_Dsp8bpp_Convolve2D LIBGAV1_CPU_AVX2 51*09537850SAkhilesh Sanikop #endif 52*09537850SAkhilesh Sanikop 53*09537850SAkhilesh Sanikop #ifndef LIBGAV1_Dsp8bpp_ConvolveCompoundVertical 54*09537850SAkhilesh Sanikop #define LIBGAV1_Dsp8bpp_ConvolveCompoundVertical LIBGAV1_CPU_AVX2 55*09537850SAkhilesh Sanikop #endif 56*09537850SAkhilesh Sanikop 57*09537850SAkhilesh Sanikop #endif // LIBGAV1_TARGETING_AVX2 58*09537850SAkhilesh Sanikop 59*09537850SAkhilesh Sanikop #endif // LIBGAV1_SRC_DSP_X86_CONVOLVE_AVX2_H_ 60