spu2vmx.h revision 1.1.1.1.4.2 1 1.1.1.1.4.2 yamt /* Cell SPU 2 VMX intrinsics header
2 1.1.1.1.4.2 yamt Copyright (C) 2007, 2009 Free Software Foundation, Inc.
3 1.1.1.1.4.2 yamt
4 1.1.1.1.4.2 yamt This file is free software; you can redistribute it and/or modify it under
5 1.1.1.1.4.2 yamt the terms of the GNU General Public License as published by the Free
6 1.1.1.1.4.2 yamt Software Foundation; either version 3 of the License, or (at your option)
7 1.1.1.1.4.2 yamt any later version.
8 1.1.1.1.4.2 yamt
9 1.1.1.1.4.2 yamt This file is distributed in the hope that it will be useful, but WITHOUT
10 1.1.1.1.4.2 yamt ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 1.1.1.1.4.2 yamt FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 1.1.1.1.4.2 yamt for more details.
13 1.1.1.1.4.2 yamt
14 1.1.1.1.4.2 yamt Under Section 7 of GPL version 3, you are granted additional
15 1.1.1.1.4.2 yamt permissions described in the GCC Runtime Library Exception, version
16 1.1.1.1.4.2 yamt 3.1, as published by the Free Software Foundation.
17 1.1.1.1.4.2 yamt
18 1.1.1.1.4.2 yamt You should have received a copy of the GNU General Public License and
19 1.1.1.1.4.2 yamt a copy of the GCC Runtime Library Exception along with this program;
20 1.1.1.1.4.2 yamt see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
21 1.1.1.1.4.2 yamt <http://www.gnu.org/licenses/>. */
22 1.1.1.1.4.2 yamt
23 1.1.1.1.4.2 yamt #ifndef _SPU2VMX_H_
24 1.1.1.1.4.2 yamt #define _SPU2VMX_H_ 1
25 1.1.1.1.4.2 yamt
26 1.1.1.1.4.2 yamt #ifdef __cplusplus
27 1.1.1.1.4.2 yamt
28 1.1.1.1.4.2 yamt #ifndef __SPU__
29 1.1.1.1.4.2 yamt
30 1.1.1.1.4.2 yamt #include <si2vmx.h>
31 1.1.1.1.4.2 yamt
32 1.1.1.1.4.2 yamt /* spu_absd (absolute difference)
33 1.1.1.1.4.2 yamt * ========
34 1.1.1.1.4.2 yamt */
35 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_absd(vec_uchar16 a, vec_uchar16 b)
36 1.1.1.1.4.2 yamt {
37 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_absdb((qword)(a), (qword)(b))));
38 1.1.1.1.4.2 yamt
39 1.1.1.1.4.2 yamt }
40 1.1.1.1.4.2 yamt
41 1.1.1.1.4.2 yamt
42 1.1.1.1.4.2 yamt /* spu_add
43 1.1.1.1.4.2 yamt * =======
44 1.1.1.1.4.2 yamt */
45 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_add(vec_uint4 a, vec_uint4 b)
46 1.1.1.1.4.2 yamt {
47 1.1.1.1.4.2 yamt return ((vec_uint4)(si_a((qword)(a), (qword)(b))));
48 1.1.1.1.4.2 yamt }
49 1.1.1.1.4.2 yamt
50 1.1.1.1.4.2 yamt static __inline vec_int4 spu_add(vec_int4 a, vec_int4 b)
51 1.1.1.1.4.2 yamt {
52 1.1.1.1.4.2 yamt return ((vec_int4)(si_a((qword)(a), (qword)(b))));
53 1.1.1.1.4.2 yamt }
54 1.1.1.1.4.2 yamt
55 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_add(vec_ushort8 a, vec_ushort8 b)
56 1.1.1.1.4.2 yamt {
57 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_ah((qword)(a), (qword)(b))));
58 1.1.1.1.4.2 yamt }
59 1.1.1.1.4.2 yamt
60 1.1.1.1.4.2 yamt static __inline vec_short8 spu_add(vec_short8 a, vec_short8 b)
61 1.1.1.1.4.2 yamt {
62 1.1.1.1.4.2 yamt return ((vec_short8)(si_ah((qword)(a), (qword)(b))));
63 1.1.1.1.4.2 yamt }
64 1.1.1.1.4.2 yamt
65 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_add(vec_uint4 a, unsigned int b)
66 1.1.1.1.4.2 yamt {
67 1.1.1.1.4.2 yamt return ((vec_uint4)(si_ai((qword)(a), (int)(b))));
68 1.1.1.1.4.2 yamt }
69 1.1.1.1.4.2 yamt
70 1.1.1.1.4.2 yamt static __inline vec_int4 spu_add(vec_int4 a, int b)
71 1.1.1.1.4.2 yamt {
72 1.1.1.1.4.2 yamt return ((vec_int4)(si_ai((qword)(a), b)));
73 1.1.1.1.4.2 yamt }
74 1.1.1.1.4.2 yamt
75 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_add(vec_ushort8 a, unsigned short b)
76 1.1.1.1.4.2 yamt {
77 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_ahi((qword)(a), (short)(b))));
78 1.1.1.1.4.2 yamt }
79 1.1.1.1.4.2 yamt
80 1.1.1.1.4.2 yamt static __inline vec_short8 spu_add(vec_short8 a, short b)
81 1.1.1.1.4.2 yamt {
82 1.1.1.1.4.2 yamt return ((vec_short8)(si_ahi((qword)(a), b)));
83 1.1.1.1.4.2 yamt }
84 1.1.1.1.4.2 yamt
85 1.1.1.1.4.2 yamt static __inline vec_float4 spu_add(vec_float4 a, vec_float4 b)
86 1.1.1.1.4.2 yamt {
87 1.1.1.1.4.2 yamt return ((vec_float4)(si_fa((qword)(a), (qword)(b))));
88 1.1.1.1.4.2 yamt }
89 1.1.1.1.4.2 yamt
90 1.1.1.1.4.2 yamt static __inline vec_double2 spu_add(vec_double2 a, vec_double2 b)
91 1.1.1.1.4.2 yamt {
92 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfa((qword)(a), (qword)(b))));
93 1.1.1.1.4.2 yamt }
94 1.1.1.1.4.2 yamt
95 1.1.1.1.4.2 yamt
96 1.1.1.1.4.2 yamt /* spu_addx
97 1.1.1.1.4.2 yamt * ========
98 1.1.1.1.4.2 yamt */
99 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_addx(vec_uint4 a, vec_uint4 b, vec_uint4 c)
100 1.1.1.1.4.2 yamt {
101 1.1.1.1.4.2 yamt return ((vec_uint4)(si_addx((qword)(a), (qword)(b), (qword)(c))));
102 1.1.1.1.4.2 yamt }
103 1.1.1.1.4.2 yamt
104 1.1.1.1.4.2 yamt static __inline vec_int4 spu_addx(vec_int4 a, vec_int4 b, vec_int4 c)
105 1.1.1.1.4.2 yamt {
106 1.1.1.1.4.2 yamt return ((vec_int4)(si_addx((qword)(a), (qword)(b), (qword)(c))));
107 1.1.1.1.4.2 yamt }
108 1.1.1.1.4.2 yamt
109 1.1.1.1.4.2 yamt
110 1.1.1.1.4.2 yamt /* spu_and
111 1.1.1.1.4.2 yamt * =======
112 1.1.1.1.4.2 yamt */
113 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_and(vec_uchar16 a, vec_uchar16 b)
114 1.1.1.1.4.2 yamt {
115 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_and((qword)(a), (qword)(b))));
116 1.1.1.1.4.2 yamt }
117 1.1.1.1.4.2 yamt
118 1.1.1.1.4.2 yamt static __inline vec_char16 spu_and(vec_char16 a, vec_char16 b)
119 1.1.1.1.4.2 yamt {
120 1.1.1.1.4.2 yamt return ((vec_char16)(si_and((qword)(a), (qword)(b))));
121 1.1.1.1.4.2 yamt }
122 1.1.1.1.4.2 yamt
123 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_and(vec_ushort8 a, vec_ushort8 b)
124 1.1.1.1.4.2 yamt {
125 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_and((qword)(a), (qword)(b))));
126 1.1.1.1.4.2 yamt }
127 1.1.1.1.4.2 yamt
128 1.1.1.1.4.2 yamt static __inline vec_short8 spu_and(vec_short8 a, vec_short8 b)
129 1.1.1.1.4.2 yamt {
130 1.1.1.1.4.2 yamt return ((vec_short8)(si_and((qword)(a), (qword)(b))));
131 1.1.1.1.4.2 yamt }
132 1.1.1.1.4.2 yamt
133 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_and(vec_uint4 a, vec_uint4 b)
134 1.1.1.1.4.2 yamt {
135 1.1.1.1.4.2 yamt return ((vec_uint4)(si_and((qword)(a), (qword)(b))));
136 1.1.1.1.4.2 yamt }
137 1.1.1.1.4.2 yamt
138 1.1.1.1.4.2 yamt static __inline vec_int4 spu_and(vec_int4 a, vec_int4 b)
139 1.1.1.1.4.2 yamt {
140 1.1.1.1.4.2 yamt return ((vec_int4)(si_and((qword)(a), (qword)(b))));
141 1.1.1.1.4.2 yamt }
142 1.1.1.1.4.2 yamt
143 1.1.1.1.4.2 yamt static __inline vec_float4 spu_and(vec_float4 a, vec_float4 b)
144 1.1.1.1.4.2 yamt {
145 1.1.1.1.4.2 yamt return ((vec_float4)(si_and((qword)(a), (qword)(b))));
146 1.1.1.1.4.2 yamt }
147 1.1.1.1.4.2 yamt
148 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_and(vec_ullong2 a, vec_ullong2 b)
149 1.1.1.1.4.2 yamt {
150 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_and((qword)(a), (qword)(b))));
151 1.1.1.1.4.2 yamt }
152 1.1.1.1.4.2 yamt
153 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_and(vec_llong2 a, vec_llong2 b)
154 1.1.1.1.4.2 yamt {
155 1.1.1.1.4.2 yamt return ((vec_llong2)(si_and((qword)(a), (qword)(b))));
156 1.1.1.1.4.2 yamt }
157 1.1.1.1.4.2 yamt
158 1.1.1.1.4.2 yamt static __inline vec_double2 spu_and(vec_double2 a, vec_double2 b)
159 1.1.1.1.4.2 yamt {
160 1.1.1.1.4.2 yamt return ((vec_double2)(si_and((qword)(a), (qword)(b))));
161 1.1.1.1.4.2 yamt }
162 1.1.1.1.4.2 yamt
163 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_and(vec_uchar16 a, unsigned char b)
164 1.1.1.1.4.2 yamt {
165 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_andbi((qword)(a), (signed char)(b))));
166 1.1.1.1.4.2 yamt }
167 1.1.1.1.4.2 yamt
168 1.1.1.1.4.2 yamt
169 1.1.1.1.4.2 yamt static __inline vec_char16 spu_and(vec_char16 a, signed char b)
170 1.1.1.1.4.2 yamt {
171 1.1.1.1.4.2 yamt return ((vec_char16)(si_andbi((qword)(a), b)));
172 1.1.1.1.4.2 yamt }
173 1.1.1.1.4.2 yamt
174 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_and(vec_ushort8 a, unsigned short b)
175 1.1.1.1.4.2 yamt {
176 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_andhi((qword)(a), (signed short)(b))));
177 1.1.1.1.4.2 yamt }
178 1.1.1.1.4.2 yamt
179 1.1.1.1.4.2 yamt static __inline vec_short8 spu_and(vec_short8 a, signed short b)
180 1.1.1.1.4.2 yamt {
181 1.1.1.1.4.2 yamt return ((vec_short8)(si_andhi((qword)(a), b)));
182 1.1.1.1.4.2 yamt }
183 1.1.1.1.4.2 yamt
184 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_and(vec_uint4 a, unsigned int b)
185 1.1.1.1.4.2 yamt {
186 1.1.1.1.4.2 yamt return ((vec_uint4)(si_andi((qword)(a), (signed int)(b))));
187 1.1.1.1.4.2 yamt }
188 1.1.1.1.4.2 yamt
189 1.1.1.1.4.2 yamt static __inline vec_int4 spu_and(vec_int4 a, signed int b)
190 1.1.1.1.4.2 yamt {
191 1.1.1.1.4.2 yamt return ((vec_int4)(si_andi((qword)(a), b)));
192 1.1.1.1.4.2 yamt }
193 1.1.1.1.4.2 yamt
194 1.1.1.1.4.2 yamt
195 1.1.1.1.4.2 yamt /* spu_andc
196 1.1.1.1.4.2 yamt * ========
197 1.1.1.1.4.2 yamt */
198 1.1.1.1.4.2 yamt #define spu_andc(_a, _b) vec_andc(_a, _b)
199 1.1.1.1.4.2 yamt
200 1.1.1.1.4.2 yamt
201 1.1.1.1.4.2 yamt /* spu_avg
202 1.1.1.1.4.2 yamt * =======
203 1.1.1.1.4.2 yamt */
204 1.1.1.1.4.2 yamt #define spu_avg(_a, _b) vec_avg(_a, _b)
205 1.1.1.1.4.2 yamt
206 1.1.1.1.4.2 yamt
207 1.1.1.1.4.2 yamt /* spu_bisled
208 1.1.1.1.4.2 yamt * spu_bisled_d
209 1.1.1.1.4.2 yamt * spu_bisled_e
210 1.1.1.1.4.2 yamt * ============
211 1.1.1.1.4.2 yamt */
212 1.1.1.1.4.2 yamt #define spu_bisled(_func) /* not mappable */
213 1.1.1.1.4.2 yamt #define spu_bisled_d(_func) /* not mappable */
214 1.1.1.1.4.2 yamt #define spu_bisled_e(_func) /* not mappable */
215 1.1.1.1.4.2 yamt
216 1.1.1.1.4.2 yamt /* spu_cmpabseq
217 1.1.1.1.4.2 yamt * ============
218 1.1.1.1.4.2 yamt */
219 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpabseq(vec_float4 a, vec_float4 b)
220 1.1.1.1.4.2 yamt {
221 1.1.1.1.4.2 yamt return ((vec_uint4)(si_fcmeq((qword)(a), (qword)(b))));
222 1.1.1.1.4.2 yamt
223 1.1.1.1.4.2 yamt }
224 1.1.1.1.4.2 yamt
225 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_cmpabseq(vec_double2 a, vec_double2 b)
226 1.1.1.1.4.2 yamt {
227 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_dfcmeq((qword)(a), (qword)(b))));
228 1.1.1.1.4.2 yamt }
229 1.1.1.1.4.2 yamt
230 1.1.1.1.4.2 yamt
231 1.1.1.1.4.2 yamt /* spu_cmpabsgt
232 1.1.1.1.4.2 yamt * ============
233 1.1.1.1.4.2 yamt */
234 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpabsgt(vec_float4 a, vec_float4 b)
235 1.1.1.1.4.2 yamt {
236 1.1.1.1.4.2 yamt return ((vec_uint4)(si_fcmgt((qword)(a), (qword)(b))));
237 1.1.1.1.4.2 yamt }
238 1.1.1.1.4.2 yamt
239 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_cmpabsgt(vec_double2 a, vec_double2 b)
240 1.1.1.1.4.2 yamt {
241 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_dfcmgt((qword)(a), (qword)(b))));
242 1.1.1.1.4.2 yamt }
243 1.1.1.1.4.2 yamt
244 1.1.1.1.4.2 yamt
245 1.1.1.1.4.2 yamt /* spu_cmpeq
246 1.1.1.1.4.2 yamt * ========
247 1.1.1.1.4.2 yamt */
248 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpeq(vec_uchar16 a, vec_uchar16 b)
249 1.1.1.1.4.2 yamt {
250 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_ceqb((qword)(a), (qword)(b))));
251 1.1.1.1.4.2 yamt }
252 1.1.1.1.4.2 yamt
253 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpeq(vec_char16 a, vec_char16 b)
254 1.1.1.1.4.2 yamt {
255 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_ceqb((qword)(a), (qword)(b))));
256 1.1.1.1.4.2 yamt }
257 1.1.1.1.4.2 yamt
258 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpeq(vec_ushort8 a, vec_ushort8 b)
259 1.1.1.1.4.2 yamt {
260 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_ceqh((qword)(a), (qword)(b))));
261 1.1.1.1.4.2 yamt }
262 1.1.1.1.4.2 yamt
263 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpeq(vec_short8 a, vec_short8 b)
264 1.1.1.1.4.2 yamt {
265 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_ceqh((qword)(a), (qword)(b))));
266 1.1.1.1.4.2 yamt }
267 1.1.1.1.4.2 yamt
268 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpeq(vec_uint4 a, vec_uint4 b)
269 1.1.1.1.4.2 yamt {
270 1.1.1.1.4.2 yamt return ((vec_uint4)(si_ceq((qword)(a), (qword)(b))));
271 1.1.1.1.4.2 yamt }
272 1.1.1.1.4.2 yamt
273 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpeq(vec_int4 a, vec_int4 b)
274 1.1.1.1.4.2 yamt {
275 1.1.1.1.4.2 yamt return ((vec_uint4)(si_ceq((qword)(a), (qword)(b))));
276 1.1.1.1.4.2 yamt }
277 1.1.1.1.4.2 yamt
278 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpeq(vec_float4 a, vec_float4 b)
279 1.1.1.1.4.2 yamt {
280 1.1.1.1.4.2 yamt return ((vec_uint4)(si_fceq((qword)(a), (qword)(b))));
281 1.1.1.1.4.2 yamt }
282 1.1.1.1.4.2 yamt
283 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpeq(vec_uchar16 a, unsigned char b)
284 1.1.1.1.4.2 yamt {
285 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_ceqbi((qword)(a), (signed char)(b))));
286 1.1.1.1.4.2 yamt }
287 1.1.1.1.4.2 yamt
288 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpeq(vec_char16 a, signed char b)
289 1.1.1.1.4.2 yamt {
290 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_ceqbi((qword)(a), b)));
291 1.1.1.1.4.2 yamt }
292 1.1.1.1.4.2 yamt
293 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpeq(vec_ushort8 a, unsigned short b)
294 1.1.1.1.4.2 yamt {
295 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_ceqhi((qword)(a), (signed short)(b))));
296 1.1.1.1.4.2 yamt }
297 1.1.1.1.4.2 yamt
298 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpeq(vec_short8 a, signed short b)
299 1.1.1.1.4.2 yamt {
300 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_ceqhi((qword)(a), b)));
301 1.1.1.1.4.2 yamt }
302 1.1.1.1.4.2 yamt
303 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpeq(vec_uint4 a, unsigned int b)
304 1.1.1.1.4.2 yamt {
305 1.1.1.1.4.2 yamt return ((vec_uint4)(si_ceqi((qword)(a), (signed int)(b))));
306 1.1.1.1.4.2 yamt }
307 1.1.1.1.4.2 yamt
308 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpeq(vec_int4 a, signed int b)
309 1.1.1.1.4.2 yamt {
310 1.1.1.1.4.2 yamt return ((vec_uint4)(si_ceqi((qword)(a), b)));
311 1.1.1.1.4.2 yamt }
312 1.1.1.1.4.2 yamt
313 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_cmpeq(vec_double2 a, vec_double2 b)
314 1.1.1.1.4.2 yamt {
315 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_dfceq((qword)(a), (qword)(b))));
316 1.1.1.1.4.2 yamt }
317 1.1.1.1.4.2 yamt
318 1.1.1.1.4.2 yamt
319 1.1.1.1.4.2 yamt /* spu_cmpgt
320 1.1.1.1.4.2 yamt * ========
321 1.1.1.1.4.2 yamt */
322 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpgt(vec_uchar16 a, vec_uchar16 b)
323 1.1.1.1.4.2 yamt {
324 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_clgtb((qword)(a), (qword)(b))));
325 1.1.1.1.4.2 yamt }
326 1.1.1.1.4.2 yamt
327 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpgt(vec_char16 a, vec_char16 b)
328 1.1.1.1.4.2 yamt {
329 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_cgtb((qword)(a), (qword)(b))));
330 1.1.1.1.4.2 yamt }
331 1.1.1.1.4.2 yamt
332 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpgt(vec_ushort8 a, vec_ushort8 b)
333 1.1.1.1.4.2 yamt {
334 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_clgth((qword)(a), (qword)(b))));
335 1.1.1.1.4.2 yamt }
336 1.1.1.1.4.2 yamt
337 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpgt(vec_short8 a, vec_short8 b)
338 1.1.1.1.4.2 yamt {
339 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_cgth((qword)(a), (qword)(b))));
340 1.1.1.1.4.2 yamt }
341 1.1.1.1.4.2 yamt
342 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpgt(vec_uint4 a, vec_uint4 b)
343 1.1.1.1.4.2 yamt {
344 1.1.1.1.4.2 yamt return ((vec_uint4)(si_clgt((qword)(a), (qword)(b))));
345 1.1.1.1.4.2 yamt }
346 1.1.1.1.4.2 yamt
347 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpgt(vec_int4 a, vec_int4 b)
348 1.1.1.1.4.2 yamt {
349 1.1.1.1.4.2 yamt return ((vec_uint4)(si_cgt((qword)(a), (qword)(b))));
350 1.1.1.1.4.2 yamt }
351 1.1.1.1.4.2 yamt
352 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpgt(vec_float4 a, vec_float4 b)
353 1.1.1.1.4.2 yamt {
354 1.1.1.1.4.2 yamt return ((vec_uint4)(si_fcgt((qword)(a), (qword)(b))));
355 1.1.1.1.4.2 yamt }
356 1.1.1.1.4.2 yamt
357 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpgt(vec_uchar16 a, unsigned char b)
358 1.1.1.1.4.2 yamt {
359 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_clgtbi((qword)(a), b)));
360 1.1.1.1.4.2 yamt }
361 1.1.1.1.4.2 yamt
362 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cmpgt(vec_char16 a, signed char b)
363 1.1.1.1.4.2 yamt {
364 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_cgtbi((qword)(a), b)));
365 1.1.1.1.4.2 yamt }
366 1.1.1.1.4.2 yamt
367 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpgt(vec_ushort8 a, unsigned short b)
368 1.1.1.1.4.2 yamt {
369 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_clgthi((qword)(a), b)));
370 1.1.1.1.4.2 yamt }
371 1.1.1.1.4.2 yamt
372 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_cmpgt(vec_short8 a, signed short b)
373 1.1.1.1.4.2 yamt {
374 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_cgthi((qword)(a), b)));
375 1.1.1.1.4.2 yamt }
376 1.1.1.1.4.2 yamt
377 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpgt(vec_uint4 a, unsigned int b)
378 1.1.1.1.4.2 yamt {
379 1.1.1.1.4.2 yamt return ((vec_uint4)(si_clgti((qword)(a), b)));
380 1.1.1.1.4.2 yamt }
381 1.1.1.1.4.2 yamt
382 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cmpgt(vec_int4 a, signed int b)
383 1.1.1.1.4.2 yamt {
384 1.1.1.1.4.2 yamt return ((vec_uint4)(si_cgti((qword)(a), b)));
385 1.1.1.1.4.2 yamt }
386 1.1.1.1.4.2 yamt
387 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_cmpgt(vec_double2 a, vec_double2 b)
388 1.1.1.1.4.2 yamt {
389 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_dfcgt((qword)(a), (qword)(b))));
390 1.1.1.1.4.2 yamt }
391 1.1.1.1.4.2 yamt
392 1.1.1.1.4.2 yamt
393 1.1.1.1.4.2 yamt /* spu_cntb
394 1.1.1.1.4.2 yamt * ========
395 1.1.1.1.4.2 yamt */
396 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cntb(vec_uchar16 a)
397 1.1.1.1.4.2 yamt {
398 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_cntb((qword)(a))));
399 1.1.1.1.4.2 yamt }
400 1.1.1.1.4.2 yamt
401 1.1.1.1.4.2 yamt
402 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_cntb(vec_char16 a)
403 1.1.1.1.4.2 yamt {
404 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_cntb((qword)(a))));
405 1.1.1.1.4.2 yamt }
406 1.1.1.1.4.2 yamt
407 1.1.1.1.4.2 yamt /* spu_cntlz
408 1.1.1.1.4.2 yamt * =========
409 1.1.1.1.4.2 yamt */
410 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cntlz(vec_uint4 a)
411 1.1.1.1.4.2 yamt {
412 1.1.1.1.4.2 yamt return ((vec_uint4)(si_clz((qword)(a))));
413 1.1.1.1.4.2 yamt }
414 1.1.1.1.4.2 yamt
415 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cntlz(vec_int4 a)
416 1.1.1.1.4.2 yamt {
417 1.1.1.1.4.2 yamt return ((vec_uint4)(si_clz((qword)(a))));
418 1.1.1.1.4.2 yamt }
419 1.1.1.1.4.2 yamt
420 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_cntlz(vec_float4 a)
421 1.1.1.1.4.2 yamt {
422 1.1.1.1.4.2 yamt return ((vec_uint4)(si_clz((qword)(a))));
423 1.1.1.1.4.2 yamt }
424 1.1.1.1.4.2 yamt
425 1.1.1.1.4.2 yamt /* spu_testsv
426 1.1.1.1.4.2 yamt * ==========
427 1.1.1.1.4.2 yamt */
428 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_testsv(vec_double2 a, char b)
429 1.1.1.1.4.2 yamt {
430 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_dftsv((qword)(a), b)));
431 1.1.1.1.4.2 yamt }
432 1.1.1.1.4.2 yamt
433 1.1.1.1.4.2 yamt /* spu_convtf
434 1.1.1.1.4.2 yamt * ==========
435 1.1.1.1.4.2 yamt */
436 1.1.1.1.4.2 yamt #define spu_convtf(_a, _b) (vec_ctf(_a, _b))
437 1.1.1.1.4.2 yamt
438 1.1.1.1.4.2 yamt /* spu_convts
439 1.1.1.1.4.2 yamt * ==========
440 1.1.1.1.4.2 yamt */
441 1.1.1.1.4.2 yamt #define spu_convts(_a, _b) (vec_cts(_a, _b))
442 1.1.1.1.4.2 yamt
443 1.1.1.1.4.2 yamt /* spu_convtu
444 1.1.1.1.4.2 yamt * ==========
445 1.1.1.1.4.2 yamt */
446 1.1.1.1.4.2 yamt #define spu_convtu(_a, _b) (vec_ctu(_a, _b))
447 1.1.1.1.4.2 yamt
448 1.1.1.1.4.2 yamt
449 1.1.1.1.4.2 yamt /* spu_dsync
450 1.1.1.1.4.2 yamt * ========
451 1.1.1.1.4.2 yamt */
452 1.1.1.1.4.2 yamt #define spu_dsync()
453 1.1.1.1.4.2 yamt
454 1.1.1.1.4.2 yamt /* spu_eqv
455 1.1.1.1.4.2 yamt * =======
456 1.1.1.1.4.2 yamt */
457 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_eqv(vec_uchar16 a, vec_uchar16 b)
458 1.1.1.1.4.2 yamt {
459 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_eqv((qword)(a), (qword)(b))));
460 1.1.1.1.4.2 yamt }
461 1.1.1.1.4.2 yamt
462 1.1.1.1.4.2 yamt static __inline vec_char16 spu_eqv(vec_char16 a, vec_char16 b)
463 1.1.1.1.4.2 yamt {
464 1.1.1.1.4.2 yamt return ((vec_char16)(si_eqv((qword)(a), (qword)(b))));
465 1.1.1.1.4.2 yamt }
466 1.1.1.1.4.2 yamt
467 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_eqv(vec_ushort8 a, vec_ushort8 b)
468 1.1.1.1.4.2 yamt {
469 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_eqv((qword)(a), (qword)(b))));
470 1.1.1.1.4.2 yamt }
471 1.1.1.1.4.2 yamt
472 1.1.1.1.4.2 yamt static __inline vec_short8 spu_eqv(vec_short8 a, vec_short8 b)
473 1.1.1.1.4.2 yamt {
474 1.1.1.1.4.2 yamt return ((vec_short8)(si_eqv((qword)(a), (qword)(b))));
475 1.1.1.1.4.2 yamt }
476 1.1.1.1.4.2 yamt
477 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_eqv(vec_uint4 a, vec_uint4 b)
478 1.1.1.1.4.2 yamt {
479 1.1.1.1.4.2 yamt return ((vec_uint4)(si_eqv((qword)(a), (qword)(b))));
480 1.1.1.1.4.2 yamt }
481 1.1.1.1.4.2 yamt
482 1.1.1.1.4.2 yamt static __inline vec_int4 spu_eqv(vec_int4 a, vec_int4 b)
483 1.1.1.1.4.2 yamt {
484 1.1.1.1.4.2 yamt return ((vec_int4)(si_eqv((qword)(a), (qword)(b))));
485 1.1.1.1.4.2 yamt }
486 1.1.1.1.4.2 yamt
487 1.1.1.1.4.2 yamt static __inline vec_float4 spu_eqv(vec_float4 a, vec_float4 b)
488 1.1.1.1.4.2 yamt {
489 1.1.1.1.4.2 yamt return ((vec_float4)(si_eqv((qword)(a), (qword)(b))));
490 1.1.1.1.4.2 yamt }
491 1.1.1.1.4.2 yamt
492 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_eqv(vec_ullong2 a, vec_ullong2 b)
493 1.1.1.1.4.2 yamt {
494 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_eqv((qword)(a), (qword)(b))));
495 1.1.1.1.4.2 yamt }
496 1.1.1.1.4.2 yamt
497 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_eqv(vec_llong2 a, vec_llong2 b)
498 1.1.1.1.4.2 yamt {
499 1.1.1.1.4.2 yamt return ((vec_llong2)(si_eqv((qword)(a), (qword)(b))));
500 1.1.1.1.4.2 yamt }
501 1.1.1.1.4.2 yamt
502 1.1.1.1.4.2 yamt static __inline vec_double2 spu_eqv(vec_double2 a, vec_double2 b)
503 1.1.1.1.4.2 yamt {
504 1.1.1.1.4.2 yamt return ((vec_double2)(si_eqv((qword)(a), (qword)(b))));
505 1.1.1.1.4.2 yamt }
506 1.1.1.1.4.2 yamt
507 1.1.1.1.4.2 yamt /* spu_extend
508 1.1.1.1.4.2 yamt * ========
509 1.1.1.1.4.2 yamt */
510 1.1.1.1.4.2 yamt static __inline vec_short8 spu_extend(vec_char16 a)
511 1.1.1.1.4.2 yamt {
512 1.1.1.1.4.2 yamt return ((vec_short8)(si_xsbh((qword)(a))));
513 1.1.1.1.4.2 yamt }
514 1.1.1.1.4.2 yamt
515 1.1.1.1.4.2 yamt
516 1.1.1.1.4.2 yamt static __inline vec_int4 spu_extend(vec_short8 a)
517 1.1.1.1.4.2 yamt {
518 1.1.1.1.4.2 yamt return ((vec_int4)(si_xshw((qword)(a))));
519 1.1.1.1.4.2 yamt }
520 1.1.1.1.4.2 yamt
521 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_extend(vec_int4 a)
522 1.1.1.1.4.2 yamt {
523 1.1.1.1.4.2 yamt return ((vec_llong2)(si_xswd((qword)(a))));
524 1.1.1.1.4.2 yamt }
525 1.1.1.1.4.2 yamt
526 1.1.1.1.4.2 yamt
527 1.1.1.1.4.2 yamt static __inline vec_double2 spu_extend(vec_float4 a)
528 1.1.1.1.4.2 yamt {
529 1.1.1.1.4.2 yamt return ((vec_double2)(si_fesd((qword)(a))));
530 1.1.1.1.4.2 yamt }
531 1.1.1.1.4.2 yamt
532 1.1.1.1.4.2 yamt
533 1.1.1.1.4.2 yamt /* spu_extract
534 1.1.1.1.4.2 yamt * ========
535 1.1.1.1.4.2 yamt */
536 1.1.1.1.4.2 yamt static __inline unsigned char spu_extract(vec_uchar16 a, int element)
537 1.1.1.1.4.2 yamt {
538 1.1.1.1.4.2 yamt union {
539 1.1.1.1.4.2 yamt vec_uchar16 v;
540 1.1.1.1.4.2 yamt unsigned char c[16];
541 1.1.1.1.4.2 yamt } in;
542 1.1.1.1.4.2 yamt
543 1.1.1.1.4.2 yamt in.v = a;
544 1.1.1.1.4.2 yamt return (in.c[element & 15]);
545 1.1.1.1.4.2 yamt }
546 1.1.1.1.4.2 yamt
547 1.1.1.1.4.2 yamt static __inline signed char spu_extract(vec_char16 a, int element)
548 1.1.1.1.4.2 yamt {
549 1.1.1.1.4.2 yamt union {
550 1.1.1.1.4.2 yamt vec_char16 v;
551 1.1.1.1.4.2 yamt signed char c[16];
552 1.1.1.1.4.2 yamt } in;
553 1.1.1.1.4.2 yamt
554 1.1.1.1.4.2 yamt in.v = a;
555 1.1.1.1.4.2 yamt return (in.c[element & 15]);
556 1.1.1.1.4.2 yamt }
557 1.1.1.1.4.2 yamt
558 1.1.1.1.4.2 yamt static __inline unsigned short spu_extract(vec_ushort8 a, int element)
559 1.1.1.1.4.2 yamt {
560 1.1.1.1.4.2 yamt union {
561 1.1.1.1.4.2 yamt vec_ushort8 v;
562 1.1.1.1.4.2 yamt unsigned short s[8];
563 1.1.1.1.4.2 yamt } in;
564 1.1.1.1.4.2 yamt
565 1.1.1.1.4.2 yamt in.v = a;
566 1.1.1.1.4.2 yamt return (in.s[element & 7]);
567 1.1.1.1.4.2 yamt }
568 1.1.1.1.4.2 yamt
569 1.1.1.1.4.2 yamt static __inline signed short spu_extract(vec_short8 a, int element)
570 1.1.1.1.4.2 yamt {
571 1.1.1.1.4.2 yamt union {
572 1.1.1.1.4.2 yamt vec_short8 v;
573 1.1.1.1.4.2 yamt signed short s[8];
574 1.1.1.1.4.2 yamt } in;
575 1.1.1.1.4.2 yamt
576 1.1.1.1.4.2 yamt in.v = a;
577 1.1.1.1.4.2 yamt return (in.s[element & 7]);
578 1.1.1.1.4.2 yamt }
579 1.1.1.1.4.2 yamt
580 1.1.1.1.4.2 yamt static __inline unsigned int spu_extract(vec_uint4 a, int element)
581 1.1.1.1.4.2 yamt {
582 1.1.1.1.4.2 yamt union {
583 1.1.1.1.4.2 yamt vec_uint4 v;
584 1.1.1.1.4.2 yamt unsigned int i[4];
585 1.1.1.1.4.2 yamt } in;
586 1.1.1.1.4.2 yamt
587 1.1.1.1.4.2 yamt in.v = a;
588 1.1.1.1.4.2 yamt return (in.i[element & 3]);
589 1.1.1.1.4.2 yamt }
590 1.1.1.1.4.2 yamt
591 1.1.1.1.4.2 yamt static __inline signed int spu_extract(vec_int4 a, int element)
592 1.1.1.1.4.2 yamt {
593 1.1.1.1.4.2 yamt union {
594 1.1.1.1.4.2 yamt vec_int4 v;
595 1.1.1.1.4.2 yamt signed int i[4];
596 1.1.1.1.4.2 yamt } in;
597 1.1.1.1.4.2 yamt
598 1.1.1.1.4.2 yamt in.v = a;
599 1.1.1.1.4.2 yamt return (in.i[element & 3]);
600 1.1.1.1.4.2 yamt }
601 1.1.1.1.4.2 yamt
602 1.1.1.1.4.2 yamt static __inline float spu_extract(vec_float4 a, int element)
603 1.1.1.1.4.2 yamt {
604 1.1.1.1.4.2 yamt union {
605 1.1.1.1.4.2 yamt vec_float4 v;
606 1.1.1.1.4.2 yamt float f[4];
607 1.1.1.1.4.2 yamt } in;
608 1.1.1.1.4.2 yamt
609 1.1.1.1.4.2 yamt in.v = a;
610 1.1.1.1.4.2 yamt return (in.f[element & 3]);
611 1.1.1.1.4.2 yamt }
612 1.1.1.1.4.2 yamt
613 1.1.1.1.4.2 yamt static __inline unsigned long long spu_extract(vec_ullong2 a, int element)
614 1.1.1.1.4.2 yamt {
615 1.1.1.1.4.2 yamt union {
616 1.1.1.1.4.2 yamt vec_ullong2 v;
617 1.1.1.1.4.2 yamt unsigned long long l[2];
618 1.1.1.1.4.2 yamt } in;
619 1.1.1.1.4.2 yamt
620 1.1.1.1.4.2 yamt in.v = a;
621 1.1.1.1.4.2 yamt return (in.l[element & 1]);
622 1.1.1.1.4.2 yamt }
623 1.1.1.1.4.2 yamt
624 1.1.1.1.4.2 yamt static __inline signed long long spu_extract(vec_llong2 a, int element)
625 1.1.1.1.4.2 yamt {
626 1.1.1.1.4.2 yamt union {
627 1.1.1.1.4.2 yamt vec_llong2 v;
628 1.1.1.1.4.2 yamt signed long long l[2];
629 1.1.1.1.4.2 yamt } in;
630 1.1.1.1.4.2 yamt
631 1.1.1.1.4.2 yamt in.v = a;
632 1.1.1.1.4.2 yamt return (in.l[element & 1]);
633 1.1.1.1.4.2 yamt }
634 1.1.1.1.4.2 yamt
635 1.1.1.1.4.2 yamt static __inline double spu_extract(vec_double2 a, int element)
636 1.1.1.1.4.2 yamt {
637 1.1.1.1.4.2 yamt union {
638 1.1.1.1.4.2 yamt vec_double2 v;
639 1.1.1.1.4.2 yamt double d[2];
640 1.1.1.1.4.2 yamt } in;
641 1.1.1.1.4.2 yamt
642 1.1.1.1.4.2 yamt in.v = a;
643 1.1.1.1.4.2 yamt return (in.d[element & 1]);
644 1.1.1.1.4.2 yamt }
645 1.1.1.1.4.2 yamt
646 1.1.1.1.4.2 yamt /* spu_gather
647 1.1.1.1.4.2 yamt * ========
648 1.1.1.1.4.2 yamt */
649 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_uchar16 a)
650 1.1.1.1.4.2 yamt {
651 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gbb((qword)(a))));
652 1.1.1.1.4.2 yamt }
653 1.1.1.1.4.2 yamt
654 1.1.1.1.4.2 yamt
655 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_char16 a)
656 1.1.1.1.4.2 yamt {
657 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gbb((qword)(a))));
658 1.1.1.1.4.2 yamt }
659 1.1.1.1.4.2 yamt
660 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_ushort8 a)
661 1.1.1.1.4.2 yamt {
662 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gbh((qword)(a))));
663 1.1.1.1.4.2 yamt }
664 1.1.1.1.4.2 yamt
665 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_short8 a)
666 1.1.1.1.4.2 yamt {
667 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gbh((qword)(a))));
668 1.1.1.1.4.2 yamt }
669 1.1.1.1.4.2 yamt
670 1.1.1.1.4.2 yamt
671 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_uint4 a)
672 1.1.1.1.4.2 yamt {
673 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gb((qword)(a))));
674 1.1.1.1.4.2 yamt }
675 1.1.1.1.4.2 yamt
676 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_int4 a)
677 1.1.1.1.4.2 yamt {
678 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gb((qword)(a))));
679 1.1.1.1.4.2 yamt }
680 1.1.1.1.4.2 yamt
681 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gather(vec_float4 a)
682 1.1.1.1.4.2 yamt {
683 1.1.1.1.4.2 yamt return ((vec_uint4)(si_gb((qword)(a))));
684 1.1.1.1.4.2 yamt }
685 1.1.1.1.4.2 yamt
686 1.1.1.1.4.2 yamt /* spu_genb
687 1.1.1.1.4.2 yamt * ========
688 1.1.1.1.4.2 yamt */
689 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_genb(vec_uint4 a, vec_uint4 b)
690 1.1.1.1.4.2 yamt {
691 1.1.1.1.4.2 yamt return ((vec_uint4)(si_bg((qword)(b), (qword)(a))));
692 1.1.1.1.4.2 yamt }
693 1.1.1.1.4.2 yamt
694 1.1.1.1.4.2 yamt static __inline vec_int4 spu_genb(vec_int4 a, vec_int4 b)
695 1.1.1.1.4.2 yamt {
696 1.1.1.1.4.2 yamt return ((vec_int4)(si_bg((qword)(b), (qword)(a))));
697 1.1.1.1.4.2 yamt }
698 1.1.1.1.4.2 yamt
699 1.1.1.1.4.2 yamt /* spu_genbx
700 1.1.1.1.4.2 yamt * =========
701 1.1.1.1.4.2 yamt */
702 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_genbx(vec_uint4 a, vec_uint4 b, vec_uint4 c)
703 1.1.1.1.4.2 yamt {
704 1.1.1.1.4.2 yamt return ((vec_uint4)(si_bgx((qword)(b), (qword)(a), (qword)(c))));
705 1.1.1.1.4.2 yamt }
706 1.1.1.1.4.2 yamt
707 1.1.1.1.4.2 yamt static __inline vec_int4 spu_genbx(vec_int4 a, vec_int4 b, vec_int4 c)
708 1.1.1.1.4.2 yamt {
709 1.1.1.1.4.2 yamt return ((vec_int4)(si_bgx((qword)(b), (qword)(a), (qword)(c))));
710 1.1.1.1.4.2 yamt }
711 1.1.1.1.4.2 yamt
712 1.1.1.1.4.2 yamt
713 1.1.1.1.4.2 yamt /* spu_genc
714 1.1.1.1.4.2 yamt * ========
715 1.1.1.1.4.2 yamt */
716 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_genc(vec_uint4 a, vec_uint4 b)
717 1.1.1.1.4.2 yamt {
718 1.1.1.1.4.2 yamt return ((vec_uint4)(si_cg((qword)(a), (qword)(b))));
719 1.1.1.1.4.2 yamt }
720 1.1.1.1.4.2 yamt
721 1.1.1.1.4.2 yamt static __inline vec_int4 spu_genc(vec_int4 a, vec_int4 b)
722 1.1.1.1.4.2 yamt {
723 1.1.1.1.4.2 yamt return ((vec_int4)(si_cg((qword)(a), (qword)(b))));
724 1.1.1.1.4.2 yamt }
725 1.1.1.1.4.2 yamt
726 1.1.1.1.4.2 yamt /* spu_gencx
727 1.1.1.1.4.2 yamt * =========
728 1.1.1.1.4.2 yamt */
729 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_gencx(vec_uint4 a, vec_uint4 b, vec_uint4 c)
730 1.1.1.1.4.2 yamt {
731 1.1.1.1.4.2 yamt return ((vec_uint4)(si_cgx((qword)(a), (qword)(b), (qword)(c))));
732 1.1.1.1.4.2 yamt }
733 1.1.1.1.4.2 yamt
734 1.1.1.1.4.2 yamt static __inline vec_int4 spu_gencx(vec_int4 a, vec_int4 b, vec_int4 c)
735 1.1.1.1.4.2 yamt {
736 1.1.1.1.4.2 yamt return ((vec_int4)(si_cgx((qword)(a), (qword)(b), (qword)(c))));
737 1.1.1.1.4.2 yamt }
738 1.1.1.1.4.2 yamt
739 1.1.1.1.4.2 yamt
740 1.1.1.1.4.2 yamt /* spu_hcmpeq
741 1.1.1.1.4.2 yamt * ========
742 1.1.1.1.4.2 yamt */
743 1.1.1.1.4.2 yamt #define spu_hcmpeq(_a, _b) if (_a == _b) { SPU_HALT_ACTION; };
744 1.1.1.1.4.2 yamt
745 1.1.1.1.4.2 yamt
746 1.1.1.1.4.2 yamt /* spu_hcmpgt
747 1.1.1.1.4.2 yamt * ========
748 1.1.1.1.4.2 yamt */
749 1.1.1.1.4.2 yamt #define spu_hcmpgt(_a, _b) if (_a > _b) { SPU_HALT_ACTION; };
750 1.1.1.1.4.2 yamt
751 1.1.1.1.4.2 yamt
752 1.1.1.1.4.2 yamt /* spu_idisable
753 1.1.1.1.4.2 yamt * ============
754 1.1.1.1.4.2 yamt */
755 1.1.1.1.4.2 yamt #define spu_idisable() SPU_UNSUPPORTED_ACTION
756 1.1.1.1.4.2 yamt
757 1.1.1.1.4.2 yamt
758 1.1.1.1.4.2 yamt /* spu_ienable
759 1.1.1.1.4.2 yamt * ===========
760 1.1.1.1.4.2 yamt */
761 1.1.1.1.4.2 yamt #define spu_ienable() SPU_UNSUPPORTED_ACTION
762 1.1.1.1.4.2 yamt
763 1.1.1.1.4.2 yamt
764 1.1.1.1.4.2 yamt /* spu_insert
765 1.1.1.1.4.2 yamt * ========
766 1.1.1.1.4.2 yamt */
767 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_insert(unsigned char a, vec_uchar16 b, int element)
768 1.1.1.1.4.2 yamt {
769 1.1.1.1.4.2 yamt union {
770 1.1.1.1.4.2 yamt vec_uchar16 v;
771 1.1.1.1.4.2 yamt unsigned char c[16];
772 1.1.1.1.4.2 yamt } in;
773 1.1.1.1.4.2 yamt
774 1.1.1.1.4.2 yamt in.v = b;
775 1.1.1.1.4.2 yamt in.c[element & 15] = a;
776 1.1.1.1.4.2 yamt return (in.v);
777 1.1.1.1.4.2 yamt }
778 1.1.1.1.4.2 yamt
779 1.1.1.1.4.2 yamt static __inline vec_char16 spu_insert(signed char a, vec_char16 b, int element)
780 1.1.1.1.4.2 yamt {
781 1.1.1.1.4.2 yamt return ((vec_char16)spu_insert((unsigned char)(a), (vec_uchar16)(b), element));
782 1.1.1.1.4.2 yamt }
783 1.1.1.1.4.2 yamt
784 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_insert(unsigned short a, vec_ushort8 b, int element)
785 1.1.1.1.4.2 yamt {
786 1.1.1.1.4.2 yamt union {
787 1.1.1.1.4.2 yamt vec_ushort8 v;
788 1.1.1.1.4.2 yamt unsigned short s[8];
789 1.1.1.1.4.2 yamt } in;
790 1.1.1.1.4.2 yamt
791 1.1.1.1.4.2 yamt in.v = b;
792 1.1.1.1.4.2 yamt in.s[element & 7] = a;
793 1.1.1.1.4.2 yamt return (in.v);
794 1.1.1.1.4.2 yamt }
795 1.1.1.1.4.2 yamt
796 1.1.1.1.4.2 yamt static __inline vec_short8 spu_insert(signed short a, vec_short8 b, int element)
797 1.1.1.1.4.2 yamt {
798 1.1.1.1.4.2 yamt return ((vec_short8)spu_insert((unsigned short)(a), (vec_ushort8)(b), element));
799 1.1.1.1.4.2 yamt }
800 1.1.1.1.4.2 yamt
801 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_insert(unsigned int a, vec_uint4 b, int element)
802 1.1.1.1.4.2 yamt {
803 1.1.1.1.4.2 yamt union {
804 1.1.1.1.4.2 yamt vec_uint4 v;
805 1.1.1.1.4.2 yamt unsigned int i[4];
806 1.1.1.1.4.2 yamt } in;
807 1.1.1.1.4.2 yamt
808 1.1.1.1.4.2 yamt in.v = b;
809 1.1.1.1.4.2 yamt in.i[element & 3] = a;
810 1.1.1.1.4.2 yamt return (in.v);
811 1.1.1.1.4.2 yamt }
812 1.1.1.1.4.2 yamt
813 1.1.1.1.4.2 yamt static __inline vec_int4 spu_insert(signed int a, vec_int4 b, int element)
814 1.1.1.1.4.2 yamt {
815 1.1.1.1.4.2 yamt return ((vec_int4)spu_insert((unsigned int)(a), (vec_uint4)(b), element));
816 1.1.1.1.4.2 yamt }
817 1.1.1.1.4.2 yamt
818 1.1.1.1.4.2 yamt static __inline vec_float4 spu_insert(float a, vec_float4 b, int element)
819 1.1.1.1.4.2 yamt {
820 1.1.1.1.4.2 yamt union {
821 1.1.1.1.4.2 yamt vec_float4 v;
822 1.1.1.1.4.2 yamt float f[4];
823 1.1.1.1.4.2 yamt } in;
824 1.1.1.1.4.2 yamt
825 1.1.1.1.4.2 yamt in.v = b;
826 1.1.1.1.4.2 yamt in.f[element & 3] = a;
827 1.1.1.1.4.2 yamt return (in.v);
828 1.1.1.1.4.2 yamt }
829 1.1.1.1.4.2 yamt
830 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_insert(unsigned long long a, vec_ullong2 b, int element)
831 1.1.1.1.4.2 yamt {
832 1.1.1.1.4.2 yamt union {
833 1.1.1.1.4.2 yamt vec_ullong2 v;
834 1.1.1.1.4.2 yamt unsigned long long l[2];
835 1.1.1.1.4.2 yamt } in;
836 1.1.1.1.4.2 yamt
837 1.1.1.1.4.2 yamt in.v = b;
838 1.1.1.1.4.2 yamt in.l[element & 1] = a;
839 1.1.1.1.4.2 yamt return (in.v);
840 1.1.1.1.4.2 yamt }
841 1.1.1.1.4.2 yamt
842 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_insert(signed long long a, vec_llong2 b, int element)
843 1.1.1.1.4.2 yamt {
844 1.1.1.1.4.2 yamt return ((vec_llong2)spu_insert((unsigned long long)(a), (vec_ullong2)(b), element));
845 1.1.1.1.4.2 yamt }
846 1.1.1.1.4.2 yamt
847 1.1.1.1.4.2 yamt static __inline vec_double2 spu_insert(double a, vec_double2 b, int element)
848 1.1.1.1.4.2 yamt {
849 1.1.1.1.4.2 yamt union {
850 1.1.1.1.4.2 yamt vec_double2 v;
851 1.1.1.1.4.2 yamt double d[2];
852 1.1.1.1.4.2 yamt } in;
853 1.1.1.1.4.2 yamt
854 1.1.1.1.4.2 yamt in.v = b;
855 1.1.1.1.4.2 yamt in.d[element & 1] = a;
856 1.1.1.1.4.2 yamt return (in.v);
857 1.1.1.1.4.2 yamt }
858 1.1.1.1.4.2 yamt
859 1.1.1.1.4.2 yamt
860 1.1.1.1.4.2 yamt /* spu_madd
861 1.1.1.1.4.2 yamt * ========
862 1.1.1.1.4.2 yamt */
863 1.1.1.1.4.2 yamt static __inline vec_int4 spu_madd(vec_short8 a, vec_short8 b, vec_int4 c)
864 1.1.1.1.4.2 yamt {
865 1.1.1.1.4.2 yamt return ((vec_int4)(si_mpya((qword)(a), (qword)(b), (qword)(c))));
866 1.1.1.1.4.2 yamt }
867 1.1.1.1.4.2 yamt
868 1.1.1.1.4.2 yamt static __inline vec_float4 spu_madd(vec_float4 a, vec_float4 b, vec_float4 c)
869 1.1.1.1.4.2 yamt {
870 1.1.1.1.4.2 yamt return ((vec_float4)(si_fma((qword)(a), (qword)(b), (qword)(c))));
871 1.1.1.1.4.2 yamt }
872 1.1.1.1.4.2 yamt
873 1.1.1.1.4.2 yamt static __inline vec_double2 spu_madd(vec_double2 a, vec_double2 b, vec_double2 c)
874 1.1.1.1.4.2 yamt {
875 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfma((qword)(a), (qword)(b), (qword)(c))));
876 1.1.1.1.4.2 yamt }
877 1.1.1.1.4.2 yamt
878 1.1.1.1.4.2 yamt
879 1.1.1.1.4.2 yamt /* spu_maskb
880 1.1.1.1.4.2 yamt * ========
881 1.1.1.1.4.2 yamt */
882 1.1.1.1.4.2 yamt #define spu_maskb(_a) (vec_uchar16)(si_fsmb(si_from_int((int)(_a))))
883 1.1.1.1.4.2 yamt
884 1.1.1.1.4.2 yamt /* spu_maskh
885 1.1.1.1.4.2 yamt * ========
886 1.1.1.1.4.2 yamt */
887 1.1.1.1.4.2 yamt #define spu_maskh(_a) (vec_ushort8)(si_fsmh(si_from_int((int)(_a))))
888 1.1.1.1.4.2 yamt
889 1.1.1.1.4.2 yamt
890 1.1.1.1.4.2 yamt /* spu_maskw
891 1.1.1.1.4.2 yamt * ========
892 1.1.1.1.4.2 yamt */
893 1.1.1.1.4.2 yamt #define spu_maskw(_a) (vec_uint4)(si_fsm(si_from_int((int)(_a))))
894 1.1.1.1.4.2 yamt
895 1.1.1.1.4.2 yamt
896 1.1.1.1.4.2 yamt /* spu_mfcdma32
897 1.1.1.1.4.2 yamt * ========
898 1.1.1.1.4.2 yamt */
899 1.1.1.1.4.2 yamt #define spu_mfcdma32(_ls, _ea, _size, _tagid, _cmd)
900 1.1.1.1.4.2 yamt
901 1.1.1.1.4.2 yamt
902 1.1.1.1.4.2 yamt /* spu_mfcdma64
903 1.1.1.1.4.2 yamt * ========
904 1.1.1.1.4.2 yamt */
905 1.1.1.1.4.2 yamt #define spu_mfcdma64(_ls, _eahi, _ealow, _size, _tagid, _cmd)
906 1.1.1.1.4.2 yamt
907 1.1.1.1.4.2 yamt /* spu_mfcstat
908 1.1.1.1.4.2 yamt * ========
909 1.1.1.1.4.2 yamt */
910 1.1.1.1.4.2 yamt #define spu_mfcstat(_type) 0xFFFFFFFF
911 1.1.1.1.4.2 yamt
912 1.1.1.1.4.2 yamt
913 1.1.1.1.4.2 yamt
914 1.1.1.1.4.2 yamt /* spu_mffpscr
915 1.1.1.1.4.2 yamt * ===========
916 1.1.1.1.4.2 yamt */
917 1.1.1.1.4.2 yamt #define spu_mffpscr() (vec_uint4)(si_fscrrd())
918 1.1.1.1.4.2 yamt
919 1.1.1.1.4.2 yamt
920 1.1.1.1.4.2 yamt /* spu_mfspr
921 1.1.1.1.4.2 yamt * ========
922 1.1.1.1.4.2 yamt */
923 1.1.1.1.4.2 yamt
924 1.1.1.1.4.2 yamt #define spu_mfspr(_reg) si_to_uint(si_mfspr(_reg))
925 1.1.1.1.4.2 yamt
926 1.1.1.1.4.2 yamt
927 1.1.1.1.4.2 yamt
928 1.1.1.1.4.2 yamt /* spu_mhhadd
929 1.1.1.1.4.2 yamt * ==========
930 1.1.1.1.4.2 yamt */
931 1.1.1.1.4.2 yamt static __inline vec_int4 spu_mhhadd(vec_short8 a, vec_short8 b, vec_int4 c)
932 1.1.1.1.4.2 yamt {
933 1.1.1.1.4.2 yamt return ((vec_int4)(si_mpyhha((qword)(a), (qword)(b), (qword)(c))));
934 1.1.1.1.4.2 yamt }
935 1.1.1.1.4.2 yamt
936 1.1.1.1.4.2 yamt
937 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_mhhadd(vec_ushort8 a, vec_ushort8 b, vec_uint4 c)
938 1.1.1.1.4.2 yamt {
939 1.1.1.1.4.2 yamt return ((vec_uint4)(si_mpyhhau((qword)(a), (qword)(b), (qword)(c))));
940 1.1.1.1.4.2 yamt }
941 1.1.1.1.4.2 yamt
942 1.1.1.1.4.2 yamt
943 1.1.1.1.4.2 yamt /* spu_msub
944 1.1.1.1.4.2 yamt * ========
945 1.1.1.1.4.2 yamt */
946 1.1.1.1.4.2 yamt static __inline vec_float4 spu_msub(vec_float4 a, vec_float4 b, vec_float4 c)
947 1.1.1.1.4.2 yamt {
948 1.1.1.1.4.2 yamt return ((vec_float4)(si_fms((qword)(a), (qword)(b), (qword)(c))));
949 1.1.1.1.4.2 yamt }
950 1.1.1.1.4.2 yamt
951 1.1.1.1.4.2 yamt static __inline vec_double2 spu_msub(vec_double2 a, vec_double2 b, vec_double2 c)
952 1.1.1.1.4.2 yamt {
953 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfms((qword)(a), (qword)(b), (qword)(c))));
954 1.1.1.1.4.2 yamt }
955 1.1.1.1.4.2 yamt
956 1.1.1.1.4.2 yamt
957 1.1.1.1.4.2 yamt /* spu_mtfpscr
958 1.1.1.1.4.2 yamt * ===========
959 1.1.1.1.4.2 yamt */
960 1.1.1.1.4.2 yamt #define spu_mtfpscr(_a)
961 1.1.1.1.4.2 yamt
962 1.1.1.1.4.2 yamt
963 1.1.1.1.4.2 yamt /* spu_mtspr
964 1.1.1.1.4.2 yamt * ========
965 1.1.1.1.4.2 yamt */
966 1.1.1.1.4.2 yamt #define spu_mtspr(_reg, _a)
967 1.1.1.1.4.2 yamt
968 1.1.1.1.4.2 yamt
969 1.1.1.1.4.2 yamt /* spu_mul
970 1.1.1.1.4.2 yamt * ========
971 1.1.1.1.4.2 yamt */
972 1.1.1.1.4.2 yamt static __inline vec_float4 spu_mul(vec_float4 a, vec_float4 b)
973 1.1.1.1.4.2 yamt {
974 1.1.1.1.4.2 yamt return ((vec_float4)(si_fm((qword)(a), (qword)(b))));
975 1.1.1.1.4.2 yamt }
976 1.1.1.1.4.2 yamt
977 1.1.1.1.4.2 yamt static __inline vec_double2 spu_mul(vec_double2 a, vec_double2 b)
978 1.1.1.1.4.2 yamt {
979 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfm((qword)(a), (qword)(b))));
980 1.1.1.1.4.2 yamt }
981 1.1.1.1.4.2 yamt
982 1.1.1.1.4.2 yamt
983 1.1.1.1.4.2 yamt /* spu_mulh
984 1.1.1.1.4.2 yamt * ========
985 1.1.1.1.4.2 yamt */
986 1.1.1.1.4.2 yamt static __inline vec_int4 spu_mulh(vec_short8 a, vec_short8 b)
987 1.1.1.1.4.2 yamt {
988 1.1.1.1.4.2 yamt return ((vec_int4)(si_mpyh((qword)(a), (qword)(b))));
989 1.1.1.1.4.2 yamt }
990 1.1.1.1.4.2 yamt
991 1.1.1.1.4.2 yamt /* spu_mule
992 1.1.1.1.4.2 yamt * =========
993 1.1.1.1.4.2 yamt */
994 1.1.1.1.4.2 yamt #define spu_mule(_a, _b) vec_mule(_a, _b)
995 1.1.1.1.4.2 yamt
996 1.1.1.1.4.2 yamt
997 1.1.1.1.4.2 yamt
998 1.1.1.1.4.2 yamt /* spu_mulo
999 1.1.1.1.4.2 yamt * ========
1000 1.1.1.1.4.2 yamt */
1001 1.1.1.1.4.2 yamt static __inline vec_int4 spu_mulo(vec_short8 a, vec_short8 b)
1002 1.1.1.1.4.2 yamt {
1003 1.1.1.1.4.2 yamt return ((vec_int4)(si_mpy((qword)(a), (qword)(b))));
1004 1.1.1.1.4.2 yamt }
1005 1.1.1.1.4.2 yamt
1006 1.1.1.1.4.2 yamt
1007 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_mulo(vec_ushort8 a, vec_ushort8 b)
1008 1.1.1.1.4.2 yamt {
1009 1.1.1.1.4.2 yamt return ((vec_uint4)(si_mpyu((qword)(a), (qword)(b))));
1010 1.1.1.1.4.2 yamt }
1011 1.1.1.1.4.2 yamt
1012 1.1.1.1.4.2 yamt
1013 1.1.1.1.4.2 yamt static __inline vec_int4 spu_mulo(vec_short8 a, short b)
1014 1.1.1.1.4.2 yamt {
1015 1.1.1.1.4.2 yamt return ((vec_int4)(si_mpyi((qword)(a), b)));
1016 1.1.1.1.4.2 yamt }
1017 1.1.1.1.4.2 yamt
1018 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_mulo(vec_ushort8 a, unsigned short b)
1019 1.1.1.1.4.2 yamt {
1020 1.1.1.1.4.2 yamt return ((vec_uint4)(si_mpyui((qword)(a), b)));
1021 1.1.1.1.4.2 yamt }
1022 1.1.1.1.4.2 yamt
1023 1.1.1.1.4.2 yamt
1024 1.1.1.1.4.2 yamt /* spu_mulsr
1025 1.1.1.1.4.2 yamt * =========
1026 1.1.1.1.4.2 yamt */
1027 1.1.1.1.4.2 yamt static __inline vec_int4 spu_mulsr(vec_short8 a, vec_short8 b)
1028 1.1.1.1.4.2 yamt {
1029 1.1.1.1.4.2 yamt return ((vec_int4)(si_mpys((qword)(a), (qword)(b))));
1030 1.1.1.1.4.2 yamt }
1031 1.1.1.1.4.2 yamt
1032 1.1.1.1.4.2 yamt
1033 1.1.1.1.4.2 yamt /* spu_nand
1034 1.1.1.1.4.2 yamt * ========
1035 1.1.1.1.4.2 yamt */
1036 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_nand(vec_uchar16 a, vec_uchar16 b)
1037 1.1.1.1.4.2 yamt {
1038 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_nand((qword)(a), (qword)(b))));
1039 1.1.1.1.4.2 yamt }
1040 1.1.1.1.4.2 yamt
1041 1.1.1.1.4.2 yamt static __inline vec_char16 spu_nand(vec_char16 a, vec_char16 b)
1042 1.1.1.1.4.2 yamt {
1043 1.1.1.1.4.2 yamt return ((vec_char16)(si_nand((qword)(a), (qword)(b))));
1044 1.1.1.1.4.2 yamt }
1045 1.1.1.1.4.2 yamt
1046 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_nand(vec_ushort8 a, vec_ushort8 b)
1047 1.1.1.1.4.2 yamt {
1048 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_nand((qword)(a), (qword)(b))));
1049 1.1.1.1.4.2 yamt }
1050 1.1.1.1.4.2 yamt
1051 1.1.1.1.4.2 yamt static __inline vec_short8 spu_nand(vec_short8 a, vec_short8 b)
1052 1.1.1.1.4.2 yamt {
1053 1.1.1.1.4.2 yamt return ((vec_short8)(si_nand((qword)(a), (qword)(b))));
1054 1.1.1.1.4.2 yamt }
1055 1.1.1.1.4.2 yamt
1056 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_nand(vec_uint4 a, vec_uint4 b)
1057 1.1.1.1.4.2 yamt {
1058 1.1.1.1.4.2 yamt return ((vec_uint4)(si_nand((qword)(a), (qword)(b))));
1059 1.1.1.1.4.2 yamt }
1060 1.1.1.1.4.2 yamt
1061 1.1.1.1.4.2 yamt static __inline vec_int4 spu_nand(vec_int4 a, vec_int4 b)
1062 1.1.1.1.4.2 yamt {
1063 1.1.1.1.4.2 yamt return ((vec_int4)(si_nand((qword)(a), (qword)(b))));
1064 1.1.1.1.4.2 yamt }
1065 1.1.1.1.4.2 yamt
1066 1.1.1.1.4.2 yamt static __inline vec_float4 spu_nand(vec_float4 a, vec_float4 b)
1067 1.1.1.1.4.2 yamt {
1068 1.1.1.1.4.2 yamt return ((vec_float4)(si_nand((qword)(a), (qword)(b))));
1069 1.1.1.1.4.2 yamt }
1070 1.1.1.1.4.2 yamt
1071 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_nand(vec_ullong2 a, vec_ullong2 b)
1072 1.1.1.1.4.2 yamt {
1073 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_nand((qword)(a), (qword)(b))));
1074 1.1.1.1.4.2 yamt }
1075 1.1.1.1.4.2 yamt
1076 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_nand(vec_llong2 a, vec_llong2 b)
1077 1.1.1.1.4.2 yamt {
1078 1.1.1.1.4.2 yamt return ((vec_llong2)(si_nand((qword)(a), (qword)(b))));
1079 1.1.1.1.4.2 yamt }
1080 1.1.1.1.4.2 yamt
1081 1.1.1.1.4.2 yamt static __inline vec_double2 spu_nand(vec_double2 a, vec_double2 b)
1082 1.1.1.1.4.2 yamt {
1083 1.1.1.1.4.2 yamt return ((vec_double2)(si_nand((qword)(a), (qword)(b))));
1084 1.1.1.1.4.2 yamt }
1085 1.1.1.1.4.2 yamt
1086 1.1.1.1.4.2 yamt
1087 1.1.1.1.4.2 yamt /* spu_nmadd
1088 1.1.1.1.4.2 yamt * =========
1089 1.1.1.1.4.2 yamt */
1090 1.1.1.1.4.2 yamt static __inline vec_double2 spu_nmadd(vec_double2 a, vec_double2 b, vec_double2 c)
1091 1.1.1.1.4.2 yamt {
1092 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfnma((qword)(a), (qword)(b), (qword)(c))));
1093 1.1.1.1.4.2 yamt }
1094 1.1.1.1.4.2 yamt
1095 1.1.1.1.4.2 yamt
1096 1.1.1.1.4.2 yamt /* spu_nmsub
1097 1.1.1.1.4.2 yamt * =========
1098 1.1.1.1.4.2 yamt */
1099 1.1.1.1.4.2 yamt static __inline vec_float4 spu_nmsub(vec_float4 a, vec_float4 b, vec_float4 c)
1100 1.1.1.1.4.2 yamt {
1101 1.1.1.1.4.2 yamt return ((vec_float4)(si_fnms((qword)(a), (qword)(b), (qword)(c))));
1102 1.1.1.1.4.2 yamt }
1103 1.1.1.1.4.2 yamt
1104 1.1.1.1.4.2 yamt static __inline vec_double2 spu_nmsub(vec_double2 a, vec_double2 b, vec_double2 c)
1105 1.1.1.1.4.2 yamt {
1106 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfnms((qword)(a), (qword)(b), (qword)(c))));
1107 1.1.1.1.4.2 yamt }
1108 1.1.1.1.4.2 yamt
1109 1.1.1.1.4.2 yamt
1110 1.1.1.1.4.2 yamt /* spu_nor
1111 1.1.1.1.4.2 yamt * =======
1112 1.1.1.1.4.2 yamt */
1113 1.1.1.1.4.2 yamt #define spu_nor(_a, _b) vec_nor(_a, _b)
1114 1.1.1.1.4.2 yamt
1115 1.1.1.1.4.2 yamt
1116 1.1.1.1.4.2 yamt /* spu_or
1117 1.1.1.1.4.2 yamt * ======
1118 1.1.1.1.4.2 yamt */
1119 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_or(vec_uchar16 a, vec_uchar16 b)
1120 1.1.1.1.4.2 yamt {
1121 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_or((qword)(a), (qword)(b))));
1122 1.1.1.1.4.2 yamt }
1123 1.1.1.1.4.2 yamt
1124 1.1.1.1.4.2 yamt static __inline vec_char16 spu_or(vec_char16 a, vec_char16 b)
1125 1.1.1.1.4.2 yamt {
1126 1.1.1.1.4.2 yamt return ((vec_char16)(si_or((qword)(a), (qword)(b))));
1127 1.1.1.1.4.2 yamt }
1128 1.1.1.1.4.2 yamt
1129 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_or(vec_ushort8 a, vec_ushort8 b)
1130 1.1.1.1.4.2 yamt {
1131 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_or((qword)(a), (qword)(b))));
1132 1.1.1.1.4.2 yamt }
1133 1.1.1.1.4.2 yamt
1134 1.1.1.1.4.2 yamt static __inline vec_short8 spu_or(vec_short8 a, vec_short8 b)
1135 1.1.1.1.4.2 yamt {
1136 1.1.1.1.4.2 yamt return ((vec_short8)(si_or((qword)(a), (qword)(b))));
1137 1.1.1.1.4.2 yamt }
1138 1.1.1.1.4.2 yamt
1139 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_or(vec_uint4 a, vec_uint4 b)
1140 1.1.1.1.4.2 yamt {
1141 1.1.1.1.4.2 yamt return ((vec_uint4)(si_or((qword)(a), (qword)(b))));
1142 1.1.1.1.4.2 yamt }
1143 1.1.1.1.4.2 yamt
1144 1.1.1.1.4.2 yamt static __inline vec_int4 spu_or(vec_int4 a, vec_int4 b)
1145 1.1.1.1.4.2 yamt {
1146 1.1.1.1.4.2 yamt return ((vec_int4)(si_or((qword)(a), (qword)(b))));
1147 1.1.1.1.4.2 yamt }
1148 1.1.1.1.4.2 yamt
1149 1.1.1.1.4.2 yamt static __inline vec_float4 spu_or(vec_float4 a, vec_float4 b)
1150 1.1.1.1.4.2 yamt {
1151 1.1.1.1.4.2 yamt return ((vec_float4)(si_or((qword)(a), (qword)(b))));
1152 1.1.1.1.4.2 yamt }
1153 1.1.1.1.4.2 yamt
1154 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_or(vec_ullong2 a, vec_ullong2 b)
1155 1.1.1.1.4.2 yamt {
1156 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_or((qword)(a), (qword)(b))));
1157 1.1.1.1.4.2 yamt }
1158 1.1.1.1.4.2 yamt
1159 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_or(vec_llong2 a, vec_llong2 b)
1160 1.1.1.1.4.2 yamt {
1161 1.1.1.1.4.2 yamt return ((vec_llong2)(si_or((qword)(a), (qword)(b))));
1162 1.1.1.1.4.2 yamt }
1163 1.1.1.1.4.2 yamt
1164 1.1.1.1.4.2 yamt static __inline vec_double2 spu_or(vec_double2 a, vec_double2 b)
1165 1.1.1.1.4.2 yamt {
1166 1.1.1.1.4.2 yamt return ((vec_double2)(si_or((qword)(a), (qword)(b))));
1167 1.1.1.1.4.2 yamt }
1168 1.1.1.1.4.2 yamt
1169 1.1.1.1.4.2 yamt
1170 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_or(vec_uchar16 a, unsigned char b)
1171 1.1.1.1.4.2 yamt {
1172 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_orbi((qword)(a), b)));
1173 1.1.1.1.4.2 yamt }
1174 1.1.1.1.4.2 yamt
1175 1.1.1.1.4.2 yamt static __inline vec_char16 spu_or(vec_char16 a, signed char b)
1176 1.1.1.1.4.2 yamt {
1177 1.1.1.1.4.2 yamt return ((vec_char16)(si_orbi((qword)(a), (unsigned char)(b))));
1178 1.1.1.1.4.2 yamt }
1179 1.1.1.1.4.2 yamt
1180 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_or(vec_ushort8 a, unsigned short b)
1181 1.1.1.1.4.2 yamt {
1182 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_orhi((qword)(a), b)));
1183 1.1.1.1.4.2 yamt }
1184 1.1.1.1.4.2 yamt
1185 1.1.1.1.4.2 yamt static __inline vec_short8 spu_or(vec_short8 a, signed short b)
1186 1.1.1.1.4.2 yamt {
1187 1.1.1.1.4.2 yamt return ((vec_short8)(si_orhi((qword)(a), (unsigned short)(b))));
1188 1.1.1.1.4.2 yamt }
1189 1.1.1.1.4.2 yamt
1190 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_or(vec_uint4 a, unsigned int b)
1191 1.1.1.1.4.2 yamt {
1192 1.1.1.1.4.2 yamt return ((vec_uint4)(si_ori((qword)(a), b)));
1193 1.1.1.1.4.2 yamt }
1194 1.1.1.1.4.2 yamt
1195 1.1.1.1.4.2 yamt static __inline vec_int4 spu_or(vec_int4 a, signed int b)
1196 1.1.1.1.4.2 yamt {
1197 1.1.1.1.4.2 yamt return ((vec_int4)(si_ori((qword)(a), (unsigned int)(b))));
1198 1.1.1.1.4.2 yamt }
1199 1.1.1.1.4.2 yamt
1200 1.1.1.1.4.2 yamt
1201 1.1.1.1.4.2 yamt /* spu_orc
1202 1.1.1.1.4.2 yamt * =======
1203 1.1.1.1.4.2 yamt */
1204 1.1.1.1.4.2 yamt #define spu_orc(_a, _b) vec_or(_a, vec_nor(_b, _b))
1205 1.1.1.1.4.2 yamt
1206 1.1.1.1.4.2 yamt
1207 1.1.1.1.4.2 yamt /* spu_orx
1208 1.1.1.1.4.2 yamt * =======
1209 1.1.1.1.4.2 yamt */
1210 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_orx(vec_uint4 a)
1211 1.1.1.1.4.2 yamt {
1212 1.1.1.1.4.2 yamt return ((vec_uint4)(si_orx((qword)(a))));
1213 1.1.1.1.4.2 yamt }
1214 1.1.1.1.4.2 yamt
1215 1.1.1.1.4.2 yamt static __inline vec_int4 spu_orx(vec_int4 a)
1216 1.1.1.1.4.2 yamt {
1217 1.1.1.1.4.2 yamt return ((vec_int4)(si_orx((qword)(a))));
1218 1.1.1.1.4.2 yamt }
1219 1.1.1.1.4.2 yamt
1220 1.1.1.1.4.2 yamt
1221 1.1.1.1.4.2 yamt /* spu_promote
1222 1.1.1.1.4.2 yamt * ===========
1223 1.1.1.1.4.2 yamt */
1224 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_promote(unsigned char a, int element)
1225 1.1.1.1.4.2 yamt {
1226 1.1.1.1.4.2 yamt union {
1227 1.1.1.1.4.2 yamt vec_uchar16 v;
1228 1.1.1.1.4.2 yamt unsigned char c[16];
1229 1.1.1.1.4.2 yamt } in;
1230 1.1.1.1.4.2 yamt
1231 1.1.1.1.4.2 yamt in.c[element & 15] = a;
1232 1.1.1.1.4.2 yamt return (in.v);
1233 1.1.1.1.4.2 yamt }
1234 1.1.1.1.4.2 yamt
1235 1.1.1.1.4.2 yamt static __inline vec_char16 spu_promote(signed char a, int element)
1236 1.1.1.1.4.2 yamt {
1237 1.1.1.1.4.2 yamt union {
1238 1.1.1.1.4.2 yamt vec_char16 v;
1239 1.1.1.1.4.2 yamt signed char c[16];
1240 1.1.1.1.4.2 yamt } in;
1241 1.1.1.1.4.2 yamt
1242 1.1.1.1.4.2 yamt in.c[element & 15] = a;
1243 1.1.1.1.4.2 yamt return (in.v);
1244 1.1.1.1.4.2 yamt }
1245 1.1.1.1.4.2 yamt
1246 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_promote(unsigned short a, int element)
1247 1.1.1.1.4.2 yamt {
1248 1.1.1.1.4.2 yamt union {
1249 1.1.1.1.4.2 yamt vec_ushort8 v;
1250 1.1.1.1.4.2 yamt unsigned short s[8];
1251 1.1.1.1.4.2 yamt } in;
1252 1.1.1.1.4.2 yamt
1253 1.1.1.1.4.2 yamt in.s[element & 7] = a;
1254 1.1.1.1.4.2 yamt return (in.v);
1255 1.1.1.1.4.2 yamt }
1256 1.1.1.1.4.2 yamt
1257 1.1.1.1.4.2 yamt static __inline vec_short8 spu_promote(signed short a, int element)
1258 1.1.1.1.4.2 yamt {
1259 1.1.1.1.4.2 yamt union {
1260 1.1.1.1.4.2 yamt vec_short8 v;
1261 1.1.1.1.4.2 yamt signed short s[8];
1262 1.1.1.1.4.2 yamt } in;
1263 1.1.1.1.4.2 yamt
1264 1.1.1.1.4.2 yamt in.s[element & 7] = a;
1265 1.1.1.1.4.2 yamt return (in.v);
1266 1.1.1.1.4.2 yamt }
1267 1.1.1.1.4.2 yamt
1268 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_promote(unsigned int a, int element)
1269 1.1.1.1.4.2 yamt {
1270 1.1.1.1.4.2 yamt union {
1271 1.1.1.1.4.2 yamt vec_uint4 v;
1272 1.1.1.1.4.2 yamt unsigned int i[4];
1273 1.1.1.1.4.2 yamt } in;
1274 1.1.1.1.4.2 yamt
1275 1.1.1.1.4.2 yamt in.i[element & 3] = a;
1276 1.1.1.1.4.2 yamt return (in.v);
1277 1.1.1.1.4.2 yamt }
1278 1.1.1.1.4.2 yamt
1279 1.1.1.1.4.2 yamt static __inline vec_int4 spu_promote(signed int a, int element)
1280 1.1.1.1.4.2 yamt {
1281 1.1.1.1.4.2 yamt union {
1282 1.1.1.1.4.2 yamt vec_int4 v;
1283 1.1.1.1.4.2 yamt signed int i[4];
1284 1.1.1.1.4.2 yamt } in;
1285 1.1.1.1.4.2 yamt
1286 1.1.1.1.4.2 yamt in.i[element & 3] = a;
1287 1.1.1.1.4.2 yamt return (in.v);
1288 1.1.1.1.4.2 yamt }
1289 1.1.1.1.4.2 yamt
1290 1.1.1.1.4.2 yamt static __inline vec_float4 spu_promote(float a, int element)
1291 1.1.1.1.4.2 yamt {
1292 1.1.1.1.4.2 yamt union {
1293 1.1.1.1.4.2 yamt vec_float4 v;
1294 1.1.1.1.4.2 yamt float f[4];
1295 1.1.1.1.4.2 yamt } in;
1296 1.1.1.1.4.2 yamt
1297 1.1.1.1.4.2 yamt in.f[element & 3] = a;
1298 1.1.1.1.4.2 yamt return (in.v);
1299 1.1.1.1.4.2 yamt }
1300 1.1.1.1.4.2 yamt
1301 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_promote(unsigned long long a, int element)
1302 1.1.1.1.4.2 yamt {
1303 1.1.1.1.4.2 yamt union {
1304 1.1.1.1.4.2 yamt vec_ullong2 v;
1305 1.1.1.1.4.2 yamt unsigned long long l[2];
1306 1.1.1.1.4.2 yamt } in;
1307 1.1.1.1.4.2 yamt
1308 1.1.1.1.4.2 yamt in.l[element & 1] = a;
1309 1.1.1.1.4.2 yamt return (in.v);
1310 1.1.1.1.4.2 yamt }
1311 1.1.1.1.4.2 yamt
1312 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_promote(signed long long a, int element)
1313 1.1.1.1.4.2 yamt {
1314 1.1.1.1.4.2 yamt union {
1315 1.1.1.1.4.2 yamt vec_llong2 v;
1316 1.1.1.1.4.2 yamt signed long long l[2];
1317 1.1.1.1.4.2 yamt } in;
1318 1.1.1.1.4.2 yamt
1319 1.1.1.1.4.2 yamt in.l[element & 1] = a;
1320 1.1.1.1.4.2 yamt return (in.v);
1321 1.1.1.1.4.2 yamt }
1322 1.1.1.1.4.2 yamt
1323 1.1.1.1.4.2 yamt static __inline vec_double2 spu_promote(double a, int element)
1324 1.1.1.1.4.2 yamt {
1325 1.1.1.1.4.2 yamt union {
1326 1.1.1.1.4.2 yamt vec_double2 v;
1327 1.1.1.1.4.2 yamt double d[2];
1328 1.1.1.1.4.2 yamt } in;
1329 1.1.1.1.4.2 yamt
1330 1.1.1.1.4.2 yamt in.d[element & 1] = a;
1331 1.1.1.1.4.2 yamt return (in.v);
1332 1.1.1.1.4.2 yamt }
1333 1.1.1.1.4.2 yamt
1334 1.1.1.1.4.2 yamt /* spu_re
1335 1.1.1.1.4.2 yamt * ======
1336 1.1.1.1.4.2 yamt */
1337 1.1.1.1.4.2 yamt #define spu_re(_a) vec_re(_a)
1338 1.1.1.1.4.2 yamt
1339 1.1.1.1.4.2 yamt
1340 1.1.1.1.4.2 yamt /* spu_readch
1341 1.1.1.1.4.2 yamt * ==========
1342 1.1.1.1.4.2 yamt */
1343 1.1.1.1.4.2 yamt #define spu_readch(_channel) 0 /* not mappable */
1344 1.1.1.1.4.2 yamt
1345 1.1.1.1.4.2 yamt
1346 1.1.1.1.4.2 yamt /* spu_readchcnt
1347 1.1.1.1.4.2 yamt * =============
1348 1.1.1.1.4.2 yamt */
1349 1.1.1.1.4.2 yamt #define spu_readchcnt(_channel) 0 /* not mappable */
1350 1.1.1.1.4.2 yamt
1351 1.1.1.1.4.2 yamt
1352 1.1.1.1.4.2 yamt /* spu_readchqw
1353 1.1.1.1.4.2 yamt * ============
1354 1.1.1.1.4.2 yamt */
1355 1.1.1.1.4.2 yamt #define spu_readchqw(_channel) __extension__ ({ vec_uint4 result = { 0, 0, 0, 0 }; result; })
1356 1.1.1.1.4.2 yamt
1357 1.1.1.1.4.2 yamt /* spu_rl
1358 1.1.1.1.4.2 yamt * ======
1359 1.1.1.1.4.2 yamt */
1360 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rl(vec_ushort8 a, vec_short8 b)
1361 1.1.1.1.4.2 yamt {
1362 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_roth((qword)(a), (qword)(b))));
1363 1.1.1.1.4.2 yamt }
1364 1.1.1.1.4.2 yamt
1365 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rl(vec_short8 a, vec_short8 b)
1366 1.1.1.1.4.2 yamt {
1367 1.1.1.1.4.2 yamt return ((vec_short8)(si_roth((qword)(a), (qword)(b))));
1368 1.1.1.1.4.2 yamt }
1369 1.1.1.1.4.2 yamt
1370 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rl(vec_uint4 a, vec_int4 b)
1371 1.1.1.1.4.2 yamt {
1372 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rot((qword)(a), (qword)(b))));
1373 1.1.1.1.4.2 yamt }
1374 1.1.1.1.4.2 yamt
1375 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rl(vec_int4 a, vec_int4 b)
1376 1.1.1.1.4.2 yamt {
1377 1.1.1.1.4.2 yamt return ((vec_int4)(si_rot((qword)(a), (qword)(b))));
1378 1.1.1.1.4.2 yamt }
1379 1.1.1.1.4.2 yamt
1380 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rl(vec_ushort8 a, int b)
1381 1.1.1.1.4.2 yamt {
1382 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rothi((qword)(a), b)));
1383 1.1.1.1.4.2 yamt }
1384 1.1.1.1.4.2 yamt
1385 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rl(vec_short8 a, int b)
1386 1.1.1.1.4.2 yamt {
1387 1.1.1.1.4.2 yamt return ((vec_short8)(si_rothi((qword)(a), b)));
1388 1.1.1.1.4.2 yamt }
1389 1.1.1.1.4.2 yamt
1390 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rl(vec_uint4 a, int b)
1391 1.1.1.1.4.2 yamt {
1392 1.1.1.1.4.2 yamt return ((vec_uint4)(si_roti((qword)(a), b)));
1393 1.1.1.1.4.2 yamt }
1394 1.1.1.1.4.2 yamt
1395 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rl(vec_int4 a, int b)
1396 1.1.1.1.4.2 yamt {
1397 1.1.1.1.4.2 yamt return ((vec_int4)(si_roti((qword)(a), b)));
1398 1.1.1.1.4.2 yamt }
1399 1.1.1.1.4.2 yamt
1400 1.1.1.1.4.2 yamt
1401 1.1.1.1.4.2 yamt /* spu_rlmask
1402 1.1.1.1.4.2 yamt * ==========
1403 1.1.1.1.4.2 yamt */
1404 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmask(vec_ushort8 a, vec_short8 b)
1405 1.1.1.1.4.2 yamt {
1406 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rothm((qword)(a), (qword)(b))));
1407 1.1.1.1.4.2 yamt }
1408 1.1.1.1.4.2 yamt
1409 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmask(vec_short8 a, vec_short8 b)
1410 1.1.1.1.4.2 yamt {
1411 1.1.1.1.4.2 yamt return ((vec_short8)(si_rothm((qword)(a), (qword)(b))));
1412 1.1.1.1.4.2 yamt }
1413 1.1.1.1.4.2 yamt
1414 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmask(vec_uint4 a, vec_int4 b)
1415 1.1.1.1.4.2 yamt {
1416 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotm((qword)(a), (qword)(b))));
1417 1.1.1.1.4.2 yamt }
1418 1.1.1.1.4.2 yamt
1419 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmask(vec_int4 a, vec_int4 b)
1420 1.1.1.1.4.2 yamt {
1421 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotm((qword)(a), (qword)(b))));
1422 1.1.1.1.4.2 yamt }
1423 1.1.1.1.4.2 yamt
1424 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmask(vec_ushort8 a, int b)
1425 1.1.1.1.4.2 yamt {
1426 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rothmi((qword)(a), b)));
1427 1.1.1.1.4.2 yamt }
1428 1.1.1.1.4.2 yamt
1429 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmask(vec_short8 a, int b)
1430 1.1.1.1.4.2 yamt {
1431 1.1.1.1.4.2 yamt return ((vec_short8)(si_rothmi((qword)(a), b)));
1432 1.1.1.1.4.2 yamt }
1433 1.1.1.1.4.2 yamt
1434 1.1.1.1.4.2 yamt
1435 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmask(vec_uint4 a, int b)
1436 1.1.1.1.4.2 yamt {
1437 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotmi((qword)(a), b)));
1438 1.1.1.1.4.2 yamt }
1439 1.1.1.1.4.2 yamt
1440 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmask(vec_int4 a, int b)
1441 1.1.1.1.4.2 yamt {
1442 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotmi((qword)(a), b)));
1443 1.1.1.1.4.2 yamt }
1444 1.1.1.1.4.2 yamt
1445 1.1.1.1.4.2 yamt /* spu_rlmaska
1446 1.1.1.1.4.2 yamt * ===========
1447 1.1.1.1.4.2 yamt */
1448 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmaska(vec_short8 a, vec_short8 b)
1449 1.1.1.1.4.2 yamt {
1450 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotmah((qword)(a), (qword)(b))));
1451 1.1.1.1.4.2 yamt }
1452 1.1.1.1.4.2 yamt
1453 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmaska(vec_ushort8 a, vec_short8 b)
1454 1.1.1.1.4.2 yamt {
1455 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotmah((qword)(a), (qword)(b))));
1456 1.1.1.1.4.2 yamt }
1457 1.1.1.1.4.2 yamt
1458 1.1.1.1.4.2 yamt
1459 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmaska(vec_int4 a, vec_int4 b)
1460 1.1.1.1.4.2 yamt {
1461 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotma((qword)(a), (qword)(b))));
1462 1.1.1.1.4.2 yamt }
1463 1.1.1.1.4.2 yamt
1464 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmaska(vec_uint4 a, vec_int4 b)
1465 1.1.1.1.4.2 yamt {
1466 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotma((qword)(a), (qword)(b))));
1467 1.1.1.1.4.2 yamt }
1468 1.1.1.1.4.2 yamt
1469 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmaska(vec_ushort8 a, int b)
1470 1.1.1.1.4.2 yamt {
1471 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotmahi((qword)(a), b)));
1472 1.1.1.1.4.2 yamt }
1473 1.1.1.1.4.2 yamt
1474 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmaska(vec_short8 a, int b)
1475 1.1.1.1.4.2 yamt {
1476 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotmahi((qword)(a), b)));
1477 1.1.1.1.4.2 yamt }
1478 1.1.1.1.4.2 yamt
1479 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmaska(vec_uint4 a, int b)
1480 1.1.1.1.4.2 yamt {
1481 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotmai((qword)(a), b)));
1482 1.1.1.1.4.2 yamt }
1483 1.1.1.1.4.2 yamt
1484 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmaska(vec_int4 a, int b)
1485 1.1.1.1.4.2 yamt {
1486 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotmai((qword)(a), b)));
1487 1.1.1.1.4.2 yamt }
1488 1.1.1.1.4.2 yamt
1489 1.1.1.1.4.2 yamt
1490 1.1.1.1.4.2 yamt /* spu_rlmaskqw
1491 1.1.1.1.4.2 yamt * ============
1492 1.1.1.1.4.2 yamt */
1493 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_rlmaskqw(vec_uchar16 a, int count)
1494 1.1.1.1.4.2 yamt {
1495 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_rotqmbi((qword)(a), si_from_int(count))));
1496 1.1.1.1.4.2 yamt }
1497 1.1.1.1.4.2 yamt
1498 1.1.1.1.4.2 yamt static __inline vec_char16 spu_rlmaskqw(vec_char16 a, int count)
1499 1.1.1.1.4.2 yamt {
1500 1.1.1.1.4.2 yamt return ((vec_char16)(si_rotqmbi((qword)(a), si_from_int(count))));
1501 1.1.1.1.4.2 yamt }
1502 1.1.1.1.4.2 yamt
1503 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmaskqw(vec_ushort8 a, int count)
1504 1.1.1.1.4.2 yamt {
1505 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotqmbi((qword)(a), si_from_int(count))));
1506 1.1.1.1.4.2 yamt }
1507 1.1.1.1.4.2 yamt
1508 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmaskqw(vec_short8 a, int count)
1509 1.1.1.1.4.2 yamt {
1510 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotqmbi((qword)(a), si_from_int(count))));
1511 1.1.1.1.4.2 yamt }
1512 1.1.1.1.4.2 yamt
1513 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmaskqw(vec_uint4 a, int count)
1514 1.1.1.1.4.2 yamt {
1515 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotqmbi((qword)(a), si_from_int(count))));
1516 1.1.1.1.4.2 yamt }
1517 1.1.1.1.4.2 yamt
1518 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmaskqw(vec_int4 a, int count)
1519 1.1.1.1.4.2 yamt {
1520 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotqmbi((qword)(a), si_from_int(count))));
1521 1.1.1.1.4.2 yamt }
1522 1.1.1.1.4.2 yamt
1523 1.1.1.1.4.2 yamt static __inline vec_float4 spu_rlmaskqw(vec_float4 a, int count)
1524 1.1.1.1.4.2 yamt {
1525 1.1.1.1.4.2 yamt return ((vec_float4)(si_rotqmbi((qword)(a), si_from_int(count))));
1526 1.1.1.1.4.2 yamt }
1527 1.1.1.1.4.2 yamt
1528 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_rlmaskqw(vec_ullong2 a, int count)
1529 1.1.1.1.4.2 yamt {
1530 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_rotqmbi((qword)(a), si_from_int(count))));
1531 1.1.1.1.4.2 yamt }
1532 1.1.1.1.4.2 yamt
1533 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_rlmaskqw(vec_llong2 a, int count)
1534 1.1.1.1.4.2 yamt {
1535 1.1.1.1.4.2 yamt return ((vec_llong2)(si_rotqmbi((qword)(a), si_from_int(count))));
1536 1.1.1.1.4.2 yamt }
1537 1.1.1.1.4.2 yamt
1538 1.1.1.1.4.2 yamt static __inline vec_double2 spu_rlmaskqw(vec_double2 a, int count)
1539 1.1.1.1.4.2 yamt {
1540 1.1.1.1.4.2 yamt return ((vec_double2)(si_rotqmbi((qword)(a), si_from_int(count))));
1541 1.1.1.1.4.2 yamt }
1542 1.1.1.1.4.2 yamt
1543 1.1.1.1.4.2 yamt /* spu_rlmaskqwbyte
1544 1.1.1.1.4.2 yamt * ================
1545 1.1.1.1.4.2 yamt */
1546 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_rlmaskqwbyte(vec_uchar16 a, int count)
1547 1.1.1.1.4.2 yamt {
1548 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_rotqmby((qword)(a), si_from_int(count))));
1549 1.1.1.1.4.2 yamt }
1550 1.1.1.1.4.2 yamt
1551 1.1.1.1.4.2 yamt static __inline vec_char16 spu_rlmaskqwbyte(vec_char16 a, int count)
1552 1.1.1.1.4.2 yamt {
1553 1.1.1.1.4.2 yamt return ((vec_char16)(si_rotqmby((qword)(a), si_from_int(count))));
1554 1.1.1.1.4.2 yamt }
1555 1.1.1.1.4.2 yamt
1556 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmaskqwbyte(vec_ushort8 a, int count)
1557 1.1.1.1.4.2 yamt {
1558 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotqmby((qword)(a), si_from_int(count))));
1559 1.1.1.1.4.2 yamt }
1560 1.1.1.1.4.2 yamt
1561 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmaskqwbyte(vec_short8 a, int count)
1562 1.1.1.1.4.2 yamt {
1563 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotqmby((qword)(a), si_from_int(count))));
1564 1.1.1.1.4.2 yamt }
1565 1.1.1.1.4.2 yamt
1566 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmaskqwbyte(vec_uint4 a, int count)
1567 1.1.1.1.4.2 yamt {
1568 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotqmby((qword)(a), si_from_int(count))));
1569 1.1.1.1.4.2 yamt }
1570 1.1.1.1.4.2 yamt
1571 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmaskqwbyte(vec_int4 a, int count)
1572 1.1.1.1.4.2 yamt {
1573 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotqmby((qword)(a), si_from_int(count))));
1574 1.1.1.1.4.2 yamt }
1575 1.1.1.1.4.2 yamt
1576 1.1.1.1.4.2 yamt static __inline vec_float4 spu_rlmaskqwbyte(vec_float4 a, int count)
1577 1.1.1.1.4.2 yamt {
1578 1.1.1.1.4.2 yamt return ((vec_float4)(si_rotqmby((qword)(a), si_from_int(count))));
1579 1.1.1.1.4.2 yamt }
1580 1.1.1.1.4.2 yamt
1581 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_rlmaskqwbyte(vec_ullong2 a, int count)
1582 1.1.1.1.4.2 yamt {
1583 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_rotqmby((qword)(a), si_from_int(count))));
1584 1.1.1.1.4.2 yamt }
1585 1.1.1.1.4.2 yamt
1586 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_rlmaskqwbyte(vec_llong2 a, int count)
1587 1.1.1.1.4.2 yamt {
1588 1.1.1.1.4.2 yamt return ((vec_llong2)(si_rotqmby((qword)(a), si_from_int(count))));
1589 1.1.1.1.4.2 yamt }
1590 1.1.1.1.4.2 yamt
1591 1.1.1.1.4.2 yamt static __inline vec_double2 spu_rlmaskqwbyte(vec_double2 a, int count)
1592 1.1.1.1.4.2 yamt {
1593 1.1.1.1.4.2 yamt return ((vec_double2)(si_rotqmby((qword)(a), si_from_int(count))));
1594 1.1.1.1.4.2 yamt }
1595 1.1.1.1.4.2 yamt
1596 1.1.1.1.4.2 yamt /* spu_rlmaskqwbytebc
1597 1.1.1.1.4.2 yamt * ==================
1598 1.1.1.1.4.2 yamt */
1599 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_rlmaskqwbytebc(vec_uchar16 a, int count)
1600 1.1.1.1.4.2 yamt {
1601 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_rotqmbybi((qword)(a), si_from_int(count))));
1602 1.1.1.1.4.2 yamt }
1603 1.1.1.1.4.2 yamt
1604 1.1.1.1.4.2 yamt static __inline vec_char16 spu_rlmaskqwbytebc(vec_char16 a, int count)
1605 1.1.1.1.4.2 yamt {
1606 1.1.1.1.4.2 yamt return ((vec_char16)(si_rotqmbybi((qword)(a), si_from_int(count))));
1607 1.1.1.1.4.2 yamt }
1608 1.1.1.1.4.2 yamt
1609 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlmaskqwbytebc(vec_ushort8 a, int count)
1610 1.1.1.1.4.2 yamt {
1611 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotqmbybi((qword)(a), si_from_int(count))));
1612 1.1.1.1.4.2 yamt }
1613 1.1.1.1.4.2 yamt
1614 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlmaskqwbytebc(vec_short8 a, int count)
1615 1.1.1.1.4.2 yamt {
1616 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotqmbybi((qword)(a), si_from_int(count))));
1617 1.1.1.1.4.2 yamt }
1618 1.1.1.1.4.2 yamt
1619 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlmaskqwbytebc(vec_uint4 a, int count)
1620 1.1.1.1.4.2 yamt {
1621 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotqmbybi((qword)(a), si_from_int(count))));
1622 1.1.1.1.4.2 yamt }
1623 1.1.1.1.4.2 yamt
1624 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlmaskqwbytebc(vec_int4 a, int count)
1625 1.1.1.1.4.2 yamt {
1626 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotqmbybi((qword)(a), si_from_int(count))));
1627 1.1.1.1.4.2 yamt }
1628 1.1.1.1.4.2 yamt
1629 1.1.1.1.4.2 yamt static __inline vec_float4 spu_rlmaskqwbytebc(vec_float4 a, int count)
1630 1.1.1.1.4.2 yamt {
1631 1.1.1.1.4.2 yamt return ((vec_float4)(si_rotqmbybi((qword)(a), si_from_int(count))));
1632 1.1.1.1.4.2 yamt }
1633 1.1.1.1.4.2 yamt
1634 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_rlmaskqwbytebc(vec_ullong2 a, int count)
1635 1.1.1.1.4.2 yamt {
1636 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_rotqmbybi((qword)(a), si_from_int(count))));
1637 1.1.1.1.4.2 yamt }
1638 1.1.1.1.4.2 yamt
1639 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_rlmaskqwbytebc(vec_llong2 a, int count)
1640 1.1.1.1.4.2 yamt {
1641 1.1.1.1.4.2 yamt return ((vec_llong2)(si_rotqmbybi((qword)(a), si_from_int(count))));
1642 1.1.1.1.4.2 yamt }
1643 1.1.1.1.4.2 yamt
1644 1.1.1.1.4.2 yamt static __inline vec_double2 spu_rlmaskqwbytebc(vec_double2 a, int count)
1645 1.1.1.1.4.2 yamt {
1646 1.1.1.1.4.2 yamt return ((vec_double2)(si_rotqmbybi((qword)(a), si_from_int(count))));
1647 1.1.1.1.4.2 yamt }
1648 1.1.1.1.4.2 yamt
1649 1.1.1.1.4.2 yamt
1650 1.1.1.1.4.2 yamt /* spu_rlqwbyte
1651 1.1.1.1.4.2 yamt * ============
1652 1.1.1.1.4.2 yamt */
1653 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_rlqwbyte(vec_uchar16 a, int count)
1654 1.1.1.1.4.2 yamt {
1655 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_rotqby((qword)(a), si_from_int(count))));
1656 1.1.1.1.4.2 yamt }
1657 1.1.1.1.4.2 yamt
1658 1.1.1.1.4.2 yamt static __inline vec_char16 spu_rlqwbyte(vec_char16 a, int count)
1659 1.1.1.1.4.2 yamt {
1660 1.1.1.1.4.2 yamt return ((vec_char16)(si_rotqby((qword)(a), si_from_int(count))));
1661 1.1.1.1.4.2 yamt }
1662 1.1.1.1.4.2 yamt
1663 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlqwbyte(vec_ushort8 a, int count)
1664 1.1.1.1.4.2 yamt {
1665 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotqby((qword)(a), si_from_int(count))));
1666 1.1.1.1.4.2 yamt }
1667 1.1.1.1.4.2 yamt
1668 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlqwbyte(vec_short8 a, int count)
1669 1.1.1.1.4.2 yamt {
1670 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotqby((qword)(a), si_from_int(count))));
1671 1.1.1.1.4.2 yamt }
1672 1.1.1.1.4.2 yamt
1673 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlqwbyte(vec_uint4 a, int count)
1674 1.1.1.1.4.2 yamt {
1675 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotqby((qword)(a), si_from_int(count))));
1676 1.1.1.1.4.2 yamt }
1677 1.1.1.1.4.2 yamt
1678 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlqwbyte(vec_int4 a, int count)
1679 1.1.1.1.4.2 yamt {
1680 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotqby((qword)(a), si_from_int(count))));
1681 1.1.1.1.4.2 yamt }
1682 1.1.1.1.4.2 yamt
1683 1.1.1.1.4.2 yamt static __inline vec_float4 spu_rlqwbyte(vec_float4 a, int count)
1684 1.1.1.1.4.2 yamt {
1685 1.1.1.1.4.2 yamt return ((vec_float4)(si_rotqby((qword)(a), si_from_int(count))));
1686 1.1.1.1.4.2 yamt }
1687 1.1.1.1.4.2 yamt
1688 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_rlqwbyte(vec_ullong2 a, int count)
1689 1.1.1.1.4.2 yamt {
1690 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_rotqby((qword)(a), si_from_int(count))));
1691 1.1.1.1.4.2 yamt }
1692 1.1.1.1.4.2 yamt
1693 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_rlqwbyte(vec_llong2 a, int count)
1694 1.1.1.1.4.2 yamt {
1695 1.1.1.1.4.2 yamt return ((vec_llong2)(si_rotqby((qword)(a), si_from_int(count))));
1696 1.1.1.1.4.2 yamt }
1697 1.1.1.1.4.2 yamt
1698 1.1.1.1.4.2 yamt static __inline vec_double2 spu_rlqwbyte(vec_double2 a, int count)
1699 1.1.1.1.4.2 yamt {
1700 1.1.1.1.4.2 yamt return ((vec_double2)(si_rotqby((qword)(a), si_from_int(count))));
1701 1.1.1.1.4.2 yamt }
1702 1.1.1.1.4.2 yamt
1703 1.1.1.1.4.2 yamt
1704 1.1.1.1.4.2 yamt /* spu_rlqwbytebc
1705 1.1.1.1.4.2 yamt * ==============
1706 1.1.1.1.4.2 yamt */
1707 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_rlqwbytebc(vec_uchar16 a, int count)
1708 1.1.1.1.4.2 yamt {
1709 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_rotqbybi((qword)(a), si_from_int(count))));
1710 1.1.1.1.4.2 yamt }
1711 1.1.1.1.4.2 yamt
1712 1.1.1.1.4.2 yamt static __inline vec_char16 spu_rlqwbytebc(vec_char16 a, int count)
1713 1.1.1.1.4.2 yamt {
1714 1.1.1.1.4.2 yamt return ((vec_char16)(si_rotqbybi((qword)(a), si_from_int(count))));
1715 1.1.1.1.4.2 yamt }
1716 1.1.1.1.4.2 yamt
1717 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlqwbytebc(vec_ushort8 a, int count)
1718 1.1.1.1.4.2 yamt {
1719 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotqbybi((qword)(a), si_from_int(count))));
1720 1.1.1.1.4.2 yamt }
1721 1.1.1.1.4.2 yamt
1722 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlqwbytebc(vec_short8 a, int count)
1723 1.1.1.1.4.2 yamt {
1724 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotqbybi((qword)(a), si_from_int(count))));
1725 1.1.1.1.4.2 yamt }
1726 1.1.1.1.4.2 yamt
1727 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlqwbytebc(vec_uint4 a, int count)
1728 1.1.1.1.4.2 yamt {
1729 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotqbybi((qword)(a), si_from_int(count))));
1730 1.1.1.1.4.2 yamt }
1731 1.1.1.1.4.2 yamt
1732 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlqwbytebc(vec_int4 a, int count)
1733 1.1.1.1.4.2 yamt {
1734 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotqbybi((qword)(a), si_from_int(count))));
1735 1.1.1.1.4.2 yamt }
1736 1.1.1.1.4.2 yamt
1737 1.1.1.1.4.2 yamt static __inline vec_float4 spu_rlqwbytebc(vec_float4 a, int count)
1738 1.1.1.1.4.2 yamt {
1739 1.1.1.1.4.2 yamt return ((vec_float4)(si_rotqbybi((qword)(a), si_from_int(count))));
1740 1.1.1.1.4.2 yamt }
1741 1.1.1.1.4.2 yamt
1742 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_rlqwbytebc(vec_ullong2 a, int count)
1743 1.1.1.1.4.2 yamt {
1744 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_rotqbybi((qword)(a), si_from_int(count))));
1745 1.1.1.1.4.2 yamt }
1746 1.1.1.1.4.2 yamt
1747 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_rlqwbytebc(vec_llong2 a, int count)
1748 1.1.1.1.4.2 yamt {
1749 1.1.1.1.4.2 yamt return ((vec_llong2)(si_rotqbybi((qword)(a), si_from_int(count))));
1750 1.1.1.1.4.2 yamt }
1751 1.1.1.1.4.2 yamt
1752 1.1.1.1.4.2 yamt static __inline vec_double2 spu_rlqwbytebc(vec_double2 a, int count)
1753 1.1.1.1.4.2 yamt {
1754 1.1.1.1.4.2 yamt return ((vec_double2)(si_rotqbybi((qword)(a), si_from_int(count))));
1755 1.1.1.1.4.2 yamt }
1756 1.1.1.1.4.2 yamt
1757 1.1.1.1.4.2 yamt /* spu_rlqw
1758 1.1.1.1.4.2 yamt * ========
1759 1.1.1.1.4.2 yamt */
1760 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_rlqw(vec_uchar16 a, int count)
1761 1.1.1.1.4.2 yamt {
1762 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_rotqbi((qword)(a), si_from_int(count))));
1763 1.1.1.1.4.2 yamt }
1764 1.1.1.1.4.2 yamt
1765 1.1.1.1.4.2 yamt static __inline vec_char16 spu_rlqw(vec_char16 a, int count)
1766 1.1.1.1.4.2 yamt {
1767 1.1.1.1.4.2 yamt return ((vec_char16)(si_rotqbi((qword)(a), si_from_int(count))));
1768 1.1.1.1.4.2 yamt }
1769 1.1.1.1.4.2 yamt
1770 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_rlqw(vec_ushort8 a, int count)
1771 1.1.1.1.4.2 yamt {
1772 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_rotqbi((qword)(a), si_from_int(count))));
1773 1.1.1.1.4.2 yamt }
1774 1.1.1.1.4.2 yamt
1775 1.1.1.1.4.2 yamt static __inline vec_short8 spu_rlqw(vec_short8 a, int count)
1776 1.1.1.1.4.2 yamt {
1777 1.1.1.1.4.2 yamt return ((vec_short8)(si_rotqbi((qword)(a), si_from_int(count))));
1778 1.1.1.1.4.2 yamt }
1779 1.1.1.1.4.2 yamt
1780 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_rlqw(vec_uint4 a, int count)
1781 1.1.1.1.4.2 yamt {
1782 1.1.1.1.4.2 yamt return ((vec_uint4)(si_rotqbi((qword)(a), si_from_int(count))));
1783 1.1.1.1.4.2 yamt }
1784 1.1.1.1.4.2 yamt
1785 1.1.1.1.4.2 yamt static __inline vec_int4 spu_rlqw(vec_int4 a, int count)
1786 1.1.1.1.4.2 yamt {
1787 1.1.1.1.4.2 yamt return ((vec_int4)(si_rotqbi((qword)(a), si_from_int(count))));
1788 1.1.1.1.4.2 yamt }
1789 1.1.1.1.4.2 yamt
1790 1.1.1.1.4.2 yamt static __inline vec_float4 spu_rlqw(vec_float4 a, int count)
1791 1.1.1.1.4.2 yamt {
1792 1.1.1.1.4.2 yamt return ((vec_float4)(si_rotqbi((qword)(a), si_from_int(count))));
1793 1.1.1.1.4.2 yamt }
1794 1.1.1.1.4.2 yamt
1795 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_rlqw(vec_ullong2 a, int count)
1796 1.1.1.1.4.2 yamt {
1797 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_rotqbi((qword)(a), si_from_int(count))));
1798 1.1.1.1.4.2 yamt }
1799 1.1.1.1.4.2 yamt
1800 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_rlqw(vec_llong2 a, int count)
1801 1.1.1.1.4.2 yamt {
1802 1.1.1.1.4.2 yamt return ((vec_llong2)(si_rotqbi((qword)(a), si_from_int(count))));
1803 1.1.1.1.4.2 yamt }
1804 1.1.1.1.4.2 yamt
1805 1.1.1.1.4.2 yamt static __inline vec_double2 spu_rlqw(vec_double2 a, int count)
1806 1.1.1.1.4.2 yamt {
1807 1.1.1.1.4.2 yamt return ((vec_double2)(si_rotqbi((qword)(a), si_from_int(count))));
1808 1.1.1.1.4.2 yamt }
1809 1.1.1.1.4.2 yamt
1810 1.1.1.1.4.2 yamt /* spu_roundtf
1811 1.1.1.1.4.2 yamt * ===========
1812 1.1.1.1.4.2 yamt */
1813 1.1.1.1.4.2 yamt static __inline vec_float4 spu_roundtf(vec_double2 a)
1814 1.1.1.1.4.2 yamt {
1815 1.1.1.1.4.2 yamt return ((vec_float4)(si_frds((qword)(a))));
1816 1.1.1.1.4.2 yamt }
1817 1.1.1.1.4.2 yamt
1818 1.1.1.1.4.2 yamt
1819 1.1.1.1.4.2 yamt /* spu_rsqrte
1820 1.1.1.1.4.2 yamt * ==========
1821 1.1.1.1.4.2 yamt */
1822 1.1.1.1.4.2 yamt #define spu_rsqrte(_a) vec_rsqrte(_a)
1823 1.1.1.1.4.2 yamt
1824 1.1.1.1.4.2 yamt
1825 1.1.1.1.4.2 yamt /* spu_sel
1826 1.1.1.1.4.2 yamt * =======
1827 1.1.1.1.4.2 yamt */
1828 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_sel(vec_uchar16 a, vec_uchar16 b, vec_uchar16 pattern)
1829 1.1.1.1.4.2 yamt {
1830 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1831 1.1.1.1.4.2 yamt }
1832 1.1.1.1.4.2 yamt
1833 1.1.1.1.4.2 yamt static __inline vec_char16 spu_sel(vec_char16 a, vec_char16 b, vec_uchar16 pattern)
1834 1.1.1.1.4.2 yamt {
1835 1.1.1.1.4.2 yamt return ((vec_char16)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1836 1.1.1.1.4.2 yamt }
1837 1.1.1.1.4.2 yamt
1838 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_sel(vec_ushort8 a, vec_ushort8 b, vec_ushort8 pattern)
1839 1.1.1.1.4.2 yamt {
1840 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1841 1.1.1.1.4.2 yamt }
1842 1.1.1.1.4.2 yamt
1843 1.1.1.1.4.2 yamt static __inline vec_short8 spu_sel(vec_short8 a, vec_short8 b, vec_ushort8 pattern)
1844 1.1.1.1.4.2 yamt {
1845 1.1.1.1.4.2 yamt return ((vec_short8)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1846 1.1.1.1.4.2 yamt }
1847 1.1.1.1.4.2 yamt
1848 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_sel(vec_uint4 a, vec_uint4 b, vec_uint4 pattern)
1849 1.1.1.1.4.2 yamt {
1850 1.1.1.1.4.2 yamt return ((vec_uint4)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1851 1.1.1.1.4.2 yamt }
1852 1.1.1.1.4.2 yamt
1853 1.1.1.1.4.2 yamt static __inline vec_int4 spu_sel(vec_int4 a, vec_int4 b, vec_uint4 pattern)
1854 1.1.1.1.4.2 yamt {
1855 1.1.1.1.4.2 yamt return ((vec_int4)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1856 1.1.1.1.4.2 yamt }
1857 1.1.1.1.4.2 yamt
1858 1.1.1.1.4.2 yamt static __inline vec_float4 spu_sel(vec_float4 a, vec_float4 b, vec_uint4 pattern)
1859 1.1.1.1.4.2 yamt {
1860 1.1.1.1.4.2 yamt return ((vec_float4)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1861 1.1.1.1.4.2 yamt }
1862 1.1.1.1.4.2 yamt
1863 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_sel(vec_ullong2 a, vec_ullong2 b, vec_ullong2 pattern)
1864 1.1.1.1.4.2 yamt {
1865 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1866 1.1.1.1.4.2 yamt }
1867 1.1.1.1.4.2 yamt
1868 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_sel(vec_llong2 a, vec_llong2 b, vec_ullong2 pattern)
1869 1.1.1.1.4.2 yamt {
1870 1.1.1.1.4.2 yamt return ((vec_llong2)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1871 1.1.1.1.4.2 yamt }
1872 1.1.1.1.4.2 yamt
1873 1.1.1.1.4.2 yamt static __inline vec_double2 spu_sel(vec_double2 a, vec_double2 b, vec_ullong2 pattern)
1874 1.1.1.1.4.2 yamt {
1875 1.1.1.1.4.2 yamt return ((vec_double2)(si_selb((qword)(a), (qword)(b), (qword)(pattern))));
1876 1.1.1.1.4.2 yamt }
1877 1.1.1.1.4.2 yamt
1878 1.1.1.1.4.2 yamt
1879 1.1.1.1.4.2 yamt
1880 1.1.1.1.4.2 yamt /* spu_shuffle
1881 1.1.1.1.4.2 yamt * ===========
1882 1.1.1.1.4.2 yamt */
1883 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_shuffle(vec_uchar16 a, vec_uchar16 b, vec_uchar16 pattern)
1884 1.1.1.1.4.2 yamt {
1885 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1886 1.1.1.1.4.2 yamt }
1887 1.1.1.1.4.2 yamt
1888 1.1.1.1.4.2 yamt static __inline vec_char16 spu_shuffle(vec_char16 a, vec_char16 b, vec_uchar16 pattern)
1889 1.1.1.1.4.2 yamt {
1890 1.1.1.1.4.2 yamt return ((vec_char16)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1891 1.1.1.1.4.2 yamt }
1892 1.1.1.1.4.2 yamt
1893 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_shuffle(vec_ushort8 a, vec_ushort8 b, vec_uchar16 pattern)
1894 1.1.1.1.4.2 yamt {
1895 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1896 1.1.1.1.4.2 yamt }
1897 1.1.1.1.4.2 yamt
1898 1.1.1.1.4.2 yamt static __inline vec_short8 spu_shuffle(vec_short8 a, vec_short8 b, vec_uchar16 pattern)
1899 1.1.1.1.4.2 yamt {
1900 1.1.1.1.4.2 yamt return ((vec_short8)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1901 1.1.1.1.4.2 yamt }
1902 1.1.1.1.4.2 yamt
1903 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_shuffle(vec_uint4 a, vec_uint4 b, vec_uchar16 pattern)
1904 1.1.1.1.4.2 yamt {
1905 1.1.1.1.4.2 yamt return ((vec_uint4)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1906 1.1.1.1.4.2 yamt }
1907 1.1.1.1.4.2 yamt
1908 1.1.1.1.4.2 yamt static __inline vec_int4 spu_shuffle(vec_int4 a, vec_int4 b, vec_uchar16 pattern)
1909 1.1.1.1.4.2 yamt {
1910 1.1.1.1.4.2 yamt return ((vec_int4)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1911 1.1.1.1.4.2 yamt }
1912 1.1.1.1.4.2 yamt
1913 1.1.1.1.4.2 yamt static __inline vec_float4 spu_shuffle(vec_float4 a, vec_float4 b, vec_uchar16 pattern)
1914 1.1.1.1.4.2 yamt {
1915 1.1.1.1.4.2 yamt return ((vec_float4)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1916 1.1.1.1.4.2 yamt }
1917 1.1.1.1.4.2 yamt
1918 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_shuffle(vec_ullong2 a, vec_ullong2 b, vec_uchar16 pattern)
1919 1.1.1.1.4.2 yamt {
1920 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1921 1.1.1.1.4.2 yamt }
1922 1.1.1.1.4.2 yamt
1923 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_shuffle(vec_llong2 a, vec_llong2 b, vec_uchar16 pattern)
1924 1.1.1.1.4.2 yamt {
1925 1.1.1.1.4.2 yamt return ((vec_llong2)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1926 1.1.1.1.4.2 yamt }
1927 1.1.1.1.4.2 yamt
1928 1.1.1.1.4.2 yamt static __inline vec_double2 spu_shuffle(vec_double2 a, vec_double2 b, vec_uchar16 pattern)
1929 1.1.1.1.4.2 yamt {
1930 1.1.1.1.4.2 yamt return ((vec_double2)(si_shufb((qword)(a), (qword)(b), (qword)(pattern))));
1931 1.1.1.1.4.2 yamt }
1932 1.1.1.1.4.2 yamt
1933 1.1.1.1.4.2 yamt
1934 1.1.1.1.4.2 yamt /* spu_sl
1935 1.1.1.1.4.2 yamt * ======
1936 1.1.1.1.4.2 yamt */
1937 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_sl(vec_ushort8 a, vec_ushort8 b)
1938 1.1.1.1.4.2 yamt {
1939 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_shlh((qword)(a), (qword)(b))));
1940 1.1.1.1.4.2 yamt }
1941 1.1.1.1.4.2 yamt
1942 1.1.1.1.4.2 yamt static __inline vec_short8 spu_sl(vec_short8 a, vec_ushort8 b)
1943 1.1.1.1.4.2 yamt {
1944 1.1.1.1.4.2 yamt return ((vec_short8)(si_shlh((qword)(a), (qword)(b))));
1945 1.1.1.1.4.2 yamt }
1946 1.1.1.1.4.2 yamt
1947 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_sl(vec_uint4 a, vec_uint4 b)
1948 1.1.1.1.4.2 yamt {
1949 1.1.1.1.4.2 yamt return ((vec_uint4)(si_shl((qword)(a), (qword)(b))));
1950 1.1.1.1.4.2 yamt }
1951 1.1.1.1.4.2 yamt
1952 1.1.1.1.4.2 yamt static __inline vec_int4 spu_sl(vec_int4 a, vec_uint4 b)
1953 1.1.1.1.4.2 yamt {
1954 1.1.1.1.4.2 yamt return ((vec_int4)(si_shl((qword)(a), (qword)(b))));
1955 1.1.1.1.4.2 yamt }
1956 1.1.1.1.4.2 yamt
1957 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_sl(vec_ushort8 a, unsigned int b)
1958 1.1.1.1.4.2 yamt {
1959 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_shlhi((qword)(a), b)));
1960 1.1.1.1.4.2 yamt }
1961 1.1.1.1.4.2 yamt
1962 1.1.1.1.4.2 yamt static __inline vec_short8 spu_sl(vec_short8 a, unsigned int b)
1963 1.1.1.1.4.2 yamt {
1964 1.1.1.1.4.2 yamt return ((vec_short8)(si_shlhi((qword)(a), b)));
1965 1.1.1.1.4.2 yamt }
1966 1.1.1.1.4.2 yamt
1967 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_sl(vec_uint4 a, unsigned int b)
1968 1.1.1.1.4.2 yamt {
1969 1.1.1.1.4.2 yamt return ((vec_uint4)(si_shli((qword)(a), b)));
1970 1.1.1.1.4.2 yamt }
1971 1.1.1.1.4.2 yamt
1972 1.1.1.1.4.2 yamt static __inline vec_int4 spu_sl(vec_int4 a, unsigned int b)
1973 1.1.1.1.4.2 yamt {
1974 1.1.1.1.4.2 yamt return ((vec_int4)(si_shli((qword)(a), b)));
1975 1.1.1.1.4.2 yamt }
1976 1.1.1.1.4.2 yamt
1977 1.1.1.1.4.2 yamt
1978 1.1.1.1.4.2 yamt /* spu_slqw
1979 1.1.1.1.4.2 yamt * ========
1980 1.1.1.1.4.2 yamt */
1981 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_slqw(vec_uchar16 a, unsigned int count)
1982 1.1.1.1.4.2 yamt {
1983 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_shlqbi((qword)(a), si_from_uint(count))));
1984 1.1.1.1.4.2 yamt }
1985 1.1.1.1.4.2 yamt
1986 1.1.1.1.4.2 yamt static __inline vec_char16 spu_slqw(vec_char16 a, unsigned int count)
1987 1.1.1.1.4.2 yamt {
1988 1.1.1.1.4.2 yamt return ((vec_char16)(si_shlqbi((qword)(a), si_from_uint(count))));
1989 1.1.1.1.4.2 yamt }
1990 1.1.1.1.4.2 yamt
1991 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_slqw(vec_ushort8 a, unsigned int count)
1992 1.1.1.1.4.2 yamt {
1993 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_shlqbi((qword)(a), si_from_uint(count))));
1994 1.1.1.1.4.2 yamt }
1995 1.1.1.1.4.2 yamt
1996 1.1.1.1.4.2 yamt static __inline vec_short8 spu_slqw(vec_short8 a, unsigned int count)
1997 1.1.1.1.4.2 yamt {
1998 1.1.1.1.4.2 yamt return ((vec_short8)(si_shlqbi((qword)(a), si_from_uint(count))));
1999 1.1.1.1.4.2 yamt }
2000 1.1.1.1.4.2 yamt
2001 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_slqw(vec_uint4 a, unsigned int count)
2002 1.1.1.1.4.2 yamt {
2003 1.1.1.1.4.2 yamt return ((vec_uint4)(si_shlqbi((qword)(a), si_from_uint(count))));
2004 1.1.1.1.4.2 yamt }
2005 1.1.1.1.4.2 yamt
2006 1.1.1.1.4.2 yamt static __inline vec_int4 spu_slqw(vec_int4 a, unsigned int count)
2007 1.1.1.1.4.2 yamt {
2008 1.1.1.1.4.2 yamt return ((vec_int4)(si_shlqbi((qword)(a), si_from_uint(count))));
2009 1.1.1.1.4.2 yamt }
2010 1.1.1.1.4.2 yamt
2011 1.1.1.1.4.2 yamt static __inline vec_float4 spu_slqw(vec_float4 a, unsigned int count)
2012 1.1.1.1.4.2 yamt {
2013 1.1.1.1.4.2 yamt return ((vec_float4)(si_shlqbi((qword)(a), si_from_uint(count))));
2014 1.1.1.1.4.2 yamt }
2015 1.1.1.1.4.2 yamt
2016 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_slqw(vec_ullong2 a, unsigned int count)
2017 1.1.1.1.4.2 yamt {
2018 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_shlqbi((qword)(a), si_from_uint(count))));
2019 1.1.1.1.4.2 yamt }
2020 1.1.1.1.4.2 yamt
2021 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_slqw(vec_llong2 a, unsigned int count)
2022 1.1.1.1.4.2 yamt {
2023 1.1.1.1.4.2 yamt return ((vec_llong2)(si_shlqbi((qword)(a), si_from_uint(count))));
2024 1.1.1.1.4.2 yamt }
2025 1.1.1.1.4.2 yamt
2026 1.1.1.1.4.2 yamt static __inline vec_double2 spu_slqw(vec_double2 a, unsigned int count)
2027 1.1.1.1.4.2 yamt {
2028 1.1.1.1.4.2 yamt return ((vec_double2)(si_shlqbi((qword)(a), si_from_uint(count))));
2029 1.1.1.1.4.2 yamt }
2030 1.1.1.1.4.2 yamt
2031 1.1.1.1.4.2 yamt /* spu_slqwbyte
2032 1.1.1.1.4.2 yamt * ============
2033 1.1.1.1.4.2 yamt */
2034 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_slqwbyte(vec_uchar16 a, unsigned int count)
2035 1.1.1.1.4.2 yamt {
2036 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_shlqby((qword)(a), si_from_uint(count))));
2037 1.1.1.1.4.2 yamt }
2038 1.1.1.1.4.2 yamt
2039 1.1.1.1.4.2 yamt static __inline vec_char16 spu_slqwbyte(vec_char16 a, unsigned int count)
2040 1.1.1.1.4.2 yamt {
2041 1.1.1.1.4.2 yamt return ((vec_char16)(si_shlqby((qword)(a), si_from_uint(count))));
2042 1.1.1.1.4.2 yamt }
2043 1.1.1.1.4.2 yamt
2044 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_slqwbyte(vec_ushort8 a, unsigned int count)
2045 1.1.1.1.4.2 yamt {
2046 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_shlqby((qword)(a), si_from_uint(count))));
2047 1.1.1.1.4.2 yamt }
2048 1.1.1.1.4.2 yamt
2049 1.1.1.1.4.2 yamt static __inline vec_short8 spu_slqwbyte(vec_short8 a, unsigned int count)
2050 1.1.1.1.4.2 yamt {
2051 1.1.1.1.4.2 yamt return ((vec_short8)(si_shlqby((qword)(a), si_from_uint(count))));
2052 1.1.1.1.4.2 yamt }
2053 1.1.1.1.4.2 yamt
2054 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_slqwbyte(vec_uint4 a, unsigned int count)
2055 1.1.1.1.4.2 yamt {
2056 1.1.1.1.4.2 yamt return ((vec_uint4)(si_shlqby((qword)(a), si_from_uint(count))));
2057 1.1.1.1.4.2 yamt }
2058 1.1.1.1.4.2 yamt
2059 1.1.1.1.4.2 yamt static __inline vec_int4 spu_slqwbyte(vec_int4 a, unsigned int count)
2060 1.1.1.1.4.2 yamt {
2061 1.1.1.1.4.2 yamt return ((vec_int4)(si_shlqby((qword)(a), si_from_uint(count))));
2062 1.1.1.1.4.2 yamt }
2063 1.1.1.1.4.2 yamt
2064 1.1.1.1.4.2 yamt static __inline vec_float4 spu_slqwbyte(vec_float4 a, unsigned int count)
2065 1.1.1.1.4.2 yamt {
2066 1.1.1.1.4.2 yamt return ((vec_float4)(si_shlqby((qword)(a), si_from_uint(count))));
2067 1.1.1.1.4.2 yamt }
2068 1.1.1.1.4.2 yamt
2069 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_slqwbyte(vec_ullong2 a, unsigned int count)
2070 1.1.1.1.4.2 yamt {
2071 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_shlqby((qword)(a), si_from_uint(count))));
2072 1.1.1.1.4.2 yamt }
2073 1.1.1.1.4.2 yamt
2074 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_slqwbyte(vec_llong2 a, unsigned int count)
2075 1.1.1.1.4.2 yamt {
2076 1.1.1.1.4.2 yamt return ((vec_llong2)(si_shlqby((qword)(a), si_from_uint(count))));
2077 1.1.1.1.4.2 yamt }
2078 1.1.1.1.4.2 yamt
2079 1.1.1.1.4.2 yamt static __inline vec_double2 spu_slqwbyte(vec_double2 a, unsigned int count)
2080 1.1.1.1.4.2 yamt {
2081 1.1.1.1.4.2 yamt return ((vec_double2)(si_shlqby((qword)(a), si_from_uint(count))));
2082 1.1.1.1.4.2 yamt }
2083 1.1.1.1.4.2 yamt
2084 1.1.1.1.4.2 yamt /* spu_slqwbytebc
2085 1.1.1.1.4.2 yamt * ==============
2086 1.1.1.1.4.2 yamt */
2087 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_slqwbytebc(vec_uchar16 a, unsigned int count)
2088 1.1.1.1.4.2 yamt {
2089 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_shlqbybi((qword)(a), si_from_uint(count))));
2090 1.1.1.1.4.2 yamt }
2091 1.1.1.1.4.2 yamt
2092 1.1.1.1.4.2 yamt static __inline vec_char16 spu_slqwbytebc(vec_char16 a, unsigned int count)
2093 1.1.1.1.4.2 yamt {
2094 1.1.1.1.4.2 yamt return ((vec_char16)(si_shlqbybi((qword)(a), si_from_uint(count))));
2095 1.1.1.1.4.2 yamt }
2096 1.1.1.1.4.2 yamt
2097 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_slqwbytebc(vec_ushort8 a, unsigned int count)
2098 1.1.1.1.4.2 yamt {
2099 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_shlqbybi((qword)(a), si_from_uint(count))));
2100 1.1.1.1.4.2 yamt }
2101 1.1.1.1.4.2 yamt
2102 1.1.1.1.4.2 yamt static __inline vec_short8 spu_slqwbytebc(vec_short8 a, unsigned int count)
2103 1.1.1.1.4.2 yamt {
2104 1.1.1.1.4.2 yamt return ((vec_short8)(si_shlqbybi((qword)(a), si_from_uint(count))));
2105 1.1.1.1.4.2 yamt }
2106 1.1.1.1.4.2 yamt
2107 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_slqwbytebc(vec_uint4 a, unsigned int count)
2108 1.1.1.1.4.2 yamt {
2109 1.1.1.1.4.2 yamt return ((vec_uint4)(si_shlqbybi((qword)(a), si_from_uint(count))));
2110 1.1.1.1.4.2 yamt }
2111 1.1.1.1.4.2 yamt
2112 1.1.1.1.4.2 yamt static __inline vec_int4 spu_slqwbytebc(vec_int4 a, unsigned int count)
2113 1.1.1.1.4.2 yamt {
2114 1.1.1.1.4.2 yamt return ((vec_int4)(si_shlqbybi((qword)(a), si_from_uint(count))));
2115 1.1.1.1.4.2 yamt }
2116 1.1.1.1.4.2 yamt
2117 1.1.1.1.4.2 yamt static __inline vec_float4 spu_slqwbytebc(vec_float4 a, unsigned int count)
2118 1.1.1.1.4.2 yamt {
2119 1.1.1.1.4.2 yamt return ((vec_float4)(si_shlqbybi((qword)(a), si_from_uint(count))));
2120 1.1.1.1.4.2 yamt }
2121 1.1.1.1.4.2 yamt
2122 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_slqwbytebc(vec_ullong2 a, unsigned int count)
2123 1.1.1.1.4.2 yamt {
2124 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_shlqbybi((qword)(a), si_from_uint(count))));
2125 1.1.1.1.4.2 yamt }
2126 1.1.1.1.4.2 yamt
2127 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_slqwbytebc(vec_llong2 a, unsigned int count)
2128 1.1.1.1.4.2 yamt {
2129 1.1.1.1.4.2 yamt return ((vec_llong2)(si_shlqbybi((qword)(a), si_from_uint(count))));
2130 1.1.1.1.4.2 yamt }
2131 1.1.1.1.4.2 yamt
2132 1.1.1.1.4.2 yamt static __inline vec_double2 spu_slqwbytebc(vec_double2 a, unsigned int count)
2133 1.1.1.1.4.2 yamt {
2134 1.1.1.1.4.2 yamt return ((vec_double2)(si_shlqbybi((qword)(a), si_from_uint(count))));
2135 1.1.1.1.4.2 yamt }
2136 1.1.1.1.4.2 yamt
2137 1.1.1.1.4.2 yamt /* spu_splats
2138 1.1.1.1.4.2 yamt * ==========
2139 1.1.1.1.4.2 yamt */
2140 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_splats(unsigned char a)
2141 1.1.1.1.4.2 yamt {
2142 1.1.1.1.4.2 yamt union {
2143 1.1.1.1.4.2 yamt vec_uchar16 v;
2144 1.1.1.1.4.2 yamt unsigned char c[16];
2145 1.1.1.1.4.2 yamt } in;
2146 1.1.1.1.4.2 yamt
2147 1.1.1.1.4.2 yamt in.c[0] = a;
2148 1.1.1.1.4.2 yamt return (vec_splat(in.v, 0));
2149 1.1.1.1.4.2 yamt }
2150 1.1.1.1.4.2 yamt
2151 1.1.1.1.4.2 yamt static __inline vec_char16 spu_splats(signed char a)
2152 1.1.1.1.4.2 yamt {
2153 1.1.1.1.4.2 yamt return ((vec_char16)spu_splats((unsigned char)(a)));
2154 1.1.1.1.4.2 yamt }
2155 1.1.1.1.4.2 yamt
2156 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_splats(unsigned short a)
2157 1.1.1.1.4.2 yamt {
2158 1.1.1.1.4.2 yamt union {
2159 1.1.1.1.4.2 yamt vec_ushort8 v;
2160 1.1.1.1.4.2 yamt unsigned short s[8];
2161 1.1.1.1.4.2 yamt } in;
2162 1.1.1.1.4.2 yamt
2163 1.1.1.1.4.2 yamt in.s[0] = a;
2164 1.1.1.1.4.2 yamt return (vec_splat(in.v, 0));
2165 1.1.1.1.4.2 yamt }
2166 1.1.1.1.4.2 yamt
2167 1.1.1.1.4.2 yamt static __inline vec_short8 spu_splats(signed short a)
2168 1.1.1.1.4.2 yamt {
2169 1.1.1.1.4.2 yamt return ((vec_short8)spu_splats((unsigned short)(a)));
2170 1.1.1.1.4.2 yamt }
2171 1.1.1.1.4.2 yamt
2172 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_splats(unsigned int a)
2173 1.1.1.1.4.2 yamt {
2174 1.1.1.1.4.2 yamt union {
2175 1.1.1.1.4.2 yamt vec_uint4 v;
2176 1.1.1.1.4.2 yamt unsigned int i[4];
2177 1.1.1.1.4.2 yamt } in;
2178 1.1.1.1.4.2 yamt
2179 1.1.1.1.4.2 yamt in.i[0] = a;
2180 1.1.1.1.4.2 yamt return (vec_splat(in.v, 0));
2181 1.1.1.1.4.2 yamt }
2182 1.1.1.1.4.2 yamt
2183 1.1.1.1.4.2 yamt static __inline vec_int4 spu_splats(signed int a)
2184 1.1.1.1.4.2 yamt {
2185 1.1.1.1.4.2 yamt return ((vec_int4)spu_splats((unsigned int)(a)));
2186 1.1.1.1.4.2 yamt }
2187 1.1.1.1.4.2 yamt
2188 1.1.1.1.4.2 yamt static __inline vec_float4 spu_splats(float a)
2189 1.1.1.1.4.2 yamt {
2190 1.1.1.1.4.2 yamt union {
2191 1.1.1.1.4.2 yamt vec_float4 v;
2192 1.1.1.1.4.2 yamt float f[4];
2193 1.1.1.1.4.2 yamt } in;
2194 1.1.1.1.4.2 yamt
2195 1.1.1.1.4.2 yamt in.f[0] = a;
2196 1.1.1.1.4.2 yamt return (vec_splat(in.v, 0));
2197 1.1.1.1.4.2 yamt }
2198 1.1.1.1.4.2 yamt
2199 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_splats(unsigned long long a)
2200 1.1.1.1.4.2 yamt {
2201 1.1.1.1.4.2 yamt union {
2202 1.1.1.1.4.2 yamt vec_ullong2 v;
2203 1.1.1.1.4.2 yamt unsigned long long l[2];
2204 1.1.1.1.4.2 yamt } in;
2205 1.1.1.1.4.2 yamt
2206 1.1.1.1.4.2 yamt in.l[0] = a;
2207 1.1.1.1.4.2 yamt in.l[1] = a;
2208 1.1.1.1.4.2 yamt return (in.v);
2209 1.1.1.1.4.2 yamt }
2210 1.1.1.1.4.2 yamt
2211 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_splats(signed long long a)
2212 1.1.1.1.4.2 yamt {
2213 1.1.1.1.4.2 yamt return ((vec_llong2)spu_splats((unsigned long long)(a)));
2214 1.1.1.1.4.2 yamt }
2215 1.1.1.1.4.2 yamt
2216 1.1.1.1.4.2 yamt static __inline vec_double2 spu_splats(double a)
2217 1.1.1.1.4.2 yamt {
2218 1.1.1.1.4.2 yamt union {
2219 1.1.1.1.4.2 yamt vec_double2 v;
2220 1.1.1.1.4.2 yamt double d[2];
2221 1.1.1.1.4.2 yamt } in;
2222 1.1.1.1.4.2 yamt
2223 1.1.1.1.4.2 yamt in.d[0] = a;
2224 1.1.1.1.4.2 yamt in.d[1] = a;
2225 1.1.1.1.4.2 yamt return (in.v);
2226 1.1.1.1.4.2 yamt }
2227 1.1.1.1.4.2 yamt
2228 1.1.1.1.4.2 yamt
2229 1.1.1.1.4.2 yamt /* spu_stop
2230 1.1.1.1.4.2 yamt * ========
2231 1.1.1.1.4.2 yamt */
2232 1.1.1.1.4.2 yamt #define spu_stop(_type) si_stop(_type)
2233 1.1.1.1.4.2 yamt
2234 1.1.1.1.4.2 yamt
2235 1.1.1.1.4.2 yamt /* spu_sub
2236 1.1.1.1.4.2 yamt * =======
2237 1.1.1.1.4.2 yamt */
2238 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_sub(vec_ushort8 a, vec_ushort8 b)
2239 1.1.1.1.4.2 yamt {
2240 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_sfh((qword)(b), (qword)(a))));
2241 1.1.1.1.4.2 yamt }
2242 1.1.1.1.4.2 yamt
2243 1.1.1.1.4.2 yamt static __inline vec_short8 spu_sub(vec_short8 a, vec_short8 b)
2244 1.1.1.1.4.2 yamt {
2245 1.1.1.1.4.2 yamt return ((vec_short8)(si_sfh((qword)(b), (qword)(a))));
2246 1.1.1.1.4.2 yamt }
2247 1.1.1.1.4.2 yamt
2248 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_sub(vec_uint4 a, vec_uint4 b)
2249 1.1.1.1.4.2 yamt {
2250 1.1.1.1.4.2 yamt return ((vec_uint4)(si_sf((qword)(b), (qword)(a))));
2251 1.1.1.1.4.2 yamt }
2252 1.1.1.1.4.2 yamt
2253 1.1.1.1.4.2 yamt static __inline vec_int4 spu_sub(vec_int4 a, vec_int4 b)
2254 1.1.1.1.4.2 yamt {
2255 1.1.1.1.4.2 yamt return ((vec_int4)(si_sf((qword)(b), (qword)(a))));
2256 1.1.1.1.4.2 yamt }
2257 1.1.1.1.4.2 yamt
2258 1.1.1.1.4.2 yamt static __inline vec_float4 spu_sub(vec_float4 a, vec_float4 b)
2259 1.1.1.1.4.2 yamt {
2260 1.1.1.1.4.2 yamt return ((vec_float4)(si_fs((qword)(a), (qword)(b))));
2261 1.1.1.1.4.2 yamt }
2262 1.1.1.1.4.2 yamt
2263 1.1.1.1.4.2 yamt static __inline vec_double2 spu_sub(vec_double2 a, vec_double2 b)
2264 1.1.1.1.4.2 yamt {
2265 1.1.1.1.4.2 yamt return ((vec_double2)(si_dfs((qword)(a), (qword)(b))));
2266 1.1.1.1.4.2 yamt }
2267 1.1.1.1.4.2 yamt
2268 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_sub(unsigned int a, vec_uint4 b)
2269 1.1.1.1.4.2 yamt {
2270 1.1.1.1.4.2 yamt return ((vec_uint4)(si_sfi((qword)b, (int)a)));
2271 1.1.1.1.4.2 yamt }
2272 1.1.1.1.4.2 yamt
2273 1.1.1.1.4.2 yamt static __inline vec_int4 spu_sub(signed int a, vec_int4 b)
2274 1.1.1.1.4.2 yamt {
2275 1.1.1.1.4.2 yamt return ((vec_int4)(si_sfi((qword)b, (int)a)));
2276 1.1.1.1.4.2 yamt }
2277 1.1.1.1.4.2 yamt
2278 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_sub(unsigned short a, vec_ushort8 b)
2279 1.1.1.1.4.2 yamt {
2280 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_sfhi((qword)b, (short)a)));
2281 1.1.1.1.4.2 yamt }
2282 1.1.1.1.4.2 yamt
2283 1.1.1.1.4.2 yamt static __inline vec_short8 spu_sub(signed short a, vec_short8 b)
2284 1.1.1.1.4.2 yamt {
2285 1.1.1.1.4.2 yamt return ((vec_short8)(si_sfhi((qword)b, (short)a)));
2286 1.1.1.1.4.2 yamt }
2287 1.1.1.1.4.2 yamt
2288 1.1.1.1.4.2 yamt /* spu_subx
2289 1.1.1.1.4.2 yamt * ========
2290 1.1.1.1.4.2 yamt */
2291 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_subx(vec_uint4 a, vec_uint4 b, vec_uint4 c)
2292 1.1.1.1.4.2 yamt {
2293 1.1.1.1.4.2 yamt return ((vec_uint4)(si_sfx((qword)(b), (qword)(a), (qword)(c))));
2294 1.1.1.1.4.2 yamt }
2295 1.1.1.1.4.2 yamt
2296 1.1.1.1.4.2 yamt static __inline vec_int4 spu_subx(vec_int4 a, vec_int4 b, vec_int4 c)
2297 1.1.1.1.4.2 yamt {
2298 1.1.1.1.4.2 yamt return ((vec_int4)(si_sfx((qword)(b), (qword)(a), (qword)(c))));
2299 1.1.1.1.4.2 yamt }
2300 1.1.1.1.4.2 yamt
2301 1.1.1.1.4.2 yamt /* spu_sumb
2302 1.1.1.1.4.2 yamt * ========
2303 1.1.1.1.4.2 yamt */
2304 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_sumb(vec_uchar16 a, vec_uchar16 b)
2305 1.1.1.1.4.2 yamt {
2306 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_sumb((qword)(a), (qword)(b))));
2307 1.1.1.1.4.2 yamt }
2308 1.1.1.1.4.2 yamt
2309 1.1.1.1.4.2 yamt
2310 1.1.1.1.4.2 yamt /* spu_sync
2311 1.1.1.1.4.2 yamt * spu_sync_c
2312 1.1.1.1.4.2 yamt * ========
2313 1.1.1.1.4.2 yamt */
2314 1.1.1.1.4.2 yamt #define spu_sync() /* do nothing */
2315 1.1.1.1.4.2 yamt
2316 1.1.1.1.4.2 yamt #define spu_sync_c() /* do nothing */
2317 1.1.1.1.4.2 yamt
2318 1.1.1.1.4.2 yamt
2319 1.1.1.1.4.2 yamt /* spu_writech
2320 1.1.1.1.4.2 yamt * ===========
2321 1.1.1.1.4.2 yamt */
2322 1.1.1.1.4.2 yamt #define spu_writech(_channel, _a) /* not mappable */
2323 1.1.1.1.4.2 yamt
2324 1.1.1.1.4.2 yamt /* spu_writechqw
2325 1.1.1.1.4.2 yamt * =============
2326 1.1.1.1.4.2 yamt */
2327 1.1.1.1.4.2 yamt #define spu_writechqw(_channel, _a) /* not mappable */
2328 1.1.1.1.4.2 yamt
2329 1.1.1.1.4.2 yamt
2330 1.1.1.1.4.2 yamt /* spu_xor
2331 1.1.1.1.4.2 yamt * =======
2332 1.1.1.1.4.2 yamt */
2333 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_xor(vec_uchar16 a, vec_uchar16 b)
2334 1.1.1.1.4.2 yamt {
2335 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_xor((qword)(a), (qword)(b))));
2336 1.1.1.1.4.2 yamt }
2337 1.1.1.1.4.2 yamt
2338 1.1.1.1.4.2 yamt static __inline vec_char16 spu_xor(vec_char16 a, vec_char16 b)
2339 1.1.1.1.4.2 yamt {
2340 1.1.1.1.4.2 yamt return ((vec_char16)(si_xor((qword)(a), (qword)(b))));
2341 1.1.1.1.4.2 yamt }
2342 1.1.1.1.4.2 yamt
2343 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_xor(vec_ushort8 a, vec_ushort8 b)
2344 1.1.1.1.4.2 yamt {
2345 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_xor((qword)(a), (qword)(b))));
2346 1.1.1.1.4.2 yamt }
2347 1.1.1.1.4.2 yamt
2348 1.1.1.1.4.2 yamt static __inline vec_short8 spu_xor(vec_short8 a, vec_short8 b)
2349 1.1.1.1.4.2 yamt {
2350 1.1.1.1.4.2 yamt return ((vec_short8)(si_xor((qword)(a), (qword)(b))));
2351 1.1.1.1.4.2 yamt }
2352 1.1.1.1.4.2 yamt
2353 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_xor(vec_uint4 a, vec_uint4 b)
2354 1.1.1.1.4.2 yamt {
2355 1.1.1.1.4.2 yamt return ((vec_uint4)(si_xor((qword)(a), (qword)(b))));
2356 1.1.1.1.4.2 yamt }
2357 1.1.1.1.4.2 yamt
2358 1.1.1.1.4.2 yamt static __inline vec_int4 spu_xor(vec_int4 a, vec_int4 b)
2359 1.1.1.1.4.2 yamt {
2360 1.1.1.1.4.2 yamt return ((vec_int4)(si_xor((qword)(a), (qword)(b))));
2361 1.1.1.1.4.2 yamt }
2362 1.1.1.1.4.2 yamt
2363 1.1.1.1.4.2 yamt static __inline vec_float4 spu_xor(vec_float4 a, vec_float4 b)
2364 1.1.1.1.4.2 yamt {
2365 1.1.1.1.4.2 yamt return ((vec_float4)(si_xor((qword)(a), (qword)(b))));
2366 1.1.1.1.4.2 yamt }
2367 1.1.1.1.4.2 yamt
2368 1.1.1.1.4.2 yamt static __inline vec_ullong2 spu_xor(vec_ullong2 a, vec_ullong2 b)
2369 1.1.1.1.4.2 yamt {
2370 1.1.1.1.4.2 yamt return ((vec_ullong2)(si_xor((qword)(a), (qword)(b))));
2371 1.1.1.1.4.2 yamt }
2372 1.1.1.1.4.2 yamt
2373 1.1.1.1.4.2 yamt static __inline vec_llong2 spu_xor(vec_llong2 a, vec_llong2 b)
2374 1.1.1.1.4.2 yamt {
2375 1.1.1.1.4.2 yamt return ((vec_llong2)(si_xor((qword)(a), (qword)(b))));
2376 1.1.1.1.4.2 yamt }
2377 1.1.1.1.4.2 yamt
2378 1.1.1.1.4.2 yamt static __inline vec_double2 spu_xor(vec_double2 a, vec_double2 b)
2379 1.1.1.1.4.2 yamt {
2380 1.1.1.1.4.2 yamt return ((vec_double2)(si_xor((qword)(a), (qword)(b))));
2381 1.1.1.1.4.2 yamt }
2382 1.1.1.1.4.2 yamt
2383 1.1.1.1.4.2 yamt static __inline vec_uchar16 spu_xor(vec_uchar16 a, unsigned char b)
2384 1.1.1.1.4.2 yamt {
2385 1.1.1.1.4.2 yamt return ((vec_uchar16)(si_xorbi((qword)(a), b)));
2386 1.1.1.1.4.2 yamt }
2387 1.1.1.1.4.2 yamt
2388 1.1.1.1.4.2 yamt static __inline vec_char16 spu_xor(vec_char16 a, signed char b)
2389 1.1.1.1.4.2 yamt {
2390 1.1.1.1.4.2 yamt return ((vec_char16)(si_xorbi((qword)(a), (unsigned char)(b))));
2391 1.1.1.1.4.2 yamt }
2392 1.1.1.1.4.2 yamt
2393 1.1.1.1.4.2 yamt static __inline vec_ushort8 spu_xor(vec_ushort8 a, unsigned short b)
2394 1.1.1.1.4.2 yamt {
2395 1.1.1.1.4.2 yamt return ((vec_ushort8)(si_xorhi((qword)(a), b)));
2396 1.1.1.1.4.2 yamt }
2397 1.1.1.1.4.2 yamt
2398 1.1.1.1.4.2 yamt static __inline vec_short8 spu_xor(vec_short8 a, signed short b)
2399 1.1.1.1.4.2 yamt {
2400 1.1.1.1.4.2 yamt return ((vec_short8)(si_xorhi((qword)(a), (unsigned short)(b))));
2401 1.1.1.1.4.2 yamt }
2402 1.1.1.1.4.2 yamt
2403 1.1.1.1.4.2 yamt static __inline vec_uint4 spu_xor(vec_uint4 a, unsigned int b)
2404 1.1.1.1.4.2 yamt {
2405 1.1.1.1.4.2 yamt return ((vec_uint4)(si_xori((qword)(a), b)));
2406 1.1.1.1.4.2 yamt }
2407 1.1.1.1.4.2 yamt
2408 1.1.1.1.4.2 yamt static __inline vec_int4 spu_xor(vec_int4 a, signed int b)
2409 1.1.1.1.4.2 yamt {
2410 1.1.1.1.4.2 yamt return ((vec_int4)(si_xori((qword)(a), (unsigned int)(b))));
2411 1.1.1.1.4.2 yamt }
2412 1.1.1.1.4.2 yamt
2413 1.1.1.1.4.2 yamt #endif /* !__SPU__ */
2414 1.1.1.1.4.2 yamt #endif /* __cplusplus */
2415 1.1.1.1.4.2 yamt #endif /* !_SPU2VMX_H_ */
2416