1 /* Disable warnings to squelch deprecation message about -maltivec=be.  */
2 /* { dg-options "-w -maltivec=be -mabi=altivec -std=gnu99 -mno-vsx" } */
3 
4 #include "harness.h"
5 
test()6 static void test()
7 {
8   /* Input vectors.  */
9   vector unsigned char vuc = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
10   vector signed char vsc = {-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7};
11   vector unsigned short vus = {0,1,2,3,4,5,6,7};
12   vector signed short vss = {-4,-3,-2,-1,0,1,2,3};
13   vector unsigned int vui = {0,1,2,3};
14   vector signed int vsi = {-2,-1,0,1};
15   vector float vf = {-2.0,-1.0,0.0,1.0};
16 
17   /* Result vectors.  */
18   vector unsigned char vucr;
19   vector signed char vscr;
20   vector unsigned short vusr;
21   vector signed short vssr;
22   vector unsigned int vuir;
23   vector signed int vsir;
24   vector float vfr;
25 
26   /* Expected result vectors.  */
27 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
28   vector unsigned char vucer = {14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14};
29   vector signed char vscer = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
30   vector unsigned short vuser = {0,0,0,0,0,0,0,0};
31   vector signed short vsser = {3,3,3,3,3,3,3,3};
32   vector unsigned int vuier = {1,1,1,1};
33   vector signed int vsier = {-2,-2,-2,-2};
34   vector float vfer = {0.0,0.0,0.0,0.0};
35 #else
36   vector unsigned char vucer = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
37   vector signed char vscer = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
38   vector unsigned short vuser = {7,7,7,7,7,7,7,7};
39   vector signed short vsser = {-4,-4,-4,-4,-4,-4,-4,-4};
40   vector unsigned int vuier = {2,2,2,2};
41   vector signed int vsier = {1,1,1,1};
42   vector float vfer = {-1.0,-1.0,-1.0,-1.0};
43 #endif
44 
45   vucr = vec_splat (vuc, 1);
46   vscr = vec_splat (vsc, 8);
47   vusr = vec_splat (vus, 7);
48   vssr = vec_splat (vss, 0);
49   vuir = vec_splat (vui, 2);
50   vsir = vec_splat (vsi, 3);
51   vfr  = vec_splat (vf,  1);
52 
53   check (vec_all_eq (vucr, vucer), "vuc");
54   check (vec_all_eq (vscr, vscer), "vsc");
55   check (vec_all_eq (vusr, vuser), "vus");
56   check (vec_all_eq (vssr, vsser), "vss");
57   check (vec_all_eq (vuir, vuier), "vui");
58   check (vec_all_eq (vsir, vsier), "vsi");
59   check (vec_all_eq (vfr,  vfer ), "vf");
60 }
61