1 /* This test is included into builtins-1-be.c and builtins-1-le.c to test on
2    Big Endian and Little Endian machines.  */
3 
4 #include <altivec.h>
5 
6 vector double y = { 2.0, 4.0 };
7 vector double z;
8 
main()9 int main ()
10 {
11   vector float fa = {1.0, 2.0, 3.0, -4.0};
12   vector float fb = {-2.0, -3.0, -4.0, -5.0};
13   vector float fd = vec_and (fa, fb);
14   vector float fc = vec_cpsgn (fa, fb);
15   vector float fe = vec_mergeh (fa, fb);
16   vector float ff = vec_mergel (fa, fb);
17 
18   vector double da = {1.0, 2.0};
19   vector double db = {-2.0, -3.0};
20   vector double dz = vec_and (da, db);
21 
22   vector long long la = {5L, 14L};
23   vector long long lb = {3L, 86L};
24   vector long long lc = vec_and (la, lb);
25   vector bool long long ld = {0, -1};
26   vector long long le = vec_and (la, ld);
27   vector long long lf = vec_and (ld, lb);
28 
29   vector unsigned long long ua = {5L, 14L};
30   vector unsigned long long ub = {3L, 86L};
31   vector unsigned long long uc = vec_and (ua, ub);
32   vector bool long long ud = {0, -1};
33   vector unsigned long long ue = vec_and (ua, ud);
34   vector unsigned long long uf = vec_and (ud, ub);
35 
36   vector long long lg = vec_andc (la, lb);
37   vector long long lh = vec_andc (la, ld);
38   vector long long li = vec_andc (ld, lb);
39 
40   vector unsigned long long ug = vec_andc (ua, ub);
41   vector unsigned long long uh = vec_andc (ua, ud);
42   vector unsigned long long ui = vec_andc (ud, ub);
43 
44   vector double de = {1.0, -4.0};
45   vector double df = {-2.0, 5.0};
46   vector double dg = vec_cpsgn (de, df);
47   vector double dzw = vec_mergeh (de, df);
48   vector double dze = vec_mergel (de, df);
49 
50   vector long long lj = vec_mergeh (la, lb);
51   vector long long lk = vec_mergeh (la, ld);
52   vector long long ll = vec_mergeh (ld, la);
53 
54   vector unsigned long long uj = vec_mergeh (ua, ub);
55   vector unsigned long long uk = vec_mergeh (ua, ud);
56   vector unsigned long long ul = vec_mergeh (ud, ua);
57 
58   vector pixel pa = {9, 16, 25, 36, 1, 2, 3, 4};
59   vector pixel pb = {25, 36, 1, 2, 45, 3, 4, 99};
60   vector pixel pc = vec_mergeh (pa, pb);
61   vector pixel pd = vec_mergel (pa, pb);
62 
63   vector long long lm = vec_mergel (la, lb);
64   vector long long ln = vec_mergel (la, ld);
65   vector long long lo = vec_mergel (ld, la);
66 
67   vector unsigned long long um = vec_mergel (ua, ub);
68   vector unsigned long long un = vec_mergel (ua, ud);
69   vector unsigned long long uo = vec_mergel (ud, ua);
70 
71   vector long long lp = vec_nor (la, lb);
72   vector long long lq = vec_nor (la, ld);
73   vector long long lr = vec_nor (ld, la);
74 
75   vector unsigned long long up = vec_nor (ua, ub);
76   vector unsigned long long uq = vec_nor (ua, ud);
77   vector unsigned long long ur = vec_nor (ud, ua);
78 
79   vector long long ls = vec_or (la, lb);
80   vector long long lt = vec_or (la, ld);
81   vector long long lu = vec_or (ld, la);
82 
83   vector unsigned long long us = vec_or (ua, ub);
84   vector unsigned long long ut = vec_or (ua, ud);
85   vector unsigned long long uu = vec_or (ud, ua);
86 
87   vector unsigned char ca = {0,4,8,1,5,9,2,6,10,3,7,11,15,12,14,13};
88   vector unsigned char cbb = {5,4,8,3,1,9,2,6,10,3,7,11,15,12,14,13};
89 
90   vector long long lv = vec_perm (la, lb, ca);
91 
92   vector unsigned char  ucm = vec_and (ca, cbb);
93   vector unsigned char  ucn = vec_andc (ca, cbb);
94   vector unsigned char  uco = vec_mergel (ca, cbb);
95 
96   vector unsigned long long uv = vec_perm (ua, ub, ca);
97 
98   vector long long lw = vec_sel (la, lb, lc);
99   vector long long lx = vec_sel (la, lb, uc);
100   vector long long ly = vec_sel (la, lb, ld);
101 
102   vector unsigned long long uw = vec_sel (ua, ub, lc);
103   vector unsigned long long ux = vec_sel (ua, ub, uc);
104   vector unsigned long long uy = vec_sel (ua, ub, ld);
105 
106   vector long long lz = vec_xor (la, lb);
107   vector long long l0 = vec_xor (la, ld);
108   vector long long l1 = vec_xor (ld, la);
109 
110   vector unsigned long long uz = vec_xor (ua, ub);
111   vector unsigned long long u0 = vec_xor (ua, ud);
112   vector unsigned long long u1 = vec_xor (ud, ua);
113 
114   int ia = vec_all_eq (ua, ub);
115   int ib = vec_all_ge (ua, ub);
116   int ic = vec_all_gt (ua, ub);
117   int id = vec_all_le (ua, ub);
118   int ie = vec_all_lt (ua, ub);
119   int ig = vec_all_ne (ua, ub);
120 
121   int ih = vec_any_eq (ua, ub);
122   int ii = vec_any_ge (ua, ub);
123   int ij = vec_any_gt (ua, ub);
124   int ik = vec_any_le (ua, ub);
125   int il = vec_any_lt (ua, ub);
126   int im = vec_any_ne (ua, ub);
127 
128   vector short ssa = {9, 16, 25, 36, 1, 2, 3, 4};
129   vector short ssb = {-8, -27, -64, -125, 2, 3, 5, 3};
130   vector short sscc = vec_and (ssa, ssb);
131   vector short sscd = vec_mergeh (ssa, ssb);
132   vector short ssce = vec_mergel (ssa, ssb);
133 
134   vector int sia = {9, 16, 25, 36};
135   vector int sib = {-8, -27, -64, -125};
136   vector int sicc = vec_and (sia, sib);
137   vector int sicd = vec_andc (sia, sib);
138   vector int sig = vec_mergel (sia, sib);
139 
140   vector unsigned int uia = {9, 16, 25, 36};
141   vector unsigned int uib = {8, 27, 64, 125};
142   vector unsigned int uicc = vec_and (uia, uib);
143   vector unsigned int uidd = vec_andc (uia, uib);
144   vector unsigned int uig = vec_mergel (uia, uib);
145 
146   vector bool char bca = {0, 1, 4, 7};
147   vector bool char bcb = {-8, 9, 2, 9};
148   vector bool char bcc = vec_and (bca, bcb);
149   vector bool char bcd = vec_andc (bca, bcb);
150   vector bool char bce = vec_mergel (bca, bcb);
151 
152   vector bool short bsa = {0, -1, -1, 0, 3, 4, 6, 7};
153   vector bool short bsb = {-1, -1, 0, -1, 0, 0, 0, 0};
154   vector bool short bscc = vec_and (bsa, bsb);
155   vector bool short bscd = vec_andc (bsa, bsb);
156   vector bool short bsce = vec_mergel (bsa, bsb);
157 
158   vector bool int bia = {0, -1, -1, 0};
159   vector bool int bib = {-1, -1, 0, -1};
160   vector bool int bicc = vec_and (bia, bib);
161   vector bool int bicd = vec_andc (bia, bib);
162   vector bool int bide = vec_mergel (bia, bib);
163 
164   vector unsigned int uie = vec_packsu (ua, ub);
165 
166   vector long long l2 = vec_cntlz (la);
167   vector unsigned long long u2 = vec_cntlz (ua);
168   vector int sie = vec_cntlz (sia);
169   vector unsigned int uif = vec_cntlz (uia);
170   vector short sszz = vec_cntlz (ssa);
171 
172   vector unsigned short usa = {81, 72, 63, 54, 45, 36, 27, 18};
173   vector unsigned short usb = {81, 72, 63, 54, 45, 36, 27, 18};
174   vector unsigned short usd = vec_and (usa, usb);
175   vector unsigned short use = vec_andc (usa, usb);
176   vector unsigned short usc = vec_cntlz (usa);
177   vector unsigned short uscd = vec_mergeh (usa, usb);
178   vector unsigned short usce = vec_mergel (usa, usb);
179 
180   vector signed char sca = {-4, 3, -9, 15, -31, 31, 0, 0,
181 		            1, 117, -36, 99, 98, 97, 96, 95};
182   vector signed char scb = vec_cntlz (sca);
183   vector signed char scc = vec_mergel (sca, scb);
184 
185   vector unsigned char cb = vec_cntlz (ca);
186 
187   vector double dd = vec_xl (0, &y);
188   vec_xst (dd, 0, &z);
189 
190   vector double dzz = vec_round (dd);
191   vector double dzz1 = vec_rsqrt (dd);
192   vector double dzz2 = vec_rsqrte (dd);
193 
194   vector double dff = vec_splat (de, 0);
195   vector double dgg = vec_splat (de, 1);
196   vector long long l3 = vec_splat (l2, 0);
197   vector long long l4 = vec_splat (l2, 1);
198   vector unsigned long long u3 = vec_splat (u2, 0);
199   vector unsigned long long u4 = vec_splat (u2, 1);
200   vector bool long long l5 = vec_splat (ld, 0);
201   vector bool long long l6 = vec_splat (ld, 1);
202   vector bool long long l10 = vec_mergee (ld, ld);
203   vector bool long long l11 = vec_mergeo (ld, ld);
204 
205   vector long long l7 = vec_div (l3, l4);
206   vector unsigned long long u5 = vec_div (u3, u4);
207   vector long long l12 = vec_mergee (la, lb);
208   vector long long l13 = vec_mergeo (la, lb);
209   vector unsigned long long u8 = vec_mergee (u3, u4);
210   vector unsigned long long u9 = vec_mergeo (u3, u4);
211 
212   vector long long l8 = vec_mul (l3, l4);
213   vector unsigned long long u6 = vec_mul (u3, u4);
214 
215   vector double dh = vec_ctf (la, -2);
216   vector double di = vec_ctf (ua, 2);
217   vector int sz = vec_cts (fa, 0x1F);
218   vector long long l9 = vec_cts (dh, -2);
219   vector unsigned long long u7 = vec_ctu (di, 2);
220   vector unsigned int usz = vec_ctu (fa, 0x1F);
221 
222   vector float f1 = vec_mergee (fa, fb);
223   vector float f2 = vec_mergeo (fa, fb);
224 
225   vector double d1 = vec_mergee (da, db);
226   vector double d2 = vec_mergeo (da, db);
227 
228   return 0;
229 }
230