1 /* 2 * Copyright 2021 The libgav1 Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef LIBGAV1_SRC_DSP_ARM_INTRAPRED_SMOOTH_NEON_H_ 18 #define LIBGAV1_SRC_DSP_ARM_INTRAPRED_SMOOTH_NEON_H_ 19 20 #include "src/dsp/dsp.h" 21 #include "src/utils/cpu.h" 22 23 namespace libgav1 { 24 namespace dsp { 25 26 // Initializes Dsp::intra_predictors[][kIntraPredictorSmooth.*]. 27 // This function is not thread-safe. 28 void IntraPredSmoothInit_NEON(); 29 30 } // namespace dsp 31 } // namespace libgav1 32 33 #if LIBGAV1_ENABLE_NEON 34 #define LIBGAV1_Dsp8bpp_TransformSize4x4_IntraPredictorSmooth LIBGAV1_CPU_NEON 35 #define LIBGAV1_Dsp8bpp_TransformSize4x4_IntraPredictorSmoothVertical \ 36 LIBGAV1_CPU_NEON 37 #define LIBGAV1_Dsp8bpp_TransformSize4x4_IntraPredictorSmoothHorizontal \ 38 LIBGAV1_CPU_NEON 39 40 #define LIBGAV1_Dsp8bpp_TransformSize4x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 41 #define LIBGAV1_Dsp8bpp_TransformSize4x8_IntraPredictorSmoothVertical \ 42 LIBGAV1_CPU_NEON 43 #define LIBGAV1_Dsp8bpp_TransformSize4x8_IntraPredictorSmoothHorizontal \ 44 LIBGAV1_CPU_NEON 45 46 #define LIBGAV1_Dsp8bpp_TransformSize4x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 47 #define LIBGAV1_Dsp8bpp_TransformSize4x16_IntraPredictorSmoothVertical \ 48 LIBGAV1_CPU_NEON 49 #define LIBGAV1_Dsp8bpp_TransformSize4x16_IntraPredictorSmoothHorizontal \ 50 LIBGAV1_CPU_NEON 51 52 #define LIBGAV1_Dsp8bpp_TransformSize8x4_IntraPredictorSmooth LIBGAV1_CPU_NEON 53 #define LIBGAV1_Dsp8bpp_TransformSize8x4_IntraPredictorSmoothVertical \ 54 LIBGAV1_CPU_NEON 55 #define LIBGAV1_Dsp8bpp_TransformSize8x4_IntraPredictorSmoothHorizontal \ 56 LIBGAV1_CPU_NEON 57 58 #define LIBGAV1_Dsp8bpp_TransformSize8x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 59 #define LIBGAV1_Dsp8bpp_TransformSize8x8_IntraPredictorSmoothVertical \ 60 LIBGAV1_CPU_NEON 61 #define LIBGAV1_Dsp8bpp_TransformSize8x8_IntraPredictorSmoothHorizontal \ 62 LIBGAV1_CPU_NEON 63 64 #define LIBGAV1_Dsp8bpp_TransformSize8x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 65 #define LIBGAV1_Dsp8bpp_TransformSize8x16_IntraPredictorSmoothVertical \ 66 LIBGAV1_CPU_NEON 67 #define LIBGAV1_Dsp8bpp_TransformSize8x16_IntraPredictorSmoothHorizontal \ 68 LIBGAV1_CPU_NEON 69 70 #define LIBGAV1_Dsp8bpp_TransformSize8x32_IntraPredictorSmooth LIBGAV1_CPU_NEON 71 #define LIBGAV1_Dsp8bpp_TransformSize8x32_IntraPredictorSmoothVertical \ 72 LIBGAV1_CPU_NEON 73 #define LIBGAV1_Dsp8bpp_TransformSize8x32_IntraPredictorSmoothHorizontal \ 74 LIBGAV1_CPU_NEON 75 76 #define LIBGAV1_Dsp8bpp_TransformSize16x4_IntraPredictorSmooth LIBGAV1_CPU_NEON 77 #define LIBGAV1_Dsp8bpp_TransformSize16x4_IntraPredictorSmoothVertical \ 78 LIBGAV1_CPU_NEON 79 #define LIBGAV1_Dsp8bpp_TransformSize16x4_IntraPredictorSmoothHorizontal \ 80 LIBGAV1_CPU_NEON 81 82 #define LIBGAV1_Dsp8bpp_TransformSize16x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 83 #define LIBGAV1_Dsp8bpp_TransformSize16x8_IntraPredictorSmoothVertical \ 84 LIBGAV1_CPU_NEON 85 #define LIBGAV1_Dsp8bpp_TransformSize16x8_IntraPredictorSmoothHorizontal \ 86 LIBGAV1_CPU_NEON 87 88 #define LIBGAV1_Dsp8bpp_TransformSize16x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 89 #define LIBGAV1_Dsp8bpp_TransformSize16x16_IntraPredictorSmoothVertical \ 90 LIBGAV1_CPU_NEON 91 #define LIBGAV1_Dsp8bpp_TransformSize16x16_IntraPredictorSmoothHorizontal \ 92 LIBGAV1_CPU_NEON 93 94 #define LIBGAV1_Dsp8bpp_TransformSize16x32_IntraPredictorSmooth LIBGAV1_CPU_NEON 95 #define LIBGAV1_Dsp8bpp_TransformSize16x32_IntraPredictorSmoothVertical \ 96 LIBGAV1_CPU_NEON 97 #define LIBGAV1_Dsp8bpp_TransformSize16x32_IntraPredictorSmoothHorizontal \ 98 LIBGAV1_CPU_NEON 99 100 #define LIBGAV1_Dsp8bpp_TransformSize16x64_IntraPredictorSmooth LIBGAV1_CPU_NEON 101 #define LIBGAV1_Dsp8bpp_TransformSize16x64_IntraPredictorSmoothVertical \ 102 LIBGAV1_CPU_NEON 103 #define LIBGAV1_Dsp8bpp_TransformSize16x64_IntraPredictorSmoothHorizontal \ 104 LIBGAV1_CPU_NEON 105 106 #define LIBGAV1_Dsp8bpp_TransformSize32x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 107 #define LIBGAV1_Dsp8bpp_TransformSize32x8_IntraPredictorSmoothVertical \ 108 LIBGAV1_CPU_NEON 109 #define LIBGAV1_Dsp8bpp_TransformSize32x8_IntraPredictorSmoothHorizontal \ 110 LIBGAV1_CPU_NEON 111 112 #define LIBGAV1_Dsp8bpp_TransformSize32x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 113 #define LIBGAV1_Dsp8bpp_TransformSize32x16_IntraPredictorSmoothVertical \ 114 LIBGAV1_CPU_NEON 115 #define LIBGAV1_Dsp8bpp_TransformSize32x16_IntraPredictorSmoothHorizontal \ 116 LIBGAV1_CPU_NEON 117 118 #define LIBGAV1_Dsp8bpp_TransformSize32x32_IntraPredictorSmooth LIBGAV1_CPU_NEON 119 #define LIBGAV1_Dsp8bpp_TransformSize32x32_IntraPredictorSmoothVertical \ 120 LIBGAV1_CPU_NEON 121 #define LIBGAV1_Dsp8bpp_TransformSize32x32_IntraPredictorSmoothHorizontal \ 122 LIBGAV1_CPU_NEON 123 124 #define LIBGAV1_Dsp8bpp_TransformSize32x64_IntraPredictorSmooth LIBGAV1_CPU_NEON 125 #define LIBGAV1_Dsp8bpp_TransformSize32x64_IntraPredictorSmoothVertical \ 126 LIBGAV1_CPU_NEON 127 #define LIBGAV1_Dsp8bpp_TransformSize32x64_IntraPredictorSmoothHorizontal \ 128 LIBGAV1_CPU_NEON 129 130 #define LIBGAV1_Dsp8bpp_TransformSize64x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 131 #define LIBGAV1_Dsp8bpp_TransformSize64x16_IntraPredictorSmoothVertical \ 132 LIBGAV1_CPU_NEON 133 #define LIBGAV1_Dsp8bpp_TransformSize64x16_IntraPredictorSmoothHorizontal \ 134 LIBGAV1_CPU_NEON 135 136 #define LIBGAV1_Dsp8bpp_TransformSize64x32_IntraPredictorSmooth LIBGAV1_CPU_NEON 137 #define LIBGAV1_Dsp8bpp_TransformSize64x32_IntraPredictorSmoothVertical \ 138 LIBGAV1_CPU_NEON 139 #define LIBGAV1_Dsp8bpp_TransformSize64x32_IntraPredictorSmoothHorizontal \ 140 LIBGAV1_CPU_NEON 141 142 #define LIBGAV1_Dsp8bpp_TransformSize64x64_IntraPredictorSmooth LIBGAV1_CPU_NEON 143 #define LIBGAV1_Dsp8bpp_TransformSize64x64_IntraPredictorSmoothVertical \ 144 LIBGAV1_CPU_NEON 145 #define LIBGAV1_Dsp8bpp_TransformSize64x64_IntraPredictorSmoothHorizontal \ 146 LIBGAV1_CPU_NEON 147 148 // 10bpp 149 #define LIBGAV1_Dsp10bpp_TransformSize4x4_IntraPredictorSmooth LIBGAV1_CPU_NEON 150 #define LIBGAV1_Dsp10bpp_TransformSize4x4_IntraPredictorSmoothVertical \ 151 LIBGAV1_CPU_NEON 152 #define LIBGAV1_Dsp10bpp_TransformSize4x4_IntraPredictorSmoothHorizontal \ 153 LIBGAV1_CPU_NEON 154 155 #define LIBGAV1_Dsp10bpp_TransformSize4x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 156 #define LIBGAV1_Dsp10bpp_TransformSize4x8_IntraPredictorSmoothVertical \ 157 LIBGAV1_CPU_NEON 158 #define LIBGAV1_Dsp10bpp_TransformSize4x8_IntraPredictorSmoothHorizontal \ 159 LIBGAV1_CPU_NEON 160 161 #define LIBGAV1_Dsp10bpp_TransformSize4x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 162 #define LIBGAV1_Dsp10bpp_TransformSize4x16_IntraPredictorSmoothVertical \ 163 LIBGAV1_CPU_NEON 164 #define LIBGAV1_Dsp10bpp_TransformSize4x16_IntraPredictorSmoothHorizontal \ 165 LIBGAV1_CPU_NEON 166 167 #define LIBGAV1_Dsp10bpp_TransformSize8x4_IntraPredictorSmooth LIBGAV1_CPU_NEON 168 #define LIBGAV1_Dsp10bpp_TransformSize8x4_IntraPredictorSmoothVertical \ 169 LIBGAV1_CPU_NEON 170 #define LIBGAV1_Dsp10bpp_TransformSize8x4_IntraPredictorSmoothHorizontal \ 171 LIBGAV1_CPU_NEON 172 173 #define LIBGAV1_Dsp10bpp_TransformSize8x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 174 #define LIBGAV1_Dsp10bpp_TransformSize8x8_IntraPredictorSmoothVertical \ 175 LIBGAV1_CPU_NEON 176 #define LIBGAV1_Dsp10bpp_TransformSize8x8_IntraPredictorSmoothHorizontal \ 177 LIBGAV1_CPU_NEON 178 179 #define LIBGAV1_Dsp10bpp_TransformSize8x16_IntraPredictorSmooth LIBGAV1_CPU_NEON 180 #define LIBGAV1_Dsp10bpp_TransformSize8x16_IntraPredictorSmoothVertical \ 181 LIBGAV1_CPU_NEON 182 #define LIBGAV1_Dsp10bpp_TransformSize8x16_IntraPredictorSmoothHorizontal \ 183 LIBGAV1_CPU_NEON 184 185 #define LIBGAV1_Dsp10bpp_TransformSize8x32_IntraPredictorSmooth LIBGAV1_CPU_NEON 186 #define LIBGAV1_Dsp10bpp_TransformSize8x32_IntraPredictorSmoothVertical \ 187 LIBGAV1_CPU_NEON 188 #define LIBGAV1_Dsp10bpp_TransformSize8x32_IntraPredictorSmoothHorizontal \ 189 LIBGAV1_CPU_NEON 190 191 #define LIBGAV1_Dsp10bpp_TransformSize16x4_IntraPredictorSmooth LIBGAV1_CPU_NEON 192 #define LIBGAV1_Dsp10bpp_TransformSize16x4_IntraPredictorSmoothVertical \ 193 LIBGAV1_CPU_NEON 194 #define LIBGAV1_Dsp10bpp_TransformSize16x4_IntraPredictorSmoothHorizontal \ 195 LIBGAV1_CPU_NEON 196 197 #define LIBGAV1_Dsp10bpp_TransformSize16x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 198 #define LIBGAV1_Dsp10bpp_TransformSize16x8_IntraPredictorSmoothVertical \ 199 LIBGAV1_CPU_NEON 200 #define LIBGAV1_Dsp10bpp_TransformSize16x8_IntraPredictorSmoothHorizontal \ 201 LIBGAV1_CPU_NEON 202 203 #define LIBGAV1_Dsp10bpp_TransformSize16x16_IntraPredictorSmooth \ 204 LIBGAV1_CPU_NEON 205 #define LIBGAV1_Dsp10bpp_TransformSize16x16_IntraPredictorSmoothVertical \ 206 LIBGAV1_CPU_NEON 207 #define LIBGAV1_Dsp10bpp_TransformSize16x16_IntraPredictorSmoothHorizontal \ 208 LIBGAV1_CPU_NEON 209 210 #define LIBGAV1_Dsp10bpp_TransformSize16x32_IntraPredictorSmooth \ 211 LIBGAV1_CPU_NEON 212 #define LIBGAV1_Dsp10bpp_TransformSize16x32_IntraPredictorSmoothVertical \ 213 LIBGAV1_CPU_NEON 214 #define LIBGAV1_Dsp10bpp_TransformSize16x32_IntraPredictorSmoothHorizontal \ 215 LIBGAV1_CPU_NEON 216 217 #define LIBGAV1_Dsp10bpp_TransformSize16x64_IntraPredictorSmooth \ 218 LIBGAV1_CPU_NEON 219 #define LIBGAV1_Dsp10bpp_TransformSize16x64_IntraPredictorSmoothVertical \ 220 LIBGAV1_CPU_NEON 221 #define LIBGAV1_Dsp10bpp_TransformSize16x64_IntraPredictorSmoothHorizontal \ 222 LIBGAV1_CPU_NEON 223 224 #define LIBGAV1_Dsp10bpp_TransformSize32x8_IntraPredictorSmooth LIBGAV1_CPU_NEON 225 #define LIBGAV1_Dsp10bpp_TransformSize32x8_IntraPredictorSmoothVertical \ 226 LIBGAV1_CPU_NEON 227 #define LIBGAV1_Dsp10bpp_TransformSize32x8_IntraPredictorSmoothHorizontal \ 228 LIBGAV1_CPU_NEON 229 230 #define LIBGAV1_Dsp10bpp_TransformSize32x16_IntraPredictorSmooth \ 231 LIBGAV1_CPU_NEON 232 #define LIBGAV1_Dsp10bpp_TransformSize32x16_IntraPredictorSmoothVertical \ 233 LIBGAV1_CPU_NEON 234 #define LIBGAV1_Dsp10bpp_TransformSize32x16_IntraPredictorSmoothHorizontal \ 235 LIBGAV1_CPU_NEON 236 237 #define LIBGAV1_Dsp10bpp_TransformSize32x32_IntraPredictorSmooth \ 238 LIBGAV1_CPU_NEON 239 #define LIBGAV1_Dsp10bpp_TransformSize32x32_IntraPredictorSmoothVertical \ 240 LIBGAV1_CPU_NEON 241 #define LIBGAV1_Dsp10bpp_TransformSize32x32_IntraPredictorSmoothHorizontal \ 242 LIBGAV1_CPU_NEON 243 244 #define LIBGAV1_Dsp10bpp_TransformSize32x64_IntraPredictorSmooth \ 245 LIBGAV1_CPU_NEON 246 #define LIBGAV1_Dsp10bpp_TransformSize32x64_IntraPredictorSmoothVertical \ 247 LIBGAV1_CPU_NEON 248 #define LIBGAV1_Dsp10bpp_TransformSize32x64_IntraPredictorSmoothHorizontal \ 249 LIBGAV1_CPU_NEON 250 251 #define LIBGAV1_Dsp10bpp_TransformSize64x16_IntraPredictorSmooth \ 252 LIBGAV1_CPU_NEON 253 #define LIBGAV1_Dsp10bpp_TransformSize64x16_IntraPredictorSmoothVertical \ 254 LIBGAV1_CPU_NEON 255 #define LIBGAV1_Dsp10bpp_TransformSize64x16_IntraPredictorSmoothHorizontal \ 256 LIBGAV1_CPU_NEON 257 258 #define LIBGAV1_Dsp10bpp_TransformSize64x32_IntraPredictorSmooth \ 259 LIBGAV1_CPU_NEON 260 #define LIBGAV1_Dsp10bpp_TransformSize64x32_IntraPredictorSmoothVertical \ 261 LIBGAV1_CPU_NEON 262 #define LIBGAV1_Dsp10bpp_TransformSize64x32_IntraPredictorSmoothHorizontal \ 263 LIBGAV1_CPU_NEON 264 265 #define LIBGAV1_Dsp10bpp_TransformSize64x64_IntraPredictorSmooth \ 266 LIBGAV1_CPU_NEON 267 #define LIBGAV1_Dsp10bpp_TransformSize64x64_IntraPredictorSmoothVertical \ 268 LIBGAV1_CPU_NEON 269 #define LIBGAV1_Dsp10bpp_TransformSize64x64_IntraPredictorSmoothHorizontal \ 270 LIBGAV1_CPU_NEON 271 272 #endif // LIBGAV1_ENABLE_NEON 273 274 #endif // LIBGAV1_SRC_DSP_ARM_INTRAPRED_SMOOTH_NEON_H_ 275