Mercurial > libavcodec.hg
diff ppc/gmc_altivec.c @ 10079:71ead14665e3 libavcodec
PPC: simplify loading some values into altivec registers
Instead of filling a local array with the desired value and loading it,
load a single element and vec_splat() it to fill the vector.
author | mru |
---|---|
date | Mon, 24 Aug 2009 10:36:13 +0000 |
parents | 7cee7292d5cc |
children | 34a65026fa06 |
line wrap: on
line diff
--- a/ppc/gmc_altivec.c Mon Aug 24 10:06:26 2009 +0000 +++ b/ppc/gmc_altivec.c Mon Aug 24 10:36:13 2009 +0000 @@ -23,6 +23,7 @@ #include "libavcodec/dsputil.h" #include "dsputil_ppc.h" #include "util_altivec.h" +#include "types_altivec.h" /* altivec-enhanced gmc1. ATM this code assume stride is a multiple of 8, @@ -32,9 +33,7 @@ void gmc1_altivec(uint8_t *dst /* align 8 */, uint8_t *src /* align1 */, int stride, int h, int x16, int y16, int rounder) { POWERPC_PERF_DECLARE(altivec_gmc1_num, GMC1_PERF_COND); - const DECLARE_ALIGNED_16(unsigned short, rounder_a[8]) = - {rounder, rounder, rounder, rounder, - rounder, rounder, rounder, rounder}; + const DECLARE_ALIGNED_16(unsigned short, rounder_a) = rounder; const DECLARE_ALIGNED_16(unsigned short, ABCD[8]) = { (16-x16)*(16-y16), /* A */ @@ -60,7 +59,7 @@ Cv = vec_splat(tempA, 2); Dv = vec_splat(tempA, 3); - rounderV = vec_ld(0, (unsigned short*)rounder_a); + rounderV = vec_splat((vec_u16)vec_lde(0, &rounder_a), 0); // we'll be able to pick-up our 9 char elements // at src from those 32 bytes