gcc/ChangeLog:
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / builtins-1.h
blobb7d8c63ecd70bd1b99338b1e3d468ad26a4a6d1d
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. */
4 #include <altivec.h>
6 vector double y = { 2.0, 4.0 };
7 vector double z;
9 int main ()
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);
18 vector double da = {1.0, 2.0};
19 vector double db = {-2.0, -3.0};
20 vector double dz = vec_and (da, db);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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};
90 vector long long lv = vec_perm (la, lb, ca);
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);
96 vector unsigned long long uv = vec_perm (ua, ub, ca);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
164 vector unsigned int uie = vec_packsu (ua, ub);
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);
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);
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);
185 vector unsigned char cb = vec_cntlz (ca);
187 vector double dd = vec_xl (0, &y);
188 vec_xst (dd, 0, &z);
190 vector double dzz = vec_round (dd);
191 vector double dzz1 = vec_rsqrt (dd);
192 vector double dzz2 = vec_rsqrte (dd);
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);
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);
212 vector long long l8 = vec_mul (l3, l4);
213 vector unsigned long long u6 = vec_mul (u3, u4);
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);
222 vector float f1 = vec_mergee (fa, fb);
223 vector float f2 = vec_mergeo (fa, fb);
225 vector double d1 = vec_mergee (da, db);
226 vector double d2 = vec_mergeo (da, db);
228 return 0;