diff options
author | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-12 01:24:42 +0000 |
---|---|---|
committer | aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-12 01:24:42 +0000 |
commit | d17f495f038bc937752bf51627156a157ed6a851 (patch) | |
tree | 3e1505f5bd59a1baa3e638de5d60e473e0ccc4c0 /gcc/testsuite/gcc.dg/altivec-1.c | |
parent | aee989f56dda50cd86c46cc0dfca485dfde5e1e9 (diff) | |
download | gcc-d17f495f038bc937752bf51627156a157ed6a851.tar.gz |
2002-03-11 Aldy Hernandez <aldyh@redhat.com>
* gcc.dg/altivec-1.c: Cleanup and use altivec.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/altivec-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/altivec-1.c | 90 |
1 files changed, 23 insertions, 67 deletions
diff --git a/gcc/testsuite/gcc.dg/altivec-1.c b/gcc/testsuite/gcc.dg/altivec-1.c index 8fd40869efd..3d37a2e1c76 100644 --- a/gcc/testsuite/gcc.dg/altivec-1.c +++ b/gcc/testsuite/gcc.dg/altivec-1.c @@ -3,80 +3,36 @@ /* Program to test PowerPC AltiVec instructions. */ -/* These macros are not analogous to the overloaded functions - described in Motorola's AltiVec Programming Interface Manual. - These are just here for readability. Eventually we'll get the - overloaded functions implemented in an <altivec.h>. */ +#include <altivec.h> -#define vec_load(src) \ - __builtin_altivec_ld_internal_4si ((int *) src) +extern void abort (void); -#define vec_store(dst, src) \ - __builtin_altivec_st_internal_4si ((int *) dst, (int4) src) +vector int a1 = { 100, 200, 300, 400 }; +vector int a2 = { 500, 600, 700, 800 }; +vector int addi = { 600, 800, 1000, 1200 }; +vector int avgi = { 300, 400, 500, 600 }; -#define vec_add_int4(x, y) \ - __builtin_altivec_vaddsws (x, y) +vector float f1 = { 1.0, 2.0, 3.0, 4.0 }; +vector float f2 = { 5.0, 6.0, 7.0, 8.0 }; +vector float f3; +vector float addf = { 6.0, 8.0, 10.0, 12.0 }; -#define vec_add_float4(x, y) \ - __builtin_altivec_vaddfp (x, y) +vector int k; +vector float f, g, h; -#define vec_average_int4(x, y) \ - __builtin_altivec_vavgsw (x, y) - -typedef int int4 __attribute__ ((mode(V4SI))); -typedef float float4 __attribute__ ((mode(V4SF))); - -int a1[4] __attribute__((aligned(16))) = { 100, 200, 300, 400 }; -int a2[4] __attribute__((aligned(16))) = { 500, 600, 700, 800 }; -int a3[4] __attribute__((aligned(16))); -int addi[4] = { 600, 800, 1000, 1200 }; -int avgi[4] = { 300, 400, 500, 600 }; - -float f1[4] __attribute__((aligned(16))) = { 1.0, 2.0, 3.0, 4.0 }; -float f2[4] __attribute__((aligned(16))) = { 5.0, 6.0, 7.0, 8.0 }; -float f3[4] __attribute__((aligned(16))); -float addf[4] = { 6.0, 8.0, 10.0, 12.0 }; - -int4 i, j, k; -float4 f, g, h; - -void -compare_int4 (int *a, int *b) -{ - int i; - - for (i = 0; i < 4; ++i) - if (a[i] != b[i]) - exit (1); -} - -void -compare_float4 (float *a, float *b) -{ - int i; - - for (i = 0; i < 4; ++i) - if (a[i] != b[i]) - exit (1); -} - -main () +int main () { - i = vec_load (a1); - j = vec_load (a2); - k = vec_add_int4 (i, j); - vec_store (a3, k); - compare_int4 (a3, addi); + k = vec_add (a1, a2); + if (!vec_all_eq (addi, k)) + abort (); - k = vec_average_int4 (i, j); - vec_store (a3, k); - compare_int4 (a3, avgi); + k = vec_avg (a1, a2); + if (!vec_all_eq (k, avgi)) + abort (); - f = (float4) vec_load (f1); - g = (float4) vec_load (f2); - h = vec_add_float4 (f, g); - vec_store (f3, h); - compare_float4 (f3, addf); + h = vec_add (f1, f2); + if (!vec_all_eq (h, addf)) + abort (); - exit (0); + return 0; } |