* gcc.target/powerpc/builtins-1-be.c <vclzb>: Rename duplicate test
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / vsx-vector-6.h
blob422f8a1ad478ce7b221005bfa655c545112402e8
1 /* This test code is included into vsx-vector-6-be.c and vsx-vector-6-le.c.
2 The two files have the tests for the number of instructions generated for
3 LE versus BE. */
5 #include <altivec.h>
7 void foo (vector double *out, vector double *in, vector long *p_l, vector bool long *p_b,
8 vector unsigned char *p_uc, int *i, vector float *p_f,
9 vector bool char *outbc, vector bool int *outbi,
10 vector bool short *outbsi, vector int *outsi, vector unsigned int *outui)
12 vector double in0 = in[0];
13 vector double in1 = in[1];
14 vector double in2 = in[2];
15 vector long inl = *p_l;
16 vector bool long inb = *p_b;
17 vector bool long long inbl0;
18 vector bool long long inbl1;
19 vector unsigned char uc = *p_uc;
20 vector float inf0;
21 vector float inf1;
22 vector float inf2;
23 vector bool char inbc0;
24 vector bool char inbc1;
25 vector bool short inbs0;
26 vector bool short inbs1;
27 vector bool int inbi0;
28 vector bool int inbi1;
29 vector signed short int inssi0, inssi1;
30 vector unsigned short int inusi0, inusi1;
31 vector signed int insi0, insi1;
32 vector unsigned int inui0, inui1;
34 *out++ = vec_abs (in0);
35 *out++ = vec_add (in0, in1);
36 *out++ = vec_and (in0, in1);
37 *out++ = vec_and (in0, inb);
38 *out++ = vec_and (inb, in0);
39 *out++ = vec_andc (in0, in1);
40 *out++ = vec_andc (in0, inb);
41 *out++ = vec_andc (inb, in0);
42 *out++ = vec_andc (inbl0, in0);
43 *out++ = vec_andc (in0, inbl0);
45 *out++ = vec_ceil (in0);
46 *p_b++ = vec_cmpeq (in0, in1);
47 *p_b++ = vec_cmpgt (in0, in1);
48 *p_b++ = vec_cmpge (in0, in1);
49 *p_b++ = vec_cmplt (in0, in1);
50 *p_b++ = vec_cmple (in0, in1);
51 *out++ = vec_div (in0, in1);
52 *out++ = vec_floor (in0);
53 *out++ = vec_madd (in0, in1, in2);
54 *out++ = vec_msub (in0, in1, in2);
55 *out++ = vec_max (in0, in1);
56 *out++ = vec_min (in0, in1);
57 *out++ = vec_msub (in0, in1, in2);
58 *out++ = vec_mul (in0, in1);
59 *out++ = vec_nearbyint (in0);
60 *out++ = vec_nmadd (in0, in1, in2);
61 *out++ = vec_nmsub (in0, in1, in2);
62 *out++ = vec_nor (in0, in1);
63 *out++ = vec_or (in0, in1);
64 *out++ = vec_or (in0, inb);
65 *out++ = vec_or (inb, in0);
66 *out++ = vec_perm (in0, in1, uc);
67 *out++ = vec_rint (in0);
68 *out++ = vec_sel (in0, in1, inl);
69 *out++ = vec_sel (in0, in1, inb);
70 *out++ = vec_sub (in0, in1);
71 *out++ = vec_sqrt (in0);
72 *out++ = vec_trunc (in0);
73 *out++ = vec_xor (in0, in1);
74 *out++ = vec_xor (in0, inb);
75 *out++ = vec_xor (inb, in0);
77 *i++ = vec_all_eq (in0, in1);
78 *i++ = vec_all_ge (in0, in1);
79 *i++ = vec_all_gt (in0, in1);
80 *i++ = vec_all_le (in0, in1);
81 *i++ = vec_all_lt (in0, in1);
82 *i++ = vec_all_nan (in0);
83 *i++ = vec_all_ne (in0, in1);
84 *i++ = vec_all_nge (in0, in1);
85 *i++ = vec_all_ngt (in0, in1);
86 *i++ = vec_all_nle (in0, in1);
87 *i++ = vec_all_nlt (in0, in1);
88 *i++ = vec_all_numeric (in0);
89 *i++ = vec_any_eq (in0, in1);
90 *i++ = vec_any_ge (in0, in1);
91 *i++ = vec_any_gt (in0, in1);
92 *i++ = vec_any_le (in0, in1);
93 *i++ = vec_any_lt (in0, in1);
94 *i++ = vec_any_nan (in0);
95 *i++ = vec_any_ne (in0, in1);
96 *i++ = vec_any_nge (in0, in1);
97 *i++ = vec_any_ngt (in0, in1);
98 *i++ = vec_any_nle (in0, in1);
99 *i++ = vec_any_nlt (in0, in1);
100 *i++ = vec_any_numeric (in0);
102 *p_f++ = vec_msub (inf0, inf1, inf2);
103 *p_f++ = vec_nmsub (inf0, inf1, inf2);
104 *p_f++ = vec_nmadd (inf0, inf1, inf2);
105 *p_f++ = vec_or (inf0, inf1);
107 *out++ = vec_or (inbl0, in0);
108 *out++ = vec_or (in0, inbl0);
110 *out++ = vec_nor (in0, in1);
112 *outbc++ = vec_nor (inbc0, inbc1);
113 *outbc++ = vec_andc (inbc0, inbc1);
114 *outbc++ = vec_or (inbc0, inbc1);
116 *outbi++ = vec_andc (inbi0, inbi1);
117 *outbsi++ = vec_andc (inbs0, inbs1);
119 *outbsi++ = vec_andc (inbs0, inbs1);
121 *outbi++ = vec_nor (inbi0, inbi1);
122 *outbi++ = vec_or (inbi0, inbi1);
124 *outbsi++ = vec_nor (inbs0, inbs1);
125 *outbsi++ = vec_or (inbs0, inbs1);
127 *outsi++ = vec_msums(inssi0, inssi1, insi0);
128 *outui++ = vec_msums(inusi0, inusi1, inui0);
130 *p_f++ = vec_nor (inf0, inf1);
132 *p_f++ = vec_andc (inf0, inf1);
133 *p_f++ = vec_andc (inbi0, inf0);
134 *p_f++ = vec_andc (inf0, inbi0);
136 *in++ = vec_andc (inbl0, in1);
137 *in++ = vec_andc (in0, inbl1);
140 int main()
142 vector double *out;
143 vector double *in;
144 vector long *p_l;
145 vector bool long *p_b;
146 vector unsigned char *p_uc;
147 int *i;
148 vector float *p_f;
149 vector bool char *outbc;
150 vector bool int *outbi;
151 vector bool short *outbsi;
152 vector int *outsi;
153 vector unsigned int *outui;
155 foo (out, in, p_l, p_b, p_uc, i, p_f, outbc,
156 outbi, outbsi, outsi, outui);