]> gcc.gnu.org Git - gcc.git/blob - gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h
a891b64e6faaed8228e1d1c625fe6de558f1bf6f
[gcc.git] / gcc / testsuite / gcc.target / powerpc / vsx-vector-6.h
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. */
4
5 #include <altivec.h>
6
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,
11 vector unsigned int *outui, vector signed char *outsc,
12 vector unsigned char *outuc)
13 {
14 vector double in0 = in[0];
15 vector double in1 = in[1];
16 vector double in2 = in[2];
17 vector long inl = *p_l;
18 vector bool long inb = *p_b;
19 vector bool long long inbl0;
20 vector bool long long inbl1;
21 vector unsigned char uc = *p_uc;
22 vector float inf0;
23 vector float inf1;
24 vector float inf2;
25 vector char inc0;
26 vector char inc1;
27 vector bool char inbc0;
28 vector bool char inbc1;
29 vector bool short inbs0;
30 vector bool short inbs1;
31 vector bool int inbi0;
32 vector bool int inbi1;
33 vector signed short int inssi0, inssi1;
34 vector unsigned short int inusi0, inusi1;
35 vector signed int insi0, insi1;
36 vector unsigned int inui0, inui1;
37 vector unsigned char inuc0, inuc1;
38
39 *out++ = vec_abs (in0);
40 *out++ = vec_add (in0, in1);
41 *out++ = vec_and (in0, in1);
42 *out++ = vec_and (in0, inb);
43 *out++ = vec_and (inb, in0);
44 *out++ = vec_andc (in0, in1);
45 *out++ = vec_andc (in0, inb);
46 *out++ = vec_andc (inb, in0);
47 *out++ = vec_andc (inbl0, in0);
48 *out++ = vec_andc (in0, inbl0);
49
50 *out++ = vec_ceil (in0);
51 *p_b++ = vec_cmpeq (in0, in1);
52 *p_b++ = vec_cmpgt (in0, in1);
53 *p_b++ = vec_cmpge (in0, in1);
54 *p_b++ = vec_cmplt (in0, in1);
55 *p_b++ = vec_cmple (in0, in1);
56 *out++ = vec_div (in0, in1);
57 *out++ = vec_floor (in0);
58 *out++ = vec_madd (in0, in1, in2);
59 *out++ = vec_msub (in0, in1, in2);
60 *out++ = vec_max (in0, in1);
61 *out++ = vec_min (in0, in1);
62 *out++ = vec_msub (in0, in1, in2);
63 *out++ = vec_mul (in0, in1);
64 *out++ = vec_nearbyint (in0);
65 *out++ = vec_nmadd (in0, in1, in2);
66 *out++ = vec_nmsub (in0, in1, in2);
67 *out++ = vec_nor (in0, in1);
68 *out++ = vec_or (in0, in1);
69 *out++ = vec_or (in0, inb);
70 *out++ = vec_or (inb, in0);
71 *out++ = vec_perm (in0, in1, uc);
72 *out++ = vec_rint (in0);
73 *out++ = vec_sel (in0, in1, inl);
74 *out++ = vec_sel (in0, in1, inb);
75 *out++ = vec_sub (in0, in1);
76 *out++ = vec_sqrt (in0);
77 *out++ = vec_trunc (in0);
78 *out++ = vec_xor (in0, in1);
79 *out++ = vec_xor (in0, inb);
80 *out++ = vec_xor (inb, in0);
81
82 *i++ = vec_all_eq (in0, in1);
83 *i++ = vec_all_ge (in0, in1);
84 *i++ = vec_all_gt (in0, in1);
85 *i++ = vec_all_le (in0, in1);
86 *i++ = vec_all_lt (in0, in1);
87 *i++ = vec_all_nan (in0);
88 *i++ = vec_all_ne (in0, in1);
89 *i++ = vec_all_nge (in0, in1);
90 *i++ = vec_all_ngt (in0, in1);
91 *i++ = vec_all_nle (in0, in1);
92 *i++ = vec_all_nlt (in0, in1);
93 *i++ = vec_all_numeric (in0);
94 *i++ = vec_any_eq (in0, in1);
95 *i++ = vec_any_ge (in0, in1);
96 *i++ = vec_any_gt (in0, in1);
97 *i++ = vec_any_le (in0, in1);
98 *i++ = vec_any_lt (in0, in1);
99 *i++ = vec_any_nan (in0);
100 *i++ = vec_any_ne (in0, in1);
101 *i++ = vec_any_nge (in0, in1);
102 *i++ = vec_any_ngt (in0, in1);
103 *i++ = vec_any_nle (in0, in1);
104 *i++ = vec_any_nlt (in0, in1);
105 *i++ = vec_any_numeric (in0);
106
107 *p_f++ = vec_msub (inf0, inf1, inf2);
108 *p_f++ = vec_nmsub (inf0, inf1, inf2);
109 *p_f++ = vec_nmadd (inf0, inf1, inf2);
110 *p_f++ = vec_or (inf0, inf1);
111 *p_f++ = vec_trunc (inf0);
112
113 *out++ = vec_or (inbl0, in0);
114 *out++ = vec_or (in0, inbl0);
115
116 *out++ = vec_nor (in0, in1);
117
118 *outbc++ = vec_nor (inbc0, inbc1);
119 *outbc++ = vec_andc (inbc0, inbc1);
120 *outbc++ = vec_or (inbc0, inbc1);
121
122 *outuc++ = vec_max (inuc0, inuc1);
123
124 *outbi++ = vec_andc (inbi0, inbi1);
125 *outbsi++ = vec_andc (inbs0, inbs1);
126
127 *outbsi++ = vec_andc (inbs0, inbs1);
128
129 *outbi++ = vec_nor (inbi0, inbi1);
130 *outbi++ = vec_or (inbi0, inbi1);
131
132 *outbsi++ = vec_nor (inbs0, inbs1);
133 *outbsi++ = vec_or (inbs0, inbs1);
134
135 *outsi++ = vec_msums(inssi0, inssi1, insi0);
136 *outui++ = vec_msums(inusi0, inusi1, inui0);
137
138 *p_f++ = vec_nor (inf0, inf1);
139
140 *p_f++ = vec_andc (inf0, inf1);
141 *p_f++ = vec_andc (inbi0, inf0);
142 *p_f++ = vec_andc (inf0, inbi0);
143
144 *in++ = vec_andc (inbl0, in1);
145 *in++ = vec_andc (in0, inbl1);
146 }
147
148 int main()
149 {
150 vector double *out;
151 vector double *in;
152 vector long *p_l;
153 vector bool long *p_b;
154 vector unsigned char *p_uc;
155 int *i;
156 vector float *p_f;
157 vector bool char *outbc;
158 vector bool int *outbi;
159 vector bool short *outbsi;
160 vector int *outsi;
161 vector unsigned int *outui;
162 vector signed char *outsc;
163 vector unsigned char *outuc;
164
165 foo (out, in, p_l, p_b, p_uc, i, p_f, outbc,
166 outbi, outbsi, outsi, outui, outsc, outuc);
167 }
This page took 0.044006 seconds and 4 git commands to generate.