diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.dg/vmx/7-01a.c | |
download | cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2 cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gcc.dg/vmx/7-01a.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/vmx/7-01a.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/vmx/7-01a.c b/gcc/testsuite/gcc.dg/vmx/7-01a.c new file mode 100644 index 000000000..c09835b43 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vmx/7-01a.c @@ -0,0 +1,36 @@ +/* { dg-do compile } */ +#include <altivec.h> +extern vector signed short image[]; +extern vector signed short band[]; + +#define load(a,b) vec_ld((b)*16, a) +#define store(v,a,b) vec_st(v,(b)*16,a) + +void +haar (vector signed char a, vector signed char b, vector signed char c, + vector signed char d, unsigned int N, int XX) +{ + unsigned int i; + vector unsigned char high, low; + vector signed int zero = ((vector signed int){0,0,0,0}); + + for (i = 0; i < N; i++) { + high = (vector unsigned char) (vec_vmrghh (load(image, i+XX), + load(image, i))); + low = (vector unsigned char) (vec_vmrglh (load(image, i+XX), + load(image, i))); + + store (vec_vpkswss (vec_vmsummbm (a, high, zero), + vec_vmsummbm (a, low, zero)), + band, i); + store (vec_vpkswss (vec_vmsummbm (b, high, zero), + vec_vmsummbm (b, low, zero)), + band, i+1); + store(vec_vpkswss (vec_vmsummbm (c, high, zero), + vec_vmsummbm (c, low, zero)), + band, i+2); + store(vec_vpkswss (vec_vmsummbm (d, high, zero), + vec_vmsummbm (d, low, zero)), + band, i+3); + } +} |