194 vector
signed short *bp;
196 vector
float b00, b10, b20, b30, b40, b50, b60, b70;
197 vector
float b01, b11, b21, b31, b41, b51, b61, b71;
198 vector
float mzero, cnst, cnsts0, cnsts1, cnsts2;
199 vector
float x0, x1, x2, x3, x4, x5, x6, x7, x8;
203 mzero = ((vector
float) vec_splat_u32(-1));
205 cnsts0 = vec_ld(0, cp);
207 cnsts1 = vec_ld(0, cp);
209 cnsts2 = vec_ld(0, cp);
213#define MERGE_S16(hl, a, b) vec_merge ## hl(vs16(a), vs16(b))
215 bp = (vector
signed short *)
block;
216 b00 = ((vector
float) vec_ld(0, bp));
217 b40 = ((vector
float) vec_ld(16 * 4, bp));
221 b10 = ((vector
float) vec_ld(0, bp));
222 b50 = ((vector
float) vec_ld(16 * 4, bp));
226 b20 = ((vector
float) vec_ld(0, bp));
227 b60 = ((vector
float) vec_ld(16 * 4, bp));
231 b30 = ((vector
float) vec_ld(0, bp));
232 b70 = ((vector
float) vec_ld(16 * 4, bp));
278 b ## n ## 1 = ((vector float) vec_unpackl(vs16(b ## n ## 0))); \
279 b ## n ## 0 = ((vector float) vec_unpackh(vs16(b ## n ## 0))); \
280 b ## n ## 1 = vec_ctf(vs32(b ## n ## 1), 0); \
281 b ## n ## 0 = vec_ctf(vs32(b ## n ## 0), 0)
294 x0 = vec_add(b60, b20);
295 x1 = vec_add(b61, b21);
298 x0 = vec_madd(cnst, x0, mzero);
299 x1 = vec_madd(cnst, x1, mzero);
301 b20 = vec_madd(cnst, b20, x0);
302 b21 = vec_madd(cnst, b21, x1);
304 b60 = vec_madd(cnst, b60, x0);
305 b61 = vec_madd(cnst, b61, x1);
308 b ## 0 = ((vector float) vec_unpackh(vs16(x))); \
309 b ## 1 = ((vector float) vec_unpackl(vs16(x))); \
310 b ## 0 = vec_ctf(vs32(b ## 0), 0); \
311 b ## 1 = vec_ctf(vs32(b ## 1), 0)
320 x0 = vec_add(b70, b10);
321 x1 = vec_add(b50, b30);
322 x2 = vec_add(b70, b30);
323 x3 = vec_add(b50, b10);
324 x8 = vec_add(x2, x3);
326 x8 = vec_madd(cnst, x8, mzero);
329 x0 = vec_madd(cnst, x0, mzero);
331 x1 = vec_madd(cnst, x1, mzero);
333 x2 = vec_madd(cnst, x2, x8);
335 x3 = vec_madd(cnst, x3, x8);
338 b70 = vec_madd(cnst, b70, x0);
340 b50 = vec_madd(cnst, b50, x1);
342 b30 = vec_madd(cnst, b30, x1);
344 b10 = vec_madd(cnst, b10, x0);
346 b70 = vec_add(b70, x2);
347 b50 = vec_add(b50, x3);
348 b30 = vec_add(b30, x2);
349 b10 = vec_add(b10, x3);
351 x0 = vec_add(b71, b11);
352 x1 = vec_add(b51, b31);
353 x2 = vec_add(b71, b31);
354 x3 = vec_add(b51, b11);
355 x8 = vec_add(x2, x3);
357 x8 = vec_madd(cnst, x8, mzero);
360 x0 = vec_madd(cnst, x0, mzero);
362 x1 = vec_madd(cnst, x1, mzero);
364 x2 = vec_madd(cnst, x2, x8);
366 x3 = vec_madd(cnst, x3, x8);
369 b71 = vec_madd(cnst, b71, x0);
371 b51 = vec_madd(cnst, b51, x1);
373 b31 = vec_madd(cnst, b31, x1);
375 b11 = vec_madd(cnst, b11, x0);
377 b71 = vec_add(b71, x2);
378 b51 = vec_add(b51, x3);
379 b31 = vec_add(b31, x2);
380 b11 = vec_add(b11, x3);
384 x0 = vec_mergel(b00, b20);
385 x1 = vec_mergeh(b00, b20);
386 x2 = vec_mergel(b10, b30);
387 x3 = vec_mergeh(b10, b30);
389 b00 = vec_mergeh(x1, x3);
390 b10 = vec_mergel(x1, x3);
391 b20 = vec_mergeh(x0, x2);
392 b30 = vec_mergel(x0, x2);
394 x4 = vec_mergel(b41, b61);
395 x5 = vec_mergeh(b41, b61);
396 x6 = vec_mergel(b51, b71);
397 x7 = vec_mergeh(b51, b71);
399 b41 = vec_mergeh(x5, x7);
400 b51 = vec_mergel(x5, x7);
401 b61 = vec_mergeh(x4, x6);
402 b71 = vec_mergel(x4, x6);
404 x0 = vec_mergel(b01, b21);
405 x1 = vec_mergeh(b01, b21);
406 x2 = vec_mergel(b11, b31);
407 x3 = vec_mergeh(b11, b31);
409 x4 = vec_mergel(b40, b60);
410 x5 = vec_mergeh(b40, b60);
411 x6 = vec_mergel(b50, b70);
412 x7 = vec_mergeh(b50, b70);
414 b40 = vec_mergeh(x1, x3);
415 b50 = vec_mergel(x1, x3);
416 b60 = vec_mergeh(x0, x2);
417 b70 = vec_mergel(x0, x2);
419 b01 = vec_mergeh(x5, x7);
420 b11 = vec_mergel(x5, x7);
421 b21 = vec_mergeh(x4, x6);
422 b31 = vec_mergel(x4, x6);
425 FDCTCOL(b00, b10, b20, b30, b40, b50, b60, b70);
426 FDCTCOL(b01, b11, b21, b31, b41, b51, b61, b71);
430 b ## n ## 0 = vec_round(b ## n ## 0); \
431 b ## n ## 1 = vec_round(b ## n ## 1); \
432 b ## n ## 0 = ((vector float) vec_cts(b ## n ## 0, 0)); \
433 b ## n ## 1 = ((vector float) vec_cts(b ## n ## 1, 0)); \
434 b ## n ## 0 = ((vector float) vec_pack(vs32(b ## n ## 0), \
435 vs32(b ## n ## 1))); \
436 vec_st(vs16(b ## n ## 0), 0, bp)
438 bp = (vector
signed short *)
block;