28 #define PUT_VP8_EPEL4_H6_MMI(src, dst) \ 29 MMI_ULWC1(%[ftmp1], src, 0x00) \ 30 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 31 "pmullh %[ftmp3], %[ftmp2], %[filter2] \n\t" \ 33 MMI_ULWC1(%[ftmp1], src, -0x01) \ 34 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 35 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 36 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 38 MMI_ULWC1(%[ftmp1], src, -0x02) \ 39 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 40 "pmullh %[ftmp2], %[ftmp2], %[filter0] \n\t" \ 41 "paddsh %[ftmp5], %[ftmp3], %[ftmp2] \n\t" \ 43 MMI_ULWC1(%[ftmp1], src, 0x01) \ 44 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 45 "pmullh %[ftmp3], %[ftmp2], %[filter3] \n\t" \ 47 MMI_ULWC1(%[ftmp1], src, 0x02) \ 48 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 49 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 50 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 52 MMI_ULWC1(%[ftmp1], src, 0x03) \ 53 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 54 "pmullh %[ftmp2], %[ftmp2], %[filter5] \n\t" \ 55 "paddsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 57 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" \ 58 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_64] \n\t" \ 59 "psrah %[ftmp3], %[ftmp3], %[ftmp4] \n\t" \ 60 "packushb %[ftmp1], %[ftmp3], %[ftmp0] \n\t" \ 62 MMI_SWC1(%[ftmp1], dst, 0x00) 65 #define PUT_VP8_EPEL4_H4_MMI(src, dst) \ 66 MMI_ULWC1(%[ftmp1], src, 0x00) \ 67 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 68 "pmullh %[ftmp3], %[ftmp2], %[filter2] \n\t" \ 70 MMI_ULWC1(%[ftmp1], src, -0x01) \ 71 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 72 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 73 "psubsh %[ftmp5], %[ftmp3], %[ftmp2] \n\t" \ 75 MMI_ULWC1(%[ftmp1], src, 0x01) \ 76 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 77 "pmullh %[ftmp3], %[ftmp2], %[filter3] \n\t" \ 79 MMI_ULWC1(%[ftmp1], src, 0x02) \ 80 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 81 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 82 "psubh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 84 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" \ 86 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_64] \n\t" \ 87 "psrah %[ftmp3], %[ftmp3], %[ftmp4] \n\t" \ 89 "packushb %[ftmp1], %[ftmp3], %[ftmp0] \n\t" \ 90 MMI_SWC1(%[ftmp1], dst, 0x00) 93 #define PUT_VP8_EPEL4_V6_MMI(src, src1, dst, srcstride) \ 94 MMI_ULWC1(%[ftmp1], src, 0x00) \ 95 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 96 "pmullh %[ftmp3], %[ftmp2], %[filter2] \n\t" \ 98 PTR_SUBU ""#src1", "#src", "#srcstride" \n\t" \ 99 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 100 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 101 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 102 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 104 PTR_SUBU ""#src1", "#src1", "#srcstride" \n\t" \ 105 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 106 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 107 "pmullh %[ftmp2], %[ftmp2], %[filter0] \n\t" \ 108 "paddsh %[ftmp5], %[ftmp3], %[ftmp2] \n\t" \ 110 PTR_ADDU ""#src1", "#src", "#srcstride" \n\t" \ 111 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 112 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 113 "pmullh %[ftmp3], %[ftmp2], %[filter3] \n\t" \ 115 PTR_ADDU ""#src1", "#src1", "#srcstride" \n\t" \ 116 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 117 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 118 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 119 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 121 PTR_ADDU ""#src1", "#src1", "#srcstride" \n\t" \ 122 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 123 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 124 "pmullh %[ftmp2], %[ftmp2], %[filter5] \n\t" \ 125 "paddsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 127 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" \ 129 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_64] \n\t" \ 130 "psrah %[ftmp3], %[ftmp3], %[ftmp4] \n\t" \ 131 "packushb %[ftmp1], %[ftmp3], %[ftmp0] \n\t" \ 133 MMI_SWC1(%[ftmp1], dst, 0x00) 136 #define PUT_VP8_EPEL4_V4_MMI(src, src1, dst, srcstride) \ 137 MMI_ULWC1(%[ftmp1], src, 0x00) \ 138 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 139 "pmullh %[ftmp3], %[ftmp2], %[filter2] \n\t" \ 141 PTR_SUBU ""#src1", "#src", "#srcstride" \n\t" \ 142 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 143 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 144 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 145 "psubsh %[ftmp5], %[ftmp3], %[ftmp2] \n\t" \ 147 PTR_ADDU ""#src1", "#src", "#srcstride" \n\t" \ 148 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 149 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 150 "pmullh %[ftmp3], %[ftmp2], %[filter3] \n\t" \ 152 PTR_ADDU ""#src1", "#src1", "#srcstride" \n\t" \ 153 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 154 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 155 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 156 "psubsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 158 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" \ 160 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_64] \n\t" \ 161 "psrah %[ftmp3], %[ftmp3], %[ftmp4] \n\t" \ 162 "packushb %[ftmp1], %[ftmp3], %[ftmp0] \n\t" \ 164 MMI_SWC1(%[ftmp1], dst, 0x00) 167 #define PUT_VP8_EPEL8_H6_MMI(src, dst) \ 168 MMI_ULDC1(%[ftmp1], src, 0x00) \ 169 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 170 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 171 "pmullh %[ftmp5], %[ftmp2], %[filter2] \n\t" \ 172 "pmullh %[ftmp6], %[ftmp3], %[filter2] \n\t" \ 174 MMI_ULDC1(%[ftmp1], src, -0x01) \ 175 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 176 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 177 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 178 "pmullh %[ftmp3], %[ftmp3], %[filter1] \n\t" \ 179 "psubsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 180 "psubsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 182 MMI_ULDC1(%[ftmp1], src, -0x02) \ 183 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 184 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 185 "pmullh %[ftmp2], %[ftmp2], %[filter0] \n\t" \ 186 "pmullh %[ftmp3], %[ftmp3], %[filter0] \n\t" \ 187 "paddsh %[ftmp7], %[ftmp5], %[ftmp2] \n\t" \ 188 "paddsh %[ftmp8], %[ftmp6], %[ftmp3] \n\t" \ 190 MMI_ULDC1(%[ftmp1], src, 0x01) \ 191 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 192 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 193 "pmullh %[ftmp5], %[ftmp2], %[filter3] \n\t" \ 194 "pmullh %[ftmp6], %[ftmp3], %[filter3] \n\t" \ 196 MMI_ULDC1(%[ftmp1], src, 0x02) \ 197 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 198 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 199 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 200 "pmullh %[ftmp3], %[ftmp3], %[filter4] \n\t" \ 201 "psubsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 202 "psubsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 204 MMI_ULDC1(%[ftmp1], src, 0x03) \ 205 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 206 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 207 "pmullh %[ftmp2], %[ftmp2], %[filter5] \n\t" \ 208 "pmullh %[ftmp3], %[ftmp3], %[filter5] \n\t" \ 209 "paddsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 210 "paddsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 212 "paddsh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" \ 213 "paddsh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" \ 215 "paddsh %[ftmp5], %[ftmp5], %[ff_pw_64] \n\t" \ 216 "paddsh %[ftmp6], %[ftmp6], %[ff_pw_64] \n\t" \ 217 "psrah %[ftmp5], %[ftmp5], %[ftmp4] \n\t" \ 218 "psrah %[ftmp6], %[ftmp6], %[ftmp4] \n\t" \ 219 "packushb %[ftmp1], %[ftmp5], %[ftmp6] \n\t" \ 221 MMI_SDC1(%[ftmp1], dst, 0x00) 224 #define PUT_VP8_EPEL8_H4_MMI(src, dst) \ 225 MMI_ULDC1(%[ftmp1], src, 0x00) \ 226 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 227 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 228 "pmullh %[ftmp5], %[ftmp2], %[filter2] \n\t" \ 229 "pmullh %[ftmp6], %[ftmp3], %[filter2] \n\t" \ 231 MMI_ULDC1(%[ftmp1], src, -0x01) \ 232 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 233 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 234 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 235 "pmullh %[ftmp3], %[ftmp3], %[filter1] \n\t" \ 236 "psubsh %[ftmp7], %[ftmp5], %[ftmp2] \n\t" \ 237 "psubsh %[ftmp8], %[ftmp6], %[ftmp3] \n\t" \ 239 MMI_ULDC1(%[ftmp1], src, 0x01) \ 240 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 241 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 242 "pmullh %[ftmp5], %[ftmp2], %[filter3] \n\t" \ 243 "pmullh %[ftmp6], %[ftmp3], %[filter3] \n\t" \ 245 MMI_ULDC1(%[ftmp1], src, 0x02) \ 246 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 247 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 248 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 249 "pmullh %[ftmp3], %[ftmp3], %[filter4] \n\t" \ 250 "psubsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 251 "psubsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 253 "paddsh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" \ 254 "paddsh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" \ 256 "paddsh %[ftmp5], %[ftmp5], %[ff_pw_64] \n\t" \ 257 "paddsh %[ftmp6], %[ftmp6], %[ff_pw_64] \n\t" \ 258 "psrah %[ftmp5], %[ftmp5], %[ftmp4] \n\t" \ 259 "psrah %[ftmp6], %[ftmp6], %[ftmp4] \n\t" \ 261 "packushb %[ftmp1], %[ftmp5], %[ftmp6] \n\t" \ 262 MMI_SDC1(%[ftmp1], dst, 0x00) 265 #define PUT_VP8_EPEL8_V6_MMI(src, src1, dst, srcstride) \ 266 MMI_ULDC1(%[ftmp1], src, 0x00) \ 267 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 268 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 269 "pmullh %[ftmp5], %[ftmp2], %[filter2] \n\t" \ 270 "pmullh %[ftmp6], %[ftmp3], %[filter2] \n\t" \ 272 PTR_SUBU ""#src1", "#src", "#srcstride" \n\t" \ 273 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 274 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 275 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 276 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 277 "pmullh %[ftmp3], %[ftmp3], %[filter1] \n\t" \ 278 "psubsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 279 "psubsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 281 PTR_SUBU ""#src1", "#src1", "#srcstride" \n\t" \ 282 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 283 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 284 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 285 "pmullh %[ftmp2], %[ftmp2], %[filter0] \n\t" \ 286 "pmullh %[ftmp3], %[ftmp3], %[filter0] \n\t" \ 287 "paddsh %[ftmp7], %[ftmp5], %[ftmp2] \n\t" \ 288 "paddsh %[ftmp8], %[ftmp6], %[ftmp3] \n\t" \ 290 PTR_ADDU ""#src1", "#src", "#srcstride" \n\t" \ 291 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 292 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 293 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 294 "pmullh %[ftmp5], %[ftmp2], %[filter3] \n\t" \ 295 "pmullh %[ftmp6], %[ftmp3], %[filter3] \n\t" \ 297 PTR_ADDU ""#src1", "#src1", "#srcstride" \n\t" \ 298 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 299 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 300 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 301 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 302 "pmullh %[ftmp3], %[ftmp3], %[filter4] \n\t" \ 303 "psubsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 304 "psubsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 306 PTR_ADDU ""#src1", "#src1", "#srcstride" \n\t" \ 307 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 308 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 309 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 310 "pmullh %[ftmp2], %[ftmp2], %[filter5] \n\t" \ 311 "pmullh %[ftmp3], %[ftmp3], %[filter5] \n\t" \ 312 "paddsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 313 "paddsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 315 "paddsh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" \ 316 "paddsh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" \ 318 "paddsh %[ftmp5], %[ftmp5], %[ff_pw_64] \n\t" \ 319 "paddsh %[ftmp6], %[ftmp6], %[ff_pw_64] \n\t" \ 320 "psrah %[ftmp5], %[ftmp5], %[ftmp4] \n\t" \ 321 "psrah %[ftmp6], %[ftmp6], %[ftmp4] \n\t" \ 322 "packushb %[ftmp1], %[ftmp5], %[ftmp6] \n\t" \ 324 MMI_SDC1(%[ftmp1], dst, 0x00) 327 #define PUT_VP8_EPEL8_V4_MMI(src, src1, dst, srcstride) \ 328 MMI_ULDC1(%[ftmp1], src, 0x00) \ 329 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 330 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 331 "pmullh %[ftmp5], %[ftmp2], %[filter2] \n\t" \ 332 "pmullh %[ftmp6], %[ftmp3], %[filter2] \n\t" \ 334 PTR_SUBU ""#src1", "#src", "#srcstride" \n\t" \ 335 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 336 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 337 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 338 "pmullh %[ftmp2], %[ftmp2], %[filter1] \n\t" \ 339 "pmullh %[ftmp3], %[ftmp3], %[filter1] \n\t" \ 340 "psubsh %[ftmp7], %[ftmp5], %[ftmp2] \n\t" \ 341 "psubsh %[ftmp8], %[ftmp6], %[ftmp3] \n\t" \ 343 PTR_ADDU ""#src1", "#src", "#srcstride" \n\t" \ 344 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 345 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 346 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 347 "pmullh %[ftmp5], %[ftmp2], %[filter3] \n\t" \ 348 "pmullh %[ftmp6], %[ftmp3], %[filter3] \n\t" \ 350 PTR_ADDU ""#src1", "#src1", "#srcstride" \n\t" \ 351 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 352 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 353 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 354 "pmullh %[ftmp2], %[ftmp2], %[filter4] \n\t" \ 355 "pmullh %[ftmp3], %[ftmp3], %[filter4] \n\t" \ 356 "psubsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 357 "psubsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 359 "paddsh %[ftmp5], %[ftmp5], %[ftmp7] \n\t" \ 360 "paddsh %[ftmp6], %[ftmp6], %[ftmp8] \n\t" \ 362 "paddsh %[ftmp5], %[ftmp5], %[ff_pw_64] \n\t" \ 363 "paddsh %[ftmp6], %[ftmp6], %[ff_pw_64] \n\t" \ 364 "psrah %[ftmp5], %[ftmp5], %[ftmp4] \n\t" \ 365 "psrah %[ftmp6], %[ftmp6], %[ftmp4] \n\t" \ 366 "packushb %[ftmp1], %[ftmp5], %[ftmp6] \n\t" \ 368 MMI_SDC1(%[ftmp1], dst, 0x00) 371 #define PUT_VP8_BILINEAR8_H_MMI(src, dst) \ 372 MMI_ULDC1(%[ftmp1], src, 0x00) \ 373 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 374 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 375 "pmullh %[ftmp5], %[ftmp2], %[a] \n\t" \ 376 "pmullh %[ftmp6], %[ftmp3], %[a] \n\t" \ 378 MMI_ULDC1(%[ftmp1], src, 0x01) \ 379 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 380 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 381 "pmullh %[ftmp2], %[ftmp2], %[b] \n\t" \ 382 "pmullh %[ftmp3], %[ftmp3], %[b] \n\t" \ 383 "paddsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 384 "paddsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 386 "paddsh %[ftmp5], %[ftmp5], %[ff_pw_4] \n\t" \ 387 "paddsh %[ftmp6], %[ftmp6], %[ff_pw_4] \n\t" \ 388 "psrah %[ftmp5], %[ftmp5], %[ftmp4] \n\t" \ 389 "psrah %[ftmp6], %[ftmp6], %[ftmp4] \n\t" \ 391 "packushb %[ftmp1], %[ftmp5], %[ftmp6] \n\t" \ 392 MMI_SDC1(%[ftmp1], dst, 0x00) 395 #define PUT_VP8_BILINEAR4_H_MMI(src, dst) \ 396 MMI_ULWC1(%[ftmp1], src, 0x00) \ 397 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 398 "pmullh %[ftmp3], %[ftmp2], %[a] \n\t" \ 400 MMI_ULWC1(%[ftmp1], src, 0x01) \ 401 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 402 "pmullh %[ftmp2], %[ftmp2], %[b] \n\t" \ 403 "paddsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 405 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_4] \n\t" \ 406 "psrah %[ftmp3], %[ftmp3], %[ftmp4] \n\t" \ 408 "packushb %[ftmp1], %[ftmp3], %[ftmp0] \n\t" \ 409 MMI_SWC1(%[ftmp1], dst, 0x00) 412 #define PUT_VP8_BILINEAR8_V_MMI(src, src1, dst, sstride) \ 413 MMI_ULDC1(%[ftmp1], src, 0x00) \ 414 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 415 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 416 "pmullh %[ftmp5], %[ftmp2], %[c] \n\t" \ 417 "pmullh %[ftmp6], %[ftmp3], %[c] \n\t" \ 419 PTR_ADDU ""#src1", "#src", "#sstride" \n\t" \ 420 MMI_ULDC1(%[ftmp1], src1, 0x00) \ 421 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 422 "punpckhbh %[ftmp3], %[ftmp1], %[ftmp0] \n\t" \ 423 "pmullh %[ftmp2], %[ftmp2], %[d] \n\t" \ 424 "pmullh %[ftmp3], %[ftmp3], %[d] \n\t" \ 425 "paddsh %[ftmp5], %[ftmp5], %[ftmp2] \n\t" \ 426 "paddsh %[ftmp6], %[ftmp6], %[ftmp3] \n\t" \ 428 "paddsh %[ftmp5], %[ftmp5], %[ff_pw_4] \n\t" \ 429 "paddsh %[ftmp6], %[ftmp6], %[ff_pw_4] \n\t" \ 430 "psrah %[ftmp5], %[ftmp5], %[ftmp4] \n\t" \ 431 "psrah %[ftmp6], %[ftmp6], %[ftmp4] \n\t" \ 433 "packushb %[ftmp1], %[ftmp5], %[ftmp6] \n\t" \ 434 MMI_SDC1(%[ftmp1], dst, 0x00) 437 #define PUT_VP8_BILINEAR4_V_MMI(src, src1, dst, sstride) \ 438 MMI_ULWC1(%[ftmp1], src, 0x00) \ 439 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 440 "pmullh %[ftmp3], %[ftmp2], %[c] \n\t" \ 442 PTR_ADDU ""#src1", "#src", "#sstride" \n\t" \ 443 MMI_ULWC1(%[ftmp1], src1, 0x00) \ 444 "punpcklbh %[ftmp2], %[ftmp1], %[ftmp0] \n\t" \ 445 "pmullh %[ftmp2], %[ftmp2], %[d] \n\t" \ 446 "paddsh %[ftmp3], %[ftmp3], %[ftmp2] \n\t" \ 448 "paddsh %[ftmp3], %[ftmp3], %[ff_pw_4] \n\t" \ 449 "psrah %[ftmp3], %[ftmp3], %[ftmp4] \n\t" \ 451 "packushb %[ftmp1], %[ftmp3], %[ftmp0] \n\t" \ 452 MMI_SWC1(%[ftmp1], dst, 0x00) 456 {0x0000000000000000, 0x0006000600060006, 0x007b007b007b007b,
457 0x000c000c000c000c, 0x0001000100010001, 0x0000000000000000},
459 {0x0002000200020002, 0x000b000b000b000b, 0x006c006c006c006c,
460 0x0024002400240024, 0x0008000800080008, 0x0001000100010001},
462 {0x0000000000000000, 0x0009000900090009, 0x005d005d005d005d,
463 0x0032003200320032, 0x0006000600060006, 0x0000000000000000},
465 {0x0003000300030003, 0x0010001000100010, 0x004d004d004d004d,
466 0x004d004d004d004d, 0x0010001000100010, 0x0003000300030003},
468 {0x0000000000000000, 0x0006000600060006, 0x0032003200320032,
469 0x005d005d005d005d, 0x0009000900090009, 0x0000000000000000},
471 {0x0001000100010001, 0x0008000800080008, 0x0024002400240024,
472 0x006c006c006c006c, 0x000b000b000b000b, 0x0002000200020002},
474 {0x0000000000000000, 0x0001000100010001, 0x000c000c000c000c,
475 0x007b007b007b007b, 0x0006000600060006, 0x0000000000000000}
479 #define FILTER_6TAP(src, F, stride) \ 480 cm[(F[2] * src[x + 0 * stride] - F[1] * src[x - 1 * stride] + \ 481 F[0] * src[x - 2 * stride] + F[3] * src[x + 1 * stride] - \ 482 F[4] * src[x + 2 * stride] + F[5] * src[x + 3 * stride] + 64) >> 7] 484 #define FILTER_4TAP(src, F, stride) \ 485 cm[(F[2] * src[x + 0 * stride] - F[1] * src[x - 1 * stride] + \ 486 F[3] * src[x + 1 * stride] - F[4] * src[x + 2 * stride] + 64) >> 7] 489 { 0, 6, 123, 12, 1, 0 },
490 { 2, 11, 108, 36, 8, 1 },
491 { 0, 9, 93, 50, 6, 0 },
492 { 3, 16, 77, 77, 16, 3 },
493 { 0, 6, 50, 93, 9, 0 },
494 { 1, 8, 36, 108, 11, 2 },
495 { 0, 1, 12, 123, 6, 0 },
498 #define MUL_20091(a) ((((a) * 20091) >> 16) + (a)) 499 #define MUL_35468(a) (((a) * 35468) >> 16) 502 #define clip_int8(n) (cm[(n) + 0x80] - 0x80) 519 f1 =
FFMIN(a + 4, 127) >> 3;
520 f2 =
FFMIN(a + 3, 127) >> 3;
524 p[-1 *
stride] = cm[p0 + f2];
525 p[ 0 *
stride] = cm[q0 - f1];
543 f1 =
FFMIN(a + 4, 127) >> 3;
544 f2 =
FFMIN(a + 3, 127) >> 3;
548 p[-1 *
stride] = cm[p0 + f2];
549 p[ 0 *
stride] = cm[q0 - f1];
563 return 2 *
FFABS(p0 - q0) + (
FFABS(p1 - q1) >> 1) <= flim;
573 return FFABS(p1 - p0) > thresh ||
FFABS(q1 - q0) > thresh;
591 a0 = (27 * w + 63) >> 7;
592 a1 = (18 * w + 63) >> 7;
593 a2 = (9 * w + 63) >> 7;
622 ptrdiff_t
stride,
int flim_E,
int flim_I,
int hev_thresh)
626 for (i = 0; i < 8; i++)
628 if (
hev(dst + i * 1, stride, hev_thresh))
636 ptrdiff_t
stride,
int flim_E,
int flim_I,
int hev_thresh)
640 for (i = 0; i < 8; i++)
642 int hv =
hev(dst + i * 1, stride, hev_thresh);
651 ptrdiff_t
stride,
int flim_E,
int flim_I,
int hev_thresh)
655 for (i = 0; i < 8; i++)
657 if (
hev(dst + i * stride, 1, hev_thresh))
665 ptrdiff_t
stride,
int flim_E,
int flim_I,
int hev_thresh)
669 for (i = 0; i < 8; i++)
671 int hv =
hev(dst + i * stride, 1, hev_thresh);
686 MMI_LDC1(%[ftmp0], %[dc], 0x00)
687 MMI_LDC1(%[ftmp1], %[dc], 0x08)
688 MMI_LDC1(%[ftmp2], %[dc], 0x10)
689 MMI_LDC1(%[ftmp3], %[dc], 0x18)
690 "paddsh %[ftmp4], %[ftmp0], %[ftmp3] \n\t" 691 "psubsh %[ftmp5], %[ftmp0], %[ftmp3] \n\t" 692 "paddsh %[ftmp6], %[ftmp1], %[ftmp2] \n\t" 693 "psubsh %[ftmp7], %[ftmp1], %[ftmp2] \n\t" 694 "paddsh %[ftmp0], %[ftmp4], %[ftmp6] \n\t" 695 "paddsh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 696 "psubsh %[ftmp2], %[ftmp4], %[ftmp6] \n\t" 697 "psubsh %[ftmp3], %[ftmp5], %[ftmp7] \n\t" 698 MMI_SDC1(%[ftmp0], %[dc], 0x00)
699 MMI_SDC1(%[ftmp1], %[dc], 0x08)
700 MMI_SDC1(%[ftmp2], %[dc], 0x10)
701 MMI_SDC1(%[ftmp3], %[dc], 0x18)
702 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
703 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
704 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
705 [ftmp6]
"=&f"(ftmp[6]),
707 [ftmp7]
"=&f"(ftmp[7])
712 block[0][0][0] = (dc[0] + dc[3] + 3 + dc[1] + dc[2]) >> 3;
713 block[0][1][0] = (dc[0] - dc[3] + 3 + dc[1] - dc[2]) >> 3;
714 block[0][2][0] = (dc[0] + dc[3] + 3 - dc[1] - dc[2]) >> 3;
715 block[0][3][0] = (dc[0] - dc[3] + 3 - dc[1] + dc[2]) >> 3;
717 block[1][0][0] = (dc[4] + dc[7] + 3 + dc[5] + dc[6]) >> 3;
718 block[1][1][0] = (dc[4] - dc[7] + 3 + dc[5] - dc[6]) >> 3;
719 block[1][2][0] = (dc[4] + dc[7] + 3 - dc[5] - dc[6]) >> 3;
720 block[1][3][0] = (dc[4] - dc[7] + 3 - dc[5] + dc[6]) >> 3;
722 block[2][0][0] = (dc[8] + dc[11] + 3 + dc[9] + dc[10]) >> 3;
723 block[2][1][0] = (dc[8] - dc[11] + 3 + dc[9] - dc[10]) >> 3;
724 block[2][2][0] = (dc[8] + dc[11] + 3 - dc[9] - dc[10]) >> 3;
725 block[2][3][0] = (dc[8] - dc[11] + 3 - dc[9] + dc[10]) >> 3;
727 block[3][0][0] = (dc[12] + dc[15] + 3 + dc[13] + dc[14]) >> 3;
728 block[3][1][0] = (dc[12] - dc[15] + 3 + dc[13] - dc[14]) >> 3;
729 block[3][2][0] = (dc[12] + dc[15] + 3 - dc[13] - dc[14]) >> 3;
730 block[3][3][0] = (dc[12] - dc[15] + 3 - dc[13] + dc[14]) >> 3;
733 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 734 MMI_SDC1(%[ftmp0], %[dc], 0x00)
735 MMI_SDC1(%[ftmp0], %[dc], 0x08)
736 MMI_SDC1(%[ftmp0], %[dc], 0x10)
737 MMI_SDC1(%[ftmp0], %[dc], 0x18)
739 [ftmp0]
"=&f"(ftmp[0])
744 int t00, t01, t02, t03,
t10,
t11,
t12, t13, t20, t21, t22, t23, t30, t31, t32, t33;
746 t00 = dc[0] + dc[12];
747 t10 = dc[1] + dc[13];
748 t20 = dc[2] + dc[14];
749 t30 = dc[3] + dc[15];
751 t03 = dc[0] - dc[12];
752 t13 = dc[1] - dc[13];
753 t23 = dc[2] - dc[14];
754 t33 = dc[3] - dc[15];
756 t01 = dc[4] + dc[ 8];
757 t11 = dc[5] + dc[ 9];
758 t21 = dc[6] + dc[10];
759 t31 = dc[7] + dc[11];
761 t02 = dc[4] - dc[ 8];
762 t12 = dc[5] - dc[ 9];
763 t22 = dc[6] - dc[10];
764 t32 = dc[7] - dc[11];
786 block[0][0][0] = (dc[0] + dc[3] + 3 + dc[1] + dc[2]) >> 3;
787 block[0][1][0] = (dc[0] - dc[3] + 3 + dc[1] - dc[2]) >> 3;
788 block[0][2][0] = (dc[0] + dc[3] + 3 - dc[1] - dc[2]) >> 3;
789 block[0][3][0] = (dc[0] - dc[3] + 3 - dc[1] + dc[2]) >> 3;
791 block[1][0][0] = (dc[4] + dc[7] + 3 + dc[5] + dc[6]) >> 3;
792 block[1][1][0] = (dc[4] - dc[7] + 3 + dc[5] - dc[6]) >> 3;
793 block[1][2][0] = (dc[4] + dc[7] + 3 - dc[5] - dc[6]) >> 3;
794 block[1][3][0] = (dc[4] - dc[7] + 3 - dc[5] + dc[6]) >> 3;
796 block[2][0][0] = (dc[8] + dc[11] + 3 + dc[9] + dc[10]) >> 3;
797 block[2][1][0] = (dc[8] - dc[11] + 3 + dc[9] - dc[10]) >> 3;
798 block[2][2][0] = (dc[8] + dc[11] + 3 - dc[9] - dc[10]) >> 3;
799 block[2][3][0] = (dc[8] - dc[11] + 3 - dc[9] + dc[10]) >> 3;
801 block[3][0][0] = (dc[12] + dc[15] + 3 + dc[13] + dc[14]) >> 3;
802 block[3][1][0] = (dc[12] - dc[15] + 3 + dc[13] - dc[14]) >> 3;
803 block[3][2][0] = (dc[12] + dc[15] + 3 - dc[13] - dc[14]) >> 3;
804 block[3][3][0] = (dc[12] - dc[15] + 3 - dc[13] + dc[14]) >> 3;
815 int val = (dc[0] + 3) >> 3;
819 block[0][0][0] =
val;
820 block[0][1][0] =
val;
821 block[0][2][0] =
val;
822 block[0][3][0] =
val;
823 block[1][0][0] =
val;
824 block[1][1][0] =
val;
825 block[1][2][0] =
val;
826 block[1][3][0] =
val;
827 block[2][0][0] =
val;
828 block[2][1][0] =
val;
829 block[2][2][0] =
val;
830 block[2][3][0] =
val;
831 block[3][0][0] =
val;
832 block[3][1][0] =
val;
833 block[3][2][0] =
val;
834 block[3][3][0] =
val;
840 DECLARE_ALIGNED(8,
const uint64_t, ff_ph_4e7b) = {0x4e7b4e7b4e7b4e7bULL};
841 DECLARE_ALIGNED(8,
const uint64_t, ff_ph_22a3) = {0x22a322a322a322a3ULL};
848 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 849 MMI_LDC1(%[ftmp1], %[block], 0x00)
850 MMI_LDC1(%[ftmp2], %[block], 0x08)
851 MMI_LDC1(%[ftmp3], %[block], 0x10)
852 MMI_LDC1(%[ftmp4], %[block], 0x18)
854 "li %[tmp0], 0x02 \n\t" 855 "mtc1 %[tmp0], %[ftmp11] \n\t" 858 "paddh %[ftmp5], %[ftmp1], %[ftmp3] \n\t" 860 "psubh %[ftmp6], %[ftmp1], %[ftmp3] \n\t" 862 "psllh %[ftmp9], %[ftmp4], %[ftmp11] \n\t" 863 "pmulhh %[ftmp7], %[ftmp9], %[ff_ph_22a3] \n\t" 865 "psllh %[ftmp9], %[ftmp2], %[ftmp11] \n\t" 866 "pmulhh %[ftmp8], %[ftmp9], %[ff_ph_22a3] \n\t" 868 "pmulhh %[ftmp9], %[ftmp2], %[ff_ph_4e7b] \n\t" 869 "paddh %[ftmp9], %[ftmp9], %[ftmp2] \n\t" 871 "pmulhh %[ftmp10], %[ftmp4], %[ff_ph_4e7b] \n\t" 872 "paddh %[ftmp10], %[ftmp10], %[ftmp4] \n\t" 875 "paddh %[ftmp1], %[ftmp5], %[ftmp7] \n\t" 876 "paddh %[ftmp1], %[ftmp1], %[ftmp9] \n\t" 878 "paddh %[ftmp2], %[ftmp6], %[ftmp8] \n\t" 879 "psubh %[ftmp2], %[ftmp2], %[ftmp10] \n\t" 881 "psubh %[ftmp3], %[ftmp6], %[ftmp8] \n\t" 882 "paddh %[ftmp3], %[ftmp3], %[ftmp10] \n\t" 884 "psubh %[ftmp4], %[ftmp5], %[ftmp7] \n\t" 885 "psubh %[ftmp4], %[ftmp4], %[ftmp9] \n\t" 887 MMI_SDC1(%[ftmp0], %[block], 0x00)
888 MMI_SDC1(%[ftmp0], %[block], 0x08)
889 MMI_SDC1(%[ftmp0], %[block], 0x10)
890 MMI_SDC1(%[ftmp0], %[block], 0x18)
893 %[ftmp5], %[ftmp6], %[ftmp7], %[ftmp8],
894 %[ftmp9], %[tmp0], %[ftmp0], %[ftmp10])
897 "paddh %[ftmp5], %[ftmp1], %[ftmp3] \n\t" 899 "psubh %[ftmp6], %[ftmp1], %[ftmp3] \n\t" 901 "psllh %[ftmp9], %[ftmp2], %[ftmp11] \n\t" 902 "pmulhh %[ftmp9], %[ftmp9], %[ff_ph_22a3] \n\t" 903 "psubh %[ftmp7], %[ftmp9], %[ftmp4] \n\t" 904 "pmulhh %[ftmp10], %[ftmp4], %[ff_ph_4e7b] \n\t" 905 "psubh %[ftmp7], %[ftmp7], %[ftmp10] \n\t" 907 "psllh %[ftmp9], %[ftmp4], %[ftmp11] \n\t" 908 "pmulhh %[ftmp9], %[ftmp9], %[ff_ph_22a3] \n\t" 909 "paddh %[ftmp8], %[ftmp9], %[ftmp2] \n\t" 910 "pmulhh %[ftmp10], %[ftmp2], %[ff_ph_4e7b] \n\t" 911 "paddh %[ftmp8], %[ftmp8], %[ftmp10] \n\t" 913 "li %[tmp0], 0x03 \n\t" 914 "mtc1 %[tmp0], %[ftmp11] \n\t" 915 "paddh %[ftmp1], %[ftmp5], %[ftmp8] \n\t" 916 "paddh %[ftmp1], %[ftmp1], %[ff_pw_4] \n\t" 917 "psrah %[ftmp1], %[ftmp1], %[ftmp11] \n\t" 918 "paddh %[ftmp2], %[ftmp6], %[ftmp7] \n\t" 919 "paddh %[ftmp2], %[ftmp2], %[ff_pw_4] \n\t" 920 "psrah %[ftmp2], %[ftmp2], %[ftmp11] \n\t" 921 "psubh %[ftmp3], %[ftmp6], %[ftmp7] \n\t" 922 "paddh %[ftmp3], %[ftmp3], %[ff_pw_4] \n\t" 923 "psrah %[ftmp3], %[ftmp3], %[ftmp11] \n\t" 924 "psubh %[ftmp4], %[ftmp5], %[ftmp8] \n\t" 925 "paddh %[ftmp4], %[ftmp4], %[ff_pw_4] \n\t" 926 "psrah %[ftmp4], %[ftmp4], %[ftmp11] \n\t" 929 %[ftmp5], %[ftmp6], %[ftmp7], %[ftmp8],
930 %[ftmp9], %[tmp0], %[ftmp0], %[ftmp10])
932 MMI_LWC1(%[ftmp5], %[dst0], 0x00)
933 MMI_LWC1(%[ftmp6], %[dst1], 0x00)
934 MMI_LWC1(%[ftmp7], %[dst2], 0x00)
935 MMI_LWC1(%[ftmp8], %[dst3], 0x00)
937 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 938 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t" 939 "punpcklbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t" 940 "punpcklbh %[ftmp8], %[ftmp8], %[ftmp0] \n\t" 942 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 943 "paddh %[ftmp2], %[ftmp2], %[ftmp6] \n\t" 944 "paddh %[ftmp3], %[ftmp3], %[ftmp7] \n\t" 945 "paddh %[ftmp4], %[ftmp4], %[ftmp8] \n\t" 947 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 948 "packushb %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 949 "packushb %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 950 "packushb %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 952 MMI_SWC1(%[ftmp1], %[dst0], 0x00)
953 MMI_SWC1(%[ftmp2], %[dst1], 0x00)
954 MMI_SWC1(%[ftmp3], %[dst2], 0x00)
955 MMI_SWC1(%[ftmp4], %[dst3], 0x00)
956 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
957 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
958 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
959 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
960 [ftmp8]
"=&f"(ftmp[8]), [ftmp9]
"=&f"(ftmp[9]),
961 [ftmp10]
"=&f"(ftmp[10]), [ftmp11]
"=&f"(ftmp[11]),
965 : [dst0]
"r"(dst), [dst1]
"r"(dst+
stride),
966 [dst2]
"r"(dst+2*stride), [dst3]
"r"(dst+3*
stride),
968 [ff_ph_4e7b]
"f"(ff_ph_4e7b), [ff_ph_22a3]
"f"(ff_ph_22a3)
975 for (i = 0; i < 4; i++) {
976 t0 = block[0 + i] + block[8 + i];
977 t1 = block[0 + i] - block[8 + i];
978 t2 = MUL_35468(block[4 + i]) - MUL_20091(block[12 + i]);
979 t3 = MUL_20091(block[4 + i]) + MUL_35468(block[12 + i]);
985 tmp[i * 4 + 0] = t0 +
t3;
986 tmp[i * 4 + 1] = t1 +
t2;
987 tmp[i * 4 + 2] = t1 -
t2;
988 tmp[i * 4 + 3] = t0 -
t3;
991 for (i = 0; i < 4; i++) {
992 t0 = tmp[0 + i] + tmp[8 + i];
993 t1 = tmp[0 + i] - tmp[8 + i];
994 t2 = MUL_35468(tmp[4 + i]) - MUL_20091(tmp[12 + i]);
995 t3 = MUL_20091(tmp[4 + i]) + MUL_35468(tmp[12 + i]);
997 dst[0] = av_clip_uint8(dst[0] + ((t0 + t3 + 4) >> 3));
998 dst[1] = av_clip_uint8(dst[1] + ((t1 + t2 + 4) >> 3));
999 dst[2] = av_clip_uint8(dst[2] + ((t1 - t2 + 4) >> 3));
1000 dst[3] = av_clip_uint8(dst[3] + ((t0 - t3 + 4) >> 3));
1009 int dc = (block[0] + 4) >> 3;
1016 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1017 "mtc1 %[dc], %[ftmp5] \n\t" 1018 MMI_LWC1(%[ftmp1], %[dst0], 0x00)
1019 MMI_LWC1(%[ftmp2], %[dst1], 0x00)
1020 MMI_LWC1(%[ftmp3], %[dst2], 0x00)
1021 MMI_LWC1(%[ftmp4], %[dst3], 0x00)
1022 "pshufh %[ftmp5], %[ftmp5], %[ftmp0] \n\t" 1023 "punpcklbh %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1024 "punpcklbh %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 1025 "punpcklbh %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1026 "punpcklbh %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 1027 "paddsh %[ftmp1], %[ftmp1], %[ftmp5] \n\t" 1028 "paddsh %[ftmp2], %[ftmp2], %[ftmp5] \n\t" 1029 "paddsh %[ftmp3], %[ftmp3], %[ftmp5] \n\t" 1030 "paddsh %[ftmp4], %[ftmp4], %[ftmp5] \n\t" 1031 "packushb %[ftmp1], %[ftmp1], %[ftmp0] \n\t" 1032 "packushb %[ftmp2], %[ftmp2], %[ftmp0] \n\t" 1033 "packushb %[ftmp3], %[ftmp3], %[ftmp0] \n\t" 1034 "packushb %[ftmp4], %[ftmp4], %[ftmp0] \n\t" 1035 MMI_SWC1(%[ftmp1], %[dst0], 0x00)
1036 MMI_SWC1(%[ftmp2], %[dst1], 0x00)
1037 MMI_SWC1(%[ftmp3], %[dst2], 0x00)
1038 MMI_SWC1(%[ftmp4], %[dst3], 0x00)
1039 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1040 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1041 [ftmp4]
"=&f"(ftmp[4]),
1043 [ftmp5]
"=&f"(ftmp[5])
1044 : [dst0]
"r"(dst), [dst1]
"r"(dst+stride),
1045 [dst2]
"r"(dst+2*
stride), [dst3]
"r"(dst+3*stride),
1050 int i, dc = (block[0] + 4) >> 3;
1054 for (i = 0; i < 4; i++) {
1055 dst[0] = av_clip_uint8(dst[0] + dc);
1056 dst[1] = av_clip_uint8(dst[1] + dc);
1057 dst[2] = av_clip_uint8(dst[2] + dc);
1058 dst[3] = av_clip_uint8(dst[3] + dc);
1084 int flim_I,
int hev_thresh)
1088 for (i = 0; i < 16; i++)
1090 if (
hev(dst + i * 1, stride, hev_thresh))
1098 int flim_I,
int hev_thresh)
1102 for (i = 0; i < 16; i++)
1104 if (
hev(dst + i * stride, 1, hev_thresh))
1112 int flim_E,
int flim_I,
int hev_thresh)
1119 int flim_E,
int flim_I,
int hev_thresh)
1127 int flim_E,
int flim_I,
int hev_thresh)
1131 for (i = 0; i < 16; i++)
1133 int hv =
hev(dst + i * 1, stride, hev_thresh);
1142 int flim_E,
int flim_I,
int hev_thresh)
1146 for (i = 0; i < 16; i++)
1148 int hv =
hev(dst + i * stride, 1, hev_thresh);
1157 ptrdiff_t
stride,
int flim_E,
int flim_I,
int hev_thresh)
1164 ptrdiff_t
stride,
int flim_E,
int flim_I,
int hev_thresh)
1174 for (i = 0; i < 16; i++)
1183 for (i = 0; i < 16; i++)
1189 ptrdiff_t srcstride,
int h,
int x,
int y)
1199 PTR_ADDU "%[addr0], %[src], %[srcstride] \n\t" 1200 MMI_ULDC1(%[ftmp0], %[src], 0x00)
1201 "ldl %[tmp0], 0x0f(%[src]) \n\t" 1202 "ldr %[tmp0], 0x08(%[src]) \n\t" 1203 MMI_ULDC1(%[ftmp1], %[addr0], 0x00)
1204 "ldl %[tmp1], 0x0f(%[addr0]) \n\t" 1205 "ldr %[tmp1], 0x08(%[addr0]) \n\t" 1206 PTR_ADDU "%[addr1], %[dst], %[dststride] \n\t" 1207 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1208 "sdl %[tmp0], 0x0f(%[dst]) \n\t" 1209 "sdr %[tmp0], 0x08(%[dst]) \n\t" 1210 "addiu %[h], %[h], -0x02 \n\t" 1211 MMI_SDC1(%[ftmp1], %[addr1], 0x00)
1212 PTR_ADDU "%[src], %[addr0], %[srcstride] \n\t" 1213 "sdl %[tmp1], 0x0f(%[addr1]) \n\t" 1214 "sdr %[tmp1], 0x08(%[addr1]) \n\t" 1215 PTR_ADDU "%[dst], %[addr1], %[dststride] \n\t" 1216 "bnez %[h], 1b \n\t" 1217 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1218 [tmp0]
"=&r"(tmp[0]), [tmp1]
"=&r"(tmp[1]),
1220 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
1221 [dst]
"+&r"(dst), [src]
"+&r"(src),
1223 : [dststride]
"r"((
mips_reg)dststride),
1224 [srcstride]
"r"((
mips_reg)srcstride)
1230 for (i = 0; i <
h; i++, dst += dststride, src += srcstride)
1231 memcpy(dst, src, 16);
1236 ptrdiff_t srcstride,
int h,
int x,
int y)
1246 PTR_ADDU "%[addr0], %[src], %[srcstride] \n\t" 1247 MMI_ULDC1(%[ftmp0], %[src], 0x00)
1248 "ldl %[tmp0], 0x07(%[addr0]) \n\t" 1249 "ldr %[tmp0], 0x00(%[addr0]) \n\t" 1250 PTR_ADDU "%[addr1], %[dst], %[dststride] \n\t" 1251 MMI_SDC1(%[ftmp0], %[dst], 0x00)
1252 "addiu %[h], %[h], -0x02 \n\t" 1253 "sdl %[tmp0], 0x07(%[addr1]) \n\t" 1254 "sdr %[tmp0], 0x00(%[addr1]) \n\t" 1255 PTR_ADDU "%[src], %[addr0], %[srcstride] \n\t" 1256 PTR_ADDU "%[dst], %[addr1], %[dststride] \n\t" 1257 "bnez %[h], 1b \n\t" 1258 : [ftmp0]
"=&f"(ftmp[0]), [tmp0]
"=&r"(tmp[0]),
1260 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
1261 [dst]
"+&r"(dst), [src]
"+&r"(src),
1263 : [dststride]
"r"((
mips_reg)dststride),
1264 [srcstride]
"r"((
mips_reg)srcstride)
1270 for (i = 0; i <
h; i++, dst += dststride, src += srcstride)
1271 memcpy(dst, src, 8);
1276 ptrdiff_t srcstride,
int h,
int x,
int y)
1286 PTR_ADDU "%[addr0], %[src], %[srcstride] \n\t" 1287 MMI_LWC1(%[ftmp0], %[src], 0x00)
1288 "lwl %[tmp0], 0x03(%[addr0]) \n\t" 1289 "lwr %[tmp0], 0x00(%[addr0]) \n\t" 1290 PTR_ADDU "%[addr1], %[dst], %[dststride] \n\t" 1291 MMI_SWC1(%[ftmp0], %[dst], 0x00)
1292 "addiu %[h], %[h], -0x02 \n\t" 1293 "swl %[tmp0], 0x03(%[addr1]) \n\t" 1294 "swr %[tmp0], 0x00(%[addr1]) \n\t" 1295 PTR_ADDU "%[src], %[addr0], %[srcstride] \n\t" 1296 PTR_ADDU "%[dst], %[addr1], %[dststride] \n\t" 1297 "bnez %[h], 1b \n\t" 1298 : [ftmp0]
"=&f"(ftmp[0]), [tmp0]
"=&r"(tmp[0]),
1300 [addr0]
"=&r"(addr[0]), [addr1]
"=&r"(addr[1]),
1301 [dst]
"+&r"(dst), [src]
"+&r"(src),
1303 : [dststride]
"r"((
mips_reg)dststride),
1304 [srcstride]
"r"((
mips_reg)srcstride)
1310 for (i = 0; i <
h; i++, dst += dststride, src += srcstride)
1311 memcpy(dst, src, 4);
1316 ptrdiff_t srcstride,
int h,
int mx,
int my)
1345 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1346 "li %[tmp0], 0x07 \n\t" 1347 "mtc1 %[tmp0], %[ftmp4] \n\t" 1357 "addiu %[h], %[h], -0x01 \n\t" 1358 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1359 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1360 "bnez %[h], 1b \n\t" 1361 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1362 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1363 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1364 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1365 [ftmp8]
"=&f"(ftmp[8]),
1366 [tmp0]
"=&r"(tmp[0]),
1368 [dst1]
"=&r"(dst1), [src1]
"=&r"(src1),
1370 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
1372 [srcstride]
"r"((
mips_reg)srcstride),
1373 [dststride]
"r"((
mips_reg)dststride),
1374 [
filter1]
"f"(filter[1]), [filter2]
"f"(filter[2]),
1375 [filter3]
"f"(filter[3]), [filter4]
"f"(filter[4])
1383 for (y = 0; y <
h; y++) {
1384 for (x = 0; x < 16; x++)
1393 ptrdiff_t srcstride,
int h,
int mx,
int my)
1412 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1413 "li %[tmp0], 0x07 \n\t" 1414 "mtc1 %[tmp0], %[ftmp4] \n\t" 1419 "addiu %[h], %[h], -0x01 \n\t" 1420 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1421 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1422 "bnez %[h], 1b \n\t" 1423 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1424 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1425 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1426 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1427 [ftmp8]
"=&f"(ftmp[8]),
1428 [tmp0]
"=&r"(tmp[0]),
1431 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
1433 [srcstride]
"r"((
mips_reg)srcstride),
1434 [dststride]
"r"((
mips_reg)dststride),
1435 [
filter1]
"f"(filter[1]), [filter2]
"f"(filter[2]),
1436 [filter3]
"f"(filter[3]), [filter4]
"f"(filter[4])
1444 for (y = 0; y <
h; y++) {
1445 for (x = 0; x < 8; x++)
1454 ptrdiff_t srcstride,
int h,
int mx,
int my)
1469 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1470 "li %[tmp0], 0x07 \n\t" 1471 "mtc1 %[tmp0], %[ftmp4] \n\t" 1476 "addiu %[h], %[h], -0x01 \n\t" 1477 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1478 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1479 "bnez %[h], 1b \n\t" 1480 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1481 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1482 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1483 [tmp0]
"=&r"(tmp[0]),
1486 [dst]
"+&r"(dst), [src]
"+&r"(src)
1488 [srcstride]
"r"((
mips_reg)srcstride),
1489 [dststride]
"r"((
mips_reg)dststride),
1490 [
filter1]
"f"(filter[1]), [filter2]
"f"(filter[2]),
1491 [filter3]
"f"(filter[3]), [filter4]
"f"(filter[4])
1499 for (y = 0; y <
h; y++) {
1500 for (x = 0; x < 4; x++)
1509 ptrdiff_t srcstride,
int h,
int mx,
int my)
1538 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1539 "li %[tmp0], 0x07 \n\t" 1540 "mtc1 %[tmp0], %[ftmp4] \n\t" 1550 "addiu %[h], %[h], -0x01 \n\t" 1551 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1552 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1553 "bnez %[h], 1b \n\t" 1554 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1555 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1556 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1557 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1558 [ftmp8]
"=&f"(ftmp[8]),
1559 [tmp0]
"=&r"(tmp[0]),
1561 [dst1]
"=&r"(dst1), [src1]
"=&r"(src1),
1563 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
1565 [srcstride]
"r"((
mips_reg)srcstride),
1566 [dststride]
"r"((
mips_reg)dststride),
1568 [filter2]
"f"(filter[2]), [filter3]
"f"(filter[3]),
1569 [filter4]
"f"(filter[4]), [filter5]
"f"(filter[5])
1577 for (y = 0; y <
h; y++) {
1578 for (x = 0; x < 16; x++)
1587 ptrdiff_t srcstride,
int h,
int mx,
int my)
1606 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1607 "li %[tmp0], 0x07 \n\t" 1608 "mtc1 %[tmp0], %[ftmp4] \n\t" 1613 "addiu %[h], %[h], -0x01 \n\t" 1614 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1615 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1616 "bnez %[h], 1b \n\t" 1617 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1618 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1619 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1620 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1621 [ftmp8]
"=&f"(ftmp[8]),
1622 [tmp0]
"=&r"(tmp[0]),
1625 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
1627 [srcstride]
"r"((
mips_reg)srcstride),
1628 [dststride]
"r"((
mips_reg)dststride),
1630 [filter2]
"f"(filter[2]), [filter3]
"f"(filter[3]),
1631 [filter4]
"f"(filter[4]), [filter5]
"f"(filter[5])
1639 for (y = 0; y <
h; y++) {
1640 for (x = 0; x < 8; x++)
1649 ptrdiff_t srcstride,
int h,
int mx,
int my)
1664 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1665 "li %[tmp0], 0x07 \n\t" 1666 "mtc1 %[tmp0], %[ftmp4] \n\t" 1671 "addiu %[h], %[h], -0x01 \n\t" 1672 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1673 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1674 "bnez %[h], 1b \n\t" 1675 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1676 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1677 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1678 [tmp0]
"=&r"(tmp[0]),
1681 [dst]
"+&r"(dst), [src]
"+&r"(src)
1683 [srcstride]
"r"((
mips_reg)srcstride),
1684 [dststride]
"r"((
mips_reg)dststride),
1686 [filter2]
"f"(filter[2]), [filter3]
"f"(filter[3]),
1687 [filter4]
"f"(filter[4]), [filter5]
"f"(filter[5])
1695 for (y = 0; y <
h; y++) {
1696 for (x = 0; x < 4; x++)
1705 ptrdiff_t srcstride,
int h,
int mx,
int my)
1734 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1735 "li %[tmp0], 0x07 \n\t" 1736 "mtc1 %[tmp0], %[ftmp4] \n\t" 1746 "addiu %[h], %[h], -0x01 \n\t" 1747 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1748 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1749 "bnez %[h], 1b \n\t" 1750 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1751 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1752 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1753 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1754 [ftmp8]
"=&f"(ftmp[8]),
1755 [tmp0]
"=&r"(tmp[0]),
1757 [
src0]
"=&r"(
src0), [dst0]
"=&r"(dst0),
1760 [dst]
"+&r"(dst), [src]
"+&r"(src)
1762 [srcstride]
"r"((
mips_reg)srcstride),
1763 [dststride]
"r"((
mips_reg)dststride),
1764 [
filter1]
"f"(filter[1]), [filter2]
"f"(filter[2]),
1765 [filter3]
"f"(filter[3]), [filter4]
"f"(filter[4])
1773 for (y = 0; y <
h; y++) {
1774 for (x = 0; x < 16; x++)
1783 ptrdiff_t srcstride,
int h,
int mx,
int my)
1803 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1804 "li %[tmp0], 0x07 \n\t" 1805 "mtc1 %[tmp0], %[ftmp4] \n\t" 1810 "addiu %[h], %[h], -0x01 \n\t" 1811 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1812 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1813 "bnez %[h], 1b \n\t" 1814 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1815 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1816 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1817 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1818 [ftmp8]
"=&f"(ftmp[8]),
1819 [tmp0]
"=&r"(tmp[0]),
1823 [dst]
"+&r"(dst), [src]
"+&r"(src)
1825 [srcstride]
"r"((
mips_reg)srcstride),
1826 [dststride]
"r"((
mips_reg)dststride),
1827 [
filter1]
"f"(filter[1]), [filter2]
"f"(filter[2]),
1828 [filter3]
"f"(filter[3]), [filter4]
"f"(filter[4])
1836 for (y = 0; y <
h; y++) {
1837 for (x = 0; x < 8; x++)
1846 ptrdiff_t srcstride,
int h,
int mx,
int my)
1862 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1863 "li %[tmp0], 0x07 \n\t" 1864 "mtc1 %[tmp0], %[ftmp4] \n\t" 1869 "addiu %[h], %[h], -0x01 \n\t" 1870 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1871 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1872 "bnez %[h], 1b \n\t" 1873 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1874 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1875 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1876 [tmp0]
"=&r"(tmp[0]),
1880 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
1882 [srcstride]
"r"((
mips_reg)srcstride),
1883 [dststride]
"r"((
mips_reg)dststride),
1884 [
filter1]
"f"(filter[1]), [filter2]
"f"(filter[2]),
1885 [filter3]
"f"(filter[3]), [filter4]
"f"(filter[4])
1893 for (y = 0; y <
h; y++) {
1894 for (x = 0; x < 4; x++)
1903 ptrdiff_t srcstride,
int h,
int mx,
int my)
1932 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 1933 "li %[tmp0], 0x07 \n\t" 1934 "mtc1 %[tmp0], %[ftmp4] \n\t" 1944 "addiu %[h], %[h], -0x01 \n\t" 1945 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 1946 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 1947 "bnez %[h], 1b \n\t" 1948 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
1949 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
1950 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
1951 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
1952 [ftmp8]
"=&f"(ftmp[8]),
1953 [tmp0]
"=&r"(tmp[0]),
1955 [
src0]
"=&r"(
src0), [dst0]
"=&r"(dst0),
1958 [dst]
"+&r"(dst), [src]
"+&r"(src)
1960 [srcstride]
"r"((
mips_reg)srcstride),
1961 [dststride]
"r"((
mips_reg)dststride),
1963 [filter2]
"f"(filter[2]), [filter3]
"f"(filter[3]),
1964 [filter4]
"f"(filter[4]), [filter5]
"f"(filter[5])
1972 for (y = 0; y <
h; y++) {
1973 for (x = 0; x < 16; x++)
1982 ptrdiff_t srcstride,
int h,
int mx,
int my)
2002 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2003 "li %[tmp0], 0x07 \n\t" 2004 "mtc1 %[tmp0], %[ftmp4] \n\t" 2009 "addiu %[h], %[h], -0x01 \n\t" 2010 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 2011 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 2012 "bnez %[h], 1b \n\t" 2013 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2014 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2015 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2016 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
2017 [ftmp8]
"=&f"(ftmp[8]),
2018 [tmp0]
"=&r"(tmp[0]),
2022 [dst]
"+&r"(dst), [src]
"+&r"(src)
2024 [srcstride]
"r"((
mips_reg)srcstride),
2025 [dststride]
"r"((
mips_reg)dststride),
2027 [filter2]
"f"(filter[2]), [filter3]
"f"(filter[3]),
2028 [filter4]
"f"(filter[4]), [filter5]
"f"(filter[5])
2036 for (y = 0; y <
h; y++) {
2037 for (x = 0; x < 8; x++)
2046 ptrdiff_t srcstride,
int h,
int mx,
int my)
2062 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2063 "li %[tmp0], 0x07 \n\t" 2064 "mtc1 %[tmp0], %[ftmp4] \n\t" 2069 "addiu %[h], %[h], -0x01 \n\t" 2070 PTR_ADDU "%[src], %[src], %[srcstride] \n\t" 2071 PTR_ADDU "%[dst], %[dst], %[dststride] \n\t" 2072 "bnez %[h], 1b \n\t" 2073 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2074 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2075 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2076 [tmp0]
"=&r"(tmp[0]),
2080 [dst]
"+&r"(dst), [
src]
"+&r"(
src)
2082 [srcstride]
"r"((
mips_reg)srcstride),
2083 [dststride]
"r"((
mips_reg)dststride),
2085 [filter2]
"f"(filter[2]), [filter3]
"f"(filter[3]),
2086 [filter4]
"f"(filter[4]), [filter5]
"f"(filter[5])
2094 for (y = 0; y <
h; y++) {
2095 for (x = 0; x < 4; x++)
2104 ptrdiff_t srcstride,
int h,
int mx,
int my)
2112 tmp = tmp_array + 16;
2123 for (y = 0; y < h + 3; y++) {
2124 for (x = 0; x < 16; x++)
2130 tmp = tmp_array + 16;
2133 for (y = 0; y <
h; y++) {
2134 for (x = 0; x < 16; x++)
2143 ptrdiff_t srcstride,
int h,
int mx,
int my)
2151 tmp = tmp_array + 8;
2162 for (y = 0; y < h + 3; y++) {
2163 for (x = 0; x < 8; x++)
2169 tmp = tmp_array + 8;
2172 for (y = 0; y <
h; y++) {
2173 for (x = 0; x < 8; x++)
2182 ptrdiff_t srcstride,
int h,
int mx,
int my)
2190 tmp = tmp_array + 4;
2201 for (y = 0; y < h + 3; y++) {
2202 for (x = 0; x < 4; x++)
2207 tmp = tmp_array + 4;
2210 for (y = 0; y <
h; y++) {
2211 for (x = 0; x < 4; x++)
2220 ptrdiff_t srcstride,
int h,
int mx,
int my)
2226 src -= 2 * srcstride;
2228 tmp = tmp_array + 32;
2237 src -= 2 * srcstride;
2239 for (y = 0; y < h + 5; y++) {
2240 for (x = 0; x < 16; x++)
2246 tmp = tmp_array + 32;
2249 for (y = 0; y <
h; y++) {
2250 for (x = 0; x < 16; x++)
2259 ptrdiff_t srcstride,
int h,
int mx,
int my)
2265 src -= 2 * srcstride;
2267 tmp = tmp_array + 16;
2276 src -= 2 * srcstride;
2278 for (y = 0; y < h + 5; y++) {
2279 for (x = 0; x < 8; x++)
2285 tmp = tmp_array + 16;
2288 for (y = 0; y <
h; y++) {
2289 for (x = 0; x < 8; x++)
2298 ptrdiff_t srcstride,
int h,
int mx,
int my)
2304 src -= 2 * srcstride;
2306 tmp = tmp_array + 8;
2315 src -= 2 * srcstride;
2317 for (y = 0; y < h + 5; y++) {
2318 for (x = 0; x < 4; x++)
2324 tmp = tmp_array + 8;
2327 for (y = 0; y <
h; y++) {
2328 for (x = 0; x < 4; x++)
2337 ptrdiff_t srcstride,
int h,
int mx,
int my)
2345 tmp = tmp_array + 16;
2356 for (y = 0; y < h + 3; y++) {
2357 for (x = 0; x < 16; x++)
2363 tmp = tmp_array + 16;
2366 for (y = 0; y <
h; y++) {
2367 for (x = 0; x < 16; x++)
2376 ptrdiff_t srcstride,
int h,
int mx,
int my)
2384 tmp = tmp_array + 8;
2395 for (y = 0; y < h + 3; y++) {
2396 for (x = 0; x < 8; x++)
2402 tmp = tmp_array + 8;
2405 for (y = 0; y <
h; y++) {
2406 for (x = 0; x < 8; x++)
2415 ptrdiff_t srcstride,
int h,
int mx,
int my)
2423 tmp = tmp_array + 4;
2434 for (y = 0; y < h + 3; y++) {
2435 for (x = 0; x < 4; x++)
2441 tmp = tmp_array + 4;
2444 for (y = 0; y <
h; y++) {
2445 for (x = 0; x < 4; x++)
2454 ptrdiff_t srcstride,
int h,
int mx,
int my)
2460 src -= 2 * srcstride;
2462 tmp = tmp_array + 32;
2471 src -= 2 * srcstride;
2473 for (y = 0; y < h + 5; y++) {
2474 for (x = 0; x < 16; x++)
2480 tmp = tmp_array + 32;
2483 for (y = 0; y <
h; y++) {
2484 for (x = 0; x < 16; x++)
2493 ptrdiff_t srcstride,
int h,
int mx,
int my)
2499 src -= 2 * srcstride;
2501 tmp = tmp_array + 16;
2510 src -= 2 * srcstride;
2512 for (y = 0; y < h + 5; y++) {
2513 for (x = 0; x < 8; x++)
2519 tmp = tmp_array + 16;
2522 for (y = 0; y <
h; y++) {
2523 for (x = 0; x < 8; x++)
2532 ptrdiff_t srcstride,
int h,
int mx,
int my)
2538 src -= 2 * srcstride;
2540 tmp = tmp_array + 8;
2549 src -= 2 * srcstride;
2551 for (y = 0; y < h + 5; y++) {
2552 for (x = 0; x < 4; x++)
2558 tmp = tmp_array + 8;
2561 for (y = 0; y <
h; y++) {
2562 for (x = 0; x < 4; x++)
2571 ptrdiff_t sstride,
int h,
int mx,
int my)
2574 int a = 8 - mx,
b = mx;
2600 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2601 "li %[tmp0], 0x03 \n\t" 2602 "mtc1 %[tmp0], %[ftmp4] \n\t" 2603 "pshufh %[a], %[a], %[ftmp0] \n\t" 2604 "pshufh %[b], %[b], %[ftmp0] \n\t" 2614 "addiu %[h], %[h], -0x01 \n\t" 2615 PTR_ADDU "%[src], %[src], %[sstride] \n\t" 2616 PTR_ADDU "%[dst], %[dst], %[dstride] \n\t" 2617 "bnez %[h], 1b \n\t" 2618 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2619 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2620 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2621 [ftmp6]
"=&f"(ftmp[6]),
2622 [tmp0]
"=&r"(tmp[0]),
2624 [dst0]
"=&r"(dst0), [src0]
"=&r"(src0),
2626 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
2627 [a]
"+&f"(a), [
b]
"+&f"(
b)
2634 int a = 8 - mx, b = mx;
2637 for (y = 0; y <
h; y++) {
2638 for (x = 0; x < 16; x++)
2639 dst[x] = (a * src[x] + b * src[x + 1] + 4) >> 3;
2647 ptrdiff_t sstride,
int h,
int mx,
int my)
2650 int c = 8 - my, d = my;
2667 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2668 "li %[tmp0], 0x03 \n\t" 2669 "mtc1 %[tmp0], %[ftmp4] \n\t" 2670 "pshufh %[c], %[c], %[ftmp0] \n\t" 2671 "pshufh %[d], %[d], %[ftmp0] \n\t" 2681 "addiu %[h], %[h], -0x01 \n\t" 2682 PTR_ADDU "%[src], %[src], %[sstride] \n\t" 2683 PTR_ADDU "%[dst], %[dst], %[dstride] \n\t" 2684 "bnez %[h], 1b \n\t" 2685 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2686 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2687 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2688 [ftmp6]
"=&f"(ftmp[6]),
2689 [tmp0]
"=&r"(tmp[0]),
2691 [
src0]
"=&r"(
src0), [dst0]
"=&r"(dst0),
2694 [dst]
"+&r"(dst), [src]
"+&r"(src),
2695 [
c]
"+&f"(
c), [d]
"+&f"(d)
2702 int c = 8 - my, d = my;
2705 for (y = 0; y <
h; y++) {
2706 for (x = 0; x < 16; x++)
2707 dst[x] = (c * src[x] + d * src[x + sstride] + 4) >> 3;
2715 ptrdiff_t sstride,
int h,
int mx,
int my)
2724 int a = 8 - mx,
b = mx;
2725 int c = 8 - my, d = my;
2730 for (y = 0; y < h + 1; y++) {
2731 for (x = 0; x < 16; x++)
2732 tmp[x] = (a * src[x] + b * src[x + 1] + 4) >> 3;
2739 for (y = 0; y <
h; y++) {
2740 for (x = 0; x < 16; x++)
2741 dst[x] = (c * tmp[x] + d * tmp[x + 16] + 4) >> 3;
2749 ptrdiff_t sstride,
int h,
int mx,
int my)
2752 int a = 8 - mx,
b = mx;
2768 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2769 "li %[tmp0], 0x03 \n\t" 2770 "mtc1 %[tmp0], %[ftmp4] \n\t" 2771 "pshufh %[a], %[a], %[ftmp0] \n\t" 2772 "pshufh %[b], %[b], %[ftmp0] \n\t" 2777 "addiu %[h], %[h], -0x01 \n\t" 2778 PTR_ADDU "%[src], %[src], %[sstride] \n\t" 2779 PTR_ADDU "%[dst], %[dst], %[dstride] \n\t" 2780 "bnez %[h], 1b \n\t" 2781 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2782 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2783 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2784 [ftmp6]
"=&f"(ftmp[6]),
2785 [tmp0]
"=&r"(tmp[0]),
2788 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
2789 [a]
"+&f"(a), [
b]
"+&f"(
b)
2796 int a = 8 - mx, b = mx;
2799 for (y = 0; y <
h; y++) {
2800 for (x = 0; x < 8; x++)
2801 dst[x] = (a * src[x] + b * src[x + 1] + 4) >> 3;
2809 ptrdiff_t sstride,
int h,
int mx,
int my)
2812 int c = 8 - my, d = my;
2829 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2830 "li %[tmp0], 0x03 \n\t" 2831 "mtc1 %[tmp0], %[ftmp4] \n\t" 2832 "pshufh %[c], %[c], %[ftmp0] \n\t" 2833 "pshufh %[d], %[d], %[ftmp0] \n\t" 2838 "addiu %[h], %[h], -0x01 \n\t" 2839 PTR_ADDU "%[src], %[src], %[sstride] \n\t" 2840 PTR_ADDU "%[dst], %[dst], %[dstride] \n\t" 2841 "bnez %[h], 1b \n\t" 2842 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2843 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2844 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
2845 [ftmp6]
"=&f"(ftmp[6]),
2846 [tmp0]
"=&r"(tmp[0]),
2850 [dst]
"+&r"(dst), [src]
"+&r"(src),
2851 [
c]
"+&f"(
c), [d]
"+&f"(d)
2858 int c = 8 - my, d = my;
2861 for (y = 0; y <
h; y++) {
2862 for (x = 0; x < 8; x++)
2863 dst[x] = (c * src[x] + d * src[x + sstride] + 4) >> 3;
2871 ptrdiff_t sstride,
int h,
int mx,
int my)
2880 int a = 8 - mx,
b = mx;
2881 int c = 8 - my, d = my;
2886 for (y = 0; y < h + 1; y++) {
2887 for (x = 0; x < 8; x++)
2888 tmp[x] = (a * src[x] + b * src[x + 1] + 4) >> 3;
2895 for (y = 0; y <
h; y++) {
2896 for (x = 0; x < 8; x++)
2897 dst[x] = (c * tmp[x] + d * tmp[x + 8] + 4) >> 3;
2905 ptrdiff_t sstride,
int h,
int mx,
int my)
2908 int a = 8 - mx,
b = mx;
2921 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2922 "li %[tmp0], 0x03 \n\t" 2923 "mtc1 %[tmp0], %[ftmp4] \n\t" 2924 "pshufh %[a], %[a], %[ftmp0] \n\t" 2925 "pshufh %[b], %[b], %[ftmp0] \n\t" 2930 "addiu %[h], %[h], -0x01 \n\t" 2931 PTR_ADDU "%[src], %[src], %[sstride] \n\t" 2932 PTR_ADDU "%[dst], %[dst], %[dstride] \n\t" 2933 "bnez %[h], 1b \n\t" 2934 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2935 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2936 [ftmp4]
"=&f"(ftmp[4]),
2937 [tmp0]
"=&r"(tmp[0]),
2941 [dst]
"+&r"(dst), [
src]
"+&r"(
src),
2942 [a]
"+&f"(a), [
b]
"+&f"(
b)
2949 int a = 8 - mx, b = mx;
2952 for (y = 0; y <
h; y++) {
2953 for (x = 0; x < 4; x++)
2954 dst[x] = (a * src[x] + b * src[x + 1] + 4) >> 3;
2962 ptrdiff_t sstride,
int h,
int mx,
int my)
2965 int c = 8 - my, d = my;
2979 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t" 2980 "li %[tmp0], 0x03 \n\t" 2981 "mtc1 %[tmp0], %[ftmp4] \n\t" 2982 "pshufh %[c], %[c], %[ftmp0] \n\t" 2983 "pshufh %[d], %[d], %[ftmp0] \n\t" 2988 "addiu %[h], %[h], -0x01 \n\t" 2989 PTR_ADDU "%[src], %[src], %[sstride] \n\t" 2990 PTR_ADDU "%[dst], %[dst], %[dstride] \n\t" 2991 "bnez %[h], 1b \n\t" 2992 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
2993 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
2994 [ftmp4]
"=&f"(ftmp[4]),
2995 [tmp0]
"=&r"(tmp[0]),
3000 [dst]
"+&r"(dst), [src]
"+&r"(src),
3001 [
c]
"+&f"(
c), [d]
"+&f"(d)
3008 int c = 8 - my, d = my;
3011 for (y = 0; y <
h; y++) {
3012 for (x = 0; x < 4; x++)
3013 dst[x] = (c * src[x] + d * src[x + sstride] + 4) >> 3;
3021 ptrdiff_t sstride,
int h,
int mx,
int my)
3030 int a = 8 - mx,
b = mx;
3031 int c = 8 - my, d = my;
3036 for (y = 0; y < h + 1; y++) {
3037 for (x = 0; x < 4; x++)
3038 tmp[x] = (a * src[x] + b * src[x + 1] + 4) >> 3;
3045 for (y = 0; y <
h; y++) {
3046 for (x = 0; x < 4; x++)
3047 dst[x] = (c * tmp[x] + d * tmp[x + 4] + 4) >> 3;
void ff_put_vp8_epel16_h6v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
const char const char void * val
void ff_put_vp8_epel4_v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_epel16_h6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_epel16_v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_epel4_h4v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static const uint8_t subpel_filters[7][6]
#define PUT_VP8_EPEL4_V4_MMI(src, src1, dst, srcstride)
void ff_vp8_h_loop_filter16_inner_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_put_vp8_epel8_h4v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static av_always_inline void vp8_h_loop_filter8_inner_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_vp8_idct_dc_add_mmi(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
#define PUT_VP8_EPEL8_H6_MMI(src, dst)
void ff_put_vp8_epel4_v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_bilinear4_h_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_vp8_h_loop_filter8uv_inner_mmi(uint8_t *dstU, uint8_t *dstV, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
static const uint8_t q1[256]
void ff_put_vp8_bilinear16_hv_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_vp8_v_loop_filter16_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_put_vp8_epel8_h6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
#define PUT_VP8_BILINEAR8_V_MMI(src, src1, dst, sstride)
#define PUT_VP8_EPEL8_V6_MMI(src, src1, dst, srcstride)
void ff_put_vp8_epel4_h6v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static void filter0(SUINT32 *dst, const int32_t *src, int32_t coeff, ptrdiff_t len)
#define FILTER_4TAP(src, F, stride)
void ff_vp8_idct_dc_add4uv_mmi(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride)
#define PUT_VP8_BILINEAR8_H_MMI(src, dst)
#define TRANSPOSE_4H(m1, m2, m3, m4, t1, t2, t3, t4, t5, r1, zero, shift)
static void filter(int16_t *output, ptrdiff_t out_stride, int16_t *low, ptrdiff_t low_stride, int16_t *high, ptrdiff_t high_stride, int len, int clip)
void ff_put_vp8_epel8_h4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_bilinear4_v_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
static av_always_inline void vp8_h_loop_filter8_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
static void filter1(SUINT32 *dst, const int32_t *src, int32_t coeff, ptrdiff_t len)
void ff_put_vp8_epel8_v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_bilinear16_v_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_put_vp8_bilinear8_hv_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
static av_always_inline int hev(uint8_t *p, ptrdiff_t stride, int thresh)
static av_always_inline void filter_mbedge(uint8_t *p, ptrdiff_t stride)
void ff_vp8_h_loop_filter_simple_mmi(uint8_t *dst, ptrdiff_t stride, int flim)
void ff_put_vp8_pixels4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int x, int y)
void ff_put_vp8_epel16_h4v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static const uint8_t q0[256]
void ff_put_vp8_bilinear4_hv_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_put_vp8_epel8_h4v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static av_always_inline void vp8_filter_common_isnot4tap(uint8_t *p, ptrdiff_t stride)
static const uint64_t fourtap_subpel_filters[7][6]
#define FILTER_6TAP(src, F, stride)
void ff_put_vp8_epel8_h6v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
#define PUT_VP8_EPEL8_V4_MMI(src, src1, dst, srcstride)
#define PUT_VP8_BILINEAR4_H_MMI(src, dst)
void ff_put_vp8_bilinear8_h_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_put_vp8_epel16_v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_pixels16_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int x, int y)
#define PUT_VP8_EPEL4_V6_MMI(src, src1, dst, srcstride)
void ff_put_vp8_epel4_h6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
void ff_put_vp8_epel16_h4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_vp8_h_loop_filter16_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_vp8_v_loop_filter8uv_mmi(uint8_t *dstU, uint8_t *dstV, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_put_vp8_epel4_h4v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_vp8_idct_dc_add4y_mmi(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride)
#define PUT_VP8_EPEL4_H4_MMI(src, dst)
void ff_vp8_v_loop_filter_simple_mmi(uint8_t *dst, ptrdiff_t stride, int flim)
void ff_put_vp8_epel16_h6v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
#define PUT_VP8_EPEL4_H6_MMI(src, dst)
static av_always_inline int vp8_normal_limit(uint8_t *p, ptrdiff_t stride, int E, int I)
void ff_put_vp8_epel16_h4v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static av_always_inline void vp8_filter_common_is4tap(uint8_t *p, ptrdiff_t stride)
void ff_vp8_luma_dc_wht_dc_mmi(int16_t block[4][4][16], int16_t dc[16])
void ff_put_vp8_epel4_h4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) #define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac) { } void ff_audio_convert_free(AudioConvert **ac) { if(! *ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);} AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map) { AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method !=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt) > 2) { ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc) { av_free(ac);return NULL;} return ac;} in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar) { ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar ? ac->channels :1;} else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);return ac;} int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) { int use_generic=1;int len=in->nb_samples;int p;if(ac->dc) { av_log(ac->avr, AV_LOG_TRACE, "%d samples - audio_convert: %s to %s (dithered)\", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> dc
void ff_vp8_luma_dc_wht_mmi(int16_t block[4][4][16], int16_t dc[16])
void ff_vp8_v_loop_filter8uv_inner_mmi(uint8_t *dstU, uint8_t *dstV, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_vp8_v_loop_filter16_inner_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
#define PUT_VP8_BILINEAR4_V_MMI(src, src1, dst, sstride)
void ff_put_vp8_epel8_h6v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static av_always_inline int vp8_simple_limit(uint8_t *p, ptrdiff_t stride, int flim)
void ff_vp8_h_loop_filter8uv_mmi(uint8_t *dstU, uint8_t *dstV, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_put_vp8_pixels8_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int x, int y)
void ff_put_vp8_bilinear8_v_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_vp8_idct_add_mmi(uint8_t *dst, int16_t block[16], ptrdiff_t stride)
#define PUT_VP8_EPEL8_H4_MMI(src, dst)
static av_always_inline void vp8_v_loop_filter8_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)
void ff_put_vp8_epel4_h6v4_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
void ff_put_vp8_bilinear16_h_mmi(uint8_t *dst, ptrdiff_t dstride, uint8_t *src, ptrdiff_t sstride, int h, int mx, int my)
void ff_put_vp8_epel8_v6_mmi(uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int h, int mx, int my)
static av_always_inline void vp8_v_loop_filter8_inner_mmi(uint8_t *dst, ptrdiff_t stride, int flim_E, int flim_I, int hev_thresh)