| /* { dg-do run { target powerpc64*-*-* } } */ |
| /* { dg-require-effective-target p8vector_hw } */ |
| /* { dg-skip-if "" { powerpc*-*-darwin* } } */ |
| /* { dg-options "-mdejagnu-cpu=power8" } */ |
| |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <altivec.h> |
| |
| static int failed; |
| static void test (void); |
| |
| static void check (int result, const char *name) |
| { |
| if (!result) |
| { |
| failed++; |
| printf ("fail %s\n", name); |
| } |
| } |
| |
| int main (void) |
| { |
| test (); |
| if (failed) |
| abort (); |
| return 0; |
| } |
| |
| vector double x = { 81.0, 76.0 }; |
| vector long long y = { 81, 76 }; |
| |
| static void test() |
| { |
| vector long long a = vec_cts (x, 0); |
| vector double b = vec_ctf (a, 0); |
| vector long long c = __builtin_vsx_xvcvdpuxds_scale (x, 0); |
| vector double d = vec_ctf (c, 0); |
| check (vec_all_eq (a, y), "vec_cts"); |
| check (vec_all_eq (b, x), "vec_ctf"); |
| check (vec_all_eq (c, y), "xvcvdpuxds"); |
| check (vec_all_eq (d, x), "vec_ctf unsigned"); |
| } |