Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
screetsec
GitHub Repository: screetsec/TheFatRat
Path: blob/master/tools/android-sdk/renderscript/clang-include/altivec.h
496 views
1
/*===---- altivec.h - Standard header for type generic math ---------------===*\
2
*
3
* Permission is hereby granted, free of charge, to any person obtaining a copy
4
* of this software and associated documentation files (the "Software"), to deal
5
* in the Software without restriction, including without limitation the rights
6
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
* copies of the Software, and to permit persons to whom the Software is
8
* furnished to do so, subject to the following conditions:
9
*
10
* The above copyright notice and this permission notice shall be included in
11
* all copies or substantial portions of the Software.
12
*
13
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
* THE SOFTWARE.
20
*
21
\*===----------------------------------------------------------------------===*/
22
23
#ifndef __ALTIVEC_H
24
#define __ALTIVEC_H
25
26
#ifndef __ALTIVEC__
27
#error "AltiVec support not enabled"
28
#endif
29
30
/* Constants for mapping CR6 bits to predicate result. */
31
32
#define __CR6_EQ 0
33
#define __CR6_EQ_REV 1
34
#define __CR6_LT 2
35
#define __CR6_LT_REV 3
36
37
#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
38
39
static __inline__ vector signed char __ATTRS_o_ai vec_perm(
40
vector signed char __a, vector signed char __b, vector unsigned char __c);
41
42
static __inline__ vector unsigned char __ATTRS_o_ai
43
vec_perm(vector unsigned char __a, vector unsigned char __b,
44
vector unsigned char __c);
45
46
static __inline__ vector bool char __ATTRS_o_ai
47
vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
48
49
static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
50
vector signed short __b,
51
vector unsigned char __c);
52
53
static __inline__ vector unsigned short __ATTRS_o_ai
54
vec_perm(vector unsigned short __a, vector unsigned short __b,
55
vector unsigned char __c);
56
57
static __inline__ vector bool short __ATTRS_o_ai vec_perm(
58
vector bool short __a, vector bool short __b, vector unsigned char __c);
59
60
static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
61
vector pixel __b,
62
vector unsigned char __c);
63
64
static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
65
vector signed int __b,
66
vector unsigned char __c);
67
68
static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
69
vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
70
71
static __inline__ vector bool int __ATTRS_o_ai
72
vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
73
74
static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
75
vector float __b,
76
vector unsigned char __c);
77
78
#ifdef __VSX__
79
static __inline__ vector long long __ATTRS_o_ai
80
vec_perm(vector signed long long __a, vector signed long long __b,
81
vector unsigned char __c);
82
83
static __inline__ vector unsigned long long __ATTRS_o_ai
84
vec_perm(vector unsigned long long __a, vector unsigned long long __b,
85
vector unsigned char __c);
86
87
static __inline__ vector bool long long __ATTRS_o_ai
88
vec_perm(vector bool long long __a, vector bool long long __b,
89
vector unsigned char __c);
90
91
static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
92
vector double __b,
93
vector unsigned char __c);
94
#endif
95
96
static __inline__ vector unsigned char __ATTRS_o_ai
97
vec_xor(vector unsigned char __a, vector unsigned char __b);
98
99
/* vec_abs */
100
101
#define __builtin_altivec_abs_v16qi vec_abs
102
#define __builtin_altivec_abs_v8hi vec_abs
103
#define __builtin_altivec_abs_v4si vec_abs
104
105
static __inline__ vector signed char __ATTRS_o_ai
106
vec_abs(vector signed char __a) {
107
return __builtin_altivec_vmaxsb(__a, -__a);
108
}
109
110
static __inline__ vector signed short __ATTRS_o_ai
111
vec_abs(vector signed short __a) {
112
return __builtin_altivec_vmaxsh(__a, -__a);
113
}
114
115
static __inline__ vector signed int __ATTRS_o_ai
116
vec_abs(vector signed int __a) {
117
return __builtin_altivec_vmaxsw(__a, -__a);
118
}
119
120
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
121
static __inline__ vector signed long long __ATTRS_o_ai
122
vec_abs(vector signed long long __a) {
123
return __builtin_altivec_vmaxsd(__a, -__a);
124
}
125
#endif
126
127
static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
128
#ifdef __VSX__
129
return __builtin_vsx_xvabssp(__a);
130
#else
131
vector unsigned int __res =
132
(vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
133
return (vector float)__res;
134
#endif
135
}
136
137
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
138
static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
139
return __builtin_vsx_xvabsdp(__a);
140
}
141
#endif
142
143
/* vec_abss */
144
#define __builtin_altivec_abss_v16qi vec_abss
145
#define __builtin_altivec_abss_v8hi vec_abss
146
#define __builtin_altivec_abss_v4si vec_abss
147
148
static __inline__ vector signed char __ATTRS_o_ai
149
vec_abss(vector signed char __a) {
150
return __builtin_altivec_vmaxsb(
151
__a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
152
}
153
154
static __inline__ vector signed short __ATTRS_o_ai
155
vec_abss(vector signed short __a) {
156
return __builtin_altivec_vmaxsh(
157
__a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
158
}
159
160
static __inline__ vector signed int __ATTRS_o_ai
161
vec_abss(vector signed int __a) {
162
return __builtin_altivec_vmaxsw(
163
__a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
164
}
165
166
/* vec_add */
167
168
static __inline__ vector signed char __ATTRS_o_ai
169
vec_add(vector signed char __a, vector signed char __b) {
170
return __a + __b;
171
}
172
173
static __inline__ vector signed char __ATTRS_o_ai
174
vec_add(vector bool char __a, vector signed char __b) {
175
return (vector signed char)__a + __b;
176
}
177
178
static __inline__ vector signed char __ATTRS_o_ai
179
vec_add(vector signed char __a, vector bool char __b) {
180
return __a + (vector signed char)__b;
181
}
182
183
static __inline__ vector unsigned char __ATTRS_o_ai
184
vec_add(vector unsigned char __a, vector unsigned char __b) {
185
return __a + __b;
186
}
187
188
static __inline__ vector unsigned char __ATTRS_o_ai
189
vec_add(vector bool char __a, vector unsigned char __b) {
190
return (vector unsigned char)__a + __b;
191
}
192
193
static __inline__ vector unsigned char __ATTRS_o_ai
194
vec_add(vector unsigned char __a, vector bool char __b) {
195
return __a + (vector unsigned char)__b;
196
}
197
198
static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
199
vector short __b) {
200
return __a + __b;
201
}
202
203
static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
204
vector short __b) {
205
return (vector short)__a + __b;
206
}
207
208
static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
209
vector bool short __b) {
210
return __a + (vector short)__b;
211
}
212
213
static __inline__ vector unsigned short __ATTRS_o_ai
214
vec_add(vector unsigned short __a, vector unsigned short __b) {
215
return __a + __b;
216
}
217
218
static __inline__ vector unsigned short __ATTRS_o_ai
219
vec_add(vector bool short __a, vector unsigned short __b) {
220
return (vector unsigned short)__a + __b;
221
}
222
223
static __inline__ vector unsigned short __ATTRS_o_ai
224
vec_add(vector unsigned short __a, vector bool short __b) {
225
return __a + (vector unsigned short)__b;
226
}
227
228
static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
229
vector int __b) {
230
return __a + __b;
231
}
232
233
static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
234
vector int __b) {
235
return (vector int)__a + __b;
236
}
237
238
static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
239
vector bool int __b) {
240
return __a + (vector int)__b;
241
}
242
243
static __inline__ vector unsigned int __ATTRS_o_ai
244
vec_add(vector unsigned int __a, vector unsigned int __b) {
245
return __a + __b;
246
}
247
248
static __inline__ vector unsigned int __ATTRS_o_ai
249
vec_add(vector bool int __a, vector unsigned int __b) {
250
return (vector unsigned int)__a + __b;
251
}
252
253
static __inline__ vector unsigned int __ATTRS_o_ai
254
vec_add(vector unsigned int __a, vector bool int __b) {
255
return __a + (vector unsigned int)__b;
256
}
257
258
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
259
static __inline__ vector signed long long __ATTRS_o_ai
260
vec_add(vector signed long long __a, vector signed long long __b) {
261
return __a + __b;
262
}
263
264
static __inline__ vector unsigned long long __ATTRS_o_ai
265
vec_add(vector unsigned long long __a, vector unsigned long long __b) {
266
return __a + __b;
267
}
268
269
static __inline__ vector signed __int128 __ATTRS_o_ai
270
vec_add(vector signed __int128 __a, vector signed __int128 __b) {
271
return __a + __b;
272
}
273
274
static __inline__ vector unsigned __int128 __ATTRS_o_ai
275
vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
276
return __a + __b;
277
}
278
#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
279
280
static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
281
vector float __b) {
282
return __a + __b;
283
}
284
285
#ifdef __VSX__
286
static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
287
vector double __b) {
288
return __a + __b;
289
}
290
#endif // __VSX__
291
292
/* vec_adde */
293
294
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
295
static __inline__ vector signed __int128 __ATTRS_o_ai
296
vec_adde(vector signed __int128 __a, vector signed __int128 __b,
297
vector signed __int128 __c) {
298
return __builtin_altivec_vaddeuqm(__a, __b, __c);
299
}
300
301
static __inline__ vector unsigned __int128 __ATTRS_o_ai
302
vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
303
vector unsigned __int128 __c) {
304
return __builtin_altivec_vaddeuqm(__a, __b, __c);
305
}
306
#endif
307
308
/* vec_addec */
309
310
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
311
static __inline__ vector signed __int128 __ATTRS_o_ai
312
vec_addec(vector signed __int128 __a, vector signed __int128 __b,
313
vector signed __int128 __c) {
314
return __builtin_altivec_vaddecuq(__a, __b, __c);
315
}
316
317
static __inline__ vector unsigned __int128 __ATTRS_o_ai
318
vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
319
vector unsigned __int128 __c) {
320
return __builtin_altivec_vaddecuq(__a, __b, __c);
321
}
322
#endif
323
324
/* vec_vaddubm */
325
326
#define __builtin_altivec_vaddubm vec_vaddubm
327
328
static __inline__ vector signed char __ATTRS_o_ai
329
vec_vaddubm(vector signed char __a, vector signed char __b) {
330
return __a + __b;
331
}
332
333
static __inline__ vector signed char __ATTRS_o_ai
334
vec_vaddubm(vector bool char __a, vector signed char __b) {
335
return (vector signed char)__a + __b;
336
}
337
338
static __inline__ vector signed char __ATTRS_o_ai
339
vec_vaddubm(vector signed char __a, vector bool char __b) {
340
return __a + (vector signed char)__b;
341
}
342
343
static __inline__ vector unsigned char __ATTRS_o_ai
344
vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
345
return __a + __b;
346
}
347
348
static __inline__ vector unsigned char __ATTRS_o_ai
349
vec_vaddubm(vector bool char __a, vector unsigned char __b) {
350
return (vector unsigned char)__a + __b;
351
}
352
353
static __inline__ vector unsigned char __ATTRS_o_ai
354
vec_vaddubm(vector unsigned char __a, vector bool char __b) {
355
return __a + (vector unsigned char)__b;
356
}
357
358
/* vec_vadduhm */
359
360
#define __builtin_altivec_vadduhm vec_vadduhm
361
362
static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
363
vector short __b) {
364
return __a + __b;
365
}
366
367
static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
368
vector short __b) {
369
return (vector short)__a + __b;
370
}
371
372
static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
373
vector bool short __b) {
374
return __a + (vector short)__b;
375
}
376
377
static __inline__ vector unsigned short __ATTRS_o_ai
378
vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
379
return __a + __b;
380
}
381
382
static __inline__ vector unsigned short __ATTRS_o_ai
383
vec_vadduhm(vector bool short __a, vector unsigned short __b) {
384
return (vector unsigned short)__a + __b;
385
}
386
387
static __inline__ vector unsigned short __ATTRS_o_ai
388
vec_vadduhm(vector unsigned short __a, vector bool short __b) {
389
return __a + (vector unsigned short)__b;
390
}
391
392
/* vec_vadduwm */
393
394
#define __builtin_altivec_vadduwm vec_vadduwm
395
396
static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
397
vector int __b) {
398
return __a + __b;
399
}
400
401
static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
402
vector int __b) {
403
return (vector int)__a + __b;
404
}
405
406
static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
407
vector bool int __b) {
408
return __a + (vector int)__b;
409
}
410
411
static __inline__ vector unsigned int __ATTRS_o_ai
412
vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
413
return __a + __b;
414
}
415
416
static __inline__ vector unsigned int __ATTRS_o_ai
417
vec_vadduwm(vector bool int __a, vector unsigned int __b) {
418
return (vector unsigned int)__a + __b;
419
}
420
421
static __inline__ vector unsigned int __ATTRS_o_ai
422
vec_vadduwm(vector unsigned int __a, vector bool int __b) {
423
return __a + (vector unsigned int)__b;
424
}
425
426
/* vec_vaddfp */
427
428
#define __builtin_altivec_vaddfp vec_vaddfp
429
430
static __inline__ vector float __attribute__((__always_inline__))
431
vec_vaddfp(vector float __a, vector float __b) {
432
return __a + __b;
433
}
434
435
/* vec_addc */
436
437
static __inline__ vector signed int __ATTRS_o_ai
438
vec_addc(vector signed int __a, vector signed int __b) {
439
return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
440
(vector unsigned int)__b);
441
}
442
443
static __inline__ vector unsigned int __ATTRS_o_ai
444
vec_addc(vector unsigned int __a, vector unsigned int __b) {
445
return __builtin_altivec_vaddcuw(__a, __b);
446
}
447
448
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
449
static __inline__ vector signed __int128 __ATTRS_o_ai
450
vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
451
return (vector signed __int128)__builtin_altivec_vaddcuq(
452
(vector unsigned __int128)__a, (vector unsigned __int128)__b);
453
}
454
455
static __inline__ vector unsigned __int128 __ATTRS_o_ai
456
vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
457
return __builtin_altivec_vaddcuq(__a, __b);
458
}
459
#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
460
461
/* vec_vaddcuw */
462
463
static __inline__ vector unsigned int __attribute__((__always_inline__))
464
vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
465
return __builtin_altivec_vaddcuw(__a, __b);
466
}
467
468
/* vec_adds */
469
470
static __inline__ vector signed char __ATTRS_o_ai
471
vec_adds(vector signed char __a, vector signed char __b) {
472
return __builtin_altivec_vaddsbs(__a, __b);
473
}
474
475
static __inline__ vector signed char __ATTRS_o_ai
476
vec_adds(vector bool char __a, vector signed char __b) {
477
return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
478
}
479
480
static __inline__ vector signed char __ATTRS_o_ai
481
vec_adds(vector signed char __a, vector bool char __b) {
482
return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
483
}
484
485
static __inline__ vector unsigned char __ATTRS_o_ai
486
vec_adds(vector unsigned char __a, vector unsigned char __b) {
487
return __builtin_altivec_vaddubs(__a, __b);
488
}
489
490
static __inline__ vector unsigned char __ATTRS_o_ai
491
vec_adds(vector bool char __a, vector unsigned char __b) {
492
return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
493
}
494
495
static __inline__ vector unsigned char __ATTRS_o_ai
496
vec_adds(vector unsigned char __a, vector bool char __b) {
497
return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
498
}
499
500
static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
501
vector short __b) {
502
return __builtin_altivec_vaddshs(__a, __b);
503
}
504
505
static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
506
vector short __b) {
507
return __builtin_altivec_vaddshs((vector short)__a, __b);
508
}
509
510
static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
511
vector bool short __b) {
512
return __builtin_altivec_vaddshs(__a, (vector short)__b);
513
}
514
515
static __inline__ vector unsigned short __ATTRS_o_ai
516
vec_adds(vector unsigned short __a, vector unsigned short __b) {
517
return __builtin_altivec_vadduhs(__a, __b);
518
}
519
520
static __inline__ vector unsigned short __ATTRS_o_ai
521
vec_adds(vector bool short __a, vector unsigned short __b) {
522
return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
523
}
524
525
static __inline__ vector unsigned short __ATTRS_o_ai
526
vec_adds(vector unsigned short __a, vector bool short __b) {
527
return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
528
}
529
530
static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
531
vector int __b) {
532
return __builtin_altivec_vaddsws(__a, __b);
533
}
534
535
static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
536
vector int __b) {
537
return __builtin_altivec_vaddsws((vector int)__a, __b);
538
}
539
540
static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
541
vector bool int __b) {
542
return __builtin_altivec_vaddsws(__a, (vector int)__b);
543
}
544
545
static __inline__ vector unsigned int __ATTRS_o_ai
546
vec_adds(vector unsigned int __a, vector unsigned int __b) {
547
return __builtin_altivec_vadduws(__a, __b);
548
}
549
550
static __inline__ vector unsigned int __ATTRS_o_ai
551
vec_adds(vector bool int __a, vector unsigned int __b) {
552
return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
553
}
554
555
static __inline__ vector unsigned int __ATTRS_o_ai
556
vec_adds(vector unsigned int __a, vector bool int __b) {
557
return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
558
}
559
560
/* vec_vaddsbs */
561
562
static __inline__ vector signed char __ATTRS_o_ai
563
vec_vaddsbs(vector signed char __a, vector signed char __b) {
564
return __builtin_altivec_vaddsbs(__a, __b);
565
}
566
567
static __inline__ vector signed char __ATTRS_o_ai
568
vec_vaddsbs(vector bool char __a, vector signed char __b) {
569
return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
570
}
571
572
static __inline__ vector signed char __ATTRS_o_ai
573
vec_vaddsbs(vector signed char __a, vector bool char __b) {
574
return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
575
}
576
577
/* vec_vaddubs */
578
579
static __inline__ vector unsigned char __ATTRS_o_ai
580
vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
581
return __builtin_altivec_vaddubs(__a, __b);
582
}
583
584
static __inline__ vector unsigned char __ATTRS_o_ai
585
vec_vaddubs(vector bool char __a, vector unsigned char __b) {
586
return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
587
}
588
589
static __inline__ vector unsigned char __ATTRS_o_ai
590
vec_vaddubs(vector unsigned char __a, vector bool char __b) {
591
return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
592
}
593
594
/* vec_vaddshs */
595
596
static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
597
vector short __b) {
598
return __builtin_altivec_vaddshs(__a, __b);
599
}
600
601
static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
602
vector short __b) {
603
return __builtin_altivec_vaddshs((vector short)__a, __b);
604
}
605
606
static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
607
vector bool short __b) {
608
return __builtin_altivec_vaddshs(__a, (vector short)__b);
609
}
610
611
/* vec_vadduhs */
612
613
static __inline__ vector unsigned short __ATTRS_o_ai
614
vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
615
return __builtin_altivec_vadduhs(__a, __b);
616
}
617
618
static __inline__ vector unsigned short __ATTRS_o_ai
619
vec_vadduhs(vector bool short __a, vector unsigned short __b) {
620
return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
621
}
622
623
static __inline__ vector unsigned short __ATTRS_o_ai
624
vec_vadduhs(vector unsigned short __a, vector bool short __b) {
625
return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
626
}
627
628
/* vec_vaddsws */
629
630
static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
631
vector int __b) {
632
return __builtin_altivec_vaddsws(__a, __b);
633
}
634
635
static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
636
vector int __b) {
637
return __builtin_altivec_vaddsws((vector int)__a, __b);
638
}
639
640
static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
641
vector bool int __b) {
642
return __builtin_altivec_vaddsws(__a, (vector int)__b);
643
}
644
645
/* vec_vadduws */
646
647
static __inline__ vector unsigned int __ATTRS_o_ai
648
vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
649
return __builtin_altivec_vadduws(__a, __b);
650
}
651
652
static __inline__ vector unsigned int __ATTRS_o_ai
653
vec_vadduws(vector bool int __a, vector unsigned int __b) {
654
return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
655
}
656
657
static __inline__ vector unsigned int __ATTRS_o_ai
658
vec_vadduws(vector unsigned int __a, vector bool int __b) {
659
return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
660
}
661
662
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
663
/* vec_vadduqm */
664
665
static __inline__ vector signed __int128 __ATTRS_o_ai
666
vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
667
return __a + __b;
668
}
669
670
static __inline__ vector unsigned __int128 __ATTRS_o_ai
671
vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
672
return __a + __b;
673
}
674
675
/* vec_vaddeuqm */
676
677
static __inline__ vector signed __int128 __ATTRS_o_ai
678
vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
679
vector signed __int128 __c) {
680
return __builtin_altivec_vaddeuqm(__a, __b, __c);
681
}
682
683
static __inline__ vector unsigned __int128 __ATTRS_o_ai
684
vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
685
vector unsigned __int128 __c) {
686
return __builtin_altivec_vaddeuqm(__a, __b, __c);
687
}
688
689
/* vec_vaddcuq */
690
691
static __inline__ vector signed __int128 __ATTRS_o_ai
692
vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
693
return __builtin_altivec_vaddcuq(__a, __b);
694
}
695
696
static __inline__ vector unsigned __int128 __ATTRS_o_ai
697
vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
698
return __builtin_altivec_vaddcuq(__a, __b);
699
}
700
701
/* vec_vaddecuq */
702
703
static __inline__ vector signed __int128 __ATTRS_o_ai
704
vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
705
vector signed __int128 __c) {
706
return __builtin_altivec_vaddecuq(__a, __b, __c);
707
}
708
709
static __inline__ vector unsigned __int128 __ATTRS_o_ai
710
vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
711
vector unsigned __int128 __c) {
712
return __builtin_altivec_vaddecuq(__a, __b, __c);
713
}
714
#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
715
716
/* vec_and */
717
718
#define __builtin_altivec_vand vec_and
719
720
static __inline__ vector signed char __ATTRS_o_ai
721
vec_and(vector signed char __a, vector signed char __b) {
722
return __a & __b;
723
}
724
725
static __inline__ vector signed char __ATTRS_o_ai
726
vec_and(vector bool char __a, vector signed char __b) {
727
return (vector signed char)__a & __b;
728
}
729
730
static __inline__ vector signed char __ATTRS_o_ai
731
vec_and(vector signed char __a, vector bool char __b) {
732
return __a & (vector signed char)__b;
733
}
734
735
static __inline__ vector unsigned char __ATTRS_o_ai
736
vec_and(vector unsigned char __a, vector unsigned char __b) {
737
return __a & __b;
738
}
739
740
static __inline__ vector unsigned char __ATTRS_o_ai
741
vec_and(vector bool char __a, vector unsigned char __b) {
742
return (vector unsigned char)__a & __b;
743
}
744
745
static __inline__ vector unsigned char __ATTRS_o_ai
746
vec_and(vector unsigned char __a, vector bool char __b) {
747
return __a & (vector unsigned char)__b;
748
}
749
750
static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
751
vector bool char __b) {
752
return __a & __b;
753
}
754
755
static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
756
vector short __b) {
757
return __a & __b;
758
}
759
760
static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
761
vector short __b) {
762
return (vector short)__a & __b;
763
}
764
765
static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
766
vector bool short __b) {
767
return __a & (vector short)__b;
768
}
769
770
static __inline__ vector unsigned short __ATTRS_o_ai
771
vec_and(vector unsigned short __a, vector unsigned short __b) {
772
return __a & __b;
773
}
774
775
static __inline__ vector unsigned short __ATTRS_o_ai
776
vec_and(vector bool short __a, vector unsigned short __b) {
777
return (vector unsigned short)__a & __b;
778
}
779
780
static __inline__ vector unsigned short __ATTRS_o_ai
781
vec_and(vector unsigned short __a, vector bool short __b) {
782
return __a & (vector unsigned short)__b;
783
}
784
785
static __inline__ vector bool short __ATTRS_o_ai
786
vec_and(vector bool short __a, vector bool short __b) {
787
return __a & __b;
788
}
789
790
static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
791
vector int __b) {
792
return __a & __b;
793
}
794
795
static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
796
vector int __b) {
797
return (vector int)__a & __b;
798
}
799
800
static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
801
vector bool int __b) {
802
return __a & (vector int)__b;
803
}
804
805
static __inline__ vector unsigned int __ATTRS_o_ai
806
vec_and(vector unsigned int __a, vector unsigned int __b) {
807
return __a & __b;
808
}
809
810
static __inline__ vector unsigned int __ATTRS_o_ai
811
vec_and(vector bool int __a, vector unsigned int __b) {
812
return (vector unsigned int)__a & __b;
813
}
814
815
static __inline__ vector unsigned int __ATTRS_o_ai
816
vec_and(vector unsigned int __a, vector bool int __b) {
817
return __a & (vector unsigned int)__b;
818
}
819
820
static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
821
vector bool int __b) {
822
return __a & __b;
823
}
824
825
static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
826
vector float __b) {
827
vector unsigned int __res =
828
(vector unsigned int)__a & (vector unsigned int)__b;
829
return (vector float)__res;
830
}
831
832
static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
833
vector float __b) {
834
vector unsigned int __res =
835
(vector unsigned int)__a & (vector unsigned int)__b;
836
return (vector float)__res;
837
}
838
839
static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
840
vector bool int __b) {
841
vector unsigned int __res =
842
(vector unsigned int)__a & (vector unsigned int)__b;
843
return (vector float)__res;
844
}
845
846
#ifdef __VSX__
847
static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __a,
848
vector double __b) {
849
vector unsigned long long __res =
850
(vector unsigned long long)__a & (vector unsigned long long)__b;
851
return (vector double)__res;
852
}
853
854
static __inline__ vector double __ATTRS_o_ai
855
vec_and(vector double __a, vector bool long long __b) {
856
vector unsigned long long __res =
857
(vector unsigned long long)__a & (vector unsigned long long)__b;
858
return (vector double)__res;
859
}
860
861
static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
862
vector double __b) {
863
vector unsigned long long __res =
864
(vector unsigned long long)__a & (vector unsigned long long)__b;
865
return (vector double)__res;
866
}
867
868
static __inline__ vector signed long long __ATTRS_o_ai
869
vec_and(vector signed long long __a, vector signed long long __b) {
870
return __a & __b;
871
}
872
873
static __inline__ vector signed long long __ATTRS_o_ai
874
vec_and(vector bool long long __a, vector signed long long __b) {
875
return (vector signed long long)__a & __b;
876
}
877
878
static __inline__ vector signed long long __ATTRS_o_ai
879
vec_and(vector signed long long __a, vector bool long long __b) {
880
return __a & (vector signed long long)__b;
881
}
882
883
static __inline__ vector unsigned long long __ATTRS_o_ai
884
vec_and(vector unsigned long long __a, vector unsigned long long __b) {
885
return __a & __b;
886
}
887
888
static __inline__ vector unsigned long long __ATTRS_o_ai
889
vec_and(vector bool long long __a, vector unsigned long long __b) {
890
return (vector unsigned long long)__a & __b;
891
}
892
893
static __inline__ vector unsigned long long __ATTRS_o_ai
894
vec_and(vector unsigned long long __a, vector bool long long __b) {
895
return __a & (vector unsigned long long)__b;
896
}
897
898
static __inline__ vector bool long long __ATTRS_o_ai
899
vec_and(vector bool long long __a, vector bool long long __b) {
900
return __a & __b;
901
}
902
#endif
903
904
/* vec_vand */
905
906
static __inline__ vector signed char __ATTRS_o_ai
907
vec_vand(vector signed char __a, vector signed char __b) {
908
return __a & __b;
909
}
910
911
static __inline__ vector signed char __ATTRS_o_ai
912
vec_vand(vector bool char __a, vector signed char __b) {
913
return (vector signed char)__a & __b;
914
}
915
916
static __inline__ vector signed char __ATTRS_o_ai
917
vec_vand(vector signed char __a, vector bool char __b) {
918
return __a & (vector signed char)__b;
919
}
920
921
static __inline__ vector unsigned char __ATTRS_o_ai
922
vec_vand(vector unsigned char __a, vector unsigned char __b) {
923
return __a & __b;
924
}
925
926
static __inline__ vector unsigned char __ATTRS_o_ai
927
vec_vand(vector bool char __a, vector unsigned char __b) {
928
return (vector unsigned char)__a & __b;
929
}
930
931
static __inline__ vector unsigned char __ATTRS_o_ai
932
vec_vand(vector unsigned char __a, vector bool char __b) {
933
return __a & (vector unsigned char)__b;
934
}
935
936
static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
937
vector bool char __b) {
938
return __a & __b;
939
}
940
941
static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
942
vector short __b) {
943
return __a & __b;
944
}
945
946
static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
947
vector short __b) {
948
return (vector short)__a & __b;
949
}
950
951
static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
952
vector bool short __b) {
953
return __a & (vector short)__b;
954
}
955
956
static __inline__ vector unsigned short __ATTRS_o_ai
957
vec_vand(vector unsigned short __a, vector unsigned short __b) {
958
return __a & __b;
959
}
960
961
static __inline__ vector unsigned short __ATTRS_o_ai
962
vec_vand(vector bool short __a, vector unsigned short __b) {
963
return (vector unsigned short)__a & __b;
964
}
965
966
static __inline__ vector unsigned short __ATTRS_o_ai
967
vec_vand(vector unsigned short __a, vector bool short __b) {
968
return __a & (vector unsigned short)__b;
969
}
970
971
static __inline__ vector bool short __ATTRS_o_ai
972
vec_vand(vector bool short __a, vector bool short __b) {
973
return __a & __b;
974
}
975
976
static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
977
vector int __b) {
978
return __a & __b;
979
}
980
981
static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
982
vector int __b) {
983
return (vector int)__a & __b;
984
}
985
986
static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
987
vector bool int __b) {
988
return __a & (vector int)__b;
989
}
990
991
static __inline__ vector unsigned int __ATTRS_o_ai
992
vec_vand(vector unsigned int __a, vector unsigned int __b) {
993
return __a & __b;
994
}
995
996
static __inline__ vector unsigned int __ATTRS_o_ai
997
vec_vand(vector bool int __a, vector unsigned int __b) {
998
return (vector unsigned int)__a & __b;
999
}
1000
1001
static __inline__ vector unsigned int __ATTRS_o_ai
1002
vec_vand(vector unsigned int __a, vector bool int __b) {
1003
return __a & (vector unsigned int)__b;
1004
}
1005
1006
static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
1007
vector bool int __b) {
1008
return __a & __b;
1009
}
1010
1011
static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1012
vector float __b) {
1013
vector unsigned int __res =
1014
(vector unsigned int)__a & (vector unsigned int)__b;
1015
return (vector float)__res;
1016
}
1017
1018
static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
1019
vector float __b) {
1020
vector unsigned int __res =
1021
(vector unsigned int)__a & (vector unsigned int)__b;
1022
return (vector float)__res;
1023
}
1024
1025
static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1026
vector bool int __b) {
1027
vector unsigned int __res =
1028
(vector unsigned int)__a & (vector unsigned int)__b;
1029
return (vector float)__res;
1030
}
1031
1032
#ifdef __VSX__
1033
static __inline__ vector signed long long __ATTRS_o_ai
1034
vec_vand(vector signed long long __a, vector signed long long __b) {
1035
return __a & __b;
1036
}
1037
1038
static __inline__ vector signed long long __ATTRS_o_ai
1039
vec_vand(vector bool long long __a, vector signed long long __b) {
1040
return (vector signed long long)__a & __b;
1041
}
1042
1043
static __inline__ vector signed long long __ATTRS_o_ai
1044
vec_vand(vector signed long long __a, vector bool long long __b) {
1045
return __a & (vector signed long long)__b;
1046
}
1047
1048
static __inline__ vector unsigned long long __ATTRS_o_ai
1049
vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
1050
return __a & __b;
1051
}
1052
1053
static __inline__ vector unsigned long long __ATTRS_o_ai
1054
vec_vand(vector bool long long __a, vector unsigned long long __b) {
1055
return (vector unsigned long long)__a & __b;
1056
}
1057
1058
static __inline__ vector unsigned long long __ATTRS_o_ai
1059
vec_vand(vector unsigned long long __a, vector bool long long __b) {
1060
return __a & (vector unsigned long long)__b;
1061
}
1062
1063
static __inline__ vector bool long long __ATTRS_o_ai
1064
vec_vand(vector bool long long __a, vector bool long long __b) {
1065
return __a & __b;
1066
}
1067
#endif
1068
1069
/* vec_andc */
1070
1071
#define __builtin_altivec_vandc vec_andc
1072
1073
static __inline__ vector signed char __ATTRS_o_ai
1074
vec_andc(vector signed char __a, vector signed char __b) {
1075
return __a & ~__b;
1076
}
1077
1078
static __inline__ vector signed char __ATTRS_o_ai
1079
vec_andc(vector bool char __a, vector signed char __b) {
1080
return (vector signed char)__a & ~__b;
1081
}
1082
1083
static __inline__ vector signed char __ATTRS_o_ai
1084
vec_andc(vector signed char __a, vector bool char __b) {
1085
return __a & ~(vector signed char)__b;
1086
}
1087
1088
static __inline__ vector unsigned char __ATTRS_o_ai
1089
vec_andc(vector unsigned char __a, vector unsigned char __b) {
1090
return __a & ~__b;
1091
}
1092
1093
static __inline__ vector unsigned char __ATTRS_o_ai
1094
vec_andc(vector bool char __a, vector unsigned char __b) {
1095
return (vector unsigned char)__a & ~__b;
1096
}
1097
1098
static __inline__ vector unsigned char __ATTRS_o_ai
1099
vec_andc(vector unsigned char __a, vector bool char __b) {
1100
return __a & ~(vector unsigned char)__b;
1101
}
1102
1103
static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
1104
vector bool char __b) {
1105
return __a & ~__b;
1106
}
1107
1108
static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1109
vector short __b) {
1110
return __a & ~__b;
1111
}
1112
1113
static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
1114
vector short __b) {
1115
return (vector short)__a & ~__b;
1116
}
1117
1118
static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1119
vector bool short __b) {
1120
return __a & ~(vector short)__b;
1121
}
1122
1123
static __inline__ vector unsigned short __ATTRS_o_ai
1124
vec_andc(vector unsigned short __a, vector unsigned short __b) {
1125
return __a & ~__b;
1126
}
1127
1128
static __inline__ vector unsigned short __ATTRS_o_ai
1129
vec_andc(vector bool short __a, vector unsigned short __b) {
1130
return (vector unsigned short)__a & ~__b;
1131
}
1132
1133
static __inline__ vector unsigned short __ATTRS_o_ai
1134
vec_andc(vector unsigned short __a, vector bool short __b) {
1135
return __a & ~(vector unsigned short)__b;
1136
}
1137
1138
static __inline__ vector bool short __ATTRS_o_ai
1139
vec_andc(vector bool short __a, vector bool short __b) {
1140
return __a & ~__b;
1141
}
1142
1143
static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1144
vector int __b) {
1145
return __a & ~__b;
1146
}
1147
1148
static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
1149
vector int __b) {
1150
return (vector int)__a & ~__b;
1151
}
1152
1153
static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1154
vector bool int __b) {
1155
return __a & ~(vector int)__b;
1156
}
1157
1158
static __inline__ vector unsigned int __ATTRS_o_ai
1159
vec_andc(vector unsigned int __a, vector unsigned int __b) {
1160
return __a & ~__b;
1161
}
1162
1163
static __inline__ vector unsigned int __ATTRS_o_ai
1164
vec_andc(vector bool int __a, vector unsigned int __b) {
1165
return (vector unsigned int)__a & ~__b;
1166
}
1167
1168
static __inline__ vector unsigned int __ATTRS_o_ai
1169
vec_andc(vector unsigned int __a, vector bool int __b) {
1170
return __a & ~(vector unsigned int)__b;
1171
}
1172
1173
static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
1174
vector bool int __b) {
1175
return __a & ~__b;
1176
}
1177
1178
static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1179
vector float __b) {
1180
vector unsigned int __res =
1181
(vector unsigned int)__a & ~(vector unsigned int)__b;
1182
return (vector float)__res;
1183
}
1184
1185
static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
1186
vector float __b) {
1187
vector unsigned int __res =
1188
(vector unsigned int)__a & ~(vector unsigned int)__b;
1189
return (vector float)__res;
1190
}
1191
1192
static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1193
vector bool int __b) {
1194
vector unsigned int __res =
1195
(vector unsigned int)__a & ~(vector unsigned int)__b;
1196
return (vector float)__res;
1197
}
1198
1199
#ifdef __VSX__
1200
static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __a,
1201
vector double __b) {
1202
vector unsigned long long __res =
1203
(vector unsigned long long)__a & ~(vector unsigned long long)__b;
1204
return (vector double)__res;
1205
}
1206
1207
static __inline__ vector double __ATTRS_o_ai
1208
vec_andc(vector double __a, vector bool long long __b) {
1209
vector unsigned long long __res =
1210
(vector unsigned long long)__a & ~(vector unsigned long long)__b;
1211
return (vector double)__res;
1212
}
1213
1214
static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
1215
vector double __b) {
1216
vector unsigned long long __res =
1217
(vector unsigned long long)__a & ~(vector unsigned long long)__b;
1218
return (vector double)__res;
1219
}
1220
1221
static __inline__ vector signed long long __ATTRS_o_ai
1222
vec_andc(vector signed long long __a, vector signed long long __b) {
1223
return __a & ~__b;
1224
}
1225
1226
static __inline__ vector signed long long __ATTRS_o_ai
1227
vec_andc(vector bool long long __a, vector signed long long __b) {
1228
return (vector signed long long)__a & ~__b;
1229
}
1230
1231
static __inline__ vector signed long long __ATTRS_o_ai
1232
vec_andc(vector signed long long __a, vector bool long long __b) {
1233
return __a & ~(vector signed long long)__b;
1234
}
1235
1236
static __inline__ vector unsigned long long __ATTRS_o_ai
1237
vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
1238
return __a & ~__b;
1239
}
1240
1241
static __inline__ vector unsigned long long __ATTRS_o_ai
1242
vec_andc(vector bool long long __a, vector unsigned long long __b) {
1243
return (vector unsigned long long)__a & ~__b;
1244
}
1245
1246
static __inline__ vector unsigned long long __ATTRS_o_ai
1247
vec_andc(vector unsigned long long __a, vector bool long long __b) {
1248
return __a & ~(vector unsigned long long)__b;
1249
}
1250
1251
static __inline__ vector bool long long __ATTRS_o_ai
1252
vec_andc(vector bool long long __a, vector bool long long __b) {
1253
return __a & ~__b;
1254
}
1255
#endif
1256
1257
/* vec_vandc */
1258
1259
static __inline__ vector signed char __ATTRS_o_ai
1260
vec_vandc(vector signed char __a, vector signed char __b) {
1261
return __a & ~__b;
1262
}
1263
1264
static __inline__ vector signed char __ATTRS_o_ai
1265
vec_vandc(vector bool char __a, vector signed char __b) {
1266
return (vector signed char)__a & ~__b;
1267
}
1268
1269
static __inline__ vector signed char __ATTRS_o_ai
1270
vec_vandc(vector signed char __a, vector bool char __b) {
1271
return __a & ~(vector signed char)__b;
1272
}
1273
1274
static __inline__ vector unsigned char __ATTRS_o_ai
1275
vec_vandc(vector unsigned char __a, vector unsigned char __b) {
1276
return __a & ~__b;
1277
}
1278
1279
static __inline__ vector unsigned char __ATTRS_o_ai
1280
vec_vandc(vector bool char __a, vector unsigned char __b) {
1281
return (vector unsigned char)__a & ~__b;
1282
}
1283
1284
static __inline__ vector unsigned char __ATTRS_o_ai
1285
vec_vandc(vector unsigned char __a, vector bool char __b) {
1286
return __a & ~(vector unsigned char)__b;
1287
}
1288
1289
static __inline__ vector bool char __ATTRS_o_ai
1290
vec_vandc(vector bool char __a, vector bool char __b) {
1291
return __a & ~__b;
1292
}
1293
1294
static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1295
vector short __b) {
1296
return __a & ~__b;
1297
}
1298
1299
static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
1300
vector short __b) {
1301
return (vector short)__a & ~__b;
1302
}
1303
1304
static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1305
vector bool short __b) {
1306
return __a & ~(vector short)__b;
1307
}
1308
1309
static __inline__ vector unsigned short __ATTRS_o_ai
1310
vec_vandc(vector unsigned short __a, vector unsigned short __b) {
1311
return __a & ~__b;
1312
}
1313
1314
static __inline__ vector unsigned short __ATTRS_o_ai
1315
vec_vandc(vector bool short __a, vector unsigned short __b) {
1316
return (vector unsigned short)__a & ~__b;
1317
}
1318
1319
static __inline__ vector unsigned short __ATTRS_o_ai
1320
vec_vandc(vector unsigned short __a, vector bool short __b) {
1321
return __a & ~(vector unsigned short)__b;
1322
}
1323
1324
static __inline__ vector bool short __ATTRS_o_ai
1325
vec_vandc(vector bool short __a, vector bool short __b) {
1326
return __a & ~__b;
1327
}
1328
1329
static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1330
vector int __b) {
1331
return __a & ~__b;
1332
}
1333
1334
static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
1335
vector int __b) {
1336
return (vector int)__a & ~__b;
1337
}
1338
1339
static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1340
vector bool int __b) {
1341
return __a & ~(vector int)__b;
1342
}
1343
1344
static __inline__ vector unsigned int __ATTRS_o_ai
1345
vec_vandc(vector unsigned int __a, vector unsigned int __b) {
1346
return __a & ~__b;
1347
}
1348
1349
static __inline__ vector unsigned int __ATTRS_o_ai
1350
vec_vandc(vector bool int __a, vector unsigned int __b) {
1351
return (vector unsigned int)__a & ~__b;
1352
}
1353
1354
static __inline__ vector unsigned int __ATTRS_o_ai
1355
vec_vandc(vector unsigned int __a, vector bool int __b) {
1356
return __a & ~(vector unsigned int)__b;
1357
}
1358
1359
static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
1360
vector bool int __b) {
1361
return __a & ~__b;
1362
}
1363
1364
static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1365
vector float __b) {
1366
vector unsigned int __res =
1367
(vector unsigned int)__a & ~(vector unsigned int)__b;
1368
return (vector float)__res;
1369
}
1370
1371
static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
1372
vector float __b) {
1373
vector unsigned int __res =
1374
(vector unsigned int)__a & ~(vector unsigned int)__b;
1375
return (vector float)__res;
1376
}
1377
1378
static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1379
vector bool int __b) {
1380
vector unsigned int __res =
1381
(vector unsigned int)__a & ~(vector unsigned int)__b;
1382
return (vector float)__res;
1383
}
1384
1385
#ifdef __VSX__
1386
static __inline__ vector signed long long __ATTRS_o_ai
1387
vec_vandc(vector signed long long __a, vector signed long long __b) {
1388
return __a & ~__b;
1389
}
1390
1391
static __inline__ vector signed long long __ATTRS_o_ai
1392
vec_vandc(vector bool long long __a, vector signed long long __b) {
1393
return (vector signed long long)__a & ~__b;
1394
}
1395
1396
static __inline__ vector signed long long __ATTRS_o_ai
1397
vec_vandc(vector signed long long __a, vector bool long long __b) {
1398
return __a & ~(vector signed long long)__b;
1399
}
1400
1401
static __inline__ vector unsigned long long __ATTRS_o_ai
1402
vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
1403
return __a & ~__b;
1404
}
1405
1406
static __inline__ vector unsigned long long __ATTRS_o_ai
1407
vec_vandc(vector bool long long __a, vector unsigned long long __b) {
1408
return (vector unsigned long long)__a & ~__b;
1409
}
1410
1411
static __inline__ vector unsigned long long __ATTRS_o_ai
1412
vec_vandc(vector unsigned long long __a, vector bool long long __b) {
1413
return __a & ~(vector unsigned long long)__b;
1414
}
1415
1416
static __inline__ vector bool long long __ATTRS_o_ai
1417
vec_vandc(vector bool long long __a, vector bool long long __b) {
1418
return __a & ~__b;
1419
}
1420
#endif
1421
1422
/* vec_avg */
1423
1424
static __inline__ vector signed char __ATTRS_o_ai
1425
vec_avg(vector signed char __a, vector signed char __b) {
1426
return __builtin_altivec_vavgsb(__a, __b);
1427
}
1428
1429
static __inline__ vector unsigned char __ATTRS_o_ai
1430
vec_avg(vector unsigned char __a, vector unsigned char __b) {
1431
return __builtin_altivec_vavgub(__a, __b);
1432
}
1433
1434
static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
1435
vector short __b) {
1436
return __builtin_altivec_vavgsh(__a, __b);
1437
}
1438
1439
static __inline__ vector unsigned short __ATTRS_o_ai
1440
vec_avg(vector unsigned short __a, vector unsigned short __b) {
1441
return __builtin_altivec_vavguh(__a, __b);
1442
}
1443
1444
static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
1445
vector int __b) {
1446
return __builtin_altivec_vavgsw(__a, __b);
1447
}
1448
1449
static __inline__ vector unsigned int __ATTRS_o_ai
1450
vec_avg(vector unsigned int __a, vector unsigned int __b) {
1451
return __builtin_altivec_vavguw(__a, __b);
1452
}
1453
1454
/* vec_vavgsb */
1455
1456
static __inline__ vector signed char __attribute__((__always_inline__))
1457
vec_vavgsb(vector signed char __a, vector signed char __b) {
1458
return __builtin_altivec_vavgsb(__a, __b);
1459
}
1460
1461
/* vec_vavgub */
1462
1463
static __inline__ vector unsigned char __attribute__((__always_inline__))
1464
vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
1465
return __builtin_altivec_vavgub(__a, __b);
1466
}
1467
1468
/* vec_vavgsh */
1469
1470
static __inline__ vector short __attribute__((__always_inline__))
1471
vec_vavgsh(vector short __a, vector short __b) {
1472
return __builtin_altivec_vavgsh(__a, __b);
1473
}
1474
1475
/* vec_vavguh */
1476
1477
static __inline__ vector unsigned short __attribute__((__always_inline__))
1478
vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
1479
return __builtin_altivec_vavguh(__a, __b);
1480
}
1481
1482
/* vec_vavgsw */
1483
1484
static __inline__ vector int __attribute__((__always_inline__))
1485
vec_vavgsw(vector int __a, vector int __b) {
1486
return __builtin_altivec_vavgsw(__a, __b);
1487
}
1488
1489
/* vec_vavguw */
1490
1491
static __inline__ vector unsigned int __attribute__((__always_inline__))
1492
vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1493
return __builtin_altivec_vavguw(__a, __b);
1494
}
1495
1496
/* vec_ceil */
1497
1498
static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
1499
#ifdef __VSX__
1500
return __builtin_vsx_xvrspip(__a);
1501
#else
1502
return __builtin_altivec_vrfip(__a);
1503
#endif
1504
}
1505
1506
#ifdef __VSX__
1507
static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
1508
return __builtin_vsx_xvrdpip(__a);
1509
}
1510
#endif
1511
1512
/* vec_vrfip */
1513
1514
static __inline__ vector float __attribute__((__always_inline__))
1515
vec_vrfip(vector float __a) {
1516
return __builtin_altivec_vrfip(__a);
1517
}
1518
1519
/* vec_cmpb */
1520
1521
static __inline__ vector int __attribute__((__always_inline__))
1522
vec_cmpb(vector float __a, vector float __b) {
1523
return __builtin_altivec_vcmpbfp(__a, __b);
1524
}
1525
1526
/* vec_vcmpbfp */
1527
1528
static __inline__ vector int __attribute__((__always_inline__))
1529
vec_vcmpbfp(vector float __a, vector float __b) {
1530
return __builtin_altivec_vcmpbfp(__a, __b);
1531
}
1532
1533
/* vec_cmpeq */
1534
1535
static __inline__ vector bool char __ATTRS_o_ai
1536
vec_cmpeq(vector signed char __a, vector signed char __b) {
1537
return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1538
(vector char)__b);
1539
}
1540
1541
static __inline__ vector bool char __ATTRS_o_ai
1542
vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
1543
return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1544
(vector char)__b);
1545
}
1546
1547
static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
1548
vector short __b) {
1549
return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
1550
}
1551
1552
static __inline__ vector bool short __ATTRS_o_ai
1553
vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
1554
return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1555
(vector short)__b);
1556
}
1557
1558
static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
1559
vector int __b) {
1560
return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
1561
}
1562
1563
static __inline__ vector bool int __ATTRS_o_ai
1564
vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
1565
return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1566
(vector int)__b);
1567
}
1568
1569
#ifdef __POWER8_VECTOR__
1570
static __inline__ vector bool long long __ATTRS_o_ai
1571
vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1572
return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
1573
}
1574
1575
static __inline__ vector bool long long __ATTRS_o_ai
1576
vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1577
return (vector bool long long)__builtin_altivec_vcmpequd(
1578
(vector long long)__a, (vector long long)__b);
1579
}
1580
#endif
1581
1582
static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
1583
vector float __b) {
1584
#ifdef __VSX__
1585
return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
1586
#else
1587
return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
1588
#endif
1589
}
1590
1591
#ifdef __VSX__
1592
static __inline__ vector bool long long __ATTRS_o_ai
1593
vec_cmpeq(vector double __a, vector double __b) {
1594
return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
1595
}
1596
#endif
1597
1598
/* vec_cmpgt */
1599
1600
static __inline__ vector bool char __ATTRS_o_ai
1601
vec_cmpgt(vector signed char __a, vector signed char __b) {
1602
return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1603
}
1604
1605
static __inline__ vector bool char __ATTRS_o_ai
1606
vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1607
return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1608
}
1609
1610
static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
1611
vector short __b) {
1612
return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1613
}
1614
1615
static __inline__ vector bool short __ATTRS_o_ai
1616
vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
1617
return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1618
}
1619
1620
static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
1621
vector int __b) {
1622
return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1623
}
1624
1625
static __inline__ vector bool int __ATTRS_o_ai
1626
vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
1627
return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1628
}
1629
1630
#ifdef __POWER8_VECTOR__
1631
static __inline__ vector bool long long __ATTRS_o_ai
1632
vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1633
return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
1634
}
1635
1636
static __inline__ vector bool long long __ATTRS_o_ai
1637
vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1638
return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
1639
}
1640
#endif
1641
1642
static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
1643
vector float __b) {
1644
#ifdef __VSX__
1645
return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
1646
#else
1647
return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1648
#endif
1649
}
1650
1651
#ifdef __VSX__
1652
static __inline__ vector bool long long __ATTRS_o_ai
1653
vec_cmpgt(vector double __a, vector double __b) {
1654
return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
1655
}
1656
#endif
1657
1658
/* vec_cmpge */
1659
1660
static __inline__ vector bool char __ATTRS_o_ai
1661
vec_cmpge(vector signed char __a, vector signed char __b) {
1662
return ~(vec_cmpgt(__b, __a));
1663
}
1664
1665
static __inline__ vector bool char __ATTRS_o_ai
1666
vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
1667
return ~(vec_cmpgt(__b, __a));
1668
}
1669
1670
static __inline__ vector bool short __ATTRS_o_ai
1671
vec_cmpge(vector signed short __a, vector signed short __b) {
1672
return ~(vec_cmpgt(__b, __a));
1673
}
1674
1675
static __inline__ vector bool short __ATTRS_o_ai
1676
vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
1677
return ~(vec_cmpgt(__b, __a));
1678
}
1679
1680
static __inline__ vector bool int __ATTRS_o_ai
1681
vec_cmpge(vector signed int __a, vector signed int __b) {
1682
return ~(vec_cmpgt(__b, __a));
1683
}
1684
1685
static __inline__ vector bool int __ATTRS_o_ai
1686
vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
1687
return ~(vec_cmpgt(__b, __a));
1688
}
1689
1690
static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
1691
vector float __b) {
1692
#ifdef __VSX__
1693
return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
1694
#else
1695
return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1696
#endif
1697
}
1698
1699
#ifdef __VSX__
1700
static __inline__ vector bool long long __ATTRS_o_ai
1701
vec_cmpge(vector double __a, vector double __b) {
1702
return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
1703
}
1704
#endif
1705
1706
#ifdef __POWER8_VECTOR__
1707
static __inline__ vector bool long long __ATTRS_o_ai
1708
vec_cmpge(vector signed long long __a, vector signed long long __b) {
1709
return ~(vec_cmpgt(__b, __a));
1710
}
1711
1712
static __inline__ vector bool long long __ATTRS_o_ai
1713
vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
1714
return ~(vec_cmpgt(__b, __a));
1715
}
1716
#endif
1717
1718
/* vec_vcmpgefp */
1719
1720
static __inline__ vector bool int __attribute__((__always_inline__))
1721
vec_vcmpgefp(vector float __a, vector float __b) {
1722
return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1723
}
1724
1725
/* vec_vcmpgtsb */
1726
1727
static __inline__ vector bool char __attribute__((__always_inline__))
1728
vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
1729
return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1730
}
1731
1732
/* vec_vcmpgtub */
1733
1734
static __inline__ vector bool char __attribute__((__always_inline__))
1735
vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
1736
return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1737
}
1738
1739
/* vec_vcmpgtsh */
1740
1741
static __inline__ vector bool short __attribute__((__always_inline__))
1742
vec_vcmpgtsh(vector short __a, vector short __b) {
1743
return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1744
}
1745
1746
/* vec_vcmpgtuh */
1747
1748
static __inline__ vector bool short __attribute__((__always_inline__))
1749
vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
1750
return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1751
}
1752
1753
/* vec_vcmpgtsw */
1754
1755
static __inline__ vector bool int __attribute__((__always_inline__))
1756
vec_vcmpgtsw(vector int __a, vector int __b) {
1757
return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1758
}
1759
1760
/* vec_vcmpgtuw */
1761
1762
static __inline__ vector bool int __attribute__((__always_inline__))
1763
vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
1764
return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1765
}
1766
1767
/* vec_vcmpgtfp */
1768
1769
static __inline__ vector bool int __attribute__((__always_inline__))
1770
vec_vcmpgtfp(vector float __a, vector float __b) {
1771
return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1772
}
1773
1774
/* vec_cmple */
1775
1776
static __inline__ vector bool char __ATTRS_o_ai
1777
vec_cmple(vector signed char __a, vector signed char __b) {
1778
return vec_cmpge(__b, __a);
1779
}
1780
1781
static __inline__ vector bool char __ATTRS_o_ai
1782
vec_cmple(vector unsigned char __a, vector unsigned char __b) {
1783
return vec_cmpge(__b, __a);
1784
}
1785
1786
static __inline__ vector bool short __ATTRS_o_ai
1787
vec_cmple(vector signed short __a, vector signed short __b) {
1788
return vec_cmpge(__b, __a);
1789
}
1790
1791
static __inline__ vector bool short __ATTRS_o_ai
1792
vec_cmple(vector unsigned short __a, vector unsigned short __b) {
1793
return vec_cmpge(__b, __a);
1794
}
1795
1796
static __inline__ vector bool int __ATTRS_o_ai
1797
vec_cmple(vector signed int __a, vector signed int __b) {
1798
return vec_cmpge(__b, __a);
1799
}
1800
1801
static __inline__ vector bool int __ATTRS_o_ai
1802
vec_cmple(vector unsigned int __a, vector unsigned int __b) {
1803
return vec_cmpge(__b, __a);
1804
}
1805
1806
static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
1807
vector float __b) {
1808
return vec_cmpge(__b, __a);
1809
}
1810
1811
#ifdef __VSX__
1812
static __inline__ vector bool long long __ATTRS_o_ai
1813
vec_cmple(vector double __a, vector double __b) {
1814
return vec_cmpge(__b, __a);
1815
}
1816
#endif
1817
1818
#ifdef __POWER8_VECTOR__
1819
static __inline__ vector bool long long __ATTRS_o_ai
1820
vec_cmple(vector signed long long __a, vector signed long long __b) {
1821
return vec_cmpge(__b, __a);
1822
}
1823
1824
static __inline__ vector bool long long __ATTRS_o_ai
1825
vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
1826
return vec_cmpge(__b, __a);
1827
}
1828
#endif
1829
1830
/* vec_cmplt */
1831
1832
static __inline__ vector bool char __ATTRS_o_ai
1833
vec_cmplt(vector signed char __a, vector signed char __b) {
1834
return vec_cmpgt(__b, __a);
1835
}
1836
1837
static __inline__ vector bool char __ATTRS_o_ai
1838
vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
1839
return vec_cmpgt(__b, __a);
1840
}
1841
1842
static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
1843
vector short __b) {
1844
return vec_cmpgt(__b, __a);
1845
}
1846
1847
static __inline__ vector bool short __ATTRS_o_ai
1848
vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
1849
return vec_cmpgt(__b, __a);
1850
}
1851
1852
static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
1853
vector int __b) {
1854
return vec_cmpgt(__b, __a);
1855
}
1856
1857
static __inline__ vector bool int __ATTRS_o_ai
1858
vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
1859
return vec_cmpgt(__b, __a);
1860
}
1861
1862
static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
1863
vector float __b) {
1864
return vec_cmpgt(__b, __a);
1865
}
1866
1867
#ifdef __VSX__
1868
static __inline__ vector bool long long __ATTRS_o_ai
1869
vec_cmplt(vector double __a, vector double __b) {
1870
return vec_cmpgt(__b, __a);
1871
}
1872
#endif
1873
1874
#ifdef __POWER8_VECTOR__
1875
static __inline__ vector bool long long __ATTRS_o_ai
1876
vec_cmplt(vector signed long long __a, vector signed long long __b) {
1877
return vec_cmpgt(__b, __a);
1878
}
1879
1880
static __inline__ vector bool long long __ATTRS_o_ai
1881
vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
1882
return vec_cmpgt(__b, __a);
1883
}
1884
1885
/* vec_cntlz */
1886
1887
static __inline__ vector signed char __ATTRS_o_ai
1888
vec_cntlz(vector signed char __a) {
1889
return __builtin_altivec_vclzb(__a);
1890
}
1891
static __inline__ vector unsigned char __ATTRS_o_ai
1892
vec_cntlz(vector unsigned char __a) {
1893
return __builtin_altivec_vclzb(__a);
1894
}
1895
static __inline__ vector signed short __ATTRS_o_ai
1896
vec_cntlz(vector signed short __a) {
1897
return __builtin_altivec_vclzh(__a);
1898
}
1899
static __inline__ vector unsigned short __ATTRS_o_ai
1900
vec_cntlz(vector unsigned short __a) {
1901
return __builtin_altivec_vclzh(__a);
1902
}
1903
static __inline__ vector signed int __ATTRS_o_ai
1904
vec_cntlz(vector signed int __a) {
1905
return __builtin_altivec_vclzw(__a);
1906
}
1907
static __inline__ vector unsigned int __ATTRS_o_ai
1908
vec_cntlz(vector unsigned int __a) {
1909
return __builtin_altivec_vclzw(__a);
1910
}
1911
static __inline__ vector signed long long __ATTRS_o_ai
1912
vec_cntlz(vector signed long long __a) {
1913
return __builtin_altivec_vclzd(__a);
1914
}
1915
static __inline__ vector unsigned long long __ATTRS_o_ai
1916
vec_cntlz(vector unsigned long long __a) {
1917
return __builtin_altivec_vclzd(__a);
1918
}
1919
#endif
1920
1921
/* vec_cpsgn */
1922
1923
#ifdef __VSX__
1924
static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
1925
vector float __b) {
1926
return __builtin_vsx_xvcpsgnsp(__a, __b);
1927
}
1928
1929
static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
1930
vector double __b) {
1931
return __builtin_vsx_xvcpsgndp(__a, __b);
1932
}
1933
#endif
1934
1935
/* vec_ctf */
1936
1937
static __inline__ vector float __ATTRS_o_ai vec_ctf(vector int __a, int __b) {
1938
return __builtin_altivec_vcfsx(__a, __b);
1939
}
1940
1941
static __inline__ vector float __ATTRS_o_ai vec_ctf(vector unsigned int __a,
1942
int __b) {
1943
return __builtin_altivec_vcfux((vector int)__a, __b);
1944
}
1945
1946
#ifdef __VSX__
1947
static __inline__ vector double __ATTRS_o_ai
1948
vec_ctf(vector unsigned long long __a, int __b) {
1949
vector double __ret = __builtin_convertvector(__a, vector double);
1950
__ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
1951
return __ret;
1952
}
1953
1954
static __inline__ vector double __ATTRS_o_ai
1955
vec_ctf(vector signed long long __a, int __b) {
1956
vector double __ret = __builtin_convertvector(__a, vector double);
1957
__ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
1958
return __ret;
1959
}
1960
#endif
1961
1962
/* vec_vcfsx */
1963
1964
static __inline__ vector float __attribute__((__always_inline__))
1965
vec_vcfsx(vector int __a, int __b) {
1966
return __builtin_altivec_vcfsx(__a, __b);
1967
}
1968
1969
/* vec_vcfux */
1970
1971
static __inline__ vector float __attribute__((__always_inline__))
1972
vec_vcfux(vector unsigned int __a, int __b) {
1973
return __builtin_altivec_vcfux((vector int)__a, __b);
1974
}
1975
1976
/* vec_cts */
1977
1978
static __inline__ vector int __ATTRS_o_ai vec_cts(vector float __a, int __b) {
1979
return __builtin_altivec_vctsxs(__a, __b);
1980
}
1981
1982
#ifdef __VSX__
1983
static __inline__ vector signed long long __ATTRS_o_ai
1984
vec_cts(vector double __a, int __b) {
1985
__a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
1986
return __builtin_convertvector(__a, vector signed long long);
1987
}
1988
#endif
1989
1990
/* vec_vctsxs */
1991
1992
static __inline__ vector int __attribute__((__always_inline__))
1993
vec_vctsxs(vector float __a, int __b) {
1994
return __builtin_altivec_vctsxs(__a, __b);
1995
}
1996
1997
/* vec_ctu */
1998
1999
static __inline__ vector unsigned int __ATTRS_o_ai vec_ctu(vector float __a,
2000
int __b) {
2001
return __builtin_altivec_vctuxs(__a, __b);
2002
}
2003
2004
#ifdef __VSX__
2005
static __inline__ vector unsigned long long __ATTRS_o_ai
2006
vec_ctu(vector double __a, int __b) {
2007
__a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
2008
return __builtin_convertvector(__a, vector unsigned long long);
2009
}
2010
#endif
2011
2012
/* vec_vctuxs */
2013
2014
static __inline__ vector unsigned int __attribute__((__always_inline__))
2015
vec_vctuxs(vector float __a, int __b) {
2016
return __builtin_altivec_vctuxs(__a, __b);
2017
}
2018
2019
/* vec_double */
2020
2021
#ifdef __VSX__
2022
static __inline__ vector double __ATTRS_o_ai
2023
vec_double(vector signed long long __a) {
2024
vector double __ret = {__a[0], __a[1]};
2025
return __ret;
2026
}
2027
2028
static __inline__ vector double __ATTRS_o_ai
2029
vec_double(vector unsigned long long __a) {
2030
vector double __ret = {__a[0], __a[1]};
2031
return __ret;
2032
}
2033
#endif
2034
2035
/* vec_div */
2036
2037
/* Integer vector divides (vectors are scalarized, elements divided
2038
and the vectors reassembled).
2039
*/
2040
static __inline__ vector signed char __ATTRS_o_ai
2041
vec_div(vector signed char __a, vector signed char __b) {
2042
return __a / __b;
2043
}
2044
2045
static __inline__ vector unsigned char __ATTRS_o_ai
2046
vec_div(vector unsigned char __a, vector unsigned char __b) {
2047
return __a / __b;
2048
}
2049
2050
static __inline__ vector signed short __ATTRS_o_ai
2051
vec_div(vector signed short __a, vector signed short __b) {
2052
return __a / __b;
2053
}
2054
2055
static __inline__ vector unsigned short __ATTRS_o_ai
2056
vec_div(vector unsigned short __a, vector unsigned short __b) {
2057
return __a / __b;
2058
}
2059
2060
static __inline__ vector signed int __ATTRS_o_ai
2061
vec_div(vector signed int __a, vector signed int __b) {
2062
return __a / __b;
2063
}
2064
2065
static __inline__ vector unsigned int __ATTRS_o_ai
2066
vec_div(vector unsigned int __a, vector unsigned int __b) {
2067
return __a / __b;
2068
}
2069
2070
#ifdef __VSX__
2071
static __inline__ vector signed long long __ATTRS_o_ai
2072
vec_div(vector signed long long __a, vector signed long long __b) {
2073
return __a / __b;
2074
}
2075
2076
static __inline__ vector unsigned long long __ATTRS_o_ai
2077
vec_div(vector unsigned long long __a, vector unsigned long long __b) {
2078
return __a / __b;
2079
}
2080
2081
static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
2082
vector float __b) {
2083
return __a / __b;
2084
}
2085
2086
static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
2087
vector double __b) {
2088
return __a / __b;
2089
}
2090
#endif
2091
2092
/* vec_dss */
2093
2094
static __inline__ void __attribute__((__always_inline__)) vec_dss(int __a) {
2095
__builtin_altivec_dss(__a);
2096
}
2097
2098
/* vec_dssall */
2099
2100
static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
2101
__builtin_altivec_dssall();
2102
}
2103
2104
/* vec_dst */
2105
#define vec_dst(__PTR, __CW, __STR) \
2106
__extension__( \
2107
{ __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
2108
2109
/* vec_dstst */
2110
#define vec_dstst(__PTR, __CW, __STR) \
2111
__extension__( \
2112
{ __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
2113
2114
/* vec_dststt */
2115
#define vec_dststt(__PTR, __CW, __STR) \
2116
__extension__( \
2117
{ __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
2118
2119
/* vec_dstt */
2120
#define vec_dstt(__PTR, __CW, __STR) \
2121
__extension__( \
2122
{ __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
2123
2124
/* vec_eqv */
2125
2126
#ifdef __POWER8_VECTOR__
2127
static __inline__ vector signed char __ATTRS_o_ai
2128
vec_eqv(vector signed char __a, vector signed char __b) {
2129
return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2130
(vector unsigned int)__b);
2131
}
2132
2133
static __inline__ vector unsigned char __ATTRS_o_ai
2134
vec_eqv(vector unsigned char __a, vector unsigned char __b) {
2135
return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2136
(vector unsigned int)__b);
2137
}
2138
2139
static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
2140
vector bool char __b) {
2141
return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2142
(vector unsigned int)__b);
2143
}
2144
2145
static __inline__ vector signed short __ATTRS_o_ai
2146
vec_eqv(vector signed short __a, vector signed short __b) {
2147
return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2148
(vector unsigned int)__b);
2149
}
2150
2151
static __inline__ vector unsigned short __ATTRS_o_ai
2152
vec_eqv(vector unsigned short __a, vector unsigned short __b) {
2153
return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2154
(vector unsigned int)__b);
2155
}
2156
2157
static __inline__ vector bool short __ATTRS_o_ai
2158
vec_eqv(vector bool short __a, vector bool short __b) {
2159
return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2160
(vector unsigned int)__b);
2161
}
2162
2163
static __inline__ vector signed int __ATTRS_o_ai
2164
vec_eqv(vector signed int __a, vector signed int __b) {
2165
return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2166
(vector unsigned int)__b);
2167
}
2168
2169
static __inline__ vector unsigned int __ATTRS_o_ai
2170
vec_eqv(vector unsigned int __a, vector unsigned int __b) {
2171
return __builtin_vsx_xxleqv(__a, __b);
2172
}
2173
2174
static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
2175
vector bool int __b) {
2176
return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2177
(vector unsigned int)__b);
2178
}
2179
2180
static __inline__ vector signed long long __ATTRS_o_ai
2181
vec_eqv(vector signed long long __a, vector signed long long __b) {
2182
return (vector signed long long)__builtin_vsx_xxleqv(
2183
(vector unsigned int)__a, (vector unsigned int)__b);
2184
}
2185
2186
static __inline__ vector unsigned long long __ATTRS_o_ai
2187
vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
2188
return (vector unsigned long long)__builtin_vsx_xxleqv(
2189
(vector unsigned int)__a, (vector unsigned int)__b);
2190
}
2191
2192
static __inline__ vector bool long long __ATTRS_o_ai
2193
vec_eqv(vector bool long long __a, vector bool long long __b) {
2194
return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
2195
(vector unsigned int)__b);
2196
}
2197
2198
static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
2199
vector float __b) {
2200
return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
2201
(vector unsigned int)__b);
2202
}
2203
2204
static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
2205
vector double __b) {
2206
return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
2207
(vector unsigned int)__b);
2208
}
2209
#endif
2210
2211
/* vec_expte */
2212
2213
static __inline__ vector float __attribute__((__always_inline__))
2214
vec_expte(vector float __a) {
2215
return __builtin_altivec_vexptefp(__a);
2216
}
2217
2218
/* vec_vexptefp */
2219
2220
static __inline__ vector float __attribute__((__always_inline__))
2221
vec_vexptefp(vector float __a) {
2222
return __builtin_altivec_vexptefp(__a);
2223
}
2224
2225
/* vec_floor */
2226
2227
static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
2228
#ifdef __VSX__
2229
return __builtin_vsx_xvrspim(__a);
2230
#else
2231
return __builtin_altivec_vrfim(__a);
2232
#endif
2233
}
2234
2235
#ifdef __VSX__
2236
static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
2237
return __builtin_vsx_xvrdpim(__a);
2238
}
2239
#endif
2240
2241
/* vec_vrfim */
2242
2243
static __inline__ vector float __attribute__((__always_inline__))
2244
vec_vrfim(vector float __a) {
2245
return __builtin_altivec_vrfim(__a);
2246
}
2247
2248
/* vec_ld */
2249
2250
static __inline__ vector signed char __ATTRS_o_ai
2251
vec_ld(int __a, const vector signed char *__b) {
2252
return (vector signed char)__builtin_altivec_lvx(__a, __b);
2253
}
2254
2255
static __inline__ vector signed char __ATTRS_o_ai
2256
vec_ld(int __a, const signed char *__b) {
2257
return (vector signed char)__builtin_altivec_lvx(__a, __b);
2258
}
2259
2260
static __inline__ vector unsigned char __ATTRS_o_ai
2261
vec_ld(int __a, const vector unsigned char *__b) {
2262
return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2263
}
2264
2265
static __inline__ vector unsigned char __ATTRS_o_ai
2266
vec_ld(int __a, const unsigned char *__b) {
2267
return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2268
}
2269
2270
static __inline__ vector bool char __ATTRS_o_ai
2271
vec_ld(int __a, const vector bool char *__b) {
2272
return (vector bool char)__builtin_altivec_lvx(__a, __b);
2273
}
2274
2275
static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
2276
const vector short *__b) {
2277
return (vector short)__builtin_altivec_lvx(__a, __b);
2278
}
2279
2280
static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
2281
return (vector short)__builtin_altivec_lvx(__a, __b);
2282
}
2283
2284
static __inline__ vector unsigned short __ATTRS_o_ai
2285
vec_ld(int __a, const vector unsigned short *__b) {
2286
return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2287
}
2288
2289
static __inline__ vector unsigned short __ATTRS_o_ai
2290
vec_ld(int __a, const unsigned short *__b) {
2291
return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2292
}
2293
2294
static __inline__ vector bool short __ATTRS_o_ai
2295
vec_ld(int __a, const vector bool short *__b) {
2296
return (vector bool short)__builtin_altivec_lvx(__a, __b);
2297
}
2298
2299
static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
2300
const vector pixel *__b) {
2301
return (vector pixel)__builtin_altivec_lvx(__a, __b);
2302
}
2303
2304
static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
2305
const vector int *__b) {
2306
return (vector int)__builtin_altivec_lvx(__a, __b);
2307
}
2308
2309
static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
2310
return (vector int)__builtin_altivec_lvx(__a, __b);
2311
}
2312
2313
static __inline__ vector unsigned int __ATTRS_o_ai
2314
vec_ld(int __a, const vector unsigned int *__b) {
2315
return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2316
}
2317
2318
static __inline__ vector unsigned int __ATTRS_o_ai
2319
vec_ld(int __a, const unsigned int *__b) {
2320
return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2321
}
2322
2323
static __inline__ vector bool int __ATTRS_o_ai
2324
vec_ld(int __a, const vector bool int *__b) {
2325
return (vector bool int)__builtin_altivec_lvx(__a, __b);
2326
}
2327
2328
static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
2329
const vector float *__b) {
2330
return (vector float)__builtin_altivec_lvx(__a, __b);
2331
}
2332
2333
static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
2334
return (vector float)__builtin_altivec_lvx(__a, __b);
2335
}
2336
2337
/* vec_lvx */
2338
2339
static __inline__ vector signed char __ATTRS_o_ai
2340
vec_lvx(int __a, const vector signed char *__b) {
2341
return (vector signed char)__builtin_altivec_lvx(__a, __b);
2342
}
2343
2344
static __inline__ vector signed char __ATTRS_o_ai
2345
vec_lvx(int __a, const signed char *__b) {
2346
return (vector signed char)__builtin_altivec_lvx(__a, __b);
2347
}
2348
2349
static __inline__ vector unsigned char __ATTRS_o_ai
2350
vec_lvx(int __a, const vector unsigned char *__b) {
2351
return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2352
}
2353
2354
static __inline__ vector unsigned char __ATTRS_o_ai
2355
vec_lvx(int __a, const unsigned char *__b) {
2356
return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2357
}
2358
2359
static __inline__ vector bool char __ATTRS_o_ai
2360
vec_lvx(int __a, const vector bool char *__b) {
2361
return (vector bool char)__builtin_altivec_lvx(__a, __b);
2362
}
2363
2364
static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
2365
const vector short *__b) {
2366
return (vector short)__builtin_altivec_lvx(__a, __b);
2367
}
2368
2369
static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
2370
return (vector short)__builtin_altivec_lvx(__a, __b);
2371
}
2372
2373
static __inline__ vector unsigned short __ATTRS_o_ai
2374
vec_lvx(int __a, const vector unsigned short *__b) {
2375
return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2376
}
2377
2378
static __inline__ vector unsigned short __ATTRS_o_ai
2379
vec_lvx(int __a, const unsigned short *__b) {
2380
return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2381
}
2382
2383
static __inline__ vector bool short __ATTRS_o_ai
2384
vec_lvx(int __a, const vector bool short *__b) {
2385
return (vector bool short)__builtin_altivec_lvx(__a, __b);
2386
}
2387
2388
static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
2389
const vector pixel *__b) {
2390
return (vector pixel)__builtin_altivec_lvx(__a, __b);
2391
}
2392
2393
static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
2394
const vector int *__b) {
2395
return (vector int)__builtin_altivec_lvx(__a, __b);
2396
}
2397
2398
static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
2399
return (vector int)__builtin_altivec_lvx(__a, __b);
2400
}
2401
2402
static __inline__ vector unsigned int __ATTRS_o_ai
2403
vec_lvx(int __a, const vector unsigned int *__b) {
2404
return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2405
}
2406
2407
static __inline__ vector unsigned int __ATTRS_o_ai
2408
vec_lvx(int __a, const unsigned int *__b) {
2409
return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2410
}
2411
2412
static __inline__ vector bool int __ATTRS_o_ai
2413
vec_lvx(int __a, const vector bool int *__b) {
2414
return (vector bool int)__builtin_altivec_lvx(__a, __b);
2415
}
2416
2417
static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
2418
const vector float *__b) {
2419
return (vector float)__builtin_altivec_lvx(__a, __b);
2420
}
2421
2422
static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
2423
return (vector float)__builtin_altivec_lvx(__a, __b);
2424
}
2425
2426
/* vec_lde */
2427
2428
static __inline__ vector signed char __ATTRS_o_ai
2429
vec_lde(int __a, const signed char *__b) {
2430
return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2431
}
2432
2433
static __inline__ vector unsigned char __ATTRS_o_ai
2434
vec_lde(int __a, const unsigned char *__b) {
2435
return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2436
}
2437
2438
static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
2439
return (vector short)__builtin_altivec_lvehx(__a, __b);
2440
}
2441
2442
static __inline__ vector unsigned short __ATTRS_o_ai
2443
vec_lde(int __a, const unsigned short *__b) {
2444
return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2445
}
2446
2447
static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
2448
return (vector int)__builtin_altivec_lvewx(__a, __b);
2449
}
2450
2451
static __inline__ vector unsigned int __ATTRS_o_ai
2452
vec_lde(int __a, const unsigned int *__b) {
2453
return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2454
}
2455
2456
static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
2457
return (vector float)__builtin_altivec_lvewx(__a, __b);
2458
}
2459
2460
/* vec_lvebx */
2461
2462
static __inline__ vector signed char __ATTRS_o_ai
2463
vec_lvebx(int __a, const signed char *__b) {
2464
return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2465
}
2466
2467
static __inline__ vector unsigned char __ATTRS_o_ai
2468
vec_lvebx(int __a, const unsigned char *__b) {
2469
return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2470
}
2471
2472
/* vec_lvehx */
2473
2474
static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
2475
const short *__b) {
2476
return (vector short)__builtin_altivec_lvehx(__a, __b);
2477
}
2478
2479
static __inline__ vector unsigned short __ATTRS_o_ai
2480
vec_lvehx(int __a, const unsigned short *__b) {
2481
return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2482
}
2483
2484
/* vec_lvewx */
2485
2486
static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
2487
return (vector int)__builtin_altivec_lvewx(__a, __b);
2488
}
2489
2490
static __inline__ vector unsigned int __ATTRS_o_ai
2491
vec_lvewx(int __a, const unsigned int *__b) {
2492
return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2493
}
2494
2495
static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
2496
const float *__b) {
2497
return (vector float)__builtin_altivec_lvewx(__a, __b);
2498
}
2499
2500
/* vec_ldl */
2501
2502
static __inline__ vector signed char __ATTRS_o_ai
2503
vec_ldl(int __a, const vector signed char *__b) {
2504
return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2505
}
2506
2507
static __inline__ vector signed char __ATTRS_o_ai
2508
vec_ldl(int __a, const signed char *__b) {
2509
return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2510
}
2511
2512
static __inline__ vector unsigned char __ATTRS_o_ai
2513
vec_ldl(int __a, const vector unsigned char *__b) {
2514
return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2515
}
2516
2517
static __inline__ vector unsigned char __ATTRS_o_ai
2518
vec_ldl(int __a, const unsigned char *__b) {
2519
return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2520
}
2521
2522
static __inline__ vector bool char __ATTRS_o_ai
2523
vec_ldl(int __a, const vector bool char *__b) {
2524
return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2525
}
2526
2527
static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
2528
const vector short *__b) {
2529
return (vector short)__builtin_altivec_lvxl(__a, __b);
2530
}
2531
2532
static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
2533
return (vector short)__builtin_altivec_lvxl(__a, __b);
2534
}
2535
2536
static __inline__ vector unsigned short __ATTRS_o_ai
2537
vec_ldl(int __a, const vector unsigned short *__b) {
2538
return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2539
}
2540
2541
static __inline__ vector unsigned short __ATTRS_o_ai
2542
vec_ldl(int __a, const unsigned short *__b) {
2543
return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2544
}
2545
2546
static __inline__ vector bool short __ATTRS_o_ai
2547
vec_ldl(int __a, const vector bool short *__b) {
2548
return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2549
}
2550
2551
static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
2552
const vector pixel *__b) {
2553
return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
2554
}
2555
2556
static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
2557
const vector int *__b) {
2558
return (vector int)__builtin_altivec_lvxl(__a, __b);
2559
}
2560
2561
static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
2562
return (vector int)__builtin_altivec_lvxl(__a, __b);
2563
}
2564
2565
static __inline__ vector unsigned int __ATTRS_o_ai
2566
vec_ldl(int __a, const vector unsigned int *__b) {
2567
return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2568
}
2569
2570
static __inline__ vector unsigned int __ATTRS_o_ai
2571
vec_ldl(int __a, const unsigned int *__b) {
2572
return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2573
}
2574
2575
static __inline__ vector bool int __ATTRS_o_ai
2576
vec_ldl(int __a, const vector bool int *__b) {
2577
return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2578
}
2579
2580
static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
2581
const vector float *__b) {
2582
return (vector float)__builtin_altivec_lvxl(__a, __b);
2583
}
2584
2585
static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
2586
return (vector float)__builtin_altivec_lvxl(__a, __b);
2587
}
2588
2589
/* vec_lvxl */
2590
2591
static __inline__ vector signed char __ATTRS_o_ai
2592
vec_lvxl(int __a, const vector signed char *__b) {
2593
return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2594
}
2595
2596
static __inline__ vector signed char __ATTRS_o_ai
2597
vec_lvxl(int __a, const signed char *__b) {
2598
return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2599
}
2600
2601
static __inline__ vector unsigned char __ATTRS_o_ai
2602
vec_lvxl(int __a, const vector unsigned char *__b) {
2603
return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2604
}
2605
2606
static __inline__ vector unsigned char __ATTRS_o_ai
2607
vec_lvxl(int __a, const unsigned char *__b) {
2608
return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2609
}
2610
2611
static __inline__ vector bool char __ATTRS_o_ai
2612
vec_lvxl(int __a, const vector bool char *__b) {
2613
return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2614
}
2615
2616
static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
2617
const vector short *__b) {
2618
return (vector short)__builtin_altivec_lvxl(__a, __b);
2619
}
2620
2621
static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
2622
const short *__b) {
2623
return (vector short)__builtin_altivec_lvxl(__a, __b);
2624
}
2625
2626
static __inline__ vector unsigned short __ATTRS_o_ai
2627
vec_lvxl(int __a, const vector unsigned short *__b) {
2628
return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2629
}
2630
2631
static __inline__ vector unsigned short __ATTRS_o_ai
2632
vec_lvxl(int __a, const unsigned short *__b) {
2633
return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2634
}
2635
2636
static __inline__ vector bool short __ATTRS_o_ai
2637
vec_lvxl(int __a, const vector bool short *__b) {
2638
return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2639
}
2640
2641
static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
2642
const vector pixel *__b) {
2643
return (vector pixel)__builtin_altivec_lvxl(__a, __b);
2644
}
2645
2646
static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
2647
const vector int *__b) {
2648
return (vector int)__builtin_altivec_lvxl(__a, __b);
2649
}
2650
2651
static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
2652
return (vector int)__builtin_altivec_lvxl(__a, __b);
2653
}
2654
2655
static __inline__ vector unsigned int __ATTRS_o_ai
2656
vec_lvxl(int __a, const vector unsigned int *__b) {
2657
return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2658
}
2659
2660
static __inline__ vector unsigned int __ATTRS_o_ai
2661
vec_lvxl(int __a, const unsigned int *__b) {
2662
return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2663
}
2664
2665
static __inline__ vector bool int __ATTRS_o_ai
2666
vec_lvxl(int __a, const vector bool int *__b) {
2667
return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2668
}
2669
2670
static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
2671
const vector float *__b) {
2672
return (vector float)__builtin_altivec_lvxl(__a, __b);
2673
}
2674
2675
static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
2676
const float *__b) {
2677
return (vector float)__builtin_altivec_lvxl(__a, __b);
2678
}
2679
2680
/* vec_loge */
2681
2682
static __inline__ vector float __attribute__((__always_inline__))
2683
vec_loge(vector float __a) {
2684
return __builtin_altivec_vlogefp(__a);
2685
}
2686
2687
/* vec_vlogefp */
2688
2689
static __inline__ vector float __attribute__((__always_inline__))
2690
vec_vlogefp(vector float __a) {
2691
return __builtin_altivec_vlogefp(__a);
2692
}
2693
2694
/* vec_lvsl */
2695
2696
#ifdef __LITTLE_ENDIAN__
2697
static __inline__ vector unsigned char __ATTRS_o_ai
2698
__attribute__((__deprecated__("use assignment for unaligned little endian \
2699
loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
2700
vector unsigned char mask =
2701
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2702
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2703
7, 6, 5, 4, 3, 2, 1, 0};
2704
return vec_perm(mask, mask, reverse);
2705
}
2706
#else
2707
static __inline__ vector unsigned char __ATTRS_o_ai
2708
vec_lvsl(int __a, const signed char *__b) {
2709
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2710
}
2711
#endif
2712
2713
#ifdef __LITTLE_ENDIAN__
2714
static __inline__ vector unsigned char __ATTRS_o_ai
2715
__attribute__((__deprecated__("use assignment for unaligned little endian \
2716
loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
2717
vector unsigned char mask =
2718
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2719
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2720
7, 6, 5, 4, 3, 2, 1, 0};
2721
return vec_perm(mask, mask, reverse);
2722
}
2723
#else
2724
static __inline__ vector unsigned char __ATTRS_o_ai
2725
vec_lvsl(int __a, const unsigned char *__b) {
2726
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2727
}
2728
#endif
2729
2730
#ifdef __LITTLE_ENDIAN__
2731
static __inline__ vector unsigned char __ATTRS_o_ai
2732
__attribute__((__deprecated__("use assignment for unaligned little endian \
2733
loads/stores"))) vec_lvsl(int __a, const short *__b) {
2734
vector unsigned char mask =
2735
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2736
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2737
7, 6, 5, 4, 3, 2, 1, 0};
2738
return vec_perm(mask, mask, reverse);
2739
}
2740
#else
2741
static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2742
const short *__b) {
2743
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2744
}
2745
#endif
2746
2747
#ifdef __LITTLE_ENDIAN__
2748
static __inline__ vector unsigned char __ATTRS_o_ai
2749
__attribute__((__deprecated__("use assignment for unaligned little endian \
2750
loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
2751
vector unsigned char mask =
2752
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2753
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2754
7, 6, 5, 4, 3, 2, 1, 0};
2755
return vec_perm(mask, mask, reverse);
2756
}
2757
#else
2758
static __inline__ vector unsigned char __ATTRS_o_ai
2759
vec_lvsl(int __a, const unsigned short *__b) {
2760
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2761
}
2762
#endif
2763
2764
#ifdef __LITTLE_ENDIAN__
2765
static __inline__ vector unsigned char __ATTRS_o_ai
2766
__attribute__((__deprecated__("use assignment for unaligned little endian \
2767
loads/stores"))) vec_lvsl(int __a, const int *__b) {
2768
vector unsigned char mask =
2769
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2770
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2771
7, 6, 5, 4, 3, 2, 1, 0};
2772
return vec_perm(mask, mask, reverse);
2773
}
2774
#else
2775
static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2776
const int *__b) {
2777
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2778
}
2779
#endif
2780
2781
#ifdef __LITTLE_ENDIAN__
2782
static __inline__ vector unsigned char __ATTRS_o_ai
2783
__attribute__((__deprecated__("use assignment for unaligned little endian \
2784
loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
2785
vector unsigned char mask =
2786
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2787
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2788
7, 6, 5, 4, 3, 2, 1, 0};
2789
return vec_perm(mask, mask, reverse);
2790
}
2791
#else
2792
static __inline__ vector unsigned char __ATTRS_o_ai
2793
vec_lvsl(int __a, const unsigned int *__b) {
2794
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2795
}
2796
#endif
2797
2798
#ifdef __LITTLE_ENDIAN__
2799
static __inline__ vector unsigned char __ATTRS_o_ai
2800
__attribute__((__deprecated__("use assignment for unaligned little endian \
2801
loads/stores"))) vec_lvsl(int __a, const float *__b) {
2802
vector unsigned char mask =
2803
(vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2804
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2805
7, 6, 5, 4, 3, 2, 1, 0};
2806
return vec_perm(mask, mask, reverse);
2807
}
2808
#else
2809
static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2810
const float *__b) {
2811
return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2812
}
2813
#endif
2814
2815
/* vec_lvsr */
2816
2817
#ifdef __LITTLE_ENDIAN__
2818
static __inline__ vector unsigned char __ATTRS_o_ai
2819
__attribute__((__deprecated__("use assignment for unaligned little endian \
2820
loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
2821
vector unsigned char mask =
2822
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2823
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2824
7, 6, 5, 4, 3, 2, 1, 0};
2825
return vec_perm(mask, mask, reverse);
2826
}
2827
#else
2828
static __inline__ vector unsigned char __ATTRS_o_ai
2829
vec_lvsr(int __a, const signed char *__b) {
2830
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2831
}
2832
#endif
2833
2834
#ifdef __LITTLE_ENDIAN__
2835
static __inline__ vector unsigned char __ATTRS_o_ai
2836
__attribute__((__deprecated__("use assignment for unaligned little endian \
2837
loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
2838
vector unsigned char mask =
2839
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2840
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2841
7, 6, 5, 4, 3, 2, 1, 0};
2842
return vec_perm(mask, mask, reverse);
2843
}
2844
#else
2845
static __inline__ vector unsigned char __ATTRS_o_ai
2846
vec_lvsr(int __a, const unsigned char *__b) {
2847
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2848
}
2849
#endif
2850
2851
#ifdef __LITTLE_ENDIAN__
2852
static __inline__ vector unsigned char __ATTRS_o_ai
2853
__attribute__((__deprecated__("use assignment for unaligned little endian \
2854
loads/stores"))) vec_lvsr(int __a, const short *__b) {
2855
vector unsigned char mask =
2856
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2857
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2858
7, 6, 5, 4, 3, 2, 1, 0};
2859
return vec_perm(mask, mask, reverse);
2860
}
2861
#else
2862
static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2863
const short *__b) {
2864
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2865
}
2866
#endif
2867
2868
#ifdef __LITTLE_ENDIAN__
2869
static __inline__ vector unsigned char __ATTRS_o_ai
2870
__attribute__((__deprecated__("use assignment for unaligned little endian \
2871
loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
2872
vector unsigned char mask =
2873
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2874
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2875
7, 6, 5, 4, 3, 2, 1, 0};
2876
return vec_perm(mask, mask, reverse);
2877
}
2878
#else
2879
static __inline__ vector unsigned char __ATTRS_o_ai
2880
vec_lvsr(int __a, const unsigned short *__b) {
2881
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2882
}
2883
#endif
2884
2885
#ifdef __LITTLE_ENDIAN__
2886
static __inline__ vector unsigned char __ATTRS_o_ai
2887
__attribute__((__deprecated__("use assignment for unaligned little endian \
2888
loads/stores"))) vec_lvsr(int __a, const int *__b) {
2889
vector unsigned char mask =
2890
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2891
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2892
7, 6, 5, 4, 3, 2, 1, 0};
2893
return vec_perm(mask, mask, reverse);
2894
}
2895
#else
2896
static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2897
const int *__b) {
2898
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2899
}
2900
#endif
2901
2902
#ifdef __LITTLE_ENDIAN__
2903
static __inline__ vector unsigned char __ATTRS_o_ai
2904
__attribute__((__deprecated__("use assignment for unaligned little endian \
2905
loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
2906
vector unsigned char mask =
2907
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2908
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2909
7, 6, 5, 4, 3, 2, 1, 0};
2910
return vec_perm(mask, mask, reverse);
2911
}
2912
#else
2913
static __inline__ vector unsigned char __ATTRS_o_ai
2914
vec_lvsr(int __a, const unsigned int *__b) {
2915
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2916
}
2917
#endif
2918
2919
#ifdef __LITTLE_ENDIAN__
2920
static __inline__ vector unsigned char __ATTRS_o_ai
2921
__attribute__((__deprecated__("use assignment for unaligned little endian \
2922
loads/stores"))) vec_lvsr(int __a, const float *__b) {
2923
vector unsigned char mask =
2924
(vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2925
vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2926
7, 6, 5, 4, 3, 2, 1, 0};
2927
return vec_perm(mask, mask, reverse);
2928
}
2929
#else
2930
static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2931
const float *__b) {
2932
return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2933
}
2934
#endif
2935
2936
/* vec_madd */
2937
static __inline__ vector signed short __ATTRS_o_ai
2938
vec_mladd(vector signed short, vector signed short, vector signed short);
2939
static __inline__ vector signed short __ATTRS_o_ai
2940
vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
2941
static __inline__ vector signed short __ATTRS_o_ai
2942
vec_mladd(vector unsigned short, vector signed short, vector signed short);
2943
static __inline__ vector unsigned short __ATTRS_o_ai
2944
vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
2945
2946
static __inline__ vector signed short __ATTRS_o_ai vec_madd(
2947
vector signed short __a, vector signed short __b, vector signed short __c) {
2948
return vec_mladd(__a, __b, __c);
2949
}
2950
2951
static __inline__ vector signed short __ATTRS_o_ai
2952
vec_madd(vector signed short __a, vector unsigned short __b,
2953
vector unsigned short __c) {
2954
return vec_mladd(__a, __b, __c);
2955
}
2956
2957
static __inline__ vector signed short __ATTRS_o_ai
2958
vec_madd(vector unsigned short __a, vector signed short __b,
2959
vector signed short __c) {
2960
return vec_mladd(__a, __b, __c);
2961
}
2962
2963
static __inline__ vector unsigned short __ATTRS_o_ai
2964
vec_madd(vector unsigned short __a, vector unsigned short __b,
2965
vector unsigned short __c) {
2966
return vec_mladd(__a, __b, __c);
2967
}
2968
2969
static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
2970
vector float __b,
2971
vector float __c) {
2972
#ifdef __VSX__
2973
return __builtin_vsx_xvmaddasp(__a, __b, __c);
2974
#else
2975
return __builtin_altivec_vmaddfp(__a, __b, __c);
2976
#endif
2977
}
2978
2979
#ifdef __VSX__
2980
static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
2981
vector double __b,
2982
vector double __c) {
2983
return __builtin_vsx_xvmaddadp(__a, __b, __c);
2984
}
2985
#endif
2986
2987
/* vec_vmaddfp */
2988
2989
static __inline__ vector float __attribute__((__always_inline__))
2990
vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
2991
return __builtin_altivec_vmaddfp(__a, __b, __c);
2992
}
2993
2994
/* vec_madds */
2995
2996
static __inline__ vector signed short __attribute__((__always_inline__))
2997
vec_madds(vector signed short __a, vector signed short __b,
2998
vector signed short __c) {
2999
return __builtin_altivec_vmhaddshs(__a, __b, __c);
3000
}
3001
3002
/* vec_vmhaddshs */
3003
static __inline__ vector signed short __attribute__((__always_inline__))
3004
vec_vmhaddshs(vector signed short __a, vector signed short __b,
3005
vector signed short __c) {
3006
return __builtin_altivec_vmhaddshs(__a, __b, __c);
3007
}
3008
3009
/* vec_msub */
3010
3011
#ifdef __VSX__
3012
static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
3013
vector float __b,
3014
vector float __c) {
3015
return __builtin_vsx_xvmsubasp(__a, __b, __c);
3016
}
3017
3018
static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
3019
vector double __b,
3020
vector double __c) {
3021
return __builtin_vsx_xvmsubadp(__a, __b, __c);
3022
}
3023
#endif
3024
3025
/* vec_max */
3026
3027
static __inline__ vector signed char __ATTRS_o_ai
3028
vec_max(vector signed char __a, vector signed char __b) {
3029
return __builtin_altivec_vmaxsb(__a, __b);
3030
}
3031
3032
static __inline__ vector signed char __ATTRS_o_ai
3033
vec_max(vector bool char __a, vector signed char __b) {
3034
return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3035
}
3036
3037
static __inline__ vector signed char __ATTRS_o_ai
3038
vec_max(vector signed char __a, vector bool char __b) {
3039
return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3040
}
3041
3042
static __inline__ vector unsigned char __ATTRS_o_ai
3043
vec_max(vector unsigned char __a, vector unsigned char __b) {
3044
return __builtin_altivec_vmaxub(__a, __b);
3045
}
3046
3047
static __inline__ vector unsigned char __ATTRS_o_ai
3048
vec_max(vector bool char __a, vector unsigned char __b) {
3049
return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3050
}
3051
3052
static __inline__ vector unsigned char __ATTRS_o_ai
3053
vec_max(vector unsigned char __a, vector bool char __b) {
3054
return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3055
}
3056
3057
static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
3058
vector short __b) {
3059
return __builtin_altivec_vmaxsh(__a, __b);
3060
}
3061
3062
static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
3063
vector short __b) {
3064
return __builtin_altivec_vmaxsh((vector short)__a, __b);
3065
}
3066
3067
static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
3068
vector bool short __b) {
3069
return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3070
}
3071
3072
static __inline__ vector unsigned short __ATTRS_o_ai
3073
vec_max(vector unsigned short __a, vector unsigned short __b) {
3074
return __builtin_altivec_vmaxuh(__a, __b);
3075
}
3076
3077
static __inline__ vector unsigned short __ATTRS_o_ai
3078
vec_max(vector bool short __a, vector unsigned short __b) {
3079
return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3080
}
3081
3082
static __inline__ vector unsigned short __ATTRS_o_ai
3083
vec_max(vector unsigned short __a, vector bool short __b) {
3084
return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3085
}
3086
3087
static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
3088
vector int __b) {
3089
return __builtin_altivec_vmaxsw(__a, __b);
3090
}
3091
3092
static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
3093
vector int __b) {
3094
return __builtin_altivec_vmaxsw((vector int)__a, __b);
3095
}
3096
3097
static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
3098
vector bool int __b) {
3099
return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3100
}
3101
3102
static __inline__ vector unsigned int __ATTRS_o_ai
3103
vec_max(vector unsigned int __a, vector unsigned int __b) {
3104
return __builtin_altivec_vmaxuw(__a, __b);
3105
}
3106
3107
static __inline__ vector unsigned int __ATTRS_o_ai
3108
vec_max(vector bool int __a, vector unsigned int __b) {
3109
return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3110
}
3111
3112
static __inline__ vector unsigned int __ATTRS_o_ai
3113
vec_max(vector unsigned int __a, vector bool int __b) {
3114
return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3115
}
3116
3117
#ifdef __POWER8_VECTOR__
3118
static __inline__ vector signed long long __ATTRS_o_ai
3119
vec_max(vector signed long long __a, vector signed long long __b) {
3120
return __builtin_altivec_vmaxsd(__a, __b);
3121
}
3122
3123
static __inline__ vector signed long long __ATTRS_o_ai
3124
vec_max(vector bool long long __a, vector signed long long __b) {
3125
return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
3126
}
3127
3128
static __inline__ vector signed long long __ATTRS_o_ai
3129
vec_max(vector signed long long __a, vector bool long long __b) {
3130
return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
3131
}
3132
3133
static __inline__ vector unsigned long long __ATTRS_o_ai
3134
vec_max(vector unsigned long long __a, vector unsigned long long __b) {
3135
return __builtin_altivec_vmaxud(__a, __b);
3136
}
3137
3138
static __inline__ vector unsigned long long __ATTRS_o_ai
3139
vec_max(vector bool long long __a, vector unsigned long long __b) {
3140
return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
3141
}
3142
3143
static __inline__ vector unsigned long long __ATTRS_o_ai
3144
vec_max(vector unsigned long long __a, vector bool long long __b) {
3145
return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
3146
}
3147
#endif
3148
3149
static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
3150
vector float __b) {
3151
#ifdef __VSX__
3152
return __builtin_vsx_xvmaxsp(__a, __b);
3153
#else
3154
return __builtin_altivec_vmaxfp(__a, __b);
3155
#endif
3156
}
3157
3158
#ifdef __VSX__
3159
static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
3160
vector double __b) {
3161
return __builtin_vsx_xvmaxdp(__a, __b);
3162
}
3163
#endif
3164
3165
/* vec_vmaxsb */
3166
3167
static __inline__ vector signed char __ATTRS_o_ai
3168
vec_vmaxsb(vector signed char __a, vector signed char __b) {
3169
return __builtin_altivec_vmaxsb(__a, __b);
3170
}
3171
3172
static __inline__ vector signed char __ATTRS_o_ai
3173
vec_vmaxsb(vector bool char __a, vector signed char __b) {
3174
return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3175
}
3176
3177
static __inline__ vector signed char __ATTRS_o_ai
3178
vec_vmaxsb(vector signed char __a, vector bool char __b) {
3179
return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3180
}
3181
3182
/* vec_vmaxub */
3183
3184
static __inline__ vector unsigned char __ATTRS_o_ai
3185
vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
3186
return __builtin_altivec_vmaxub(__a, __b);
3187
}
3188
3189
static __inline__ vector unsigned char __ATTRS_o_ai
3190
vec_vmaxub(vector bool char __a, vector unsigned char __b) {
3191
return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3192
}
3193
3194
static __inline__ vector unsigned char __ATTRS_o_ai
3195
vec_vmaxub(vector unsigned char __a, vector bool char __b) {
3196
return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3197
}
3198
3199
/* vec_vmaxsh */
3200
3201
static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3202
vector short __b) {
3203
return __builtin_altivec_vmaxsh(__a, __b);
3204
}
3205
3206
static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
3207
vector short __b) {
3208
return __builtin_altivec_vmaxsh((vector short)__a, __b);
3209
}
3210
3211
static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3212
vector bool short __b) {
3213
return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3214
}
3215
3216
/* vec_vmaxuh */
3217
3218
static __inline__ vector unsigned short __ATTRS_o_ai
3219
vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
3220
return __builtin_altivec_vmaxuh(__a, __b);
3221
}
3222
3223
static __inline__ vector unsigned short __ATTRS_o_ai
3224
vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
3225
return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3226
}
3227
3228
static __inline__ vector unsigned short __ATTRS_o_ai
3229
vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
3230
return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3231
}
3232
3233
/* vec_vmaxsw */
3234
3235
static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
3236
vector int __b) {
3237
return __builtin_altivec_vmaxsw(__a, __b);
3238
}
3239
3240
static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
3241
vector int __b) {
3242
return __builtin_altivec_vmaxsw((vector int)__a, __b);
3243
}
3244
3245
static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
3246
vector bool int __b) {
3247
return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3248
}
3249
3250
/* vec_vmaxuw */
3251
3252
static __inline__ vector unsigned int __ATTRS_o_ai
3253
vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
3254
return __builtin_altivec_vmaxuw(__a, __b);
3255
}
3256
3257
static __inline__ vector unsigned int __ATTRS_o_ai
3258
vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
3259
return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3260
}
3261
3262
static __inline__ vector unsigned int __ATTRS_o_ai
3263
vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
3264
return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3265
}
3266
3267
/* vec_vmaxfp */
3268
3269
static __inline__ vector float __attribute__((__always_inline__))
3270
vec_vmaxfp(vector float __a, vector float __b) {
3271
#ifdef __VSX__
3272
return __builtin_vsx_xvmaxsp(__a, __b);
3273
#else
3274
return __builtin_altivec_vmaxfp(__a, __b);
3275
#endif
3276
}
3277
3278
/* vec_mergeh */
3279
3280
static __inline__ vector signed char __ATTRS_o_ai
3281
vec_mergeh(vector signed char __a, vector signed char __b) {
3282
return vec_perm(__a, __b,
3283
(vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3284
0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3285
0x06, 0x16, 0x07, 0x17));
3286
}
3287
3288
static __inline__ vector unsigned char __ATTRS_o_ai
3289
vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
3290
return vec_perm(__a, __b,
3291
(vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3292
0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3293
0x06, 0x16, 0x07, 0x17));
3294
}
3295
3296
static __inline__ vector bool char __ATTRS_o_ai
3297
vec_mergeh(vector bool char __a, vector bool char __b) {
3298
return vec_perm(__a, __b,
3299
(vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3300
0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3301
0x06, 0x16, 0x07, 0x17));
3302
}
3303
3304
static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
3305
vector short __b) {
3306
return vec_perm(__a, __b,
3307
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3308
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3309
0x06, 0x07, 0x16, 0x17));
3310
}
3311
3312
static __inline__ vector unsigned short __ATTRS_o_ai
3313
vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
3314
return vec_perm(__a, __b,
3315
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3316
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3317
0x06, 0x07, 0x16, 0x17));
3318
}
3319
3320
static __inline__ vector bool short __ATTRS_o_ai
3321
vec_mergeh(vector bool short __a, vector bool short __b) {
3322
return vec_perm(__a, __b,
3323
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3324
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3325
0x06, 0x07, 0x16, 0x17));
3326
}
3327
3328
static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
3329
vector pixel __b) {
3330
return vec_perm(__a, __b,
3331
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3332
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3333
0x06, 0x07, 0x16, 0x17));
3334
}
3335
3336
static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
3337
vector int __b) {
3338
return vec_perm(__a, __b,
3339
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3340
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3341
0x14, 0x15, 0x16, 0x17));
3342
}
3343
3344
static __inline__ vector unsigned int __ATTRS_o_ai
3345
vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
3346
return vec_perm(__a, __b,
3347
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3348
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3349
0x14, 0x15, 0x16, 0x17));
3350
}
3351
3352
static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
3353
vector bool int __b) {
3354
return vec_perm(__a, __b,
3355
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3356
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3357
0x14, 0x15, 0x16, 0x17));
3358
}
3359
3360
static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
3361
vector float __b) {
3362
return vec_perm(__a, __b,
3363
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3364
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3365
0x14, 0x15, 0x16, 0x17));
3366
}
3367
3368
#ifdef __VSX__
3369
static __inline__ vector signed long long __ATTRS_o_ai
3370
vec_mergeh(vector signed long long __a, vector signed long long __b) {
3371
return vec_perm(__a, __b,
3372
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3373
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3374
0x14, 0x15, 0x16, 0x17));
3375
}
3376
3377
static __inline__ vector signed long long __ATTRS_o_ai
3378
vec_mergeh(vector signed long long __a, vector bool long long __b) {
3379
return vec_perm(__a, (vector signed long long)__b,
3380
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3381
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3382
0x14, 0x15, 0x16, 0x17));
3383
}
3384
3385
static __inline__ vector signed long long __ATTRS_o_ai
3386
vec_mergeh(vector bool long long __a, vector signed long long __b) {
3387
return vec_perm((vector signed long long)__a, __b,
3388
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3389
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3390
0x14, 0x15, 0x16, 0x17));
3391
}
3392
3393
static __inline__ vector unsigned long long __ATTRS_o_ai
3394
vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
3395
return vec_perm(__a, __b,
3396
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3397
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3398
0x14, 0x15, 0x16, 0x17));
3399
}
3400
3401
static __inline__ vector unsigned long long __ATTRS_o_ai
3402
vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
3403
return vec_perm(__a, (vector unsigned long long)__b,
3404
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3405
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3406
0x14, 0x15, 0x16, 0x17));
3407
}
3408
3409
static __inline__ vector unsigned long long __ATTRS_o_ai
3410
vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
3411
return vec_perm((vector unsigned long long)__a, __b,
3412
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3413
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3414
0x14, 0x15, 0x16, 0x17));
3415
}
3416
3417
static __inline__ vector bool long long __ATTRS_o_ai
3418
vec_mergeh(vector bool long long __a, vector bool long long __b) {
3419
return vec_perm(__a, __b,
3420
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3421
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3422
0x14, 0x15, 0x16, 0x17));
3423
}
3424
3425
static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
3426
vector double __b) {
3427
return vec_perm(__a, __b,
3428
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3429
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3430
0x14, 0x15, 0x16, 0x17));
3431
}
3432
static __inline__ vector double __ATTRS_o_ai
3433
vec_mergeh(vector double __a, vector bool long long __b) {
3434
return vec_perm(__a, (vector double)__b,
3435
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3436
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3437
0x14, 0x15, 0x16, 0x17));
3438
}
3439
static __inline__ vector double __ATTRS_o_ai
3440
vec_mergeh(vector bool long long __a, vector double __b) {
3441
return vec_perm((vector double)__a, __b,
3442
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3443
0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3444
0x14, 0x15, 0x16, 0x17));
3445
}
3446
#endif
3447
3448
/* vec_vmrghb */
3449
3450
#define __builtin_altivec_vmrghb vec_vmrghb
3451
3452
static __inline__ vector signed char __ATTRS_o_ai
3453
vec_vmrghb(vector signed char __a, vector signed char __b) {
3454
return vec_perm(__a, __b,
3455
(vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3456
0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3457
0x06, 0x16, 0x07, 0x17));
3458
}
3459
3460
static __inline__ vector unsigned char __ATTRS_o_ai
3461
vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
3462
return vec_perm(__a, __b,
3463
(vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3464
0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3465
0x06, 0x16, 0x07, 0x17));
3466
}
3467
3468
static __inline__ vector bool char __ATTRS_o_ai
3469
vec_vmrghb(vector bool char __a, vector bool char __b) {
3470
return vec_perm(__a, __b,
3471
(vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3472
0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3473
0x06, 0x16, 0x07, 0x17));
3474
}
3475
3476
/* vec_vmrghh */
3477
3478
#define __builtin_altivec_vmrghh vec_vmrghh
3479
3480
static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
3481
vector short __b) {
3482
return vec_perm(__a, __b,
3483
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3484
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3485
0x06, 0x07, 0x16, 0x17));
3486
}
3487
3488
static __inline__ vector unsigned short __ATTRS_o_ai
3489
vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
3490
return vec_perm(__a, __b,
3491
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3492
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3493
0x06, 0x07, 0x16, 0x17));
3494
}
3495
3496
static __inline__ vector bool short __ATTRS_o_ai
3497
vec_vmrghh(vector bool short __a, vector bool short __b) {
3498
return vec_perm(__a, __b,
3499
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3500
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3501
0x06, 0x07, 0x16, 0x17));
3502
}
3503
3504
static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
3505
vector pixel __b) {
3506
return vec_perm(__a, __b,
3507
(vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3508
0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3509
0x06, 0x07, 0x16, 0x17));
3510
}
3511
3512
/* vec_vmrghw */
3513
3514
#define __builtin_altivec_vmrghw vec_vmrghw
3515
3516
static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
3517
vector int __b) {
3518
return vec_perm(__a, __b,
3519
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3520
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3521
0x14, 0x15, 0x16, 0x17));
3522
}
3523
3524
static __inline__ vector unsigned int __ATTRS_o_ai
3525
vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
3526
return vec_perm(__a, __b,
3527
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3528
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3529
0x14, 0x15, 0x16, 0x17));
3530
}
3531
3532
static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
3533
vector bool int __b) {
3534
return vec_perm(__a, __b,
3535
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3536
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3537
0x14, 0x15, 0x16, 0x17));
3538
}
3539
3540
static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
3541
vector float __b) {
3542
return vec_perm(__a, __b,
3543
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3544
0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3545
0x14, 0x15, 0x16, 0x17));
3546
}
3547
3548
/* vec_mergel */
3549
3550
static __inline__ vector signed char __ATTRS_o_ai
3551
vec_mergel(vector signed char __a, vector signed char __b) {
3552
return vec_perm(__a, __b,
3553
(vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3554
0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3555
0x0E, 0x1E, 0x0F, 0x1F));
3556
}
3557
3558
static __inline__ vector unsigned char __ATTRS_o_ai
3559
vec_mergel(vector unsigned char __a, vector unsigned char __b) {
3560
return vec_perm(__a, __b,
3561
(vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3562
0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3563
0x0E, 0x1E, 0x0F, 0x1F));
3564
}
3565
3566
static __inline__ vector bool char __ATTRS_o_ai
3567
vec_mergel(vector bool char __a, vector bool char __b) {
3568
return vec_perm(__a, __b,
3569
(vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3570
0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3571
0x0E, 0x1E, 0x0F, 0x1F));
3572
}
3573
3574
static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
3575
vector short __b) {
3576
return vec_perm(__a, __b,
3577
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3578
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3579
0x0E, 0x0F, 0x1E, 0x1F));
3580
}
3581
3582
static __inline__ vector unsigned short __ATTRS_o_ai
3583
vec_mergel(vector unsigned short __a, vector unsigned short __b) {
3584
return vec_perm(__a, __b,
3585
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3586
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3587
0x0E, 0x0F, 0x1E, 0x1F));
3588
}
3589
3590
static __inline__ vector bool short __ATTRS_o_ai
3591
vec_mergel(vector bool short __a, vector bool short __b) {
3592
return vec_perm(__a, __b,
3593
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3594
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3595
0x0E, 0x0F, 0x1E, 0x1F));
3596
}
3597
3598
static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
3599
vector pixel __b) {
3600
return vec_perm(__a, __b,
3601
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3602
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3603
0x0E, 0x0F, 0x1E, 0x1F));
3604
}
3605
3606
static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
3607
vector int __b) {
3608
return vec_perm(__a, __b,
3609
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3610
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3611
0x1C, 0x1D, 0x1E, 0x1F));
3612
}
3613
3614
static __inline__ vector unsigned int __ATTRS_o_ai
3615
vec_mergel(vector unsigned int __a, vector unsigned int __b) {
3616
return vec_perm(__a, __b,
3617
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3618
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3619
0x1C, 0x1D, 0x1E, 0x1F));
3620
}
3621
3622
static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
3623
vector bool int __b) {
3624
return vec_perm(__a, __b,
3625
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3626
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3627
0x1C, 0x1D, 0x1E, 0x1F));
3628
}
3629
3630
static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
3631
vector float __b) {
3632
return vec_perm(__a, __b,
3633
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3634
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3635
0x1C, 0x1D, 0x1E, 0x1F));
3636
}
3637
3638
#ifdef __VSX__
3639
static __inline__ vector signed long long __ATTRS_o_ai
3640
vec_mergel(vector signed long long __a, vector signed long long __b) {
3641
return vec_perm(__a, __b,
3642
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3643
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3644
0x1C, 0x1D, 0x1E, 0x1F));
3645
}
3646
static __inline__ vector signed long long __ATTRS_o_ai
3647
vec_mergel(vector signed long long __a, vector bool long long __b) {
3648
return vec_perm(__a, (vector signed long long)__b,
3649
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3650
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3651
0x1C, 0x1D, 0x1E, 0x1F));
3652
}
3653
static __inline__ vector signed long long __ATTRS_o_ai
3654
vec_mergel(vector bool long long __a, vector signed long long __b) {
3655
return vec_perm((vector signed long long)__a, __b,
3656
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3657
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3658
0x1C, 0x1D, 0x1E, 0x1F));
3659
}
3660
static __inline__ vector unsigned long long __ATTRS_o_ai
3661
vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
3662
return vec_perm(__a, __b,
3663
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3664
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3665
0x1C, 0x1D, 0x1E, 0x1F));
3666
}
3667
static __inline__ vector unsigned long long __ATTRS_o_ai
3668
vec_mergel(vector unsigned long long __a, vector bool long long __b) {
3669
return vec_perm(__a, (vector unsigned long long)__b,
3670
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3671
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3672
0x1C, 0x1D, 0x1E, 0x1F));
3673
}
3674
static __inline__ vector unsigned long long __ATTRS_o_ai
3675
vec_mergel(vector bool long long __a, vector unsigned long long __b) {
3676
return vec_perm((vector unsigned long long)__a, __b,
3677
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3678
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3679
0x1C, 0x1D, 0x1E, 0x1F));
3680
}
3681
static __inline__ vector bool long long __ATTRS_o_ai
3682
vec_mergel(vector bool long long __a, vector bool long long __b) {
3683
return vec_perm(__a, __b,
3684
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3685
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3686
0x1C, 0x1D, 0x1E, 0x1F));
3687
}
3688
static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
3689
vector double __b) {
3690
return vec_perm(__a, __b,
3691
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3692
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3693
0x1C, 0x1D, 0x1E, 0x1F));
3694
}
3695
static __inline__ vector double __ATTRS_o_ai
3696
vec_mergel(vector double __a, vector bool long long __b) {
3697
return vec_perm(__a, (vector double)__b,
3698
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3699
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3700
0x1C, 0x1D, 0x1E, 0x1F));
3701
}
3702
static __inline__ vector double __ATTRS_o_ai
3703
vec_mergel(vector bool long long __a, vector double __b) {
3704
return vec_perm((vector double)__a, __b,
3705
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3706
0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3707
0x1C, 0x1D, 0x1E, 0x1F));
3708
}
3709
#endif
3710
3711
/* vec_vmrglb */
3712
3713
#define __builtin_altivec_vmrglb vec_vmrglb
3714
3715
static __inline__ vector signed char __ATTRS_o_ai
3716
vec_vmrglb(vector signed char __a, vector signed char __b) {
3717
return vec_perm(__a, __b,
3718
(vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3719
0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3720
0x0E, 0x1E, 0x0F, 0x1F));
3721
}
3722
3723
static __inline__ vector unsigned char __ATTRS_o_ai
3724
vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
3725
return vec_perm(__a, __b,
3726
(vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3727
0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3728
0x0E, 0x1E, 0x0F, 0x1F));
3729
}
3730
3731
static __inline__ vector bool char __ATTRS_o_ai
3732
vec_vmrglb(vector bool char __a, vector bool char __b) {
3733
return vec_perm(__a, __b,
3734
(vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3735
0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3736
0x0E, 0x1E, 0x0F, 0x1F));
3737
}
3738
3739
/* vec_vmrglh */
3740
3741
#define __builtin_altivec_vmrglh vec_vmrglh
3742
3743
static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
3744
vector short __b) {
3745
return vec_perm(__a, __b,
3746
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3747
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3748
0x0E, 0x0F, 0x1E, 0x1F));
3749
}
3750
3751
static __inline__ vector unsigned short __ATTRS_o_ai
3752
vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
3753
return vec_perm(__a, __b,
3754
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3755
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3756
0x0E, 0x0F, 0x1E, 0x1F));
3757
}
3758
3759
static __inline__ vector bool short __ATTRS_o_ai
3760
vec_vmrglh(vector bool short __a, vector bool short __b) {
3761
return vec_perm(__a, __b,
3762
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3763
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3764
0x0E, 0x0F, 0x1E, 0x1F));
3765
}
3766
3767
static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
3768
vector pixel __b) {
3769
return vec_perm(__a, __b,
3770
(vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3771
0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3772
0x0E, 0x0F, 0x1E, 0x1F));
3773
}
3774
3775
/* vec_vmrglw */
3776
3777
#define __builtin_altivec_vmrglw vec_vmrglw
3778
3779
static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
3780
vector int __b) {
3781
return vec_perm(__a, __b,
3782
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3783
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3784
0x1C, 0x1D, 0x1E, 0x1F));
3785
}
3786
3787
static __inline__ vector unsigned int __ATTRS_o_ai
3788
vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
3789
return vec_perm(__a, __b,
3790
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3791
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3792
0x1C, 0x1D, 0x1E, 0x1F));
3793
}
3794
3795
static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
3796
vector bool int __b) {
3797
return vec_perm(__a, __b,
3798
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3799
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3800
0x1C, 0x1D, 0x1E, 0x1F));
3801
}
3802
3803
static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
3804
vector float __b) {
3805
return vec_perm(__a, __b,
3806
(vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3807
0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3808
0x1C, 0x1D, 0x1E, 0x1F));
3809
}
3810
3811
#ifdef __POWER8_VECTOR__
3812
/* vec_mergee */
3813
3814
static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
3815
vector bool int __b) {
3816
return vec_perm(__a, __b,
3817
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3818
0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3819
0x18, 0x19, 0x1A, 0x1B));
3820
}
3821
3822
static __inline__ vector signed int __ATTRS_o_ai
3823
vec_mergee(vector signed int __a, vector signed int __b) {
3824
return vec_perm(__a, __b,
3825
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3826
0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3827
0x18, 0x19, 0x1A, 0x1B));
3828
}
3829
3830
static __inline__ vector unsigned int __ATTRS_o_ai
3831
vec_mergee(vector unsigned int __a, vector unsigned int __b) {
3832
return vec_perm(__a, __b,
3833
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3834
0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3835
0x18, 0x19, 0x1A, 0x1B));
3836
}
3837
3838
/* vec_mergeo */
3839
3840
static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
3841
vector bool int __b) {
3842
return vec_perm(__a, __b,
3843
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3844
0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3845
0x1C, 0x1D, 0x1E, 0x1F));
3846
}
3847
3848
static __inline__ vector signed int __ATTRS_o_ai
3849
vec_mergeo(vector signed int __a, vector signed int __b) {
3850
return vec_perm(__a, __b,
3851
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3852
0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3853
0x1C, 0x1D, 0x1E, 0x1F));
3854
}
3855
3856
static __inline__ vector unsigned int __ATTRS_o_ai
3857
vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
3858
return vec_perm(__a, __b,
3859
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3860
0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3861
0x1C, 0x1D, 0x1E, 0x1F));
3862
}
3863
3864
#endif
3865
3866
/* vec_mfvscr */
3867
3868
static __inline__ vector unsigned short __attribute__((__always_inline__))
3869
vec_mfvscr(void) {
3870
return __builtin_altivec_mfvscr();
3871
}
3872
3873
/* vec_min */
3874
3875
static __inline__ vector signed char __ATTRS_o_ai
3876
vec_min(vector signed char __a, vector signed char __b) {
3877
return __builtin_altivec_vminsb(__a, __b);
3878
}
3879
3880
static __inline__ vector signed char __ATTRS_o_ai
3881
vec_min(vector bool char __a, vector signed char __b) {
3882
return __builtin_altivec_vminsb((vector signed char)__a, __b);
3883
}
3884
3885
static __inline__ vector signed char __ATTRS_o_ai
3886
vec_min(vector signed char __a, vector bool char __b) {
3887
return __builtin_altivec_vminsb(__a, (vector signed char)__b);
3888
}
3889
3890
static __inline__ vector unsigned char __ATTRS_o_ai
3891
vec_min(vector unsigned char __a, vector unsigned char __b) {
3892
return __builtin_altivec_vminub(__a, __b);
3893
}
3894
3895
static __inline__ vector unsigned char __ATTRS_o_ai
3896
vec_min(vector bool char __a, vector unsigned char __b) {
3897
return __builtin_altivec_vminub((vector unsigned char)__a, __b);
3898
}
3899
3900
static __inline__ vector unsigned char __ATTRS_o_ai
3901
vec_min(vector unsigned char __a, vector bool char __b) {
3902
return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
3903
}
3904
3905
static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
3906
vector short __b) {
3907
return __builtin_altivec_vminsh(__a, __b);
3908
}
3909
3910
static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
3911
vector short __b) {
3912
return __builtin_altivec_vminsh((vector short)__a, __b);
3913
}
3914
3915
static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
3916
vector bool short __b) {
3917
return __builtin_altivec_vminsh(__a, (vector short)__b);
3918
}
3919
3920
static __inline__ vector unsigned short __ATTRS_o_ai
3921
vec_min(vector unsigned short __a, vector unsigned short __b) {
3922
return __builtin_altivec_vminuh(__a, __b);
3923
}
3924
3925
static __inline__ vector unsigned short __ATTRS_o_ai
3926
vec_min(vector bool short __a, vector unsigned short __b) {
3927
return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
3928
}
3929
3930
static __inline__ vector unsigned short __ATTRS_o_ai
3931
vec_min(vector unsigned short __a, vector bool short __b) {
3932
return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
3933
}
3934
3935
static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
3936
vector int __b) {
3937
return __builtin_altivec_vminsw(__a, __b);
3938
}
3939
3940
static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
3941
vector int __b) {
3942
return __builtin_altivec_vminsw((vector int)__a, __b);
3943
}
3944
3945
static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
3946
vector bool int __b) {
3947
return __builtin_altivec_vminsw(__a, (vector int)__b);
3948
}
3949
3950
static __inline__ vector unsigned int __ATTRS_o_ai
3951
vec_min(vector unsigned int __a, vector unsigned int __b) {
3952
return __builtin_altivec_vminuw(__a, __b);
3953
}
3954
3955
static __inline__ vector unsigned int __ATTRS_o_ai
3956
vec_min(vector bool int __a, vector unsigned int __b) {
3957
return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
3958
}
3959
3960
static __inline__ vector unsigned int __ATTRS_o_ai
3961
vec_min(vector unsigned int __a, vector bool int __b) {
3962
return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
3963
}
3964
3965
#ifdef __POWER8_VECTOR__
3966
static __inline__ vector signed long long __ATTRS_o_ai
3967
vec_min(vector signed long long __a, vector signed long long __b) {
3968
return __builtin_altivec_vminsd(__a, __b);
3969
}
3970
3971
static __inline__ vector signed long long __ATTRS_o_ai
3972
vec_min(vector bool long long __a, vector signed long long __b) {
3973
return __builtin_altivec_vminsd((vector signed long long)__a, __b);
3974
}
3975
3976
static __inline__ vector signed long long __ATTRS_o_ai
3977
vec_min(vector signed long long __a, vector bool long long __b) {
3978
return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
3979
}
3980
3981
static __inline__ vector unsigned long long __ATTRS_o_ai
3982
vec_min(vector unsigned long long __a, vector unsigned long long __b) {
3983
return __builtin_altivec_vminud(__a, __b);
3984
}
3985
3986
static __inline__ vector unsigned long long __ATTRS_o_ai
3987
vec_min(vector bool long long __a, vector unsigned long long __b) {
3988
return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
3989
}
3990
3991
static __inline__ vector unsigned long long __ATTRS_o_ai
3992
vec_min(vector unsigned long long __a, vector bool long long __b) {
3993
return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
3994
}
3995
#endif
3996
3997
static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
3998
vector float __b) {
3999
#ifdef __VSX__
4000
return __builtin_vsx_xvminsp(__a, __b);
4001
#else
4002
return __builtin_altivec_vminfp(__a, __b);
4003
#endif
4004
}
4005
4006
#ifdef __VSX__
4007
static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
4008
vector double __b) {
4009
return __builtin_vsx_xvmindp(__a, __b);
4010
}
4011
#endif
4012
4013
/* vec_vminsb */
4014
4015
static __inline__ vector signed char __ATTRS_o_ai
4016
vec_vminsb(vector signed char __a, vector signed char __b) {
4017
return __builtin_altivec_vminsb(__a, __b);
4018
}
4019
4020
static __inline__ vector signed char __ATTRS_o_ai
4021
vec_vminsb(vector bool char __a, vector signed char __b) {
4022
return __builtin_altivec_vminsb((vector signed char)__a, __b);
4023
}
4024
4025
static __inline__ vector signed char __ATTRS_o_ai
4026
vec_vminsb(vector signed char __a, vector bool char __b) {
4027
return __builtin_altivec_vminsb(__a, (vector signed char)__b);
4028
}
4029
4030
/* vec_vminub */
4031
4032
static __inline__ vector unsigned char __ATTRS_o_ai
4033
vec_vminub(vector unsigned char __a, vector unsigned char __b) {
4034
return __builtin_altivec_vminub(__a, __b);
4035
}
4036
4037
static __inline__ vector unsigned char __ATTRS_o_ai
4038
vec_vminub(vector bool char __a, vector unsigned char __b) {
4039
return __builtin_altivec_vminub((vector unsigned char)__a, __b);
4040
}
4041
4042
static __inline__ vector unsigned char __ATTRS_o_ai
4043
vec_vminub(vector unsigned char __a, vector bool char __b) {
4044
return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
4045
}
4046
4047
/* vec_vminsh */
4048
4049
static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
4050
vector short __b) {
4051
return __builtin_altivec_vminsh(__a, __b);
4052
}
4053
4054
static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
4055
vector short __b) {
4056
return __builtin_altivec_vminsh((vector short)__a, __b);
4057
}
4058
4059
static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
4060
vector bool short __b) {
4061
return __builtin_altivec_vminsh(__a, (vector short)__b);
4062
}
4063
4064
/* vec_vminuh */
4065
4066
static __inline__ vector unsigned short __ATTRS_o_ai
4067
vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
4068
return __builtin_altivec_vminuh(__a, __b);
4069
}
4070
4071
static __inline__ vector unsigned short __ATTRS_o_ai
4072
vec_vminuh(vector bool short __a, vector unsigned short __b) {
4073
return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
4074
}
4075
4076
static __inline__ vector unsigned short __ATTRS_o_ai
4077
vec_vminuh(vector unsigned short __a, vector bool short __b) {
4078
return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
4079
}
4080
4081
/* vec_vminsw */
4082
4083
static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
4084
vector int __b) {
4085
return __builtin_altivec_vminsw(__a, __b);
4086
}
4087
4088
static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
4089
vector int __b) {
4090
return __builtin_altivec_vminsw((vector int)__a, __b);
4091
}
4092
4093
static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
4094
vector bool int __b) {
4095
return __builtin_altivec_vminsw(__a, (vector int)__b);
4096
}
4097
4098
/* vec_vminuw */
4099
4100
static __inline__ vector unsigned int __ATTRS_o_ai
4101
vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
4102
return __builtin_altivec_vminuw(__a, __b);
4103
}
4104
4105
static __inline__ vector unsigned int __ATTRS_o_ai
4106
vec_vminuw(vector bool int __a, vector unsigned int __b) {
4107
return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
4108
}
4109
4110
static __inline__ vector unsigned int __ATTRS_o_ai
4111
vec_vminuw(vector unsigned int __a, vector bool int __b) {
4112
return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
4113
}
4114
4115
/* vec_vminfp */
4116
4117
static __inline__ vector float __attribute__((__always_inline__))
4118
vec_vminfp(vector float __a, vector float __b) {
4119
#ifdef __VSX__
4120
return __builtin_vsx_xvminsp(__a, __b);
4121
#else
4122
return __builtin_altivec_vminfp(__a, __b);
4123
#endif
4124
}
4125
4126
/* vec_mladd */
4127
4128
#define __builtin_altivec_vmladduhm vec_mladd
4129
4130
static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
4131
vector short __b,
4132
vector short __c) {
4133
return __a * __b + __c;
4134
}
4135
4136
static __inline__ vector short __ATTRS_o_ai vec_mladd(
4137
vector short __a, vector unsigned short __b, vector unsigned short __c) {
4138
return __a * (vector short)__b + (vector short)__c;
4139
}
4140
4141
static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
4142
vector short __b,
4143
vector short __c) {
4144
return (vector short)__a * __b + __c;
4145
}
4146
4147
static __inline__ vector unsigned short __ATTRS_o_ai
4148
vec_mladd(vector unsigned short __a, vector unsigned short __b,
4149
vector unsigned short __c) {
4150
return __a * __b + __c;
4151
}
4152
4153
/* vec_vmladduhm */
4154
4155
static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
4156
vector short __b,
4157
vector short __c) {
4158
return __a * __b + __c;
4159
}
4160
4161
static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
4162
vector short __a, vector unsigned short __b, vector unsigned short __c) {
4163
return __a * (vector short)__b + (vector short)__c;
4164
}
4165
4166
static __inline__ vector short __ATTRS_o_ai
4167
vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
4168
return (vector short)__a * __b + __c;
4169
}
4170
4171
static __inline__ vector unsigned short __ATTRS_o_ai
4172
vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
4173
vector unsigned short __c) {
4174
return __a * __b + __c;
4175
}
4176
4177
/* vec_mradds */
4178
4179
static __inline__ vector short __attribute__((__always_inline__))
4180
vec_mradds(vector short __a, vector short __b, vector short __c) {
4181
return __builtin_altivec_vmhraddshs(__a, __b, __c);
4182
}
4183
4184
/* vec_vmhraddshs */
4185
4186
static __inline__ vector short __attribute__((__always_inline__))
4187
vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
4188
return __builtin_altivec_vmhraddshs(__a, __b, __c);
4189
}
4190
4191
/* vec_msum */
4192
4193
static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
4194
vector unsigned char __b,
4195
vector int __c) {
4196
return __builtin_altivec_vmsummbm(__a, __b, __c);
4197
}
4198
4199
static __inline__ vector unsigned int __ATTRS_o_ai
4200
vec_msum(vector unsigned char __a, vector unsigned char __b,
4201
vector unsigned int __c) {
4202
return __builtin_altivec_vmsumubm(__a, __b, __c);
4203
}
4204
4205
static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
4206
vector short __b,
4207
vector int __c) {
4208
return __builtin_altivec_vmsumshm(__a, __b, __c);
4209
}
4210
4211
static __inline__ vector unsigned int __ATTRS_o_ai
4212
vec_msum(vector unsigned short __a, vector unsigned short __b,
4213
vector unsigned int __c) {
4214
return __builtin_altivec_vmsumuhm(__a, __b, __c);
4215
}
4216
4217
/* vec_vmsummbm */
4218
4219
static __inline__ vector int __attribute__((__always_inline__))
4220
vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
4221
return __builtin_altivec_vmsummbm(__a, __b, __c);
4222
}
4223
4224
/* vec_vmsumubm */
4225
4226
static __inline__ vector unsigned int __attribute__((__always_inline__))
4227
vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
4228
vector unsigned int __c) {
4229
return __builtin_altivec_vmsumubm(__a, __b, __c);
4230
}
4231
4232
/* vec_vmsumshm */
4233
4234
static __inline__ vector int __attribute__((__always_inline__))
4235
vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
4236
return __builtin_altivec_vmsumshm(__a, __b, __c);
4237
}
4238
4239
/* vec_vmsumuhm */
4240
4241
static __inline__ vector unsigned int __attribute__((__always_inline__))
4242
vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
4243
vector unsigned int __c) {
4244
return __builtin_altivec_vmsumuhm(__a, __b, __c);
4245
}
4246
4247
/* vec_msums */
4248
4249
static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
4250
vector short __b,
4251
vector int __c) {
4252
return __builtin_altivec_vmsumshs(__a, __b, __c);
4253
}
4254
4255
static __inline__ vector unsigned int __ATTRS_o_ai
4256
vec_msums(vector unsigned short __a, vector unsigned short __b,
4257
vector unsigned int __c) {
4258
return __builtin_altivec_vmsumuhs(__a, __b, __c);
4259
}
4260
4261
/* vec_vmsumshs */
4262
4263
static __inline__ vector int __attribute__((__always_inline__))
4264
vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
4265
return __builtin_altivec_vmsumshs(__a, __b, __c);
4266
}
4267
4268
/* vec_vmsumuhs */
4269
4270
static __inline__ vector unsigned int __attribute__((__always_inline__))
4271
vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
4272
vector unsigned int __c) {
4273
return __builtin_altivec_vmsumuhs(__a, __b, __c);
4274
}
4275
4276
/* vec_mtvscr */
4277
4278
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
4279
__builtin_altivec_mtvscr((vector int)__a);
4280
}
4281
4282
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
4283
__builtin_altivec_mtvscr((vector int)__a);
4284
}
4285
4286
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
4287
__builtin_altivec_mtvscr((vector int)__a);
4288
}
4289
4290
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
4291
__builtin_altivec_mtvscr((vector int)__a);
4292
}
4293
4294
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
4295
__builtin_altivec_mtvscr((vector int)__a);
4296
}
4297
4298
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
4299
__builtin_altivec_mtvscr((vector int)__a);
4300
}
4301
4302
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
4303
__builtin_altivec_mtvscr((vector int)__a);
4304
}
4305
4306
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
4307
__builtin_altivec_mtvscr((vector int)__a);
4308
}
4309
4310
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
4311
__builtin_altivec_mtvscr((vector int)__a);
4312
}
4313
4314
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
4315
__builtin_altivec_mtvscr((vector int)__a);
4316
}
4317
4318
static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
4319
__builtin_altivec_mtvscr((vector int)__a);
4320
}
4321
4322
/* vec_mul */
4323
4324
/* Integer vector multiplication will involve multiplication of the odd/even
4325
elements separately, then truncating the results and moving to the
4326
result vector.
4327
*/
4328
static __inline__ vector signed char __ATTRS_o_ai
4329
vec_mul(vector signed char __a, vector signed char __b) {
4330
return __a * __b;
4331
}
4332
4333
static __inline__ vector unsigned char __ATTRS_o_ai
4334
vec_mul(vector unsigned char __a, vector unsigned char __b) {
4335
return __a * __b;
4336
}
4337
4338
static __inline__ vector signed short __ATTRS_o_ai
4339
vec_mul(vector signed short __a, vector signed short __b) {
4340
return __a * __b;
4341
}
4342
4343
static __inline__ vector unsigned short __ATTRS_o_ai
4344
vec_mul(vector unsigned short __a, vector unsigned short __b) {
4345
return __a * __b;
4346
}
4347
4348
static __inline__ vector signed int __ATTRS_o_ai
4349
vec_mul(vector signed int __a, vector signed int __b) {
4350
return __a * __b;
4351
}
4352
4353
static __inline__ vector unsigned int __ATTRS_o_ai
4354
vec_mul(vector unsigned int __a, vector unsigned int __b) {
4355
return __a * __b;
4356
}
4357
4358
#ifdef __VSX__
4359
static __inline__ vector signed long long __ATTRS_o_ai
4360
vec_mul(vector signed long long __a, vector signed long long __b) {
4361
return __a * __b;
4362
}
4363
4364
static __inline__ vector unsigned long long __ATTRS_o_ai
4365
vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
4366
return __a * __b;
4367
}
4368
#endif
4369
4370
static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
4371
vector float __b) {
4372
return __a * __b;
4373
}
4374
4375
#ifdef __VSX__
4376
static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
4377
vector double __b) {
4378
return __a * __b;
4379
}
4380
#endif
4381
4382
/* The vmulos* and vmules* instructions have a big endian bias, so
4383
we must reverse the meaning of "even" and "odd" for little endian. */
4384
4385
/* vec_mule */
4386
4387
static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
4388
vector signed char __b) {
4389
#ifdef __LITTLE_ENDIAN__
4390
return __builtin_altivec_vmulosb(__a, __b);
4391
#else
4392
return __builtin_altivec_vmulesb(__a, __b);
4393
#endif
4394
}
4395
4396
static __inline__ vector unsigned short __ATTRS_o_ai
4397
vec_mule(vector unsigned char __a, vector unsigned char __b) {
4398
#ifdef __LITTLE_ENDIAN__
4399
return __builtin_altivec_vmuloub(__a, __b);
4400
#else
4401
return __builtin_altivec_vmuleub(__a, __b);
4402
#endif
4403
}
4404
4405
static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
4406
vector short __b) {
4407
#ifdef __LITTLE_ENDIAN__
4408
return __builtin_altivec_vmulosh(__a, __b);
4409
#else
4410
return __builtin_altivec_vmulesh(__a, __b);
4411
#endif
4412
}
4413
4414
static __inline__ vector unsigned int __ATTRS_o_ai
4415
vec_mule(vector unsigned short __a, vector unsigned short __b) {
4416
#ifdef __LITTLE_ENDIAN__
4417
return __builtin_altivec_vmulouh(__a, __b);
4418
#else
4419
return __builtin_altivec_vmuleuh(__a, __b);
4420
#endif
4421
}
4422
4423
#ifdef __POWER8_VECTOR__
4424
static __inline__ vector signed long long __ATTRS_o_ai
4425
vec_mule(vector signed int __a, vector signed int __b) {
4426
#ifdef __LITTLE_ENDIAN__
4427
return __builtin_altivec_vmulosw(__a, __b);
4428
#else
4429
return __builtin_altivec_vmulesw(__a, __b);
4430
#endif
4431
}
4432
4433
static __inline__ vector unsigned long long __ATTRS_o_ai
4434
vec_mule(vector unsigned int __a, vector unsigned int __b) {
4435
#ifdef __LITTLE_ENDIAN__
4436
return __builtin_altivec_vmulouw(__a, __b);
4437
#else
4438
return __builtin_altivec_vmuleuw(__a, __b);
4439
#endif
4440
}
4441
#endif
4442
4443
/* vec_vmulesb */
4444
4445
static __inline__ vector short __attribute__((__always_inline__))
4446
vec_vmulesb(vector signed char __a, vector signed char __b) {
4447
#ifdef __LITTLE_ENDIAN__
4448
return __builtin_altivec_vmulosb(__a, __b);
4449
#else
4450
return __builtin_altivec_vmulesb(__a, __b);
4451
#endif
4452
}
4453
4454
/* vec_vmuleub */
4455
4456
static __inline__ vector unsigned short __attribute__((__always_inline__))
4457
vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
4458
#ifdef __LITTLE_ENDIAN__
4459
return __builtin_altivec_vmuloub(__a, __b);
4460
#else
4461
return __builtin_altivec_vmuleub(__a, __b);
4462
#endif
4463
}
4464
4465
/* vec_vmulesh */
4466
4467
static __inline__ vector int __attribute__((__always_inline__))
4468
vec_vmulesh(vector short __a, vector short __b) {
4469
#ifdef __LITTLE_ENDIAN__
4470
return __builtin_altivec_vmulosh(__a, __b);
4471
#else
4472
return __builtin_altivec_vmulesh(__a, __b);
4473
#endif
4474
}
4475
4476
/* vec_vmuleuh */
4477
4478
static __inline__ vector unsigned int __attribute__((__always_inline__))
4479
vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
4480
#ifdef __LITTLE_ENDIAN__
4481
return __builtin_altivec_vmulouh(__a, __b);
4482
#else
4483
return __builtin_altivec_vmuleuh(__a, __b);
4484
#endif
4485
}
4486
4487
/* vec_mulo */
4488
4489
static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
4490
vector signed char __b) {
4491
#ifdef __LITTLE_ENDIAN__
4492
return __builtin_altivec_vmulesb(__a, __b);
4493
#else
4494
return __builtin_altivec_vmulosb(__a, __b);
4495
#endif
4496
}
4497
4498
static __inline__ vector unsigned short __ATTRS_o_ai
4499
vec_mulo(vector unsigned char __a, vector unsigned char __b) {
4500
#ifdef __LITTLE_ENDIAN__
4501
return __builtin_altivec_vmuleub(__a, __b);
4502
#else
4503
return __builtin_altivec_vmuloub(__a, __b);
4504
#endif
4505
}
4506
4507
static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
4508
vector short __b) {
4509
#ifdef __LITTLE_ENDIAN__
4510
return __builtin_altivec_vmulesh(__a, __b);
4511
#else
4512
return __builtin_altivec_vmulosh(__a, __b);
4513
#endif
4514
}
4515
4516
static __inline__ vector unsigned int __ATTRS_o_ai
4517
vec_mulo(vector unsigned short __a, vector unsigned short __b) {
4518
#ifdef __LITTLE_ENDIAN__
4519
return __builtin_altivec_vmuleuh(__a, __b);
4520
#else
4521
return __builtin_altivec_vmulouh(__a, __b);
4522
#endif
4523
}
4524
4525
#ifdef __POWER8_VECTOR__
4526
static __inline__ vector signed long long __ATTRS_o_ai
4527
vec_mulo(vector signed int __a, vector signed int __b) {
4528
#ifdef __LITTLE_ENDIAN__
4529
return __builtin_altivec_vmulesw(__a, __b);
4530
#else
4531
return __builtin_altivec_vmulosw(__a, __b);
4532
#endif
4533
}
4534
4535
static __inline__ vector unsigned long long __ATTRS_o_ai
4536
vec_mulo(vector unsigned int __a, vector unsigned int __b) {
4537
#ifdef __LITTLE_ENDIAN__
4538
return __builtin_altivec_vmuleuw(__a, __b);
4539
#else
4540
return __builtin_altivec_vmulouw(__a, __b);
4541
#endif
4542
}
4543
#endif
4544
4545
/* vec_vmulosb */
4546
4547
static __inline__ vector short __attribute__((__always_inline__))
4548
vec_vmulosb(vector signed char __a, vector signed char __b) {
4549
#ifdef __LITTLE_ENDIAN__
4550
return __builtin_altivec_vmulesb(__a, __b);
4551
#else
4552
return __builtin_altivec_vmulosb(__a, __b);
4553
#endif
4554
}
4555
4556
/* vec_vmuloub */
4557
4558
static __inline__ vector unsigned short __attribute__((__always_inline__))
4559
vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
4560
#ifdef __LITTLE_ENDIAN__
4561
return __builtin_altivec_vmuleub(__a, __b);
4562
#else
4563
return __builtin_altivec_vmuloub(__a, __b);
4564
#endif
4565
}
4566
4567
/* vec_vmulosh */
4568
4569
static __inline__ vector int __attribute__((__always_inline__))
4570
vec_vmulosh(vector short __a, vector short __b) {
4571
#ifdef __LITTLE_ENDIAN__
4572
return __builtin_altivec_vmulesh(__a, __b);
4573
#else
4574
return __builtin_altivec_vmulosh(__a, __b);
4575
#endif
4576
}
4577
4578
/* vec_vmulouh */
4579
4580
static __inline__ vector unsigned int __attribute__((__always_inline__))
4581
vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
4582
#ifdef __LITTLE_ENDIAN__
4583
return __builtin_altivec_vmuleuh(__a, __b);
4584
#else
4585
return __builtin_altivec_vmulouh(__a, __b);
4586
#endif
4587
}
4588
4589
/* vec_nand */
4590
4591
#ifdef __POWER8_VECTOR__
4592
static __inline__ vector signed char __ATTRS_o_ai
4593
vec_nand(vector signed char __a, vector signed char __b) {
4594
return ~(__a & __b);
4595
}
4596
4597
static __inline__ vector signed char __ATTRS_o_ai
4598
vec_nand(vector signed char __a, vector bool char __b) {
4599
return ~(__a & __b);
4600
}
4601
4602
static __inline__ vector signed char __ATTRS_o_ai
4603
vec_nand(vector bool char __a, vector signed char __b) {
4604
return ~(__a & __b);
4605
}
4606
4607
static __inline__ vector unsigned char __ATTRS_o_ai
4608
vec_nand(vector unsigned char __a, vector unsigned char __b) {
4609
return ~(__a & __b);
4610
}
4611
4612
static __inline__ vector unsigned char __ATTRS_o_ai
4613
vec_nand(vector unsigned char __a, vector bool char __b) {
4614
return ~(__a & __b);
4615
}
4616
4617
static __inline__ vector unsigned char __ATTRS_o_ai
4618
vec_nand(vector bool char __a, vector unsigned char __b) {
4619
return ~(__a & __b);
4620
}
4621
4622
static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
4623
vector bool char __b) {
4624
return ~(__a & __b);
4625
}
4626
4627
static __inline__ vector signed short __ATTRS_o_ai
4628
vec_nand(vector signed short __a, vector signed short __b) {
4629
return ~(__a & __b);
4630
}
4631
4632
static __inline__ vector signed short __ATTRS_o_ai
4633
vec_nand(vector signed short __a, vector bool short __b) {
4634
return ~(__a & __b);
4635
}
4636
4637
static __inline__ vector signed short __ATTRS_o_ai
4638
vec_nand(vector bool short __a, vector signed short __b) {
4639
return ~(__a & __b);
4640
}
4641
4642
static __inline__ vector unsigned short __ATTRS_o_ai
4643
vec_nand(vector unsigned short __a, vector unsigned short __b) {
4644
return ~(__a & __b);
4645
}
4646
4647
static __inline__ vector unsigned short __ATTRS_o_ai
4648
vec_nand(vector unsigned short __a, vector bool short __b) {
4649
return ~(__a & __b);
4650
}
4651
4652
static __inline__ vector bool short __ATTRS_o_ai
4653
vec_nand(vector bool short __a, vector bool short __b) {
4654
return ~(__a & __b);
4655
}
4656
4657
static __inline__ vector signed int __ATTRS_o_ai
4658
vec_nand(vector signed int __a, vector signed int __b) {
4659
return ~(__a & __b);
4660
}
4661
4662
static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
4663
vector bool int __b) {
4664
return ~(__a & __b);
4665
}
4666
4667
static __inline__ vector signed int __ATTRS_o_ai
4668
vec_nand(vector bool int __a, vector signed int __b) {
4669
return ~(__a & __b);
4670
}
4671
4672
static __inline__ vector unsigned int __ATTRS_o_ai
4673
vec_nand(vector unsigned int __a, vector unsigned int __b) {
4674
return ~(__a & __b);
4675
}
4676
4677
static __inline__ vector unsigned int __ATTRS_o_ai
4678
vec_nand(vector unsigned int __a, vector bool int __b) {
4679
return ~(__a & __b);
4680
}
4681
4682
static __inline__ vector unsigned int __ATTRS_o_ai
4683
vec_nand(vector bool int __a, vector unsigned int __b) {
4684
return ~(__a & __b);
4685
}
4686
4687
static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
4688
vector bool int __b) {
4689
return ~(__a & __b);
4690
}
4691
4692
static __inline__ vector signed long long __ATTRS_o_ai
4693
vec_nand(vector signed long long __a, vector signed long long __b) {
4694
return ~(__a & __b);
4695
}
4696
4697
static __inline__ vector signed long long __ATTRS_o_ai
4698
vec_nand(vector signed long long __a, vector bool long long __b) {
4699
return ~(__a & __b);
4700
}
4701
4702
static __inline__ vector signed long long __ATTRS_o_ai
4703
vec_nand(vector bool long long __a, vector signed long long __b) {
4704
return ~(__a & __b);
4705
}
4706
4707
static __inline__ vector unsigned long long __ATTRS_o_ai
4708
vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
4709
return ~(__a & __b);
4710
}
4711
4712
static __inline__ vector unsigned long long __ATTRS_o_ai
4713
vec_nand(vector unsigned long long __a, vector bool long long __b) {
4714
return ~(__a & __b);
4715
}
4716
4717
static __inline__ vector unsigned long long __ATTRS_o_ai
4718
vec_nand(vector bool long long __a, vector unsigned long long __b) {
4719
return ~(__a & __b);
4720
}
4721
4722
static __inline__ vector bool long long __ATTRS_o_ai
4723
vec_nand(vector bool long long __a, vector bool long long __b) {
4724
return ~(__a & __b);
4725
}
4726
4727
#endif
4728
4729
/* vec_nmadd */
4730
4731
#ifdef __VSX__
4732
static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
4733
vector float __b,
4734
vector float __c) {
4735
return __builtin_vsx_xvnmaddasp(__a, __b, __c);
4736
}
4737
4738
static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
4739
vector double __b,
4740
vector double __c) {
4741
return __builtin_vsx_xvnmaddadp(__a, __b, __c);
4742
}
4743
#endif
4744
4745
/* vec_nmsub */
4746
4747
static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
4748
vector float __b,
4749
vector float __c) {
4750
#ifdef __VSX__
4751
return __builtin_vsx_xvnmsubasp(__a, __b, __c);
4752
#else
4753
return __builtin_altivec_vnmsubfp(__a, __b, __c);
4754
#endif
4755
}
4756
4757
#ifdef __VSX__
4758
static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
4759
vector double __b,
4760
vector double __c) {
4761
return __builtin_vsx_xvnmsubadp(__a, __b, __c);
4762
}
4763
#endif
4764
4765
/* vec_vnmsubfp */
4766
4767
static __inline__ vector float __attribute__((__always_inline__))
4768
vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
4769
return __builtin_altivec_vnmsubfp(__a, __b, __c);
4770
}
4771
4772
/* vec_nor */
4773
4774
#define __builtin_altivec_vnor vec_nor
4775
4776
static __inline__ vector signed char __ATTRS_o_ai
4777
vec_nor(vector signed char __a, vector signed char __b) {
4778
return ~(__a | __b);
4779
}
4780
4781
static __inline__ vector unsigned char __ATTRS_o_ai
4782
vec_nor(vector unsigned char __a, vector unsigned char __b) {
4783
return ~(__a | __b);
4784
}
4785
4786
static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
4787
vector bool char __b) {
4788
return ~(__a | __b);
4789
}
4790
4791
static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
4792
vector short __b) {
4793
return ~(__a | __b);
4794
}
4795
4796
static __inline__ vector unsigned short __ATTRS_o_ai
4797
vec_nor(vector unsigned short __a, vector unsigned short __b) {
4798
return ~(__a | __b);
4799
}
4800
4801
static __inline__ vector bool short __ATTRS_o_ai
4802
vec_nor(vector bool short __a, vector bool short __b) {
4803
return ~(__a | __b);
4804
}
4805
4806
static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
4807
vector int __b) {
4808
return ~(__a | __b);
4809
}
4810
4811
static __inline__ vector unsigned int __ATTRS_o_ai
4812
vec_nor(vector unsigned int __a, vector unsigned int __b) {
4813
return ~(__a | __b);
4814
}
4815
4816
static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
4817
vector bool int __b) {
4818
return ~(__a | __b);
4819
}
4820
4821
static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
4822
vector float __b) {
4823
vector unsigned int __res =
4824
~((vector unsigned int)__a | (vector unsigned int)__b);
4825
return (vector float)__res;
4826
}
4827
4828
#ifdef __VSX__
4829
static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
4830
vector double __b) {
4831
vector unsigned long long __res =
4832
~((vector unsigned long long)__a | (vector unsigned long long)__b);
4833
return (vector double)__res;
4834
}
4835
#endif
4836
4837
/* vec_vnor */
4838
4839
static __inline__ vector signed char __ATTRS_o_ai
4840
vec_vnor(vector signed char __a, vector signed char __b) {
4841
return ~(__a | __b);
4842
}
4843
4844
static __inline__ vector unsigned char __ATTRS_o_ai
4845
vec_vnor(vector unsigned char __a, vector unsigned char __b) {
4846
return ~(__a | __b);
4847
}
4848
4849
static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
4850
vector bool char __b) {
4851
return ~(__a | __b);
4852
}
4853
4854
static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
4855
vector short __b) {
4856
return ~(__a | __b);
4857
}
4858
4859
static __inline__ vector unsigned short __ATTRS_o_ai
4860
vec_vnor(vector unsigned short __a, vector unsigned short __b) {
4861
return ~(__a | __b);
4862
}
4863
4864
static __inline__ vector bool short __ATTRS_o_ai
4865
vec_vnor(vector bool short __a, vector bool short __b) {
4866
return ~(__a | __b);
4867
}
4868
4869
static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
4870
vector int __b) {
4871
return ~(__a | __b);
4872
}
4873
4874
static __inline__ vector unsigned int __ATTRS_o_ai
4875
vec_vnor(vector unsigned int __a, vector unsigned int __b) {
4876
return ~(__a | __b);
4877
}
4878
4879
static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
4880
vector bool int __b) {
4881
return ~(__a | __b);
4882
}
4883
4884
static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
4885
vector float __b) {
4886
vector unsigned int __res =
4887
~((vector unsigned int)__a | (vector unsigned int)__b);
4888
return (vector float)__res;
4889
}
4890
4891
#ifdef __VSX__
4892
static __inline__ vector signed long long __ATTRS_o_ai
4893
vec_nor(vector signed long long __a, vector signed long long __b) {
4894
return ~(__a | __b);
4895
}
4896
4897
static __inline__ vector unsigned long long __ATTRS_o_ai
4898
vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
4899
return ~(__a | __b);
4900
}
4901
4902
static __inline__ vector bool long long __ATTRS_o_ai
4903
vec_nor(vector bool long long __a, vector bool long long __b) {
4904
return ~(__a | __b);
4905
}
4906
#endif
4907
4908
/* vec_or */
4909
4910
#define __builtin_altivec_vor vec_or
4911
4912
static __inline__ vector signed char __ATTRS_o_ai
4913
vec_or(vector signed char __a, vector signed char __b) {
4914
return __a | __b;
4915
}
4916
4917
static __inline__ vector signed char __ATTRS_o_ai
4918
vec_or(vector bool char __a, vector signed char __b) {
4919
return (vector signed char)__a | __b;
4920
}
4921
4922
static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
4923
vector bool char __b) {
4924
return __a | (vector signed char)__b;
4925
}
4926
4927
static __inline__ vector unsigned char __ATTRS_o_ai
4928
vec_or(vector unsigned char __a, vector unsigned char __b) {
4929
return __a | __b;
4930
}
4931
4932
static __inline__ vector unsigned char __ATTRS_o_ai
4933
vec_or(vector bool char __a, vector unsigned char __b) {
4934
return (vector unsigned char)__a | __b;
4935
}
4936
4937
static __inline__ vector unsigned char __ATTRS_o_ai
4938
vec_or(vector unsigned char __a, vector bool char __b) {
4939
return __a | (vector unsigned char)__b;
4940
}
4941
4942
static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
4943
vector bool char __b) {
4944
return __a | __b;
4945
}
4946
4947
static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
4948
vector short __b) {
4949
return __a | __b;
4950
}
4951
4952
static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
4953
vector short __b) {
4954
return (vector short)__a | __b;
4955
}
4956
4957
static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
4958
vector bool short __b) {
4959
return __a | (vector short)__b;
4960
}
4961
4962
static __inline__ vector unsigned short __ATTRS_o_ai
4963
vec_or(vector unsigned short __a, vector unsigned short __b) {
4964
return __a | __b;
4965
}
4966
4967
static __inline__ vector unsigned short __ATTRS_o_ai
4968
vec_or(vector bool short __a, vector unsigned short __b) {
4969
return (vector unsigned short)__a | __b;
4970
}
4971
4972
static __inline__ vector unsigned short __ATTRS_o_ai
4973
vec_or(vector unsigned short __a, vector bool short __b) {
4974
return __a | (vector unsigned short)__b;
4975
}
4976
4977
static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
4978
vector bool short __b) {
4979
return __a | __b;
4980
}
4981
4982
static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
4983
vector int __b) {
4984
return __a | __b;
4985
}
4986
4987
static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
4988
vector int __b) {
4989
return (vector int)__a | __b;
4990
}
4991
4992
static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
4993
vector bool int __b) {
4994
return __a | (vector int)__b;
4995
}
4996
4997
static __inline__ vector unsigned int __ATTRS_o_ai
4998
vec_or(vector unsigned int __a, vector unsigned int __b) {
4999
return __a | __b;
5000
}
5001
5002
static __inline__ vector unsigned int __ATTRS_o_ai
5003
vec_or(vector bool int __a, vector unsigned int __b) {
5004
return (vector unsigned int)__a | __b;
5005
}
5006
5007
static __inline__ vector unsigned int __ATTRS_o_ai
5008
vec_or(vector unsigned int __a, vector bool int __b) {
5009
return __a | (vector unsigned int)__b;
5010
}
5011
5012
static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
5013
vector bool int __b) {
5014
return __a | __b;
5015
}
5016
5017
static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
5018
vector float __b) {
5019
vector unsigned int __res =
5020
(vector unsigned int)__a | (vector unsigned int)__b;
5021
return (vector float)__res;
5022
}
5023
5024
static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
5025
vector float __b) {
5026
vector unsigned int __res =
5027
(vector unsigned int)__a | (vector unsigned int)__b;
5028
return (vector float)__res;
5029
}
5030
5031
static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
5032
vector bool int __b) {
5033
vector unsigned int __res =
5034
(vector unsigned int)__a | (vector unsigned int)__b;
5035
return (vector float)__res;
5036
}
5037
5038
#ifdef __VSX__
5039
static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
5040
vector double __b) {
5041
return (vector unsigned long long)__a | (vector unsigned long long)__b;
5042
}
5043
5044
static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
5045
vector bool long long __b) {
5046
return (vector unsigned long long)__a | (vector unsigned long long)__b;
5047
}
5048
5049
static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
5050
vector double __b) {
5051
vector unsigned long long __res =
5052
(vector unsigned long long)__a | (vector unsigned long long)__b;
5053
return (vector double)__res;
5054
}
5055
5056
static __inline__ vector signed long long __ATTRS_o_ai
5057
vec_or(vector signed long long __a, vector signed long long __b) {
5058
return __a | __b;
5059
}
5060
5061
static __inline__ vector signed long long __ATTRS_o_ai
5062
vec_or(vector bool long long __a, vector signed long long __b) {
5063
return (vector signed long long)__a | __b;
5064
}
5065
5066
static __inline__ vector signed long long __ATTRS_o_ai
5067
vec_or(vector signed long long __a, vector bool long long __b) {
5068
return __a | (vector signed long long)__b;
5069
}
5070
5071
static __inline__ vector unsigned long long __ATTRS_o_ai
5072
vec_or(vector unsigned long long __a, vector unsigned long long __b) {
5073
return __a | __b;
5074
}
5075
5076
static __inline__ vector unsigned long long __ATTRS_o_ai
5077
vec_or(vector bool long long __a, vector unsigned long long __b) {
5078
return (vector unsigned long long)__a | __b;
5079
}
5080
5081
static __inline__ vector unsigned long long __ATTRS_o_ai
5082
vec_or(vector unsigned long long __a, vector bool long long __b) {
5083
return __a | (vector unsigned long long)__b;
5084
}
5085
5086
static __inline__ vector bool long long __ATTRS_o_ai
5087
vec_or(vector bool long long __a, vector bool long long __b) {
5088
return __a | __b;
5089
}
5090
#endif
5091
5092
#ifdef __POWER8_VECTOR__
5093
static __inline__ vector signed char __ATTRS_o_ai
5094
vec_orc(vector signed char __a, vector signed char __b) {
5095
return __a | ~__b;
5096
}
5097
5098
static __inline__ vector signed char __ATTRS_o_ai
5099
vec_orc(vector signed char __a, vector bool char __b) {
5100
return __a | ~__b;
5101
}
5102
5103
static __inline__ vector signed char __ATTRS_o_ai
5104
vec_orc(vector bool char __a, vector signed char __b) {
5105
return __a | ~__b;
5106
}
5107
5108
static __inline__ vector unsigned char __ATTRS_o_ai
5109
vec_orc(vector unsigned char __a, vector unsigned char __b) {
5110
return __a | ~__b;
5111
}
5112
5113
static __inline__ vector unsigned char __ATTRS_o_ai
5114
vec_orc(vector unsigned char __a, vector bool char __b) {
5115
return __a | ~__b;
5116
}
5117
5118
static __inline__ vector unsigned char __ATTRS_o_ai
5119
vec_orc(vector bool char __a, vector unsigned char __b) {
5120
return __a | ~__b;
5121
}
5122
5123
static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
5124
vector bool char __b) {
5125
return __a | ~__b;
5126
}
5127
5128
static __inline__ vector signed short __ATTRS_o_ai
5129
vec_orc(vector signed short __a, vector signed short __b) {
5130
return __a | ~__b;
5131
}
5132
5133
static __inline__ vector signed short __ATTRS_o_ai
5134
vec_orc(vector signed short __a, vector bool short __b) {
5135
return __a | ~__b;
5136
}
5137
5138
static __inline__ vector signed short __ATTRS_o_ai
5139
vec_orc(vector bool short __a, vector signed short __b) {
5140
return __a | ~__b;
5141
}
5142
5143
static __inline__ vector unsigned short __ATTRS_o_ai
5144
vec_orc(vector unsigned short __a, vector unsigned short __b) {
5145
return __a | ~__b;
5146
}
5147
5148
static __inline__ vector unsigned short __ATTRS_o_ai
5149
vec_orc(vector unsigned short __a, vector bool short __b) {
5150
return __a | ~__b;
5151
}
5152
5153
static __inline__ vector unsigned short __ATTRS_o_ai
5154
vec_orc(vector bool short __a, vector unsigned short __b) {
5155
return __a | ~__b;
5156
}
5157
5158
static __inline__ vector bool short __ATTRS_o_ai
5159
vec_orc(vector bool short __a, vector bool short __b) {
5160
return __a | ~__b;
5161
}
5162
5163
static __inline__ vector signed int __ATTRS_o_ai
5164
vec_orc(vector signed int __a, vector signed int __b) {
5165
return __a | ~__b;
5166
}
5167
5168
static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
5169
vector bool int __b) {
5170
return __a | ~__b;
5171
}
5172
5173
static __inline__ vector signed int __ATTRS_o_ai
5174
vec_orc(vector bool int __a, vector signed int __b) {
5175
return __a | ~__b;
5176
}
5177
5178
static __inline__ vector unsigned int __ATTRS_o_ai
5179
vec_orc(vector unsigned int __a, vector unsigned int __b) {
5180
return __a | ~__b;
5181
}
5182
5183
static __inline__ vector unsigned int __ATTRS_o_ai
5184
vec_orc(vector unsigned int __a, vector bool int __b) {
5185
return __a | ~__b;
5186
}
5187
5188
static __inline__ vector unsigned int __ATTRS_o_ai
5189
vec_orc(vector bool int __a, vector unsigned int __b) {
5190
return __a | ~__b;
5191
}
5192
5193
static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
5194
vector bool int __b) {
5195
return __a | ~__b;
5196
}
5197
5198
static __inline__ vector signed long long __ATTRS_o_ai
5199
vec_orc(vector signed long long __a, vector signed long long __b) {
5200
return __a | ~__b;
5201
}
5202
5203
static __inline__ vector signed long long __ATTRS_o_ai
5204
vec_orc(vector signed long long __a, vector bool long long __b) {
5205
return __a | ~__b;
5206
}
5207
5208
static __inline__ vector signed long long __ATTRS_o_ai
5209
vec_orc(vector bool long long __a, vector signed long long __b) {
5210
return __a | ~__b;
5211
}
5212
5213
static __inline__ vector unsigned long long __ATTRS_o_ai
5214
vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
5215
return __a | ~__b;
5216
}
5217
5218
static __inline__ vector unsigned long long __ATTRS_o_ai
5219
vec_orc(vector unsigned long long __a, vector bool long long __b) {
5220
return __a | ~__b;
5221
}
5222
5223
static __inline__ vector unsigned long long __ATTRS_o_ai
5224
vec_orc(vector bool long long __a, vector unsigned long long __b) {
5225
return __a | ~__b;
5226
}
5227
5228
static __inline__ vector bool long long __ATTRS_o_ai
5229
vec_orc(vector bool long long __a, vector bool long long __b) {
5230
return __a | ~__b;
5231
}
5232
#endif
5233
5234
/* vec_vor */
5235
5236
static __inline__ vector signed char __ATTRS_o_ai
5237
vec_vor(vector signed char __a, vector signed char __b) {
5238
return __a | __b;
5239
}
5240
5241
static __inline__ vector signed char __ATTRS_o_ai
5242
vec_vor(vector bool char __a, vector signed char __b) {
5243
return (vector signed char)__a | __b;
5244
}
5245
5246
static __inline__ vector signed char __ATTRS_o_ai
5247
vec_vor(vector signed char __a, vector bool char __b) {
5248
return __a | (vector signed char)__b;
5249
}
5250
5251
static __inline__ vector unsigned char __ATTRS_o_ai
5252
vec_vor(vector unsigned char __a, vector unsigned char __b) {
5253
return __a | __b;
5254
}
5255
5256
static __inline__ vector unsigned char __ATTRS_o_ai
5257
vec_vor(vector bool char __a, vector unsigned char __b) {
5258
return (vector unsigned char)__a | __b;
5259
}
5260
5261
static __inline__ vector unsigned char __ATTRS_o_ai
5262
vec_vor(vector unsigned char __a, vector bool char __b) {
5263
return __a | (vector unsigned char)__b;
5264
}
5265
5266
static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
5267
vector bool char __b) {
5268
return __a | __b;
5269
}
5270
5271
static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
5272
vector short __b) {
5273
return __a | __b;
5274
}
5275
5276
static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
5277
vector short __b) {
5278
return (vector short)__a | __b;
5279
}
5280
5281
static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
5282
vector bool short __b) {
5283
return __a | (vector short)__b;
5284
}
5285
5286
static __inline__ vector unsigned short __ATTRS_o_ai
5287
vec_vor(vector unsigned short __a, vector unsigned short __b) {
5288
return __a | __b;
5289
}
5290
5291
static __inline__ vector unsigned short __ATTRS_o_ai
5292
vec_vor(vector bool short __a, vector unsigned short __b) {
5293
return (vector unsigned short)__a | __b;
5294
}
5295
5296
static __inline__ vector unsigned short __ATTRS_o_ai
5297
vec_vor(vector unsigned short __a, vector bool short __b) {
5298
return __a | (vector unsigned short)__b;
5299
}
5300
5301
static __inline__ vector bool short __ATTRS_o_ai
5302
vec_vor(vector bool short __a, vector bool short __b) {
5303
return __a | __b;
5304
}
5305
5306
static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
5307
vector int __b) {
5308
return __a | __b;
5309
}
5310
5311
static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
5312
vector int __b) {
5313
return (vector int)__a | __b;
5314
}
5315
5316
static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
5317
vector bool int __b) {
5318
return __a | (vector int)__b;
5319
}
5320
5321
static __inline__ vector unsigned int __ATTRS_o_ai
5322
vec_vor(vector unsigned int __a, vector unsigned int __b) {
5323
return __a | __b;
5324
}
5325
5326
static __inline__ vector unsigned int __ATTRS_o_ai
5327
vec_vor(vector bool int __a, vector unsigned int __b) {
5328
return (vector unsigned int)__a | __b;
5329
}
5330
5331
static __inline__ vector unsigned int __ATTRS_o_ai
5332
vec_vor(vector unsigned int __a, vector bool int __b) {
5333
return __a | (vector unsigned int)__b;
5334
}
5335
5336
static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
5337
vector bool int __b) {
5338
return __a | __b;
5339
}
5340
5341
static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
5342
vector float __b) {
5343
vector unsigned int __res =
5344
(vector unsigned int)__a | (vector unsigned int)__b;
5345
return (vector float)__res;
5346
}
5347
5348
static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
5349
vector float __b) {
5350
vector unsigned int __res =
5351
(vector unsigned int)__a | (vector unsigned int)__b;
5352
return (vector float)__res;
5353
}
5354
5355
static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
5356
vector bool int __b) {
5357
vector unsigned int __res =
5358
(vector unsigned int)__a | (vector unsigned int)__b;
5359
return (vector float)__res;
5360
}
5361
5362
#ifdef __VSX__
5363
static __inline__ vector signed long long __ATTRS_o_ai
5364
vec_vor(vector signed long long __a, vector signed long long __b) {
5365
return __a | __b;
5366
}
5367
5368
static __inline__ vector signed long long __ATTRS_o_ai
5369
vec_vor(vector bool long long __a, vector signed long long __b) {
5370
return (vector signed long long)__a | __b;
5371
}
5372
5373
static __inline__ vector signed long long __ATTRS_o_ai
5374
vec_vor(vector signed long long __a, vector bool long long __b) {
5375
return __a | (vector signed long long)__b;
5376
}
5377
5378
static __inline__ vector unsigned long long __ATTRS_o_ai
5379
vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
5380
return __a | __b;
5381
}
5382
5383
static __inline__ vector unsigned long long __ATTRS_o_ai
5384
vec_vor(vector bool long long __a, vector unsigned long long __b) {
5385
return (vector unsigned long long)__a | __b;
5386
}
5387
5388
static __inline__ vector unsigned long long __ATTRS_o_ai
5389
vec_vor(vector unsigned long long __a, vector bool long long __b) {
5390
return __a | (vector unsigned long long)__b;
5391
}
5392
5393
static __inline__ vector bool long long __ATTRS_o_ai
5394
vec_vor(vector bool long long __a, vector bool long long __b) {
5395
return __a | __b;
5396
}
5397
#endif
5398
5399
/* vec_pack */
5400
5401
/* The various vector pack instructions have a big-endian bias, so for
5402
little endian we must handle reversed element numbering. */
5403
5404
static __inline__ vector signed char __ATTRS_o_ai
5405
vec_pack(vector signed short __a, vector signed short __b) {
5406
#ifdef __LITTLE_ENDIAN__
5407
return (vector signed char)vec_perm(
5408
__a, __b,
5409
(vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5410
0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5411
#else
5412
return (vector signed char)vec_perm(
5413
__a, __b,
5414
(vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5415
0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5416
#endif
5417
}
5418
5419
static __inline__ vector unsigned char __ATTRS_o_ai
5420
vec_pack(vector unsigned short __a, vector unsigned short __b) {
5421
#ifdef __LITTLE_ENDIAN__
5422
return (vector unsigned char)vec_perm(
5423
__a, __b,
5424
(vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5425
0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5426
#else
5427
return (vector unsigned char)vec_perm(
5428
__a, __b,
5429
(vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5430
0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5431
#endif
5432
}
5433
5434
static __inline__ vector bool char __ATTRS_o_ai
5435
vec_pack(vector bool short __a, vector bool short __b) {
5436
#ifdef __LITTLE_ENDIAN__
5437
return (vector bool char)vec_perm(
5438
__a, __b,
5439
(vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5440
0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5441
#else
5442
return (vector bool char)vec_perm(
5443
__a, __b,
5444
(vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5445
0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5446
#endif
5447
}
5448
5449
static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
5450
vector int __b) {
5451
#ifdef __LITTLE_ENDIAN__
5452
return (vector short)vec_perm(
5453
__a, __b,
5454
(vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5455
0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5456
#else
5457
return (vector short)vec_perm(
5458
__a, __b,
5459
(vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5460
0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5461
#endif
5462
}
5463
5464
static __inline__ vector unsigned short __ATTRS_o_ai
5465
vec_pack(vector unsigned int __a, vector unsigned int __b) {
5466
#ifdef __LITTLE_ENDIAN__
5467
return (vector unsigned short)vec_perm(
5468
__a, __b,
5469
(vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5470
0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5471
#else
5472
return (vector unsigned short)vec_perm(
5473
__a, __b,
5474
(vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5475
0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5476
#endif
5477
}
5478
5479
static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
5480
vector bool int __b) {
5481
#ifdef __LITTLE_ENDIAN__
5482
return (vector bool short)vec_perm(
5483
__a, __b,
5484
(vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5485
0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5486
#else
5487
return (vector bool short)vec_perm(
5488
__a, __b,
5489
(vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5490
0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5491
#endif
5492
}
5493
5494
#ifdef __VSX__
5495
static __inline__ vector signed int __ATTRS_o_ai
5496
vec_pack(vector signed long long __a, vector signed long long __b) {
5497
#ifdef __LITTLE_ENDIAN__
5498
return (vector signed int)vec_perm(
5499
__a, __b,
5500
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5501
0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5502
#else
5503
return (vector signed int)vec_perm(
5504
__a, __b,
5505
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5506
0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5507
#endif
5508
}
5509
static __inline__ vector unsigned int __ATTRS_o_ai
5510
vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
5511
#ifdef __LITTLE_ENDIAN__
5512
return (vector unsigned int)vec_perm(
5513
__a, __b,
5514
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5515
0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5516
#else
5517
return (vector unsigned int)vec_perm(
5518
__a, __b,
5519
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5520
0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5521
#endif
5522
}
5523
5524
static __inline__ vector bool int __ATTRS_o_ai
5525
vec_pack(vector bool long long __a, vector bool long long __b) {
5526
#ifdef __LITTLE_ENDIAN__
5527
return (vector bool int)vec_perm(
5528
__a, __b,
5529
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5530
0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5531
#else
5532
return (vector bool int)vec_perm(
5533
__a, __b,
5534
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5535
0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5536
#endif
5537
}
5538
5539
#endif
5540
5541
/* vec_vpkuhum */
5542
5543
#define __builtin_altivec_vpkuhum vec_vpkuhum
5544
5545
static __inline__ vector signed char __ATTRS_o_ai
5546
vec_vpkuhum(vector signed short __a, vector signed short __b) {
5547
#ifdef __LITTLE_ENDIAN__
5548
return (vector signed char)vec_perm(
5549
__a, __b,
5550
(vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5551
0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5552
#else
5553
return (vector signed char)vec_perm(
5554
__a, __b,
5555
(vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5556
0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5557
#endif
5558
}
5559
5560
static __inline__ vector unsigned char __ATTRS_o_ai
5561
vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
5562
#ifdef __LITTLE_ENDIAN__
5563
return (vector unsigned char)vec_perm(
5564
__a, __b,
5565
(vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5566
0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5567
#else
5568
return (vector unsigned char)vec_perm(
5569
__a, __b,
5570
(vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5571
0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5572
#endif
5573
}
5574
5575
static __inline__ vector bool char __ATTRS_o_ai
5576
vec_vpkuhum(vector bool short __a, vector bool short __b) {
5577
#ifdef __LITTLE_ENDIAN__
5578
return (vector bool char)vec_perm(
5579
__a, __b,
5580
(vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5581
0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5582
#else
5583
return (vector bool char)vec_perm(
5584
__a, __b,
5585
(vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5586
0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5587
#endif
5588
}
5589
5590
/* vec_vpkuwum */
5591
5592
#define __builtin_altivec_vpkuwum vec_vpkuwum
5593
5594
static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
5595
vector int __b) {
5596
#ifdef __LITTLE_ENDIAN__
5597
return (vector short)vec_perm(
5598
__a, __b,
5599
(vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5600
0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5601
#else
5602
return (vector short)vec_perm(
5603
__a, __b,
5604
(vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5605
0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5606
#endif
5607
}
5608
5609
static __inline__ vector unsigned short __ATTRS_o_ai
5610
vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
5611
#ifdef __LITTLE_ENDIAN__
5612
return (vector unsigned short)vec_perm(
5613
__a, __b,
5614
(vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5615
0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5616
#else
5617
return (vector unsigned short)vec_perm(
5618
__a, __b,
5619
(vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5620
0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5621
#endif
5622
}
5623
5624
static __inline__ vector bool short __ATTRS_o_ai
5625
vec_vpkuwum(vector bool int __a, vector bool int __b) {
5626
#ifdef __LITTLE_ENDIAN__
5627
return (vector bool short)vec_perm(
5628
__a, __b,
5629
(vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5630
0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5631
#else
5632
return (vector bool short)vec_perm(
5633
__a, __b,
5634
(vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5635
0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5636
#endif
5637
}
5638
5639
/* vec_vpkudum */
5640
5641
#ifdef __POWER8_VECTOR__
5642
#define __builtin_altivec_vpkudum vec_vpkudum
5643
5644
static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
5645
vector long long __b) {
5646
#ifdef __LITTLE_ENDIAN__
5647
return (vector int)vec_perm(
5648
__a, __b,
5649
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5650
0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5651
#else
5652
return (vector int)vec_perm(
5653
__a, __b,
5654
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5655
0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5656
#endif
5657
}
5658
5659
static __inline__ vector unsigned int __ATTRS_o_ai
5660
vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
5661
#ifdef __LITTLE_ENDIAN__
5662
return (vector unsigned int)vec_perm(
5663
__a, __b,
5664
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5665
0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5666
#else
5667
return (vector unsigned int)vec_perm(
5668
__a, __b,
5669
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5670
0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5671
#endif
5672
}
5673
5674
static __inline__ vector bool int __ATTRS_o_ai
5675
vec_vpkudum(vector bool long long __a, vector bool long long __b) {
5676
#ifdef __LITTLE_ENDIAN__
5677
return (vector bool int)vec_perm(
5678
(vector long long)__a, (vector long long)__b,
5679
(vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5680
0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5681
#else
5682
return (vector bool int)vec_perm(
5683
(vector long long)__a, (vector long long)__b,
5684
(vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5685
0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5686
#endif
5687
}
5688
#endif
5689
5690
/* vec_packpx */
5691
5692
static __inline__ vector pixel __attribute__((__always_inline__))
5693
vec_packpx(vector unsigned int __a, vector unsigned int __b) {
5694
#ifdef __LITTLE_ENDIAN__
5695
return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5696
#else
5697
return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5698
#endif
5699
}
5700
5701
/* vec_vpkpx */
5702
5703
static __inline__ vector pixel __attribute__((__always_inline__))
5704
vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
5705
#ifdef __LITTLE_ENDIAN__
5706
return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5707
#else
5708
return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5709
#endif
5710
}
5711
5712
/* vec_packs */
5713
5714
static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
5715
vector short __b) {
5716
#ifdef __LITTLE_ENDIAN__
5717
return __builtin_altivec_vpkshss(__b, __a);
5718
#else
5719
return __builtin_altivec_vpkshss(__a, __b);
5720
#endif
5721
}
5722
5723
static __inline__ vector unsigned char __ATTRS_o_ai
5724
vec_packs(vector unsigned short __a, vector unsigned short __b) {
5725
#ifdef __LITTLE_ENDIAN__
5726
return __builtin_altivec_vpkuhus(__b, __a);
5727
#else
5728
return __builtin_altivec_vpkuhus(__a, __b);
5729
#endif
5730
}
5731
5732
static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
5733
vector int __b) {
5734
#ifdef __LITTLE_ENDIAN__
5735
return __builtin_altivec_vpkswss(__b, __a);
5736
#else
5737
return __builtin_altivec_vpkswss(__a, __b);
5738
#endif
5739
}
5740
5741
static __inline__ vector unsigned short __ATTRS_o_ai
5742
vec_packs(vector unsigned int __a, vector unsigned int __b) {
5743
#ifdef __LITTLE_ENDIAN__
5744
return __builtin_altivec_vpkuwus(__b, __a);
5745
#else
5746
return __builtin_altivec_vpkuwus(__a, __b);
5747
#endif
5748
}
5749
5750
#ifdef __POWER8_VECTOR__
5751
static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
5752
vector long long __b) {
5753
#ifdef __LITTLE_ENDIAN__
5754
return __builtin_altivec_vpksdss(__b, __a);
5755
#else
5756
return __builtin_altivec_vpksdss(__a, __b);
5757
#endif
5758
}
5759
5760
static __inline__ vector unsigned int __ATTRS_o_ai
5761
vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
5762
#ifdef __LITTLE_ENDIAN__
5763
return __builtin_altivec_vpkudus(__b, __a);
5764
#else
5765
return __builtin_altivec_vpkudus(__a, __b);
5766
#endif
5767
}
5768
#endif
5769
5770
/* vec_vpkshss */
5771
5772
static __inline__ vector signed char __attribute__((__always_inline__))
5773
vec_vpkshss(vector short __a, vector short __b) {
5774
#ifdef __LITTLE_ENDIAN__
5775
return __builtin_altivec_vpkshss(__b, __a);
5776
#else
5777
return __builtin_altivec_vpkshss(__a, __b);
5778
#endif
5779
}
5780
5781
/* vec_vpksdss */
5782
5783
#ifdef __POWER8_VECTOR__
5784
static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
5785
vector long long __b) {
5786
#ifdef __LITTLE_ENDIAN__
5787
return __builtin_altivec_vpksdss(__b, __a);
5788
#else
5789
return __builtin_altivec_vpksdss(__a, __b);
5790
#endif
5791
}
5792
#endif
5793
5794
/* vec_vpkuhus */
5795
5796
static __inline__ vector unsigned char __attribute__((__always_inline__))
5797
vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
5798
#ifdef __LITTLE_ENDIAN__
5799
return __builtin_altivec_vpkuhus(__b, __a);
5800
#else
5801
return __builtin_altivec_vpkuhus(__a, __b);
5802
#endif
5803
}
5804
5805
/* vec_vpkudus */
5806
5807
#ifdef __POWER8_VECTOR__
5808
static __inline__ vector unsigned int __attribute__((__always_inline__))
5809
vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
5810
#ifdef __LITTLE_ENDIAN__
5811
return __builtin_altivec_vpkudus(__b, __a);
5812
#else
5813
return __builtin_altivec_vpkudus(__a, __b);
5814
#endif
5815
}
5816
#endif
5817
5818
/* vec_vpkswss */
5819
5820
static __inline__ vector signed short __attribute__((__always_inline__))
5821
vec_vpkswss(vector int __a, vector int __b) {
5822
#ifdef __LITTLE_ENDIAN__
5823
return __builtin_altivec_vpkswss(__b, __a);
5824
#else
5825
return __builtin_altivec_vpkswss(__a, __b);
5826
#endif
5827
}
5828
5829
/* vec_vpkuwus */
5830
5831
static __inline__ vector unsigned short __attribute__((__always_inline__))
5832
vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
5833
#ifdef __LITTLE_ENDIAN__
5834
return __builtin_altivec_vpkuwus(__b, __a);
5835
#else
5836
return __builtin_altivec_vpkuwus(__a, __b);
5837
#endif
5838
}
5839
5840
/* vec_packsu */
5841
5842
static __inline__ vector unsigned char __ATTRS_o_ai
5843
vec_packsu(vector short __a, vector short __b) {
5844
#ifdef __LITTLE_ENDIAN__
5845
return __builtin_altivec_vpkshus(__b, __a);
5846
#else
5847
return __builtin_altivec_vpkshus(__a, __b);
5848
#endif
5849
}
5850
5851
static __inline__ vector unsigned char __ATTRS_o_ai
5852
vec_packsu(vector unsigned short __a, vector unsigned short __b) {
5853
#ifdef __LITTLE_ENDIAN__
5854
return __builtin_altivec_vpkuhus(__b, __a);
5855
#else
5856
return __builtin_altivec_vpkuhus(__a, __b);
5857
#endif
5858
}
5859
5860
static __inline__ vector unsigned short __ATTRS_o_ai
5861
vec_packsu(vector int __a, vector int __b) {
5862
#ifdef __LITTLE_ENDIAN__
5863
return __builtin_altivec_vpkswus(__b, __a);
5864
#else
5865
return __builtin_altivec_vpkswus(__a, __b);
5866
#endif
5867
}
5868
5869
static __inline__ vector unsigned short __ATTRS_o_ai
5870
vec_packsu(vector unsigned int __a, vector unsigned int __b) {
5871
#ifdef __LITTLE_ENDIAN__
5872
return __builtin_altivec_vpkuwus(__b, __a);
5873
#else
5874
return __builtin_altivec_vpkuwus(__a, __b);
5875
#endif
5876
}
5877
5878
#ifdef __POWER8_VECTOR__
5879
static __inline__ vector unsigned int __ATTRS_o_ai
5880
vec_packsu(vector long long __a, vector long long __b) {
5881
#ifdef __LITTLE_ENDIAN__
5882
return __builtin_altivec_vpksdus(__b, __a);
5883
#else
5884
return __builtin_altivec_vpksdus(__a, __b);
5885
#endif
5886
}
5887
5888
static __inline__ vector unsigned int __ATTRS_o_ai
5889
vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
5890
#ifdef __LITTLE_ENDIAN__
5891
return __builtin_altivec_vpkudus(__b, __a);
5892
#else
5893
return __builtin_altivec_vpkudus(__a, __b);
5894
#endif
5895
}
5896
#endif
5897
5898
/* vec_vpkshus */
5899
5900
static __inline__ vector unsigned char __ATTRS_o_ai
5901
vec_vpkshus(vector short __a, vector short __b) {
5902
#ifdef __LITTLE_ENDIAN__
5903
return __builtin_altivec_vpkshus(__b, __a);
5904
#else
5905
return __builtin_altivec_vpkshus(__a, __b);
5906
#endif
5907
}
5908
5909
static __inline__ vector unsigned char __ATTRS_o_ai
5910
vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
5911
#ifdef __LITTLE_ENDIAN__
5912
return __builtin_altivec_vpkuhus(__b, __a);
5913
#else
5914
return __builtin_altivec_vpkuhus(__a, __b);
5915
#endif
5916
}
5917
5918
/* vec_vpkswus */
5919
5920
static __inline__ vector unsigned short __ATTRS_o_ai
5921
vec_vpkswus(vector int __a, vector int __b) {
5922
#ifdef __LITTLE_ENDIAN__
5923
return __builtin_altivec_vpkswus(__b, __a);
5924
#else
5925
return __builtin_altivec_vpkswus(__a, __b);
5926
#endif
5927
}
5928
5929
static __inline__ vector unsigned short __ATTRS_o_ai
5930
vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
5931
#ifdef __LITTLE_ENDIAN__
5932
return __builtin_altivec_vpkuwus(__b, __a);
5933
#else
5934
return __builtin_altivec_vpkuwus(__a, __b);
5935
#endif
5936
}
5937
5938
/* vec_vpksdus */
5939
5940
#ifdef __POWER8_VECTOR__
5941
static __inline__ vector unsigned int __ATTRS_o_ai
5942
vec_vpksdus(vector long long __a, vector long long __b) {
5943
#ifdef __LITTLE_ENDIAN__
5944
return __builtin_altivec_vpksdus(__b, __a);
5945
#else
5946
return __builtin_altivec_vpksdus(__a, __b);
5947
#endif
5948
}
5949
#endif
5950
5951
/* vec_perm */
5952
5953
// The vperm instruction is defined architecturally with a big-endian bias.
5954
// For little endian, we swap the input operands and invert the permute
5955
// control vector. Only the rightmost 5 bits matter, so we could use
5956
// a vector of all 31s instead of all 255s to perform the inversion.
5957
// However, when the PCV is not a constant, using 255 has an advantage
5958
// in that the vec_xor can be recognized as a vec_nor (and for P8 and
5959
// later, possibly a vec_nand).
5960
5961
static __inline__ vector signed char __ATTRS_o_ai vec_perm(
5962
vector signed char __a, vector signed char __b, vector unsigned char __c) {
5963
#ifdef __LITTLE_ENDIAN__
5964
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5965
255, 255, 255, 255, 255, 255, 255, 255};
5966
__d = vec_xor(__c, __d);
5967
return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
5968
(vector int)__a, __d);
5969
#else
5970
return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
5971
(vector int)__b, __c);
5972
#endif
5973
}
5974
5975
static __inline__ vector unsigned char __ATTRS_o_ai
5976
vec_perm(vector unsigned char __a, vector unsigned char __b,
5977
vector unsigned char __c) {
5978
#ifdef __LITTLE_ENDIAN__
5979
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5980
255, 255, 255, 255, 255, 255, 255, 255};
5981
__d = vec_xor(__c, __d);
5982
return (vector unsigned char)__builtin_altivec_vperm_4si(
5983
(vector int)__b, (vector int)__a, __d);
5984
#else
5985
return (vector unsigned char)__builtin_altivec_vperm_4si(
5986
(vector int)__a, (vector int)__b, __c);
5987
#endif
5988
}
5989
5990
static __inline__ vector bool char __ATTRS_o_ai
5991
vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
5992
#ifdef __LITTLE_ENDIAN__
5993
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5994
255, 255, 255, 255, 255, 255, 255, 255};
5995
__d = vec_xor(__c, __d);
5996
return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
5997
(vector int)__a, __d);
5998
#else
5999
return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
6000
(vector int)__b, __c);
6001
#endif
6002
}
6003
6004
static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
6005
vector signed short __b,
6006
vector unsigned char __c) {
6007
#ifdef __LITTLE_ENDIAN__
6008
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6009
255, 255, 255, 255, 255, 255, 255, 255};
6010
__d = vec_xor(__c, __d);
6011
return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
6012
(vector int)__a, __d);
6013
#else
6014
return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
6015
(vector int)__b, __c);
6016
#endif
6017
}
6018
6019
static __inline__ vector unsigned short __ATTRS_o_ai
6020
vec_perm(vector unsigned short __a, vector unsigned short __b,
6021
vector unsigned char __c) {
6022
#ifdef __LITTLE_ENDIAN__
6023
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6024
255, 255, 255, 255, 255, 255, 255, 255};
6025
__d = vec_xor(__c, __d);
6026
return (vector unsigned short)__builtin_altivec_vperm_4si(
6027
(vector int)__b, (vector int)__a, __d);
6028
#else
6029
return (vector unsigned short)__builtin_altivec_vperm_4si(
6030
(vector int)__a, (vector int)__b, __c);
6031
#endif
6032
}
6033
6034
static __inline__ vector bool short __ATTRS_o_ai vec_perm(
6035
vector bool short __a, vector bool short __b, vector unsigned char __c) {
6036
#ifdef __LITTLE_ENDIAN__
6037
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6038
255, 255, 255, 255, 255, 255, 255, 255};
6039
__d = vec_xor(__c, __d);
6040
return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
6041
(vector int)__a, __d);
6042
#else
6043
return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
6044
(vector int)__b, __c);
6045
#endif
6046
}
6047
6048
static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
6049
vector pixel __b,
6050
vector unsigned char __c) {
6051
#ifdef __LITTLE_ENDIAN__
6052
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6053
255, 255, 255, 255, 255, 255, 255, 255};
6054
__d = vec_xor(__c, __d);
6055
return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
6056
(vector int)__a, __d);
6057
#else
6058
return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
6059
(vector int)__b, __c);
6060
#endif
6061
}
6062
6063
static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
6064
vector signed int __b,
6065
vector unsigned char __c) {
6066
#ifdef __LITTLE_ENDIAN__
6067
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6068
255, 255, 255, 255, 255, 255, 255, 255};
6069
__d = vec_xor(__c, __d);
6070
return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
6071
#else
6072
return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
6073
#endif
6074
}
6075
6076
static __inline__ vector unsigned int __ATTRS_o_ai
6077
vec_perm(vector unsigned int __a, vector unsigned int __b,
6078
vector unsigned char __c) {
6079
#ifdef __LITTLE_ENDIAN__
6080
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6081
255, 255, 255, 255, 255, 255, 255, 255};
6082
__d = vec_xor(__c, __d);
6083
return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
6084
(vector int)__a, __d);
6085
#else
6086
return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
6087
(vector int)__b, __c);
6088
#endif
6089
}
6090
6091
static __inline__ vector bool int __ATTRS_o_ai
6092
vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
6093
#ifdef __LITTLE_ENDIAN__
6094
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6095
255, 255, 255, 255, 255, 255, 255, 255};
6096
__d = vec_xor(__c, __d);
6097
return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
6098
(vector int)__a, __d);
6099
#else
6100
return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
6101
(vector int)__b, __c);
6102
#endif
6103
}
6104
6105
static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
6106
vector float __b,
6107
vector unsigned char __c) {
6108
#ifdef __LITTLE_ENDIAN__
6109
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6110
255, 255, 255, 255, 255, 255, 255, 255};
6111
__d = vec_xor(__c, __d);
6112
return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
6113
(vector int)__a, __d);
6114
#else
6115
return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
6116
(vector int)__b, __c);
6117
#endif
6118
}
6119
6120
#ifdef __VSX__
6121
static __inline__ vector long long __ATTRS_o_ai
6122
vec_perm(vector signed long long __a, vector signed long long __b,
6123
vector unsigned char __c) {
6124
#ifdef __LITTLE_ENDIAN__
6125
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6126
255, 255, 255, 255, 255, 255, 255, 255};
6127
__d = vec_xor(__c, __d);
6128
return (vector signed long long)__builtin_altivec_vperm_4si(
6129
(vector int)__b, (vector int)__a, __d);
6130
#else
6131
return (vector signed long long)__builtin_altivec_vperm_4si(
6132
(vector int)__a, (vector int)__b, __c);
6133
#endif
6134
}
6135
6136
static __inline__ vector unsigned long long __ATTRS_o_ai
6137
vec_perm(vector unsigned long long __a, vector unsigned long long __b,
6138
vector unsigned char __c) {
6139
#ifdef __LITTLE_ENDIAN__
6140
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6141
255, 255, 255, 255, 255, 255, 255, 255};
6142
__d = vec_xor(__c, __d);
6143
return (vector unsigned long long)__builtin_altivec_vperm_4si(
6144
(vector int)__b, (vector int)__a, __d);
6145
#else
6146
return (vector unsigned long long)__builtin_altivec_vperm_4si(
6147
(vector int)__a, (vector int)__b, __c);
6148
#endif
6149
}
6150
6151
static __inline__ vector bool long long __ATTRS_o_ai
6152
vec_perm(vector bool long long __a, vector bool long long __b,
6153
vector unsigned char __c) {
6154
#ifdef __LITTLE_ENDIAN__
6155
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6156
255, 255, 255, 255, 255, 255, 255, 255};
6157
__d = vec_xor(__c, __d);
6158
return (vector bool long long)__builtin_altivec_vperm_4si(
6159
(vector int)__b, (vector int)__a, __d);
6160
#else
6161
return (vector bool long long)__builtin_altivec_vperm_4si(
6162
(vector int)__a, (vector int)__b, __c);
6163
#endif
6164
}
6165
6166
static __inline__ vector double __ATTRS_o_ai
6167
vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
6168
#ifdef __LITTLE_ENDIAN__
6169
vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6170
255, 255, 255, 255, 255, 255, 255, 255};
6171
__d = vec_xor(__c, __d);
6172
return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
6173
(vector int)__a, __d);
6174
#else
6175
return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
6176
(vector int)__b, __c);
6177
#endif
6178
}
6179
#endif
6180
6181
/* vec_vperm */
6182
6183
static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
6184
vector signed char __a, vector signed char __b, vector unsigned char __c) {
6185
return vec_perm(__a, __b, __c);
6186
}
6187
6188
static __inline__ vector unsigned char __ATTRS_o_ai
6189
vec_vperm(vector unsigned char __a, vector unsigned char __b,
6190
vector unsigned char __c) {
6191
return vec_perm(__a, __b, __c);
6192
}
6193
6194
static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
6195
vector bool char __a, vector bool char __b, vector unsigned char __c) {
6196
return vec_perm(__a, __b, __c);
6197
}
6198
6199
static __inline__ vector short __ATTRS_o_ai
6200
vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
6201
return vec_perm(__a, __b, __c);
6202
}
6203
6204
static __inline__ vector unsigned short __ATTRS_o_ai
6205
vec_vperm(vector unsigned short __a, vector unsigned short __b,
6206
vector unsigned char __c) {
6207
return vec_perm(__a, __b, __c);
6208
}
6209
6210
static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
6211
vector bool short __a, vector bool short __b, vector unsigned char __c) {
6212
return vec_perm(__a, __b, __c);
6213
}
6214
6215
static __inline__ vector pixel __ATTRS_o_ai
6216
vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
6217
return vec_perm(__a, __b, __c);
6218
}
6219
6220
static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
6221
vector int __b,
6222
vector unsigned char __c) {
6223
return vec_perm(__a, __b, __c);
6224
}
6225
6226
static __inline__ vector unsigned int __ATTRS_o_ai
6227
vec_vperm(vector unsigned int __a, vector unsigned int __b,
6228
vector unsigned char __c) {
6229
return vec_perm(__a, __b, __c);
6230
}
6231
6232
static __inline__ vector bool int __ATTRS_o_ai
6233
vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
6234
return vec_perm(__a, __b, __c);
6235
}
6236
6237
static __inline__ vector float __ATTRS_o_ai
6238
vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
6239
return vec_perm(__a, __b, __c);
6240
}
6241
6242
#ifdef __VSX__
6243
static __inline__ vector long long __ATTRS_o_ai vec_vperm(
6244
vector long long __a, vector long long __b, vector unsigned char __c) {
6245
return vec_perm(__a, __b, __c);
6246
}
6247
6248
static __inline__ vector unsigned long long __ATTRS_o_ai
6249
vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
6250
vector unsigned char __c) {
6251
return vec_perm(__a, __b, __c);
6252
}
6253
6254
static __inline__ vector double __ATTRS_o_ai
6255
vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
6256
return vec_perm(__a, __b, __c);
6257
}
6258
#endif
6259
6260
/* vec_re */
6261
6262
static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
6263
#ifdef __VSX__
6264
return __builtin_vsx_xvresp(__a);
6265
#else
6266
return __builtin_altivec_vrefp(__a);
6267
#endif
6268
}
6269
6270
#ifdef __VSX__
6271
static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
6272
return __builtin_vsx_xvredp(__a);
6273
}
6274
#endif
6275
6276
/* vec_vrefp */
6277
6278
static __inline__ vector float __attribute__((__always_inline__))
6279
vec_vrefp(vector float __a) {
6280
return __builtin_altivec_vrefp(__a);
6281
}
6282
6283
/* vec_rl */
6284
6285
static __inline__ vector signed char __ATTRS_o_ai
6286
vec_rl(vector signed char __a, vector unsigned char __b) {
6287
return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6288
}
6289
6290
static __inline__ vector unsigned char __ATTRS_o_ai
6291
vec_rl(vector unsigned char __a, vector unsigned char __b) {
6292
return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6293
}
6294
6295
static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
6296
vector unsigned short __b) {
6297
return __builtin_altivec_vrlh(__a, __b);
6298
}
6299
6300
static __inline__ vector unsigned short __ATTRS_o_ai
6301
vec_rl(vector unsigned short __a, vector unsigned short __b) {
6302
return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6303
}
6304
6305
static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
6306
vector unsigned int __b) {
6307
return __builtin_altivec_vrlw(__a, __b);
6308
}
6309
6310
static __inline__ vector unsigned int __ATTRS_o_ai
6311
vec_rl(vector unsigned int __a, vector unsigned int __b) {
6312
return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6313
}
6314
6315
#ifdef __POWER8_VECTOR__
6316
static __inline__ vector signed long long __ATTRS_o_ai
6317
vec_rl(vector signed long long __a, vector unsigned long long __b) {
6318
return __builtin_altivec_vrld(__a, __b);
6319
}
6320
6321
static __inline__ vector unsigned long long __ATTRS_o_ai
6322
vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
6323
return __builtin_altivec_vrld(__a, __b);
6324
}
6325
#endif
6326
6327
/* vec_vrlb */
6328
6329
static __inline__ vector signed char __ATTRS_o_ai
6330
vec_vrlb(vector signed char __a, vector unsigned char __b) {
6331
return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6332
}
6333
6334
static __inline__ vector unsigned char __ATTRS_o_ai
6335
vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
6336
return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6337
}
6338
6339
/* vec_vrlh */
6340
6341
static __inline__ vector short __ATTRS_o_ai
6342
vec_vrlh(vector short __a, vector unsigned short __b) {
6343
return __builtin_altivec_vrlh(__a, __b);
6344
}
6345
6346
static __inline__ vector unsigned short __ATTRS_o_ai
6347
vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
6348
return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6349
}
6350
6351
/* vec_vrlw */
6352
6353
static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
6354
vector unsigned int __b) {
6355
return __builtin_altivec_vrlw(__a, __b);
6356
}
6357
6358
static __inline__ vector unsigned int __ATTRS_o_ai
6359
vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
6360
return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6361
}
6362
6363
/* vec_round */
6364
6365
static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
6366
#ifdef __VSX__
6367
return __builtin_vsx_xvrspi(__a);
6368
#else
6369
return __builtin_altivec_vrfin(__a);
6370
#endif
6371
}
6372
6373
#ifdef __VSX__
6374
static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
6375
return __builtin_vsx_xvrdpi(__a);
6376
}
6377
6378
/* vec_rint */
6379
6380
static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
6381
return __builtin_vsx_xvrspic(__a);
6382
}
6383
6384
static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
6385
return __builtin_vsx_xvrdpic(__a);
6386
}
6387
6388
/* vec_nearbyint */
6389
6390
static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
6391
return __builtin_vsx_xvrspi(__a);
6392
}
6393
6394
static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
6395
return __builtin_vsx_xvrdpi(__a);
6396
}
6397
#endif
6398
6399
/* vec_vrfin */
6400
6401
static __inline__ vector float __attribute__((__always_inline__))
6402
vec_vrfin(vector float __a) {
6403
return __builtin_altivec_vrfin(__a);
6404
}
6405
6406
/* vec_sqrt */
6407
6408
#ifdef __VSX__
6409
static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
6410
return __builtin_vsx_xvsqrtsp(__a);
6411
}
6412
6413
static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
6414
return __builtin_vsx_xvsqrtdp(__a);
6415
}
6416
#endif
6417
6418
/* vec_rsqrte */
6419
6420
static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
6421
#ifdef __VSX__
6422
return __builtin_vsx_xvrsqrtesp(__a);
6423
#else
6424
return __builtin_altivec_vrsqrtefp(__a);
6425
#endif
6426
}
6427
6428
#ifdef __VSX__
6429
static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
6430
return __builtin_vsx_xvrsqrtedp(__a);
6431
}
6432
#endif
6433
6434
/* vec_vrsqrtefp */
6435
6436
static __inline__ __vector float __attribute__((__always_inline__))
6437
vec_vrsqrtefp(vector float __a) {
6438
return __builtin_altivec_vrsqrtefp(__a);
6439
}
6440
6441
/* vec_sel */
6442
6443
#define __builtin_altivec_vsel_4si vec_sel
6444
6445
static __inline__ vector signed char __ATTRS_o_ai vec_sel(
6446
vector signed char __a, vector signed char __b, vector unsigned char __c) {
6447
return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6448
}
6449
6450
static __inline__ vector signed char __ATTRS_o_ai
6451
vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
6452
return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6453
}
6454
6455
static __inline__ vector unsigned char __ATTRS_o_ai
6456
vec_sel(vector unsigned char __a, vector unsigned char __b,
6457
vector unsigned char __c) {
6458
return (__a & ~__c) | (__b & __c);
6459
}
6460
6461
static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
6462
vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
6463
return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6464
}
6465
6466
static __inline__ vector bool char __ATTRS_o_ai
6467
vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
6468
return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6469
}
6470
6471
static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
6472
vector bool char __b,
6473
vector bool char __c) {
6474
return (__a & ~__c) | (__b & __c);
6475
}
6476
6477
static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
6478
vector short __b,
6479
vector unsigned short __c) {
6480
return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6481
}
6482
6483
static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
6484
vector short __b,
6485
vector bool short __c) {
6486
return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6487
}
6488
6489
static __inline__ vector unsigned short __ATTRS_o_ai
6490
vec_sel(vector unsigned short __a, vector unsigned short __b,
6491
vector unsigned short __c) {
6492
return (__a & ~__c) | (__b & __c);
6493
}
6494
6495
static __inline__ vector unsigned short __ATTRS_o_ai
6496
vec_sel(vector unsigned short __a, vector unsigned short __b,
6497
vector bool short __c) {
6498
return (__a & ~(vector unsigned short)__c) |
6499
(__b & (vector unsigned short)__c);
6500
}
6501
6502
static __inline__ vector bool short __ATTRS_o_ai vec_sel(
6503
vector bool short __a, vector bool short __b, vector unsigned short __c) {
6504
return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6505
}
6506
6507
static __inline__ vector bool short __ATTRS_o_ai
6508
vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
6509
return (__a & ~__c) | (__b & __c);
6510
}
6511
6512
static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
6513
vector int __b,
6514
vector unsigned int __c) {
6515
return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6516
}
6517
6518
static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
6519
vector int __b,
6520
vector bool int __c) {
6521
return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6522
}
6523
6524
static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
6525
vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
6526
return (__a & ~__c) | (__b & __c);
6527
}
6528
6529
static __inline__ vector unsigned int __ATTRS_o_ai
6530
vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
6531
return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6532
}
6533
6534
static __inline__ vector bool int __ATTRS_o_ai
6535
vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
6536
return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6537
}
6538
6539
static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
6540
vector bool int __b,
6541
vector bool int __c) {
6542
return (__a & ~__c) | (__b & __c);
6543
}
6544
6545
static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
6546
vector float __b,
6547
vector unsigned int __c) {
6548
vector int __res = ((vector int)__a & ~(vector int)__c) |
6549
((vector int)__b & (vector int)__c);
6550
return (vector float)__res;
6551
}
6552
6553
static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
6554
vector float __b,
6555
vector bool int __c) {
6556
vector int __res = ((vector int)__a & ~(vector int)__c) |
6557
((vector int)__b & (vector int)__c);
6558
return (vector float)__res;
6559
}
6560
6561
#ifdef __VSX__
6562
static __inline__ vector double __ATTRS_o_ai
6563
vec_sel(vector double __a, vector double __b, vector bool long long __c) {
6564
vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6565
((vector long long)__b & (vector long long)__c);
6566
return (vector double)__res;
6567
}
6568
6569
static __inline__ vector double __ATTRS_o_ai
6570
vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
6571
vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6572
((vector long long)__b & (vector long long)__c);
6573
return (vector double)__res;
6574
}
6575
#endif
6576
6577
/* vec_vsel */
6578
6579
static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
6580
vector signed char __a, vector signed char __b, vector unsigned char __c) {
6581
return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6582
}
6583
6584
static __inline__ vector signed char __ATTRS_o_ai
6585
vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
6586
return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6587
}
6588
6589
static __inline__ vector unsigned char __ATTRS_o_ai
6590
vec_vsel(vector unsigned char __a, vector unsigned char __b,
6591
vector unsigned char __c) {
6592
return (__a & ~__c) | (__b & __c);
6593
}
6594
6595
static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
6596
vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
6597
return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6598
}
6599
6600
static __inline__ vector bool char __ATTRS_o_ai
6601
vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
6602
return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6603
}
6604
6605
static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
6606
vector bool char __b,
6607
vector bool char __c) {
6608
return (__a & ~__c) | (__b & __c);
6609
}
6610
6611
static __inline__ vector short __ATTRS_o_ai
6612
vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
6613
return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6614
}
6615
6616
static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
6617
vector short __b,
6618
vector bool short __c) {
6619
return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6620
}
6621
6622
static __inline__ vector unsigned short __ATTRS_o_ai
6623
vec_vsel(vector unsigned short __a, vector unsigned short __b,
6624
vector unsigned short __c) {
6625
return (__a & ~__c) | (__b & __c);
6626
}
6627
6628
static __inline__ vector unsigned short __ATTRS_o_ai
6629
vec_vsel(vector unsigned short __a, vector unsigned short __b,
6630
vector bool short __c) {
6631
return (__a & ~(vector unsigned short)__c) |
6632
(__b & (vector unsigned short)__c);
6633
}
6634
6635
static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
6636
vector bool short __a, vector bool short __b, vector unsigned short __c) {
6637
return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6638
}
6639
6640
static __inline__ vector bool short __ATTRS_o_ai
6641
vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
6642
return (__a & ~__c) | (__b & __c);
6643
}
6644
6645
static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
6646
vector int __b,
6647
vector unsigned int __c) {
6648
return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6649
}
6650
6651
static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
6652
vector int __b,
6653
vector bool int __c) {
6654
return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6655
}
6656
6657
static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
6658
vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
6659
return (__a & ~__c) | (__b & __c);
6660
}
6661
6662
static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
6663
vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
6664
return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6665
}
6666
6667
static __inline__ vector bool int __ATTRS_o_ai
6668
vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
6669
return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6670
}
6671
6672
static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
6673
vector bool int __b,
6674
vector bool int __c) {
6675
return (__a & ~__c) | (__b & __c);
6676
}
6677
6678
static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
6679
vector float __b,
6680
vector unsigned int __c) {
6681
vector int __res = ((vector int)__a & ~(vector int)__c) |
6682
((vector int)__b & (vector int)__c);
6683
return (vector float)__res;
6684
}
6685
6686
static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
6687
vector float __b,
6688
vector bool int __c) {
6689
vector int __res = ((vector int)__a & ~(vector int)__c) |
6690
((vector int)__b & (vector int)__c);
6691
return (vector float)__res;
6692
}
6693
6694
/* vec_sl */
6695
6696
static __inline__ vector signed char __ATTRS_o_ai
6697
vec_sl(vector signed char __a, vector unsigned char __b) {
6698
return __a << (vector signed char)__b;
6699
}
6700
6701
static __inline__ vector unsigned char __ATTRS_o_ai
6702
vec_sl(vector unsigned char __a, vector unsigned char __b) {
6703
return __a << __b;
6704
}
6705
6706
static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
6707
vector unsigned short __b) {
6708
return __a << (vector short)__b;
6709
}
6710
6711
static __inline__ vector unsigned short __ATTRS_o_ai
6712
vec_sl(vector unsigned short __a, vector unsigned short __b) {
6713
return __a << __b;
6714
}
6715
6716
static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
6717
vector unsigned int __b) {
6718
return __a << (vector int)__b;
6719
}
6720
6721
static __inline__ vector unsigned int __ATTRS_o_ai
6722
vec_sl(vector unsigned int __a, vector unsigned int __b) {
6723
return __a << __b;
6724
}
6725
6726
#ifdef __POWER8_VECTOR__
6727
static __inline__ vector signed long long __ATTRS_o_ai
6728
vec_sl(vector signed long long __a, vector unsigned long long __b) {
6729
return __a << (vector long long)__b;
6730
}
6731
6732
static __inline__ vector unsigned long long __ATTRS_o_ai
6733
vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
6734
return __a << __b;
6735
}
6736
#endif
6737
6738
/* vec_vslb */
6739
6740
#define __builtin_altivec_vslb vec_vslb
6741
6742
static __inline__ vector signed char __ATTRS_o_ai
6743
vec_vslb(vector signed char __a, vector unsigned char __b) {
6744
return vec_sl(__a, __b);
6745
}
6746
6747
static __inline__ vector unsigned char __ATTRS_o_ai
6748
vec_vslb(vector unsigned char __a, vector unsigned char __b) {
6749
return vec_sl(__a, __b);
6750
}
6751
6752
/* vec_vslh */
6753
6754
#define __builtin_altivec_vslh vec_vslh
6755
6756
static __inline__ vector short __ATTRS_o_ai
6757
vec_vslh(vector short __a, vector unsigned short __b) {
6758
return vec_sl(__a, __b);
6759
}
6760
6761
static __inline__ vector unsigned short __ATTRS_o_ai
6762
vec_vslh(vector unsigned short __a, vector unsigned short __b) {
6763
return vec_sl(__a, __b);
6764
}
6765
6766
/* vec_vslw */
6767
6768
#define __builtin_altivec_vslw vec_vslw
6769
6770
static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
6771
vector unsigned int __b) {
6772
return vec_sl(__a, __b);
6773
}
6774
6775
static __inline__ vector unsigned int __ATTRS_o_ai
6776
vec_vslw(vector unsigned int __a, vector unsigned int __b) {
6777
return vec_sl(__a, __b);
6778
}
6779
6780
/* vec_sld */
6781
6782
#define __builtin_altivec_vsldoi_4si vec_sld
6783
6784
static __inline__ vector signed char __ATTRS_o_ai vec_sld(
6785
vector signed char __a, vector signed char __b, unsigned const int __c) {
6786
unsigned char __d = __c & 0x0F;
6787
#ifdef __LITTLE_ENDIAN__
6788
return vec_perm(
6789
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6790
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6791
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6792
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6793
#else
6794
return vec_perm(
6795
__a, __b,
6796
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6797
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6798
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6799
#endif
6800
}
6801
6802
static __inline__ vector unsigned char __ATTRS_o_ai
6803
vec_sld(vector unsigned char __a, vector unsigned char __b,
6804
unsigned const int __c) {
6805
unsigned char __d = __c & 0x0F;
6806
#ifdef __LITTLE_ENDIAN__
6807
return vec_perm(
6808
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6809
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6810
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6811
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6812
#else
6813
return vec_perm(
6814
__a, __b,
6815
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6816
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6817
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6818
#endif
6819
}
6820
6821
static __inline__ vector bool char __ATTRS_o_ai
6822
vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
6823
unsigned char __d = __c & 0x0F;
6824
#ifdef __LITTLE_ENDIAN__
6825
return vec_perm(
6826
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6827
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6828
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6829
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6830
#else
6831
return vec_perm(
6832
__a, __b,
6833
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6834
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6835
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6836
#endif
6837
}
6838
6839
static __inline__ vector signed short __ATTRS_o_ai vec_sld(
6840
vector signed short __a, vector signed short __b, unsigned const int __c) {
6841
unsigned char __d = __c & 0x0F;
6842
#ifdef __LITTLE_ENDIAN__
6843
return vec_perm(
6844
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6845
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6846
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6847
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6848
#else
6849
return vec_perm(
6850
__a, __b,
6851
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6852
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6853
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6854
#endif
6855
}
6856
6857
static __inline__ vector unsigned short __ATTRS_o_ai
6858
vec_sld(vector unsigned short __a, vector unsigned short __b,
6859
unsigned const int __c) {
6860
unsigned char __d = __c & 0x0F;
6861
#ifdef __LITTLE_ENDIAN__
6862
return vec_perm(
6863
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6864
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6865
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6866
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6867
#else
6868
return vec_perm(
6869
__a, __b,
6870
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6871
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6872
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6873
#endif
6874
}
6875
6876
static __inline__ vector bool short __ATTRS_o_ai
6877
vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
6878
unsigned char __d = __c & 0x0F;
6879
#ifdef __LITTLE_ENDIAN__
6880
return vec_perm(
6881
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6882
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6883
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6884
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6885
#else
6886
return vec_perm(
6887
__a, __b,
6888
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6889
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6890
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6891
#endif
6892
}
6893
6894
static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
6895
vector pixel __b,
6896
unsigned const int __c) {
6897
unsigned char __d = __c & 0x0F;
6898
#ifdef __LITTLE_ENDIAN__
6899
return vec_perm(
6900
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6901
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6902
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6903
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6904
#else
6905
return vec_perm(
6906
__a, __b,
6907
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6908
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6909
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6910
#endif
6911
}
6912
6913
static __inline__ vector signed int __ATTRS_o_ai
6914
vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
6915
unsigned char __d = __c & 0x0F;
6916
#ifdef __LITTLE_ENDIAN__
6917
return vec_perm(
6918
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6919
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6920
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6921
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6922
#else
6923
return vec_perm(
6924
__a, __b,
6925
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6926
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6927
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6928
#endif
6929
}
6930
6931
static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
6932
vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
6933
unsigned char __d = __c & 0x0F;
6934
#ifdef __LITTLE_ENDIAN__
6935
return vec_perm(
6936
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6937
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6938
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6939
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6940
#else
6941
return vec_perm(
6942
__a, __b,
6943
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6944
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6945
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6946
#endif
6947
}
6948
6949
static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
6950
vector bool int __b,
6951
unsigned const int __c) {
6952
unsigned char __d = __c & 0x0F;
6953
#ifdef __LITTLE_ENDIAN__
6954
return vec_perm(
6955
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6956
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6957
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6958
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6959
#else
6960
return vec_perm(
6961
__a, __b,
6962
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6963
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6964
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6965
#endif
6966
}
6967
6968
static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
6969
vector float __b,
6970
unsigned const int __c) {
6971
unsigned char __d = __c & 0x0F;
6972
#ifdef __LITTLE_ENDIAN__
6973
return vec_perm(
6974
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6975
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6976
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6977
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6978
#else
6979
return vec_perm(
6980
__a, __b,
6981
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6982
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6983
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6984
#endif
6985
}
6986
6987
/* vec_vsldoi */
6988
6989
static __inline__ vector signed char __ATTRS_o_ai
6990
vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
6991
unsigned char __d = __c & 0x0F;
6992
#ifdef __LITTLE_ENDIAN__
6993
return vec_perm(
6994
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6995
20 - __d, 21 - __d, 22 - __d, 23 - __d,
6996
24 - __d, 25 - __d, 26 - __d, 27 - __d,
6997
28 - __d, 29 - __d, 30 - __d, 31 - __d));
6998
#else
6999
return vec_perm(
7000
__a, __b,
7001
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7002
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7003
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7004
#endif
7005
}
7006
7007
static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
7008
vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
7009
unsigned char __d = __c & 0x0F;
7010
#ifdef __LITTLE_ENDIAN__
7011
return vec_perm(
7012
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7013
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7014
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7015
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7016
#else
7017
return vec_perm(
7018
__a, __b,
7019
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7020
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7021
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7022
#endif
7023
}
7024
7025
static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
7026
vector short __b,
7027
unsigned char __c) {
7028
unsigned char __d = __c & 0x0F;
7029
#ifdef __LITTLE_ENDIAN__
7030
return vec_perm(
7031
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7032
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7033
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7034
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7035
#else
7036
return vec_perm(
7037
__a, __b,
7038
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7039
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7040
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7041
#endif
7042
}
7043
7044
static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
7045
vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
7046
unsigned char __d = __c & 0x0F;
7047
#ifdef __LITTLE_ENDIAN__
7048
return vec_perm(
7049
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7050
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7051
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7052
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7053
#else
7054
return vec_perm(
7055
__a, __b,
7056
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7057
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7058
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7059
#endif
7060
}
7061
7062
static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
7063
vector pixel __b,
7064
unsigned char __c) {
7065
unsigned char __d = __c & 0x0F;
7066
#ifdef __LITTLE_ENDIAN__
7067
return vec_perm(
7068
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7069
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7070
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7071
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7072
#else
7073
return vec_perm(
7074
__a, __b,
7075
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7076
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7077
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7078
#endif
7079
}
7080
7081
static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
7082
vector int __b,
7083
unsigned char __c) {
7084
unsigned char __d = __c & 0x0F;
7085
#ifdef __LITTLE_ENDIAN__
7086
return vec_perm(
7087
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7088
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7089
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7090
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7091
#else
7092
return vec_perm(
7093
__a, __b,
7094
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7095
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7096
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7097
#endif
7098
}
7099
7100
static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
7101
vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
7102
unsigned char __d = __c & 0x0F;
7103
#ifdef __LITTLE_ENDIAN__
7104
return vec_perm(
7105
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7106
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7107
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7108
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7109
#else
7110
return vec_perm(
7111
__a, __b,
7112
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7113
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7114
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7115
#endif
7116
}
7117
7118
static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
7119
vector float __b,
7120
unsigned char __c) {
7121
unsigned char __d = __c & 0x0F;
7122
#ifdef __LITTLE_ENDIAN__
7123
return vec_perm(
7124
__b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7125
20 - __d, 21 - __d, 22 - __d, 23 - __d,
7126
24 - __d, 25 - __d, 26 - __d, 27 - __d,
7127
28 - __d, 29 - __d, 30 - __d, 31 - __d));
7128
#else
7129
return vec_perm(
7130
__a, __b,
7131
(vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7132
__d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7133
__d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7134
#endif
7135
}
7136
7137
/* vec_sll */
7138
7139
static __inline__ vector signed char __ATTRS_o_ai
7140
vec_sll(vector signed char __a, vector unsigned char __b) {
7141
return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7142
(vector int)__b);
7143
}
7144
7145
static __inline__ vector signed char __ATTRS_o_ai
7146
vec_sll(vector signed char __a, vector unsigned short __b) {
7147
return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7148
(vector int)__b);
7149
}
7150
7151
static __inline__ vector signed char __ATTRS_o_ai
7152
vec_sll(vector signed char __a, vector unsigned int __b) {
7153
return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7154
(vector int)__b);
7155
}
7156
7157
static __inline__ vector unsigned char __ATTRS_o_ai
7158
vec_sll(vector unsigned char __a, vector unsigned char __b) {
7159
return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7160
(vector int)__b);
7161
}
7162
7163
static __inline__ vector unsigned char __ATTRS_o_ai
7164
vec_sll(vector unsigned char __a, vector unsigned short __b) {
7165
return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7166
(vector int)__b);
7167
}
7168
7169
static __inline__ vector unsigned char __ATTRS_o_ai
7170
vec_sll(vector unsigned char __a, vector unsigned int __b) {
7171
return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7172
(vector int)__b);
7173
}
7174
7175
static __inline__ vector bool char __ATTRS_o_ai
7176
vec_sll(vector bool char __a, vector unsigned char __b) {
7177
return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7178
(vector int)__b);
7179
}
7180
7181
static __inline__ vector bool char __ATTRS_o_ai
7182
vec_sll(vector bool char __a, vector unsigned short __b) {
7183
return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7184
(vector int)__b);
7185
}
7186
7187
static __inline__ vector bool char __ATTRS_o_ai
7188
vec_sll(vector bool char __a, vector unsigned int __b) {
7189
return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7190
(vector int)__b);
7191
}
7192
7193
static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7194
vector unsigned char __b) {
7195
return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7196
}
7197
7198
static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7199
vector unsigned short __b) {
7200
return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7201
}
7202
7203
static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7204
vector unsigned int __b) {
7205
return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7206
}
7207
7208
static __inline__ vector unsigned short __ATTRS_o_ai
7209
vec_sll(vector unsigned short __a, vector unsigned char __b) {
7210
return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7211
(vector int)__b);
7212
}
7213
7214
static __inline__ vector unsigned short __ATTRS_o_ai
7215
vec_sll(vector unsigned short __a, vector unsigned short __b) {
7216
return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7217
(vector int)__b);
7218
}
7219
7220
static __inline__ vector unsigned short __ATTRS_o_ai
7221
vec_sll(vector unsigned short __a, vector unsigned int __b) {
7222
return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7223
(vector int)__b);
7224
}
7225
7226
static __inline__ vector bool short __ATTRS_o_ai
7227
vec_sll(vector bool short __a, vector unsigned char __b) {
7228
return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7229
(vector int)__b);
7230
}
7231
7232
static __inline__ vector bool short __ATTRS_o_ai
7233
vec_sll(vector bool short __a, vector unsigned short __b) {
7234
return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7235
(vector int)__b);
7236
}
7237
7238
static __inline__ vector bool short __ATTRS_o_ai
7239
vec_sll(vector bool short __a, vector unsigned int __b) {
7240
return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7241
(vector int)__b);
7242
}
7243
7244
static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7245
vector unsigned char __b) {
7246
return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7247
}
7248
7249
static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7250
vector unsigned short __b) {
7251
return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7252
}
7253
7254
static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7255
vector unsigned int __b) {
7256
return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7257
}
7258
7259
static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7260
vector unsigned char __b) {
7261
return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7262
}
7263
7264
static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7265
vector unsigned short __b) {
7266
return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7267
}
7268
7269
static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7270
vector unsigned int __b) {
7271
return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7272
}
7273
7274
static __inline__ vector unsigned int __ATTRS_o_ai
7275
vec_sll(vector unsigned int __a, vector unsigned char __b) {
7276
return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7277
(vector int)__b);
7278
}
7279
7280
static __inline__ vector unsigned int __ATTRS_o_ai
7281
vec_sll(vector unsigned int __a, vector unsigned short __b) {
7282
return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7283
(vector int)__b);
7284
}
7285
7286
static __inline__ vector unsigned int __ATTRS_o_ai
7287
vec_sll(vector unsigned int __a, vector unsigned int __b) {
7288
return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7289
(vector int)__b);
7290
}
7291
7292
static __inline__ vector bool int __ATTRS_o_ai
7293
vec_sll(vector bool int __a, vector unsigned char __b) {
7294
return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7295
(vector int)__b);
7296
}
7297
7298
static __inline__ vector bool int __ATTRS_o_ai
7299
vec_sll(vector bool int __a, vector unsigned short __b) {
7300
return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7301
(vector int)__b);
7302
}
7303
7304
static __inline__ vector bool int __ATTRS_o_ai
7305
vec_sll(vector bool int __a, vector unsigned int __b) {
7306
return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7307
(vector int)__b);
7308
}
7309
7310
/* vec_vsl */
7311
7312
static __inline__ vector signed char __ATTRS_o_ai
7313
vec_vsl(vector signed char __a, vector unsigned char __b) {
7314
return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7315
(vector int)__b);
7316
}
7317
7318
static __inline__ vector signed char __ATTRS_o_ai
7319
vec_vsl(vector signed char __a, vector unsigned short __b) {
7320
return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7321
(vector int)__b);
7322
}
7323
7324
static __inline__ vector signed char __ATTRS_o_ai
7325
vec_vsl(vector signed char __a, vector unsigned int __b) {
7326
return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7327
(vector int)__b);
7328
}
7329
7330
static __inline__ vector unsigned char __ATTRS_o_ai
7331
vec_vsl(vector unsigned char __a, vector unsigned char __b) {
7332
return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7333
(vector int)__b);
7334
}
7335
7336
static __inline__ vector unsigned char __ATTRS_o_ai
7337
vec_vsl(vector unsigned char __a, vector unsigned short __b) {
7338
return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7339
(vector int)__b);
7340
}
7341
7342
static __inline__ vector unsigned char __ATTRS_o_ai
7343
vec_vsl(vector unsigned char __a, vector unsigned int __b) {
7344
return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7345
(vector int)__b);
7346
}
7347
7348
static __inline__ vector bool char __ATTRS_o_ai
7349
vec_vsl(vector bool char __a, vector unsigned char __b) {
7350
return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7351
(vector int)__b);
7352
}
7353
7354
static __inline__ vector bool char __ATTRS_o_ai
7355
vec_vsl(vector bool char __a, vector unsigned short __b) {
7356
return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7357
(vector int)__b);
7358
}
7359
7360
static __inline__ vector bool char __ATTRS_o_ai
7361
vec_vsl(vector bool char __a, vector unsigned int __b) {
7362
return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7363
(vector int)__b);
7364
}
7365
7366
static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7367
vector unsigned char __b) {
7368
return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7369
}
7370
7371
static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7372
vector unsigned short __b) {
7373
return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7374
}
7375
7376
static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7377
vector unsigned int __b) {
7378
return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7379
}
7380
7381
static __inline__ vector unsigned short __ATTRS_o_ai
7382
vec_vsl(vector unsigned short __a, vector unsigned char __b) {
7383
return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7384
(vector int)__b);
7385
}
7386
7387
static __inline__ vector unsigned short __ATTRS_o_ai
7388
vec_vsl(vector unsigned short __a, vector unsigned short __b) {
7389
return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7390
(vector int)__b);
7391
}
7392
7393
static __inline__ vector unsigned short __ATTRS_o_ai
7394
vec_vsl(vector unsigned short __a, vector unsigned int __b) {
7395
return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7396
(vector int)__b);
7397
}
7398
7399
static __inline__ vector bool short __ATTRS_o_ai
7400
vec_vsl(vector bool short __a, vector unsigned char __b) {
7401
return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7402
(vector int)__b);
7403
}
7404
7405
static __inline__ vector bool short __ATTRS_o_ai
7406
vec_vsl(vector bool short __a, vector unsigned short __b) {
7407
return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7408
(vector int)__b);
7409
}
7410
7411
static __inline__ vector bool short __ATTRS_o_ai
7412
vec_vsl(vector bool short __a, vector unsigned int __b) {
7413
return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7414
(vector int)__b);
7415
}
7416
7417
static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7418
vector unsigned char __b) {
7419
return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7420
}
7421
7422
static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7423
vector unsigned short __b) {
7424
return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7425
}
7426
7427
static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7428
vector unsigned int __b) {
7429
return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7430
}
7431
7432
static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7433
vector unsigned char __b) {
7434
return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7435
}
7436
7437
static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7438
vector unsigned short __b) {
7439
return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7440
}
7441
7442
static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7443
vector unsigned int __b) {
7444
return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7445
}
7446
7447
static __inline__ vector unsigned int __ATTRS_o_ai
7448
vec_vsl(vector unsigned int __a, vector unsigned char __b) {
7449
return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7450
(vector int)__b);
7451
}
7452
7453
static __inline__ vector unsigned int __ATTRS_o_ai
7454
vec_vsl(vector unsigned int __a, vector unsigned short __b) {
7455
return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7456
(vector int)__b);
7457
}
7458
7459
static __inline__ vector unsigned int __ATTRS_o_ai
7460
vec_vsl(vector unsigned int __a, vector unsigned int __b) {
7461
return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7462
(vector int)__b);
7463
}
7464
7465
static __inline__ vector bool int __ATTRS_o_ai
7466
vec_vsl(vector bool int __a, vector unsigned char __b) {
7467
return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7468
(vector int)__b);
7469
}
7470
7471
static __inline__ vector bool int __ATTRS_o_ai
7472
vec_vsl(vector bool int __a, vector unsigned short __b) {
7473
return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7474
(vector int)__b);
7475
}
7476
7477
static __inline__ vector bool int __ATTRS_o_ai
7478
vec_vsl(vector bool int __a, vector unsigned int __b) {
7479
return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7480
(vector int)__b);
7481
}
7482
7483
/* vec_slo */
7484
7485
static __inline__ vector signed char __ATTRS_o_ai
7486
vec_slo(vector signed char __a, vector signed char __b) {
7487
return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7488
(vector int)__b);
7489
}
7490
7491
static __inline__ vector signed char __ATTRS_o_ai
7492
vec_slo(vector signed char __a, vector unsigned char __b) {
7493
return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7494
(vector int)__b);
7495
}
7496
7497
static __inline__ vector unsigned char __ATTRS_o_ai
7498
vec_slo(vector unsigned char __a, vector signed char __b) {
7499
return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7500
(vector int)__b);
7501
}
7502
7503
static __inline__ vector unsigned char __ATTRS_o_ai
7504
vec_slo(vector unsigned char __a, vector unsigned char __b) {
7505
return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7506
(vector int)__b);
7507
}
7508
7509
static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
7510
vector signed char __b) {
7511
return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7512
}
7513
7514
static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
7515
vector unsigned char __b) {
7516
return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7517
}
7518
7519
static __inline__ vector unsigned short __ATTRS_o_ai
7520
vec_slo(vector unsigned short __a, vector signed char __b) {
7521
return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7522
(vector int)__b);
7523
}
7524
7525
static __inline__ vector unsigned short __ATTRS_o_ai
7526
vec_slo(vector unsigned short __a, vector unsigned char __b) {
7527
return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7528
(vector int)__b);
7529
}
7530
7531
static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7532
vector signed char __b) {
7533
return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7534
}
7535
7536
static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7537
vector unsigned char __b) {
7538
return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7539
}
7540
7541
static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
7542
vector signed char __b) {
7543
return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7544
}
7545
7546
static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
7547
vector unsigned char __b) {
7548
return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7549
}
7550
7551
static __inline__ vector unsigned int __ATTRS_o_ai
7552
vec_slo(vector unsigned int __a, vector signed char __b) {
7553
return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7554
(vector int)__b);
7555
}
7556
7557
static __inline__ vector unsigned int __ATTRS_o_ai
7558
vec_slo(vector unsigned int __a, vector unsigned char __b) {
7559
return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7560
(vector int)__b);
7561
}
7562
7563
static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
7564
vector signed char __b) {
7565
return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7566
}
7567
7568
static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
7569
vector unsigned char __b) {
7570
return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7571
}
7572
7573
/* vec_vslo */
7574
7575
static __inline__ vector signed char __ATTRS_o_ai
7576
vec_vslo(vector signed char __a, vector signed char __b) {
7577
return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7578
(vector int)__b);
7579
}
7580
7581
static __inline__ vector signed char __ATTRS_o_ai
7582
vec_vslo(vector signed char __a, vector unsigned char __b) {
7583
return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7584
(vector int)__b);
7585
}
7586
7587
static __inline__ vector unsigned char __ATTRS_o_ai
7588
vec_vslo(vector unsigned char __a, vector signed char __b) {
7589
return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7590
(vector int)__b);
7591
}
7592
7593
static __inline__ vector unsigned char __ATTRS_o_ai
7594
vec_vslo(vector unsigned char __a, vector unsigned char __b) {
7595
return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7596
(vector int)__b);
7597
}
7598
7599
static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
7600
vector signed char __b) {
7601
return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7602
}
7603
7604
static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
7605
vector unsigned char __b) {
7606
return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7607
}
7608
7609
static __inline__ vector unsigned short __ATTRS_o_ai
7610
vec_vslo(vector unsigned short __a, vector signed char __b) {
7611
return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7612
(vector int)__b);
7613
}
7614
7615
static __inline__ vector unsigned short __ATTRS_o_ai
7616
vec_vslo(vector unsigned short __a, vector unsigned char __b) {
7617
return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7618
(vector int)__b);
7619
}
7620
7621
static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7622
vector signed char __b) {
7623
return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7624
}
7625
7626
static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7627
vector unsigned char __b) {
7628
return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7629
}
7630
7631
static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
7632
vector signed char __b) {
7633
return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7634
}
7635
7636
static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
7637
vector unsigned char __b) {
7638
return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7639
}
7640
7641
static __inline__ vector unsigned int __ATTRS_o_ai
7642
vec_vslo(vector unsigned int __a, vector signed char __b) {
7643
return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7644
(vector int)__b);
7645
}
7646
7647
static __inline__ vector unsigned int __ATTRS_o_ai
7648
vec_vslo(vector unsigned int __a, vector unsigned char __b) {
7649
return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7650
(vector int)__b);
7651
}
7652
7653
static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
7654
vector signed char __b) {
7655
return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7656
}
7657
7658
static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
7659
vector unsigned char __b) {
7660
return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7661
}
7662
7663
/* vec_splat */
7664
7665
static __inline__ vector signed char __ATTRS_o_ai
7666
vec_splat(vector signed char __a, unsigned const int __b) {
7667
return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7668
}
7669
7670
static __inline__ vector unsigned char __ATTRS_o_ai
7671
vec_splat(vector unsigned char __a, unsigned const int __b) {
7672
return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7673
}
7674
7675
static __inline__ vector bool char __ATTRS_o_ai
7676
vec_splat(vector bool char __a, unsigned const int __b) {
7677
return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7678
}
7679
7680
static __inline__ vector signed short __ATTRS_o_ai
7681
vec_splat(vector signed short __a, unsigned const int __b) {
7682
unsigned char b0 = (__b & 0x07) * 2;
7683
unsigned char b1 = b0 + 1;
7684
return vec_perm(__a, __a,
7685
(vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7686
b0, b1, b0, b1, b0, b1));
7687
}
7688
7689
static __inline__ vector unsigned short __ATTRS_o_ai
7690
vec_splat(vector unsigned short __a, unsigned const int __b) {
7691
unsigned char b0 = (__b & 0x07) * 2;
7692
unsigned char b1 = b0 + 1;
7693
return vec_perm(__a, __a,
7694
(vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7695
b0, b1, b0, b1, b0, b1));
7696
}
7697
7698
static __inline__ vector bool short __ATTRS_o_ai
7699
vec_splat(vector bool short __a, unsigned const int __b) {
7700
unsigned char b0 = (__b & 0x07) * 2;
7701
unsigned char b1 = b0 + 1;
7702
return vec_perm(__a, __a,
7703
(vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7704
b0, b1, b0, b1, b0, b1));
7705
}
7706
7707
static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
7708
unsigned const int __b) {
7709
unsigned char b0 = (__b & 0x07) * 2;
7710
unsigned char b1 = b0 + 1;
7711
return vec_perm(__a, __a,
7712
(vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7713
b0, b1, b0, b1, b0, b1));
7714
}
7715
7716
static __inline__ vector signed int __ATTRS_o_ai
7717
vec_splat(vector signed int __a, unsigned const int __b) {
7718
unsigned char b0 = (__b & 0x03) * 4;
7719
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7720
return vec_perm(__a, __a,
7721
(vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7722
b2, b3, b0, b1, b2, b3));
7723
}
7724
7725
static __inline__ vector unsigned int __ATTRS_o_ai
7726
vec_splat(vector unsigned int __a, unsigned const int __b) {
7727
unsigned char b0 = (__b & 0x03) * 4;
7728
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7729
return vec_perm(__a, __a,
7730
(vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7731
b2, b3, b0, b1, b2, b3));
7732
}
7733
7734
static __inline__ vector bool int __ATTRS_o_ai
7735
vec_splat(vector bool int __a, unsigned const int __b) {
7736
unsigned char b0 = (__b & 0x03) * 4;
7737
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7738
return vec_perm(__a, __a,
7739
(vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7740
b2, b3, b0, b1, b2, b3));
7741
}
7742
7743
static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
7744
unsigned const int __b) {
7745
unsigned char b0 = (__b & 0x03) * 4;
7746
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7747
return vec_perm(__a, __a,
7748
(vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7749
b2, b3, b0, b1, b2, b3));
7750
}
7751
7752
#ifdef __VSX__
7753
static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
7754
unsigned const int __b) {
7755
unsigned char b0 = (__b & 0x01) * 8;
7756
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7757
b6 = b0 + 6, b7 = b0 + 7;
7758
return vec_perm(__a, __a,
7759
(vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7760
b2, b3, b4, b5, b6, b7));
7761
}
7762
static __inline__ vector bool long long __ATTRS_o_ai
7763
vec_splat(vector bool long long __a, unsigned const int __b) {
7764
unsigned char b0 = (__b & 0x01) * 8;
7765
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7766
b6 = b0 + 6, b7 = b0 + 7;
7767
return vec_perm(__a, __a,
7768
(vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7769
b2, b3, b4, b5, b6, b7));
7770
}
7771
static __inline__ vector signed long long __ATTRS_o_ai
7772
vec_splat(vector signed long long __a, unsigned const int __b) {
7773
unsigned char b0 = (__b & 0x01) * 8;
7774
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7775
b6 = b0 + 6, b7 = b0 + 7;
7776
return vec_perm(__a, __a,
7777
(vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7778
b2, b3, b4, b5, b6, b7));
7779
}
7780
static __inline__ vector unsigned long long __ATTRS_o_ai
7781
vec_splat(vector unsigned long long __a, unsigned const int __b) {
7782
unsigned char b0 = (__b & 0x01) * 8;
7783
unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7784
b6 = b0 + 6, b7 = b0 + 7;
7785
return vec_perm(__a, __a,
7786
(vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7787
b2, b3, b4, b5, b6, b7));
7788
}
7789
#endif
7790
7791
/* vec_vspltb */
7792
7793
#define __builtin_altivec_vspltb vec_vspltb
7794
7795
static __inline__ vector signed char __ATTRS_o_ai
7796
vec_vspltb(vector signed char __a, unsigned char __b) {
7797
return vec_perm(__a, __a, (vector unsigned char)(__b));
7798
}
7799
7800
static __inline__ vector unsigned char __ATTRS_o_ai
7801
vec_vspltb(vector unsigned char __a, unsigned char __b) {
7802
return vec_perm(__a, __a, (vector unsigned char)(__b));
7803
}
7804
7805
static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
7806
unsigned char __b) {
7807
return vec_perm(__a, __a, (vector unsigned char)(__b));
7808
}
7809
7810
/* vec_vsplth */
7811
7812
#define __builtin_altivec_vsplth vec_vsplth
7813
7814
static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
7815
unsigned char __b) {
7816
__b *= 2;
7817
unsigned char b1 = __b + 1;
7818
return vec_perm(__a, __a,
7819
(vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7820
__b, b1, __b, b1, __b, b1, __b, b1));
7821
}
7822
7823
static __inline__ vector unsigned short __ATTRS_o_ai
7824
vec_vsplth(vector unsigned short __a, unsigned char __b) {
7825
__b *= 2;
7826
unsigned char b1 = __b + 1;
7827
return vec_perm(__a, __a,
7828
(vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7829
__b, b1, __b, b1, __b, b1, __b, b1));
7830
}
7831
7832
static __inline__ vector bool short __ATTRS_o_ai
7833
vec_vsplth(vector bool short __a, unsigned char __b) {
7834
__b *= 2;
7835
unsigned char b1 = __b + 1;
7836
return vec_perm(__a, __a,
7837
(vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7838
__b, b1, __b, b1, __b, b1, __b, b1));
7839
}
7840
7841
static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
7842
unsigned char __b) {
7843
__b *= 2;
7844
unsigned char b1 = __b + 1;
7845
return vec_perm(__a, __a,
7846
(vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7847
__b, b1, __b, b1, __b, b1, __b, b1));
7848
}
7849
7850
/* vec_vspltw */
7851
7852
#define __builtin_altivec_vspltw vec_vspltw
7853
7854
static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
7855
unsigned char __b) {
7856
__b *= 4;
7857
unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7858
return vec_perm(__a, __a,
7859
(vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7860
b1, b2, b3, __b, b1, b2, b3));
7861
}
7862
7863
static __inline__ vector unsigned int __ATTRS_o_ai
7864
vec_vspltw(vector unsigned int __a, unsigned char __b) {
7865
__b *= 4;
7866
unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7867
return vec_perm(__a, __a,
7868
(vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7869
b1, b2, b3, __b, b1, b2, b3));
7870
}
7871
7872
static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
7873
unsigned char __b) {
7874
__b *= 4;
7875
unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7876
return vec_perm(__a, __a,
7877
(vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7878
b1, b2, b3, __b, b1, b2, b3));
7879
}
7880
7881
static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
7882
unsigned char __b) {
7883
__b *= 4;
7884
unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7885
return vec_perm(__a, __a,
7886
(vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7887
b1, b2, b3, __b, b1, b2, b3));
7888
}
7889
7890
/* vec_splat_s8 */
7891
7892
#define __builtin_altivec_vspltisb vec_splat_s8
7893
7894
// FIXME: parameter should be treated as 5-bit signed literal
7895
static __inline__ vector signed char __ATTRS_o_ai
7896
vec_splat_s8(signed char __a) {
7897
return (vector signed char)(__a);
7898
}
7899
7900
/* vec_vspltisb */
7901
7902
// FIXME: parameter should be treated as 5-bit signed literal
7903
static __inline__ vector signed char __ATTRS_o_ai
7904
vec_vspltisb(signed char __a) {
7905
return (vector signed char)(__a);
7906
}
7907
7908
/* vec_splat_s16 */
7909
7910
#define __builtin_altivec_vspltish vec_splat_s16
7911
7912
// FIXME: parameter should be treated as 5-bit signed literal
7913
static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
7914
return (vector short)(__a);
7915
}
7916
7917
/* vec_vspltish */
7918
7919
// FIXME: parameter should be treated as 5-bit signed literal
7920
static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
7921
return (vector short)(__a);
7922
}
7923
7924
/* vec_splat_s32 */
7925
7926
#define __builtin_altivec_vspltisw vec_splat_s32
7927
7928
// FIXME: parameter should be treated as 5-bit signed literal
7929
static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
7930
return (vector int)(__a);
7931
}
7932
7933
/* vec_vspltisw */
7934
7935
// FIXME: parameter should be treated as 5-bit signed literal
7936
static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
7937
return (vector int)(__a);
7938
}
7939
7940
/* vec_splat_u8 */
7941
7942
// FIXME: parameter should be treated as 5-bit signed literal
7943
static __inline__ vector unsigned char __ATTRS_o_ai
7944
vec_splat_u8(unsigned char __a) {
7945
return (vector unsigned char)(__a);
7946
}
7947
7948
/* vec_splat_u16 */
7949
7950
// FIXME: parameter should be treated as 5-bit signed literal
7951
static __inline__ vector unsigned short __ATTRS_o_ai
7952
vec_splat_u16(signed char __a) {
7953
return (vector unsigned short)(__a);
7954
}
7955
7956
/* vec_splat_u32 */
7957
7958
// FIXME: parameter should be treated as 5-bit signed literal
7959
static __inline__ vector unsigned int __ATTRS_o_ai
7960
vec_splat_u32(signed char __a) {
7961
return (vector unsigned int)(__a);
7962
}
7963
7964
/* vec_sr */
7965
7966
static __inline__ vector signed char __ATTRS_o_ai
7967
vec_sr(vector signed char __a, vector unsigned char __b) {
7968
vector unsigned char __res = (vector unsigned char)__a >> __b;
7969
return (vector signed char)__res;
7970
}
7971
7972
static __inline__ vector unsigned char __ATTRS_o_ai
7973
vec_sr(vector unsigned char __a, vector unsigned char __b) {
7974
return __a >> __b;
7975
}
7976
7977
static __inline__ vector signed short __ATTRS_o_ai
7978
vec_sr(vector signed short __a, vector unsigned short __b) {
7979
vector unsigned short __res = (vector unsigned short)__a >> __b;
7980
return (vector signed short)__res;
7981
}
7982
7983
static __inline__ vector unsigned short __ATTRS_o_ai
7984
vec_sr(vector unsigned short __a, vector unsigned short __b) {
7985
return __a >> __b;
7986
}
7987
7988
static __inline__ vector signed int __ATTRS_o_ai
7989
vec_sr(vector signed int __a, vector unsigned int __b) {
7990
vector unsigned int __res = (vector unsigned int)__a >> __b;
7991
return (vector signed int)__res;
7992
}
7993
7994
static __inline__ vector unsigned int __ATTRS_o_ai
7995
vec_sr(vector unsigned int __a, vector unsigned int __b) {
7996
return __a >> __b;
7997
}
7998
7999
#ifdef __POWER8_VECTOR__
8000
static __inline__ vector signed long long __ATTRS_o_ai
8001
vec_sr(vector signed long long __a, vector unsigned long long __b) {
8002
vector unsigned long long __res = (vector unsigned long long)__a >> __b;
8003
return (vector signed long long)__res;
8004
}
8005
8006
static __inline__ vector unsigned long long __ATTRS_o_ai
8007
vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
8008
return __a >> __b;
8009
}
8010
#endif
8011
8012
/* vec_vsrb */
8013
8014
#define __builtin_altivec_vsrb vec_vsrb
8015
8016
static __inline__ vector signed char __ATTRS_o_ai
8017
vec_vsrb(vector signed char __a, vector unsigned char __b) {
8018
return __a >> (vector signed char)__b;
8019
}
8020
8021
static __inline__ vector unsigned char __ATTRS_o_ai
8022
vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
8023
return __a >> __b;
8024
}
8025
8026
/* vec_vsrh */
8027
8028
#define __builtin_altivec_vsrh vec_vsrh
8029
8030
static __inline__ vector short __ATTRS_o_ai
8031
vec_vsrh(vector short __a, vector unsigned short __b) {
8032
return __a >> (vector short)__b;
8033
}
8034
8035
static __inline__ vector unsigned short __ATTRS_o_ai
8036
vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
8037
return __a >> __b;
8038
}
8039
8040
/* vec_vsrw */
8041
8042
#define __builtin_altivec_vsrw vec_vsrw
8043
8044
static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
8045
vector unsigned int __b) {
8046
return __a >> (vector int)__b;
8047
}
8048
8049
static __inline__ vector unsigned int __ATTRS_o_ai
8050
vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
8051
return __a >> __b;
8052
}
8053
8054
/* vec_sra */
8055
8056
static __inline__ vector signed char __ATTRS_o_ai
8057
vec_sra(vector signed char __a, vector unsigned char __b) {
8058
return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
8059
}
8060
8061
static __inline__ vector unsigned char __ATTRS_o_ai
8062
vec_sra(vector unsigned char __a, vector unsigned char __b) {
8063
return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
8064
}
8065
8066
static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
8067
vector unsigned short __b) {
8068
return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
8069
}
8070
8071
static __inline__ vector unsigned short __ATTRS_o_ai
8072
vec_sra(vector unsigned short __a, vector unsigned short __b) {
8073
return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
8074
}
8075
8076
static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
8077
vector unsigned int __b) {
8078
return __builtin_altivec_vsraw(__a, __b);
8079
}
8080
8081
static __inline__ vector unsigned int __ATTRS_o_ai
8082
vec_sra(vector unsigned int __a, vector unsigned int __b) {
8083
return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
8084
}
8085
8086
#ifdef __POWER8_VECTOR__
8087
static __inline__ vector signed long long __ATTRS_o_ai
8088
vec_sra(vector signed long long __a, vector unsigned long long __b) {
8089
return __a >> __b;
8090
}
8091
8092
static __inline__ vector unsigned long long __ATTRS_o_ai
8093
vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
8094
return (vector unsigned long long)((vector signed long long)__a >> __b);
8095
}
8096
#endif
8097
8098
/* vec_vsrab */
8099
8100
static __inline__ vector signed char __ATTRS_o_ai
8101
vec_vsrab(vector signed char __a, vector unsigned char __b) {
8102
return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
8103
}
8104
8105
static __inline__ vector unsigned char __ATTRS_o_ai
8106
vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
8107
return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
8108
}
8109
8110
/* vec_vsrah */
8111
8112
static __inline__ vector short __ATTRS_o_ai
8113
vec_vsrah(vector short __a, vector unsigned short __b) {
8114
return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
8115
}
8116
8117
static __inline__ vector unsigned short __ATTRS_o_ai
8118
vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
8119
return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
8120
}
8121
8122
/* vec_vsraw */
8123
8124
static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
8125
vector unsigned int __b) {
8126
return __builtin_altivec_vsraw(__a, __b);
8127
}
8128
8129
static __inline__ vector unsigned int __ATTRS_o_ai
8130
vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
8131
return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
8132
}
8133
8134
/* vec_srl */
8135
8136
static __inline__ vector signed char __ATTRS_o_ai
8137
vec_srl(vector signed char __a, vector unsigned char __b) {
8138
return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8139
(vector int)__b);
8140
}
8141
8142
static __inline__ vector signed char __ATTRS_o_ai
8143
vec_srl(vector signed char __a, vector unsigned short __b) {
8144
return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8145
(vector int)__b);
8146
}
8147
8148
static __inline__ vector signed char __ATTRS_o_ai
8149
vec_srl(vector signed char __a, vector unsigned int __b) {
8150
return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8151
(vector int)__b);
8152
}
8153
8154
static __inline__ vector unsigned char __ATTRS_o_ai
8155
vec_srl(vector unsigned char __a, vector unsigned char __b) {
8156
return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8157
(vector int)__b);
8158
}
8159
8160
static __inline__ vector unsigned char __ATTRS_o_ai
8161
vec_srl(vector unsigned char __a, vector unsigned short __b) {
8162
return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8163
(vector int)__b);
8164
}
8165
8166
static __inline__ vector unsigned char __ATTRS_o_ai
8167
vec_srl(vector unsigned char __a, vector unsigned int __b) {
8168
return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8169
(vector int)__b);
8170
}
8171
8172
static __inline__ vector bool char __ATTRS_o_ai
8173
vec_srl(vector bool char __a, vector unsigned char __b) {
8174
return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8175
(vector int)__b);
8176
}
8177
8178
static __inline__ vector bool char __ATTRS_o_ai
8179
vec_srl(vector bool char __a, vector unsigned short __b) {
8180
return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8181
(vector int)__b);
8182
}
8183
8184
static __inline__ vector bool char __ATTRS_o_ai
8185
vec_srl(vector bool char __a, vector unsigned int __b) {
8186
return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8187
(vector int)__b);
8188
}
8189
8190
static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8191
vector unsigned char __b) {
8192
return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8193
}
8194
8195
static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8196
vector unsigned short __b) {
8197
return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8198
}
8199
8200
static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8201
vector unsigned int __b) {
8202
return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8203
}
8204
8205
static __inline__ vector unsigned short __ATTRS_o_ai
8206
vec_srl(vector unsigned short __a, vector unsigned char __b) {
8207
return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8208
(vector int)__b);
8209
}
8210
8211
static __inline__ vector unsigned short __ATTRS_o_ai
8212
vec_srl(vector unsigned short __a, vector unsigned short __b) {
8213
return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8214
(vector int)__b);
8215
}
8216
8217
static __inline__ vector unsigned short __ATTRS_o_ai
8218
vec_srl(vector unsigned short __a, vector unsigned int __b) {
8219
return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8220
(vector int)__b);
8221
}
8222
8223
static __inline__ vector bool short __ATTRS_o_ai
8224
vec_srl(vector bool short __a, vector unsigned char __b) {
8225
return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8226
(vector int)__b);
8227
}
8228
8229
static __inline__ vector bool short __ATTRS_o_ai
8230
vec_srl(vector bool short __a, vector unsigned short __b) {
8231
return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8232
(vector int)__b);
8233
}
8234
8235
static __inline__ vector bool short __ATTRS_o_ai
8236
vec_srl(vector bool short __a, vector unsigned int __b) {
8237
return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8238
(vector int)__b);
8239
}
8240
8241
static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8242
vector unsigned char __b) {
8243
return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8244
}
8245
8246
static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8247
vector unsigned short __b) {
8248
return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8249
}
8250
8251
static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8252
vector unsigned int __b) {
8253
return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8254
}
8255
8256
static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8257
vector unsigned char __b) {
8258
return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8259
}
8260
8261
static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8262
vector unsigned short __b) {
8263
return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8264
}
8265
8266
static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8267
vector unsigned int __b) {
8268
return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8269
}
8270
8271
static __inline__ vector unsigned int __ATTRS_o_ai
8272
vec_srl(vector unsigned int __a, vector unsigned char __b) {
8273
return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8274
(vector int)__b);
8275
}
8276
8277
static __inline__ vector unsigned int __ATTRS_o_ai
8278
vec_srl(vector unsigned int __a, vector unsigned short __b) {
8279
return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8280
(vector int)__b);
8281
}
8282
8283
static __inline__ vector unsigned int __ATTRS_o_ai
8284
vec_srl(vector unsigned int __a, vector unsigned int __b) {
8285
return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8286
(vector int)__b);
8287
}
8288
8289
static __inline__ vector bool int __ATTRS_o_ai
8290
vec_srl(vector bool int __a, vector unsigned char __b) {
8291
return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8292
(vector int)__b);
8293
}
8294
8295
static __inline__ vector bool int __ATTRS_o_ai
8296
vec_srl(vector bool int __a, vector unsigned short __b) {
8297
return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8298
(vector int)__b);
8299
}
8300
8301
static __inline__ vector bool int __ATTRS_o_ai
8302
vec_srl(vector bool int __a, vector unsigned int __b) {
8303
return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8304
(vector int)__b);
8305
}
8306
8307
/* vec_vsr */
8308
8309
static __inline__ vector signed char __ATTRS_o_ai
8310
vec_vsr(vector signed char __a, vector unsigned char __b) {
8311
return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8312
(vector int)__b);
8313
}
8314
8315
static __inline__ vector signed char __ATTRS_o_ai
8316
vec_vsr(vector signed char __a, vector unsigned short __b) {
8317
return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8318
(vector int)__b);
8319
}
8320
8321
static __inline__ vector signed char __ATTRS_o_ai
8322
vec_vsr(vector signed char __a, vector unsigned int __b) {
8323
return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8324
(vector int)__b);
8325
}
8326
8327
static __inline__ vector unsigned char __ATTRS_o_ai
8328
vec_vsr(vector unsigned char __a, vector unsigned char __b) {
8329
return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8330
(vector int)__b);
8331
}
8332
8333
static __inline__ vector unsigned char __ATTRS_o_ai
8334
vec_vsr(vector unsigned char __a, vector unsigned short __b) {
8335
return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8336
(vector int)__b);
8337
}
8338
8339
static __inline__ vector unsigned char __ATTRS_o_ai
8340
vec_vsr(vector unsigned char __a, vector unsigned int __b) {
8341
return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8342
(vector int)__b);
8343
}
8344
8345
static __inline__ vector bool char __ATTRS_o_ai
8346
vec_vsr(vector bool char __a, vector unsigned char __b) {
8347
return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8348
(vector int)__b);
8349
}
8350
8351
static __inline__ vector bool char __ATTRS_o_ai
8352
vec_vsr(vector bool char __a, vector unsigned short __b) {
8353
return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8354
(vector int)__b);
8355
}
8356
8357
static __inline__ vector bool char __ATTRS_o_ai
8358
vec_vsr(vector bool char __a, vector unsigned int __b) {
8359
return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8360
(vector int)__b);
8361
}
8362
8363
static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8364
vector unsigned char __b) {
8365
return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8366
}
8367
8368
static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8369
vector unsigned short __b) {
8370
return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8371
}
8372
8373
static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8374
vector unsigned int __b) {
8375
return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8376
}
8377
8378
static __inline__ vector unsigned short __ATTRS_o_ai
8379
vec_vsr(vector unsigned short __a, vector unsigned char __b) {
8380
return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8381
(vector int)__b);
8382
}
8383
8384
static __inline__ vector unsigned short __ATTRS_o_ai
8385
vec_vsr(vector unsigned short __a, vector unsigned short __b) {
8386
return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8387
(vector int)__b);
8388
}
8389
8390
static __inline__ vector unsigned short __ATTRS_o_ai
8391
vec_vsr(vector unsigned short __a, vector unsigned int __b) {
8392
return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8393
(vector int)__b);
8394
}
8395
8396
static __inline__ vector bool short __ATTRS_o_ai
8397
vec_vsr(vector bool short __a, vector unsigned char __b) {
8398
return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8399
(vector int)__b);
8400
}
8401
8402
static __inline__ vector bool short __ATTRS_o_ai
8403
vec_vsr(vector bool short __a, vector unsigned short __b) {
8404
return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8405
(vector int)__b);
8406
}
8407
8408
static __inline__ vector bool short __ATTRS_o_ai
8409
vec_vsr(vector bool short __a, vector unsigned int __b) {
8410
return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8411
(vector int)__b);
8412
}
8413
8414
static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8415
vector unsigned char __b) {
8416
return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8417
}
8418
8419
static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8420
vector unsigned short __b) {
8421
return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8422
}
8423
8424
static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8425
vector unsigned int __b) {
8426
return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8427
}
8428
8429
static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8430
vector unsigned char __b) {
8431
return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8432
}
8433
8434
static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8435
vector unsigned short __b) {
8436
return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8437
}
8438
8439
static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8440
vector unsigned int __b) {
8441
return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8442
}
8443
8444
static __inline__ vector unsigned int __ATTRS_o_ai
8445
vec_vsr(vector unsigned int __a, vector unsigned char __b) {
8446
return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8447
(vector int)__b);
8448
}
8449
8450
static __inline__ vector unsigned int __ATTRS_o_ai
8451
vec_vsr(vector unsigned int __a, vector unsigned short __b) {
8452
return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8453
(vector int)__b);
8454
}
8455
8456
static __inline__ vector unsigned int __ATTRS_o_ai
8457
vec_vsr(vector unsigned int __a, vector unsigned int __b) {
8458
return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8459
(vector int)__b);
8460
}
8461
8462
static __inline__ vector bool int __ATTRS_o_ai
8463
vec_vsr(vector bool int __a, vector unsigned char __b) {
8464
return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8465
(vector int)__b);
8466
}
8467
8468
static __inline__ vector bool int __ATTRS_o_ai
8469
vec_vsr(vector bool int __a, vector unsigned short __b) {
8470
return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8471
(vector int)__b);
8472
}
8473
8474
static __inline__ vector bool int __ATTRS_o_ai
8475
vec_vsr(vector bool int __a, vector unsigned int __b) {
8476
return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8477
(vector int)__b);
8478
}
8479
8480
/* vec_sro */
8481
8482
static __inline__ vector signed char __ATTRS_o_ai
8483
vec_sro(vector signed char __a, vector signed char __b) {
8484
return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8485
(vector int)__b);
8486
}
8487
8488
static __inline__ vector signed char __ATTRS_o_ai
8489
vec_sro(vector signed char __a, vector unsigned char __b) {
8490
return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8491
(vector int)__b);
8492
}
8493
8494
static __inline__ vector unsigned char __ATTRS_o_ai
8495
vec_sro(vector unsigned char __a, vector signed char __b) {
8496
return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8497
(vector int)__b);
8498
}
8499
8500
static __inline__ vector unsigned char __ATTRS_o_ai
8501
vec_sro(vector unsigned char __a, vector unsigned char __b) {
8502
return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8503
(vector int)__b);
8504
}
8505
8506
static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
8507
vector signed char __b) {
8508
return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8509
}
8510
8511
static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
8512
vector unsigned char __b) {
8513
return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8514
}
8515
8516
static __inline__ vector unsigned short __ATTRS_o_ai
8517
vec_sro(vector unsigned short __a, vector signed char __b) {
8518
return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8519
(vector int)__b);
8520
}
8521
8522
static __inline__ vector unsigned short __ATTRS_o_ai
8523
vec_sro(vector unsigned short __a, vector unsigned char __b) {
8524
return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8525
(vector int)__b);
8526
}
8527
8528
static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8529
vector signed char __b) {
8530
return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8531
}
8532
8533
static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8534
vector unsigned char __b) {
8535
return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8536
}
8537
8538
static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
8539
vector signed char __b) {
8540
return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8541
}
8542
8543
static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
8544
vector unsigned char __b) {
8545
return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8546
}
8547
8548
static __inline__ vector unsigned int __ATTRS_o_ai
8549
vec_sro(vector unsigned int __a, vector signed char __b) {
8550
return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8551
(vector int)__b);
8552
}
8553
8554
static __inline__ vector unsigned int __ATTRS_o_ai
8555
vec_sro(vector unsigned int __a, vector unsigned char __b) {
8556
return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8557
(vector int)__b);
8558
}
8559
8560
static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
8561
vector signed char __b) {
8562
return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8563
}
8564
8565
static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
8566
vector unsigned char __b) {
8567
return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8568
}
8569
8570
/* vec_vsro */
8571
8572
static __inline__ vector signed char __ATTRS_o_ai
8573
vec_vsro(vector signed char __a, vector signed char __b) {
8574
return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8575
(vector int)__b);
8576
}
8577
8578
static __inline__ vector signed char __ATTRS_o_ai
8579
vec_vsro(vector signed char __a, vector unsigned char __b) {
8580
return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8581
(vector int)__b);
8582
}
8583
8584
static __inline__ vector unsigned char __ATTRS_o_ai
8585
vec_vsro(vector unsigned char __a, vector signed char __b) {
8586
return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8587
(vector int)__b);
8588
}
8589
8590
static __inline__ vector unsigned char __ATTRS_o_ai
8591
vec_vsro(vector unsigned char __a, vector unsigned char __b) {
8592
return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8593
(vector int)__b);
8594
}
8595
8596
static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
8597
vector signed char __b) {
8598
return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8599
}
8600
8601
static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
8602
vector unsigned char __b) {
8603
return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8604
}
8605
8606
static __inline__ vector unsigned short __ATTRS_o_ai
8607
vec_vsro(vector unsigned short __a, vector signed char __b) {
8608
return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8609
(vector int)__b);
8610
}
8611
8612
static __inline__ vector unsigned short __ATTRS_o_ai
8613
vec_vsro(vector unsigned short __a, vector unsigned char __b) {
8614
return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8615
(vector int)__b);
8616
}
8617
8618
static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8619
vector signed char __b) {
8620
return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8621
}
8622
8623
static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8624
vector unsigned char __b) {
8625
return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8626
}
8627
8628
static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
8629
vector signed char __b) {
8630
return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8631
}
8632
8633
static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
8634
vector unsigned char __b) {
8635
return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8636
}
8637
8638
static __inline__ vector unsigned int __ATTRS_o_ai
8639
vec_vsro(vector unsigned int __a, vector signed char __b) {
8640
return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8641
(vector int)__b);
8642
}
8643
8644
static __inline__ vector unsigned int __ATTRS_o_ai
8645
vec_vsro(vector unsigned int __a, vector unsigned char __b) {
8646
return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8647
(vector int)__b);
8648
}
8649
8650
static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
8651
vector signed char __b) {
8652
return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8653
}
8654
8655
static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
8656
vector unsigned char __b) {
8657
return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8658
}
8659
8660
/* vec_st */
8661
8662
static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8663
vector signed char *__c) {
8664
__builtin_altivec_stvx((vector int)__a, __b, __c);
8665
}
8666
8667
static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8668
signed char *__c) {
8669
__builtin_altivec_stvx((vector int)__a, __b, __c);
8670
}
8671
8672
static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8673
vector unsigned char *__c) {
8674
__builtin_altivec_stvx((vector int)__a, __b, __c);
8675
}
8676
8677
static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8678
unsigned char *__c) {
8679
__builtin_altivec_stvx((vector int)__a, __b, __c);
8680
}
8681
8682
static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8683
signed char *__c) {
8684
__builtin_altivec_stvx((vector int)__a, __b, __c);
8685
}
8686
8687
static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8688
unsigned char *__c) {
8689
__builtin_altivec_stvx((vector int)__a, __b, __c);
8690
}
8691
8692
static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8693
vector bool char *__c) {
8694
__builtin_altivec_stvx((vector int)__a, __b, __c);
8695
}
8696
8697
static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
8698
vector short *__c) {
8699
__builtin_altivec_stvx((vector int)__a, __b, __c);
8700
}
8701
8702
static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
8703
short *__c) {
8704
__builtin_altivec_stvx((vector int)__a, __b, __c);
8705
}
8706
8707
static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8708
vector unsigned short *__c) {
8709
__builtin_altivec_stvx((vector int)__a, __b, __c);
8710
}
8711
8712
static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8713
unsigned short *__c) {
8714
__builtin_altivec_stvx((vector int)__a, __b, __c);
8715
}
8716
8717
static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8718
short *__c) {
8719
__builtin_altivec_stvx((vector int)__a, __b, __c);
8720
}
8721
8722
static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8723
unsigned short *__c) {
8724
__builtin_altivec_stvx((vector int)__a, __b, __c);
8725
}
8726
8727
static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8728
vector bool short *__c) {
8729
__builtin_altivec_stvx((vector int)__a, __b, __c);
8730
}
8731
8732
static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8733
short *__c) {
8734
__builtin_altivec_stvx((vector int)__a, __b, __c);
8735
}
8736
8737
static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8738
unsigned short *__c) {
8739
__builtin_altivec_stvx((vector int)__a, __b, __c);
8740
}
8741
8742
static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8743
vector pixel *__c) {
8744
__builtin_altivec_stvx((vector int)__a, __b, __c);
8745
}
8746
8747
static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
8748
vector int *__c) {
8749
__builtin_altivec_stvx(__a, __b, __c);
8750
}
8751
8752
static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
8753
__builtin_altivec_stvx(__a, __b, __c);
8754
}
8755
8756
static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8757
vector unsigned int *__c) {
8758
__builtin_altivec_stvx((vector int)__a, __b, __c);
8759
}
8760
8761
static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8762
unsigned int *__c) {
8763
__builtin_altivec_stvx((vector int)__a, __b, __c);
8764
}
8765
8766
static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8767
int *__c) {
8768
__builtin_altivec_stvx((vector int)__a, __b, __c);
8769
}
8770
8771
static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8772
unsigned int *__c) {
8773
__builtin_altivec_stvx((vector int)__a, __b, __c);
8774
}
8775
8776
static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8777
vector bool int *__c) {
8778
__builtin_altivec_stvx((vector int)__a, __b, __c);
8779
}
8780
8781
static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
8782
vector float *__c) {
8783
__builtin_altivec_stvx((vector int)__a, __b, __c);
8784
}
8785
8786
static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
8787
float *__c) {
8788
__builtin_altivec_stvx((vector int)__a, __b, __c);
8789
}
8790
8791
/* vec_stvx */
8792
8793
static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8794
vector signed char *__c) {
8795
__builtin_altivec_stvx((vector int)__a, __b, __c);
8796
}
8797
8798
static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8799
signed char *__c) {
8800
__builtin_altivec_stvx((vector int)__a, __b, __c);
8801
}
8802
8803
static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8804
vector unsigned char *__c) {
8805
__builtin_altivec_stvx((vector int)__a, __b, __c);
8806
}
8807
8808
static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8809
unsigned char *__c) {
8810
__builtin_altivec_stvx((vector int)__a, __b, __c);
8811
}
8812
8813
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8814
signed char *__c) {
8815
__builtin_altivec_stvx((vector int)__a, __b, __c);
8816
}
8817
8818
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8819
unsigned char *__c) {
8820
__builtin_altivec_stvx((vector int)__a, __b, __c);
8821
}
8822
8823
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8824
vector bool char *__c) {
8825
__builtin_altivec_stvx((vector int)__a, __b, __c);
8826
}
8827
8828
static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8829
vector short *__c) {
8830
__builtin_altivec_stvx((vector int)__a, __b, __c);
8831
}
8832
8833
static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8834
short *__c) {
8835
__builtin_altivec_stvx((vector int)__a, __b, __c);
8836
}
8837
8838
static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8839
vector unsigned short *__c) {
8840
__builtin_altivec_stvx((vector int)__a, __b, __c);
8841
}
8842
8843
static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8844
unsigned short *__c) {
8845
__builtin_altivec_stvx((vector int)__a, __b, __c);
8846
}
8847
8848
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8849
short *__c) {
8850
__builtin_altivec_stvx((vector int)__a, __b, __c);
8851
}
8852
8853
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8854
unsigned short *__c) {
8855
__builtin_altivec_stvx((vector int)__a, __b, __c);
8856
}
8857
8858
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8859
vector bool short *__c) {
8860
__builtin_altivec_stvx((vector int)__a, __b, __c);
8861
}
8862
8863
static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8864
short *__c) {
8865
__builtin_altivec_stvx((vector int)__a, __b, __c);
8866
}
8867
8868
static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8869
unsigned short *__c) {
8870
__builtin_altivec_stvx((vector int)__a, __b, __c);
8871
}
8872
8873
static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8874
vector pixel *__c) {
8875
__builtin_altivec_stvx((vector int)__a, __b, __c);
8876
}
8877
8878
static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
8879
vector int *__c) {
8880
__builtin_altivec_stvx(__a, __b, __c);
8881
}
8882
8883
static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
8884
int *__c) {
8885
__builtin_altivec_stvx(__a, __b, __c);
8886
}
8887
8888
static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8889
vector unsigned int *__c) {
8890
__builtin_altivec_stvx((vector int)__a, __b, __c);
8891
}
8892
8893
static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8894
unsigned int *__c) {
8895
__builtin_altivec_stvx((vector int)__a, __b, __c);
8896
}
8897
8898
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8899
int *__c) {
8900
__builtin_altivec_stvx((vector int)__a, __b, __c);
8901
}
8902
8903
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8904
unsigned int *__c) {
8905
__builtin_altivec_stvx((vector int)__a, __b, __c);
8906
}
8907
8908
static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8909
vector bool int *__c) {
8910
__builtin_altivec_stvx((vector int)__a, __b, __c);
8911
}
8912
8913
static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8914
vector float *__c) {
8915
__builtin_altivec_stvx((vector int)__a, __b, __c);
8916
}
8917
8918
static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8919
float *__c) {
8920
__builtin_altivec_stvx((vector int)__a, __b, __c);
8921
}
8922
8923
/* vec_ste */
8924
8925
static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
8926
signed char *__c) {
8927
__builtin_altivec_stvebx((vector char)__a, __b, __c);
8928
}
8929
8930
static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
8931
unsigned char *__c) {
8932
__builtin_altivec_stvebx((vector char)__a, __b, __c);
8933
}
8934
8935
static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8936
signed char *__c) {
8937
__builtin_altivec_stvebx((vector char)__a, __b, __c);
8938
}
8939
8940
static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8941
unsigned char *__c) {
8942
__builtin_altivec_stvebx((vector char)__a, __b, __c);
8943
}
8944
8945
static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
8946
short *__c) {
8947
__builtin_altivec_stvehx(__a, __b, __c);
8948
}
8949
8950
static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
8951
unsigned short *__c) {
8952
__builtin_altivec_stvehx((vector short)__a, __b, __c);
8953
}
8954
8955
static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8956
short *__c) {
8957
__builtin_altivec_stvehx((vector short)__a, __b, __c);
8958
}
8959
8960
static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8961
unsigned short *__c) {
8962
__builtin_altivec_stvehx((vector short)__a, __b, __c);
8963
}
8964
8965
static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8966
short *__c) {
8967
__builtin_altivec_stvehx((vector short)__a, __b, __c);
8968
}
8969
8970
static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8971
unsigned short *__c) {
8972
__builtin_altivec_stvehx((vector short)__a, __b, __c);
8973
}
8974
8975
static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
8976
__builtin_altivec_stvewx(__a, __b, __c);
8977
}
8978
8979
static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
8980
unsigned int *__c) {
8981
__builtin_altivec_stvewx((vector int)__a, __b, __c);
8982
}
8983
8984
static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8985
int *__c) {
8986
__builtin_altivec_stvewx((vector int)__a, __b, __c);
8987
}
8988
8989
static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8990
unsigned int *__c) {
8991
__builtin_altivec_stvewx((vector int)__a, __b, __c);
8992
}
8993
8994
static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
8995
float *__c) {
8996
__builtin_altivec_stvewx((vector int)__a, __b, __c);
8997
}
8998
8999
/* vec_stvebx */
9000
9001
static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
9002
signed char *__c) {
9003
__builtin_altivec_stvebx((vector char)__a, __b, __c);
9004
}
9005
9006
static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
9007
int __b, unsigned char *__c) {
9008
__builtin_altivec_stvebx((vector char)__a, __b, __c);
9009
}
9010
9011
static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
9012
signed char *__c) {
9013
__builtin_altivec_stvebx((vector char)__a, __b, __c);
9014
}
9015
9016
static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
9017
unsigned char *__c) {
9018
__builtin_altivec_stvebx((vector char)__a, __b, __c);
9019
}
9020
9021
/* vec_stvehx */
9022
9023
static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
9024
short *__c) {
9025
__builtin_altivec_stvehx(__a, __b, __c);
9026
}
9027
9028
static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
9029
int __b, unsigned short *__c) {
9030
__builtin_altivec_stvehx((vector short)__a, __b, __c);
9031
}
9032
9033
static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
9034
short *__c) {
9035
__builtin_altivec_stvehx((vector short)__a, __b, __c);
9036
}
9037
9038
static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
9039
unsigned short *__c) {
9040
__builtin_altivec_stvehx((vector short)__a, __b, __c);
9041
}
9042
9043
static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
9044
short *__c) {
9045
__builtin_altivec_stvehx((vector short)__a, __b, __c);
9046
}
9047
9048
static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
9049
unsigned short *__c) {
9050
__builtin_altivec_stvehx((vector short)__a, __b, __c);
9051
}
9052
9053
/* vec_stvewx */
9054
9055
static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
9056
int *__c) {
9057
__builtin_altivec_stvewx(__a, __b, __c);
9058
}
9059
9060
static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
9061
unsigned int *__c) {
9062
__builtin_altivec_stvewx((vector int)__a, __b, __c);
9063
}
9064
9065
static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
9066
int *__c) {
9067
__builtin_altivec_stvewx((vector int)__a, __b, __c);
9068
}
9069
9070
static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
9071
unsigned int *__c) {
9072
__builtin_altivec_stvewx((vector int)__a, __b, __c);
9073
}
9074
9075
static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
9076
float *__c) {
9077
__builtin_altivec_stvewx((vector int)__a, __b, __c);
9078
}
9079
9080
/* vec_stl */
9081
9082
static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
9083
vector signed char *__c) {
9084
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9085
}
9086
9087
static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
9088
signed char *__c) {
9089
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9090
}
9091
9092
static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
9093
vector unsigned char *__c) {
9094
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9095
}
9096
9097
static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
9098
unsigned char *__c) {
9099
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9100
}
9101
9102
static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9103
signed char *__c) {
9104
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9105
}
9106
9107
static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9108
unsigned char *__c) {
9109
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9110
}
9111
9112
static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9113
vector bool char *__c) {
9114
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9115
}
9116
9117
static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
9118
vector short *__c) {
9119
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9120
}
9121
9122
static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
9123
short *__c) {
9124
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9125
}
9126
9127
static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
9128
vector unsigned short *__c) {
9129
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9130
}
9131
9132
static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
9133
unsigned short *__c) {
9134
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9135
}
9136
9137
static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9138
short *__c) {
9139
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9140
}
9141
9142
static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9143
unsigned short *__c) {
9144
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9145
}
9146
9147
static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9148
vector bool short *__c) {
9149
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9150
}
9151
9152
static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9153
short *__c) {
9154
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9155
}
9156
9157
static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9158
unsigned short *__c) {
9159
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9160
}
9161
9162
static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9163
vector pixel *__c) {
9164
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9165
}
9166
9167
static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
9168
vector int *__c) {
9169
__builtin_altivec_stvxl(__a, __b, __c);
9170
}
9171
9172
static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
9173
__builtin_altivec_stvxl(__a, __b, __c);
9174
}
9175
9176
static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
9177
vector unsigned int *__c) {
9178
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9179
}
9180
9181
static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
9182
unsigned int *__c) {
9183
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9184
}
9185
9186
static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9187
int *__c) {
9188
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9189
}
9190
9191
static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9192
unsigned int *__c) {
9193
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9194
}
9195
9196
static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9197
vector bool int *__c) {
9198
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9199
}
9200
9201
static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
9202
vector float *__c) {
9203
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9204
}
9205
9206
static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
9207
float *__c) {
9208
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9209
}
9210
9211
/* vec_stvxl */
9212
9213
static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
9214
vector signed char *__c) {
9215
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9216
}
9217
9218
static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
9219
signed char *__c) {
9220
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9221
}
9222
9223
static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
9224
vector unsigned char *__c) {
9225
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9226
}
9227
9228
static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
9229
unsigned char *__c) {
9230
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9231
}
9232
9233
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9234
signed char *__c) {
9235
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9236
}
9237
9238
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9239
unsigned char *__c) {
9240
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9241
}
9242
9243
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9244
vector bool char *__c) {
9245
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9246
}
9247
9248
static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9249
vector short *__c) {
9250
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9251
}
9252
9253
static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9254
short *__c) {
9255
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9256
}
9257
9258
static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
9259
int __b,
9260
vector unsigned short *__c) {
9261
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9262
}
9263
9264
static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
9265
int __b, unsigned short *__c) {
9266
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9267
}
9268
9269
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9270
short *__c) {
9271
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9272
}
9273
9274
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9275
unsigned short *__c) {
9276
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9277
}
9278
9279
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9280
vector bool short *__c) {
9281
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9282
}
9283
9284
static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9285
short *__c) {
9286
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9287
}
9288
9289
static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9290
unsigned short *__c) {
9291
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9292
}
9293
9294
static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9295
vector pixel *__c) {
9296
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9297
}
9298
9299
static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
9300
vector int *__c) {
9301
__builtin_altivec_stvxl(__a, __b, __c);
9302
}
9303
9304
static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
9305
int *__c) {
9306
__builtin_altivec_stvxl(__a, __b, __c);
9307
}
9308
9309
static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9310
vector unsigned int *__c) {
9311
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9312
}
9313
9314
static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9315
unsigned int *__c) {
9316
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9317
}
9318
9319
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9320
int *__c) {
9321
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9322
}
9323
9324
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9325
unsigned int *__c) {
9326
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9327
}
9328
9329
static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9330
vector bool int *__c) {
9331
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9332
}
9333
9334
static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9335
vector float *__c) {
9336
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9337
}
9338
9339
static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9340
float *__c) {
9341
__builtin_altivec_stvxl((vector int)__a, __b, __c);
9342
}
9343
9344
/* vec_sub */
9345
9346
static __inline__ vector signed char __ATTRS_o_ai
9347
vec_sub(vector signed char __a, vector signed char __b) {
9348
return __a - __b;
9349
}
9350
9351
static __inline__ vector signed char __ATTRS_o_ai
9352
vec_sub(vector bool char __a, vector signed char __b) {
9353
return (vector signed char)__a - __b;
9354
}
9355
9356
static __inline__ vector signed char __ATTRS_o_ai
9357
vec_sub(vector signed char __a, vector bool char __b) {
9358
return __a - (vector signed char)__b;
9359
}
9360
9361
static __inline__ vector unsigned char __ATTRS_o_ai
9362
vec_sub(vector unsigned char __a, vector unsigned char __b) {
9363
return __a - __b;
9364
}
9365
9366
static __inline__ vector unsigned char __ATTRS_o_ai
9367
vec_sub(vector bool char __a, vector unsigned char __b) {
9368
return (vector unsigned char)__a - __b;
9369
}
9370
9371
static __inline__ vector unsigned char __ATTRS_o_ai
9372
vec_sub(vector unsigned char __a, vector bool char __b) {
9373
return __a - (vector unsigned char)__b;
9374
}
9375
9376
static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
9377
vector short __b) {
9378
return __a - __b;
9379
}
9380
9381
static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
9382
vector short __b) {
9383
return (vector short)__a - __b;
9384
}
9385
9386
static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
9387
vector bool short __b) {
9388
return __a - (vector short)__b;
9389
}
9390
9391
static __inline__ vector unsigned short __ATTRS_o_ai
9392
vec_sub(vector unsigned short __a, vector unsigned short __b) {
9393
return __a - __b;
9394
}
9395
9396
static __inline__ vector unsigned short __ATTRS_o_ai
9397
vec_sub(vector bool short __a, vector unsigned short __b) {
9398
return (vector unsigned short)__a - __b;
9399
}
9400
9401
static __inline__ vector unsigned short __ATTRS_o_ai
9402
vec_sub(vector unsigned short __a, vector bool short __b) {
9403
return __a - (vector unsigned short)__b;
9404
}
9405
9406
static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
9407
vector int __b) {
9408
return __a - __b;
9409
}
9410
9411
static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
9412
vector int __b) {
9413
return (vector int)__a - __b;
9414
}
9415
9416
static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
9417
vector bool int __b) {
9418
return __a - (vector int)__b;
9419
}
9420
9421
static __inline__ vector unsigned int __ATTRS_o_ai
9422
vec_sub(vector unsigned int __a, vector unsigned int __b) {
9423
return __a - __b;
9424
}
9425
9426
static __inline__ vector unsigned int __ATTRS_o_ai
9427
vec_sub(vector bool int __a, vector unsigned int __b) {
9428
return (vector unsigned int)__a - __b;
9429
}
9430
9431
static __inline__ vector unsigned int __ATTRS_o_ai
9432
vec_sub(vector unsigned int __a, vector bool int __b) {
9433
return __a - (vector unsigned int)__b;
9434
}
9435
9436
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9437
static __inline__ vector signed __int128 __ATTRS_o_ai
9438
vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
9439
return __a - __b;
9440
}
9441
9442
static __inline__ vector unsigned __int128 __ATTRS_o_ai
9443
vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9444
return __a - __b;
9445
}
9446
#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9447
9448
#ifdef __VSX__
9449
static __inline__ vector signed long long __ATTRS_o_ai
9450
vec_sub(vector signed long long __a, vector signed long long __b) {
9451
return __a - __b;
9452
}
9453
9454
static __inline__ vector unsigned long long __ATTRS_o_ai
9455
vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
9456
return __a - __b;
9457
}
9458
9459
static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
9460
vector double __b) {
9461
return __a - __b;
9462
}
9463
#endif
9464
9465
static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
9466
vector float __b) {
9467
return __a - __b;
9468
}
9469
9470
/* vec_vsububm */
9471
9472
#define __builtin_altivec_vsububm vec_vsububm
9473
9474
static __inline__ vector signed char __ATTRS_o_ai
9475
vec_vsububm(vector signed char __a, vector signed char __b) {
9476
return __a - __b;
9477
}
9478
9479
static __inline__ vector signed char __ATTRS_o_ai
9480
vec_vsububm(vector bool char __a, vector signed char __b) {
9481
return (vector signed char)__a - __b;
9482
}
9483
9484
static __inline__ vector signed char __ATTRS_o_ai
9485
vec_vsububm(vector signed char __a, vector bool char __b) {
9486
return __a - (vector signed char)__b;
9487
}
9488
9489
static __inline__ vector unsigned char __ATTRS_o_ai
9490
vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
9491
return __a - __b;
9492
}
9493
9494
static __inline__ vector unsigned char __ATTRS_o_ai
9495
vec_vsububm(vector bool char __a, vector unsigned char __b) {
9496
return (vector unsigned char)__a - __b;
9497
}
9498
9499
static __inline__ vector unsigned char __ATTRS_o_ai
9500
vec_vsububm(vector unsigned char __a, vector bool char __b) {
9501
return __a - (vector unsigned char)__b;
9502
}
9503
9504
/* vec_vsubuhm */
9505
9506
#define __builtin_altivec_vsubuhm vec_vsubuhm
9507
9508
static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9509
vector short __b) {
9510
return __a - __b;
9511
}
9512
9513
static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
9514
vector short __b) {
9515
return (vector short)__a - __b;
9516
}
9517
9518
static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9519
vector bool short __b) {
9520
return __a - (vector short)__b;
9521
}
9522
9523
static __inline__ vector unsigned short __ATTRS_o_ai
9524
vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
9525
return __a - __b;
9526
}
9527
9528
static __inline__ vector unsigned short __ATTRS_o_ai
9529
vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
9530
return (vector unsigned short)__a - __b;
9531
}
9532
9533
static __inline__ vector unsigned short __ATTRS_o_ai
9534
vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
9535
return __a - (vector unsigned short)__b;
9536
}
9537
9538
/* vec_vsubuwm */
9539
9540
#define __builtin_altivec_vsubuwm vec_vsubuwm
9541
9542
static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9543
vector int __b) {
9544
return __a - __b;
9545
}
9546
9547
static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
9548
vector int __b) {
9549
return (vector int)__a - __b;
9550
}
9551
9552
static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9553
vector bool int __b) {
9554
return __a - (vector int)__b;
9555
}
9556
9557
static __inline__ vector unsigned int __ATTRS_o_ai
9558
vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
9559
return __a - __b;
9560
}
9561
9562
static __inline__ vector unsigned int __ATTRS_o_ai
9563
vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
9564
return (vector unsigned int)__a - __b;
9565
}
9566
9567
static __inline__ vector unsigned int __ATTRS_o_ai
9568
vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
9569
return __a - (vector unsigned int)__b;
9570
}
9571
9572
/* vec_vsubfp */
9573
9574
#define __builtin_altivec_vsubfp vec_vsubfp
9575
9576
static __inline__ vector float __attribute__((__always_inline__))
9577
vec_vsubfp(vector float __a, vector float __b) {
9578
return __a - __b;
9579
}
9580
9581
/* vec_subc */
9582
9583
static __inline__ vector unsigned int __ATTRS_o_ai
9584
vec_subc(vector unsigned int __a, vector unsigned int __b) {
9585
return __builtin_altivec_vsubcuw(__a, __b);
9586
}
9587
9588
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9589
static __inline__ vector unsigned __int128 __ATTRS_o_ai
9590
vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9591
return __builtin_altivec_vsubcuq(__a, __b);
9592
}
9593
9594
static __inline__ vector signed __int128 __ATTRS_o_ai
9595
vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
9596
return __builtin_altivec_vsubcuq(__a, __b);
9597
}
9598
#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9599
9600
/* vec_vsubcuw */
9601
9602
static __inline__ vector unsigned int __attribute__((__always_inline__))
9603
vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
9604
return __builtin_altivec_vsubcuw(__a, __b);
9605
}
9606
9607
/* vec_subs */
9608
9609
static __inline__ vector signed char __ATTRS_o_ai
9610
vec_subs(vector signed char __a, vector signed char __b) {
9611
return __builtin_altivec_vsubsbs(__a, __b);
9612
}
9613
9614
static __inline__ vector signed char __ATTRS_o_ai
9615
vec_subs(vector bool char __a, vector signed char __b) {
9616
return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9617
}
9618
9619
static __inline__ vector signed char __ATTRS_o_ai
9620
vec_subs(vector signed char __a, vector bool char __b) {
9621
return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9622
}
9623
9624
static __inline__ vector unsigned char __ATTRS_o_ai
9625
vec_subs(vector unsigned char __a, vector unsigned char __b) {
9626
return __builtin_altivec_vsububs(__a, __b);
9627
}
9628
9629
static __inline__ vector unsigned char __ATTRS_o_ai
9630
vec_subs(vector bool char __a, vector unsigned char __b) {
9631
return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9632
}
9633
9634
static __inline__ vector unsigned char __ATTRS_o_ai
9635
vec_subs(vector unsigned char __a, vector bool char __b) {
9636
return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9637
}
9638
9639
static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
9640
vector short __b) {
9641
return __builtin_altivec_vsubshs(__a, __b);
9642
}
9643
9644
static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
9645
vector short __b) {
9646
return __builtin_altivec_vsubshs((vector short)__a, __b);
9647
}
9648
9649
static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
9650
vector bool short __b) {
9651
return __builtin_altivec_vsubshs(__a, (vector short)__b);
9652
}
9653
9654
static __inline__ vector unsigned short __ATTRS_o_ai
9655
vec_subs(vector unsigned short __a, vector unsigned short __b) {
9656
return __builtin_altivec_vsubuhs(__a, __b);
9657
}
9658
9659
static __inline__ vector unsigned short __ATTRS_o_ai
9660
vec_subs(vector bool short __a, vector unsigned short __b) {
9661
return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9662
}
9663
9664
static __inline__ vector unsigned short __ATTRS_o_ai
9665
vec_subs(vector unsigned short __a, vector bool short __b) {
9666
return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9667
}
9668
9669
static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
9670
vector int __b) {
9671
return __builtin_altivec_vsubsws(__a, __b);
9672
}
9673
9674
static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
9675
vector int __b) {
9676
return __builtin_altivec_vsubsws((vector int)__a, __b);
9677
}
9678
9679
static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
9680
vector bool int __b) {
9681
return __builtin_altivec_vsubsws(__a, (vector int)__b);
9682
}
9683
9684
static __inline__ vector unsigned int __ATTRS_o_ai
9685
vec_subs(vector unsigned int __a, vector unsigned int __b) {
9686
return __builtin_altivec_vsubuws(__a, __b);
9687
}
9688
9689
static __inline__ vector unsigned int __ATTRS_o_ai
9690
vec_subs(vector bool int __a, vector unsigned int __b) {
9691
return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9692
}
9693
9694
static __inline__ vector unsigned int __ATTRS_o_ai
9695
vec_subs(vector unsigned int __a, vector bool int __b) {
9696
return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9697
}
9698
9699
/* vec_vsubsbs */
9700
9701
static __inline__ vector signed char __ATTRS_o_ai
9702
vec_vsubsbs(vector signed char __a, vector signed char __b) {
9703
return __builtin_altivec_vsubsbs(__a, __b);
9704
}
9705
9706
static __inline__ vector signed char __ATTRS_o_ai
9707
vec_vsubsbs(vector bool char __a, vector signed char __b) {
9708
return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9709
}
9710
9711
static __inline__ vector signed char __ATTRS_o_ai
9712
vec_vsubsbs(vector signed char __a, vector bool char __b) {
9713
return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9714
}
9715
9716
/* vec_vsububs */
9717
9718
static __inline__ vector unsigned char __ATTRS_o_ai
9719
vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
9720
return __builtin_altivec_vsububs(__a, __b);
9721
}
9722
9723
static __inline__ vector unsigned char __ATTRS_o_ai
9724
vec_vsububs(vector bool char __a, vector unsigned char __b) {
9725
return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9726
}
9727
9728
static __inline__ vector unsigned char __ATTRS_o_ai
9729
vec_vsububs(vector unsigned char __a, vector bool char __b) {
9730
return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9731
}
9732
9733
/* vec_vsubshs */
9734
9735
static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9736
vector short __b) {
9737
return __builtin_altivec_vsubshs(__a, __b);
9738
}
9739
9740
static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
9741
vector short __b) {
9742
return __builtin_altivec_vsubshs((vector short)__a, __b);
9743
}
9744
9745
static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9746
vector bool short __b) {
9747
return __builtin_altivec_vsubshs(__a, (vector short)__b);
9748
}
9749
9750
/* vec_vsubuhs */
9751
9752
static __inline__ vector unsigned short __ATTRS_o_ai
9753
vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
9754
return __builtin_altivec_vsubuhs(__a, __b);
9755
}
9756
9757
static __inline__ vector unsigned short __ATTRS_o_ai
9758
vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
9759
return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9760
}
9761
9762
static __inline__ vector unsigned short __ATTRS_o_ai
9763
vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
9764
return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9765
}
9766
9767
/* vec_vsubsws */
9768
9769
static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9770
vector int __b) {
9771
return __builtin_altivec_vsubsws(__a, __b);
9772
}
9773
9774
static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
9775
vector int __b) {
9776
return __builtin_altivec_vsubsws((vector int)__a, __b);
9777
}
9778
9779
static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9780
vector bool int __b) {
9781
return __builtin_altivec_vsubsws(__a, (vector int)__b);
9782
}
9783
9784
/* vec_vsubuws */
9785
9786
static __inline__ vector unsigned int __ATTRS_o_ai
9787
vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
9788
return __builtin_altivec_vsubuws(__a, __b);
9789
}
9790
9791
static __inline__ vector unsigned int __ATTRS_o_ai
9792
vec_vsubuws(vector bool int __a, vector unsigned int __b) {
9793
return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9794
}
9795
9796
static __inline__ vector unsigned int __ATTRS_o_ai
9797
vec_vsubuws(vector unsigned int __a, vector bool int __b) {
9798
return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9799
}
9800
9801
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9802
/* vec_vsubuqm */
9803
9804
static __inline__ vector signed __int128 __ATTRS_o_ai
9805
vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
9806
return __a - __b;
9807
}
9808
9809
static __inline__ vector unsigned __int128 __ATTRS_o_ai
9810
vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9811
return __a - __b;
9812
}
9813
9814
/* vec_vsubeuqm */
9815
9816
static __inline__ vector signed __int128 __ATTRS_o_ai
9817
vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
9818
vector signed __int128 __c) {
9819
return __builtin_altivec_vsubeuqm(__a, __b, __c);
9820
}
9821
9822
static __inline__ vector unsigned __int128 __ATTRS_o_ai
9823
vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
9824
vector unsigned __int128 __c) {
9825
return __builtin_altivec_vsubeuqm(__a, __b, __c);
9826
}
9827
9828
/* vec_vsubcuq */
9829
9830
static __inline__ vector signed __int128 __ATTRS_o_ai
9831
vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
9832
return __builtin_altivec_vsubcuq(__a, __b);
9833
}
9834
9835
static __inline__ vector unsigned __int128 __ATTRS_o_ai
9836
vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9837
return __builtin_altivec_vsubcuq(__a, __b);
9838
}
9839
9840
/* vec_vsubecuq */
9841
9842
static __inline__ vector signed __int128 __ATTRS_o_ai
9843
vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
9844
vector signed __int128 __c) {
9845
return __builtin_altivec_vsubecuq(__a, __b, __c);
9846
}
9847
9848
static __inline__ vector unsigned __int128 __ATTRS_o_ai
9849
vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
9850
vector unsigned __int128 __c) {
9851
return __builtin_altivec_vsubecuq(__a, __b, __c);
9852
}
9853
#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9854
9855
/* vec_sum4s */
9856
9857
static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
9858
vector int __b) {
9859
return __builtin_altivec_vsum4sbs(__a, __b);
9860
}
9861
9862
static __inline__ vector unsigned int __ATTRS_o_ai
9863
vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
9864
return __builtin_altivec_vsum4ubs(__a, __b);
9865
}
9866
9867
static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
9868
vector int __b) {
9869
return __builtin_altivec_vsum4shs(__a, __b);
9870
}
9871
9872
/* vec_vsum4sbs */
9873
9874
static __inline__ vector int __attribute__((__always_inline__))
9875
vec_vsum4sbs(vector signed char __a, vector int __b) {
9876
return __builtin_altivec_vsum4sbs(__a, __b);
9877
}
9878
9879
/* vec_vsum4ubs */
9880
9881
static __inline__ vector unsigned int __attribute__((__always_inline__))
9882
vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
9883
return __builtin_altivec_vsum4ubs(__a, __b);
9884
}
9885
9886
/* vec_vsum4shs */
9887
9888
static __inline__ vector int __attribute__((__always_inline__))
9889
vec_vsum4shs(vector signed short __a, vector int __b) {
9890
return __builtin_altivec_vsum4shs(__a, __b);
9891
}
9892
9893
/* vec_sum2s */
9894
9895
/* The vsum2sws instruction has a big-endian bias, so that the second
9896
input vector and the result always reference big-endian elements
9897
1 and 3 (little-endian element 0 and 2). For ease of porting the
9898
programmer wants elements 1 and 3 in both cases, so for little
9899
endian we must perform some permutes. */
9900
9901
static __inline__ vector signed int __attribute__((__always_inline__))
9902
vec_sum2s(vector int __a, vector int __b) {
9903
#ifdef __LITTLE_ENDIAN__
9904
vector int __c = (vector signed int)vec_perm(
9905
__b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9906
8, 9, 10, 11));
9907
__c = __builtin_altivec_vsum2sws(__a, __c);
9908
return (vector signed int)vec_perm(
9909
__c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9910
8, 9, 10, 11));
9911
#else
9912
return __builtin_altivec_vsum2sws(__a, __b);
9913
#endif
9914
}
9915
9916
/* vec_vsum2sws */
9917
9918
static __inline__ vector signed int __attribute__((__always_inline__))
9919
vec_vsum2sws(vector int __a, vector int __b) {
9920
#ifdef __LITTLE_ENDIAN__
9921
vector int __c = (vector signed int)vec_perm(
9922
__b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9923
8, 9, 10, 11));
9924
__c = __builtin_altivec_vsum2sws(__a, __c);
9925
return (vector signed int)vec_perm(
9926
__c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9927
8, 9, 10, 11));
9928
#else
9929
return __builtin_altivec_vsum2sws(__a, __b);
9930
#endif
9931
}
9932
9933
/* vec_sums */
9934
9935
/* The vsumsws instruction has a big-endian bias, so that the second
9936
input vector and the result always reference big-endian element 3
9937
(little-endian element 0). For ease of porting the programmer
9938
wants element 3 in both cases, so for little endian we must perform
9939
some permutes. */
9940
9941
static __inline__ vector signed int __attribute__((__always_inline__))
9942
vec_sums(vector signed int __a, vector signed int __b) {
9943
#ifdef __LITTLE_ENDIAN__
9944
__b = (vector signed int)vec_splat(__b, 3);
9945
__b = __builtin_altivec_vsumsws(__a, __b);
9946
return (vector signed int)(0, 0, 0, __b[0]);
9947
#else
9948
return __builtin_altivec_vsumsws(__a, __b);
9949
#endif
9950
}
9951
9952
/* vec_vsumsws */
9953
9954
static __inline__ vector signed int __attribute__((__always_inline__))
9955
vec_vsumsws(vector signed int __a, vector signed int __b) {
9956
#ifdef __LITTLE_ENDIAN__
9957
__b = (vector signed int)vec_splat(__b, 3);
9958
__b = __builtin_altivec_vsumsws(__a, __b);
9959
return (vector signed int)(0, 0, 0, __b[0]);
9960
#else
9961
return __builtin_altivec_vsumsws(__a, __b);
9962
#endif
9963
}
9964
9965
/* vec_trunc */
9966
9967
static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
9968
#ifdef __VSX__
9969
return __builtin_vsx_xvrspiz(__a);
9970
#else
9971
return __builtin_altivec_vrfiz(__a);
9972
#endif
9973
}
9974
9975
#ifdef __VSX__
9976
static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
9977
return __builtin_vsx_xvrdpiz(__a);
9978
}
9979
#endif
9980
9981
/* vec_vrfiz */
9982
9983
static __inline__ vector float __attribute__((__always_inline__))
9984
vec_vrfiz(vector float __a) {
9985
return __builtin_altivec_vrfiz(__a);
9986
}
9987
9988
/* vec_unpackh */
9989
9990
/* The vector unpack instructions all have a big-endian bias, so for
9991
little endian we must reverse the meanings of "high" and "low." */
9992
9993
static __inline__ vector short __ATTRS_o_ai
9994
vec_unpackh(vector signed char __a) {
9995
#ifdef __LITTLE_ENDIAN__
9996
return __builtin_altivec_vupklsb((vector char)__a);
9997
#else
9998
return __builtin_altivec_vupkhsb((vector char)__a);
9999
#endif
10000
}
10001
10002
static __inline__ vector bool short __ATTRS_o_ai
10003
vec_unpackh(vector bool char __a) {
10004
#ifdef __LITTLE_ENDIAN__
10005
return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10006
#else
10007
return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10008
#endif
10009
}
10010
10011
static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
10012
#ifdef __LITTLE_ENDIAN__
10013
return __builtin_altivec_vupklsh(__a);
10014
#else
10015
return __builtin_altivec_vupkhsh(__a);
10016
#endif
10017
}
10018
10019
static __inline__ vector bool int __ATTRS_o_ai
10020
vec_unpackh(vector bool short __a) {
10021
#ifdef __LITTLE_ENDIAN__
10022
return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10023
#else
10024
return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10025
#endif
10026
}
10027
10028
static __inline__ vector unsigned int __ATTRS_o_ai
10029
vec_unpackh(vector pixel __a) {
10030
#ifdef __LITTLE_ENDIAN__
10031
return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10032
#else
10033
return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10034
#endif
10035
}
10036
10037
#ifdef __POWER8_VECTOR__
10038
static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
10039
#ifdef __LITTLE_ENDIAN__
10040
return __builtin_altivec_vupklsw(__a);
10041
#else
10042
return __builtin_altivec_vupkhsw(__a);
10043
#endif
10044
}
10045
10046
static __inline__ vector bool long long __ATTRS_o_ai
10047
vec_unpackh(vector bool int __a) {
10048
#ifdef __LITTLE_ENDIAN__
10049
return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10050
#else
10051
return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10052
#endif
10053
}
10054
#endif
10055
10056
/* vec_vupkhsb */
10057
10058
static __inline__ vector short __ATTRS_o_ai
10059
vec_vupkhsb(vector signed char __a) {
10060
#ifdef __LITTLE_ENDIAN__
10061
return __builtin_altivec_vupklsb((vector char)__a);
10062
#else
10063
return __builtin_altivec_vupkhsb((vector char)__a);
10064
#endif
10065
}
10066
10067
static __inline__ vector bool short __ATTRS_o_ai
10068
vec_vupkhsb(vector bool char __a) {
10069
#ifdef __LITTLE_ENDIAN__
10070
return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10071
#else
10072
return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10073
#endif
10074
}
10075
10076
/* vec_vupkhsh */
10077
10078
static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
10079
#ifdef __LITTLE_ENDIAN__
10080
return __builtin_altivec_vupklsh(__a);
10081
#else
10082
return __builtin_altivec_vupkhsh(__a);
10083
#endif
10084
}
10085
10086
static __inline__ vector bool int __ATTRS_o_ai
10087
vec_vupkhsh(vector bool short __a) {
10088
#ifdef __LITTLE_ENDIAN__
10089
return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10090
#else
10091
return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10092
#endif
10093
}
10094
10095
static __inline__ vector unsigned int __ATTRS_o_ai
10096
vec_vupkhsh(vector pixel __a) {
10097
#ifdef __LITTLE_ENDIAN__
10098
return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10099
#else
10100
return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10101
#endif
10102
}
10103
10104
/* vec_vupkhsw */
10105
10106
#ifdef __POWER8_VECTOR__
10107
static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
10108
#ifdef __LITTLE_ENDIAN__
10109
return __builtin_altivec_vupklsw(__a);
10110
#else
10111
return __builtin_altivec_vupkhsw(__a);
10112
#endif
10113
}
10114
10115
static __inline__ vector bool long long __ATTRS_o_ai
10116
vec_vupkhsw(vector bool int __a) {
10117
#ifdef __LITTLE_ENDIAN__
10118
return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10119
#else
10120
return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10121
#endif
10122
}
10123
#endif
10124
10125
/* vec_unpackl */
10126
10127
static __inline__ vector short __ATTRS_o_ai
10128
vec_unpackl(vector signed char __a) {
10129
#ifdef __LITTLE_ENDIAN__
10130
return __builtin_altivec_vupkhsb((vector char)__a);
10131
#else
10132
return __builtin_altivec_vupklsb((vector char)__a);
10133
#endif
10134
}
10135
10136
static __inline__ vector bool short __ATTRS_o_ai
10137
vec_unpackl(vector bool char __a) {
10138
#ifdef __LITTLE_ENDIAN__
10139
return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10140
#else
10141
return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10142
#endif
10143
}
10144
10145
static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
10146
#ifdef __LITTLE_ENDIAN__
10147
return __builtin_altivec_vupkhsh(__a);
10148
#else
10149
return __builtin_altivec_vupklsh(__a);
10150
#endif
10151
}
10152
10153
static __inline__ vector bool int __ATTRS_o_ai
10154
vec_unpackl(vector bool short __a) {
10155
#ifdef __LITTLE_ENDIAN__
10156
return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10157
#else
10158
return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10159
#endif
10160
}
10161
10162
static __inline__ vector unsigned int __ATTRS_o_ai
10163
vec_unpackl(vector pixel __a) {
10164
#ifdef __LITTLE_ENDIAN__
10165
return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10166
#else
10167
return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10168
#endif
10169
}
10170
10171
#ifdef __POWER8_VECTOR__
10172
static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
10173
#ifdef __LITTLE_ENDIAN__
10174
return __builtin_altivec_vupkhsw(__a);
10175
#else
10176
return __builtin_altivec_vupklsw(__a);
10177
#endif
10178
}
10179
10180
static __inline__ vector bool long long __ATTRS_o_ai
10181
vec_unpackl(vector bool int __a) {
10182
#ifdef __LITTLE_ENDIAN__
10183
return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10184
#else
10185
return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10186
#endif
10187
}
10188
#endif
10189
10190
/* vec_vupklsb */
10191
10192
static __inline__ vector short __ATTRS_o_ai
10193
vec_vupklsb(vector signed char __a) {
10194
#ifdef __LITTLE_ENDIAN__
10195
return __builtin_altivec_vupkhsb((vector char)__a);
10196
#else
10197
return __builtin_altivec_vupklsb((vector char)__a);
10198
#endif
10199
}
10200
10201
static __inline__ vector bool short __ATTRS_o_ai
10202
vec_vupklsb(vector bool char __a) {
10203
#ifdef __LITTLE_ENDIAN__
10204
return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10205
#else
10206
return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10207
#endif
10208
}
10209
10210
/* vec_vupklsh */
10211
10212
static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
10213
#ifdef __LITTLE_ENDIAN__
10214
return __builtin_altivec_vupkhsh(__a);
10215
#else
10216
return __builtin_altivec_vupklsh(__a);
10217
#endif
10218
}
10219
10220
static __inline__ vector bool int __ATTRS_o_ai
10221
vec_vupklsh(vector bool short __a) {
10222
#ifdef __LITTLE_ENDIAN__
10223
return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10224
#else
10225
return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10226
#endif
10227
}
10228
10229
static __inline__ vector unsigned int __ATTRS_o_ai
10230
vec_vupklsh(vector pixel __a) {
10231
#ifdef __LITTLE_ENDIAN__
10232
return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10233
#else
10234
return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10235
#endif
10236
}
10237
10238
/* vec_vupklsw */
10239
10240
#ifdef __POWER8_VECTOR__
10241
static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
10242
#ifdef __LITTLE_ENDIAN__
10243
return __builtin_altivec_vupkhsw(__a);
10244
#else
10245
return __builtin_altivec_vupklsw(__a);
10246
#endif
10247
}
10248
10249
static __inline__ vector bool long long __ATTRS_o_ai
10250
vec_vupklsw(vector bool int __a) {
10251
#ifdef __LITTLE_ENDIAN__
10252
return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10253
#else
10254
return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10255
#endif
10256
}
10257
#endif
10258
10259
/* vec_vsx_ld */
10260
10261
#ifdef __VSX__
10262
10263
static __inline__ vector bool int __ATTRS_o_ai
10264
vec_vsx_ld(int __a, const vector bool int *__b) {
10265
return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
10266
}
10267
10268
static __inline__ vector signed int __ATTRS_o_ai
10269
vec_vsx_ld(int __a, const vector signed int *__b) {
10270
return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
10271
}
10272
10273
static __inline__ vector signed int __ATTRS_o_ai
10274
vec_vsx_ld(int __a, const signed int *__b) {
10275
return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
10276
}
10277
10278
static __inline__ vector unsigned int __ATTRS_o_ai
10279
vec_vsx_ld(int __a, const vector unsigned int *__b) {
10280
return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
10281
}
10282
10283
static __inline__ vector unsigned int __ATTRS_o_ai
10284
vec_vsx_ld(int __a, const unsigned int *__b) {
10285
return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
10286
}
10287
10288
static __inline__ vector float __ATTRS_o_ai
10289
vec_vsx_ld(int __a, const vector float *__b) {
10290
return (vector float)__builtin_vsx_lxvw4x(__a, __b);
10291
}
10292
10293
static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
10294
const float *__b) {
10295
return (vector float)__builtin_vsx_lxvw4x(__a, __b);
10296
}
10297
10298
static __inline__ vector signed long long __ATTRS_o_ai
10299
vec_vsx_ld(int __a, const vector signed long long *__b) {
10300
return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
10301
}
10302
10303
static __inline__ vector unsigned long long __ATTRS_o_ai
10304
vec_vsx_ld(int __a, const vector unsigned long long *__b) {
10305
return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
10306
}
10307
10308
static __inline__ vector double __ATTRS_o_ai
10309
vec_vsx_ld(int __a, const vector double *__b) {
10310
return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10311
}
10312
10313
static __inline__ vector double __ATTRS_o_ai
10314
vec_vsx_ld(int __a, const double *__b) {
10315
return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10316
}
10317
10318
static __inline__ vector bool short __ATTRS_o_ai
10319
vec_vsx_ld(int __a, const vector bool short *__b) {
10320
return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
10321
}
10322
10323
static __inline__ vector signed short __ATTRS_o_ai
10324
vec_vsx_ld(int __a, const vector signed short *__b) {
10325
return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
10326
}
10327
10328
static __inline__ vector signed short __ATTRS_o_ai
10329
vec_vsx_ld(int __a, const signed short *__b) {
10330
return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
10331
}
10332
10333
static __inline__ vector unsigned short __ATTRS_o_ai
10334
vec_vsx_ld(int __a, const vector unsigned short *__b) {
10335
return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
10336
}
10337
10338
static __inline__ vector unsigned short __ATTRS_o_ai
10339
vec_vsx_ld(int __a, const unsigned short *__b) {
10340
return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
10341
}
10342
10343
static __inline__ vector bool char __ATTRS_o_ai
10344
vec_vsx_ld(int __a, const vector bool char *__b) {
10345
return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
10346
}
10347
10348
static __inline__ vector signed char __ATTRS_o_ai
10349
vec_vsx_ld(int __a, const vector signed char *__b) {
10350
return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
10351
}
10352
10353
static __inline__ vector signed char __ATTRS_o_ai
10354
vec_vsx_ld(int __a, const signed char *__b) {
10355
return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
10356
}
10357
10358
static __inline__ vector unsigned char __ATTRS_o_ai
10359
vec_vsx_ld(int __a, const vector unsigned char *__b) {
10360
return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
10361
}
10362
10363
static __inline__ vector unsigned char __ATTRS_o_ai
10364
vec_vsx_ld(int __a, const unsigned char *__b) {
10365
return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
10366
}
10367
10368
#endif
10369
10370
/* vec_vsx_st */
10371
10372
#ifdef __VSX__
10373
10374
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10375
vector bool int *__c) {
10376
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10377
}
10378
10379
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10380
signed int *__c) {
10381
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10382
}
10383
10384
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10385
unsigned int *__c) {
10386
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10387
}
10388
10389
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10390
vector signed int *__c) {
10391
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10392
}
10393
10394
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10395
signed int *__c) {
10396
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10397
}
10398
10399
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10400
vector unsigned int *__c) {
10401
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10402
}
10403
10404
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10405
unsigned int *__c) {
10406
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10407
}
10408
10409
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10410
vector float *__c) {
10411
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10412
}
10413
10414
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10415
float *__c) {
10416
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10417
}
10418
10419
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
10420
int __b,
10421
vector signed long long *__c) {
10422
__builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10423
}
10424
10425
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
10426
int __b,
10427
vector unsigned long long *__c) {
10428
__builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10429
}
10430
10431
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10432
vector double *__c) {
10433
__builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10434
}
10435
10436
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10437
double *__c) {
10438
__builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10439
}
10440
10441
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10442
vector bool short *__c) {
10443
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10444
}
10445
10446
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10447
signed short *__c) {
10448
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10449
}
10450
10451
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10452
unsigned short *__c) {
10453
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10454
}
10455
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
10456
vector signed short *__c) {
10457
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10458
}
10459
10460
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
10461
signed short *__c) {
10462
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10463
}
10464
10465
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
10466
int __b,
10467
vector unsigned short *__c) {
10468
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10469
}
10470
10471
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
10472
int __b, unsigned short *__c) {
10473
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10474
}
10475
10476
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10477
vector bool char *__c) {
10478
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10479
}
10480
10481
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10482
signed char *__c) {
10483
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10484
}
10485
10486
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10487
unsigned char *__c) {
10488
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10489
}
10490
10491
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
10492
vector signed char *__c) {
10493
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10494
}
10495
10496
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
10497
signed char *__c) {
10498
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10499
}
10500
10501
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
10502
int __b,
10503
vector unsigned char *__c) {
10504
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10505
}
10506
10507
static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
10508
int __b, unsigned char *__c) {
10509
__builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10510
}
10511
10512
#endif
10513
10514
/* vec_xor */
10515
10516
#define __builtin_altivec_vxor vec_xor
10517
10518
static __inline__ vector signed char __ATTRS_o_ai
10519
vec_xor(vector signed char __a, vector signed char __b) {
10520
return __a ^ __b;
10521
}
10522
10523
static __inline__ vector signed char __ATTRS_o_ai
10524
vec_xor(vector bool char __a, vector signed char __b) {
10525
return (vector signed char)__a ^ __b;
10526
}
10527
10528
static __inline__ vector signed char __ATTRS_o_ai
10529
vec_xor(vector signed char __a, vector bool char __b) {
10530
return __a ^ (vector signed char)__b;
10531
}
10532
10533
static __inline__ vector unsigned char __ATTRS_o_ai
10534
vec_xor(vector unsigned char __a, vector unsigned char __b) {
10535
return __a ^ __b;
10536
}
10537
10538
static __inline__ vector unsigned char __ATTRS_o_ai
10539
vec_xor(vector bool char __a, vector unsigned char __b) {
10540
return (vector unsigned char)__a ^ __b;
10541
}
10542
10543
static __inline__ vector unsigned char __ATTRS_o_ai
10544
vec_xor(vector unsigned char __a, vector bool char __b) {
10545
return __a ^ (vector unsigned char)__b;
10546
}
10547
10548
static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
10549
vector bool char __b) {
10550
return __a ^ __b;
10551
}
10552
10553
static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
10554
vector short __b) {
10555
return __a ^ __b;
10556
}
10557
10558
static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
10559
vector short __b) {
10560
return (vector short)__a ^ __b;
10561
}
10562
10563
static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
10564
vector bool short __b) {
10565
return __a ^ (vector short)__b;
10566
}
10567
10568
static __inline__ vector unsigned short __ATTRS_o_ai
10569
vec_xor(vector unsigned short __a, vector unsigned short __b) {
10570
return __a ^ __b;
10571
}
10572
10573
static __inline__ vector unsigned short __ATTRS_o_ai
10574
vec_xor(vector bool short __a, vector unsigned short __b) {
10575
return (vector unsigned short)__a ^ __b;
10576
}
10577
10578
static __inline__ vector unsigned short __ATTRS_o_ai
10579
vec_xor(vector unsigned short __a, vector bool short __b) {
10580
return __a ^ (vector unsigned short)__b;
10581
}
10582
10583
static __inline__ vector bool short __ATTRS_o_ai
10584
vec_xor(vector bool short __a, vector bool short __b) {
10585
return __a ^ __b;
10586
}
10587
10588
static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
10589
vector int __b) {
10590
return __a ^ __b;
10591
}
10592
10593
static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
10594
vector int __b) {
10595
return (vector int)__a ^ __b;
10596
}
10597
10598
static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
10599
vector bool int __b) {
10600
return __a ^ (vector int)__b;
10601
}
10602
10603
static __inline__ vector unsigned int __ATTRS_o_ai
10604
vec_xor(vector unsigned int __a, vector unsigned int __b) {
10605
return __a ^ __b;
10606
}
10607
10608
static __inline__ vector unsigned int __ATTRS_o_ai
10609
vec_xor(vector bool int __a, vector unsigned int __b) {
10610
return (vector unsigned int)__a ^ __b;
10611
}
10612
10613
static __inline__ vector unsigned int __ATTRS_o_ai
10614
vec_xor(vector unsigned int __a, vector bool int __b) {
10615
return __a ^ (vector unsigned int)__b;
10616
}
10617
10618
static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
10619
vector bool int __b) {
10620
return __a ^ __b;
10621
}
10622
10623
static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
10624
vector float __b) {
10625
vector unsigned int __res =
10626
(vector unsigned int)__a ^ (vector unsigned int)__b;
10627
return (vector float)__res;
10628
}
10629
10630
static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
10631
vector float __b) {
10632
vector unsigned int __res =
10633
(vector unsigned int)__a ^ (vector unsigned int)__b;
10634
return (vector float)__res;
10635
}
10636
10637
static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
10638
vector bool int __b) {
10639
vector unsigned int __res =
10640
(vector unsigned int)__a ^ (vector unsigned int)__b;
10641
return (vector float)__res;
10642
}
10643
10644
#ifdef __VSX__
10645
static __inline__ vector signed long long __ATTRS_o_ai
10646
vec_xor(vector signed long long __a, vector signed long long __b) {
10647
return __a ^ __b;
10648
}
10649
10650
static __inline__ vector signed long long __ATTRS_o_ai
10651
vec_xor(vector bool long long __a, vector signed long long __b) {
10652
return (vector signed long long)__a ^ __b;
10653
}
10654
10655
static __inline__ vector signed long long __ATTRS_o_ai
10656
vec_xor(vector signed long long __a, vector bool long long __b) {
10657
return __a ^ (vector signed long long)__b;
10658
}
10659
10660
static __inline__ vector unsigned long long __ATTRS_o_ai
10661
vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
10662
return __a ^ __b;
10663
}
10664
10665
static __inline__ vector unsigned long long __ATTRS_o_ai
10666
vec_xor(vector bool long long __a, vector unsigned long long __b) {
10667
return (vector unsigned long long)__a ^ __b;
10668
}
10669
10670
static __inline__ vector unsigned long long __ATTRS_o_ai
10671
vec_xor(vector unsigned long long __a, vector bool long long __b) {
10672
return __a ^ (vector unsigned long long)__b;
10673
}
10674
10675
static __inline__ vector bool long long __ATTRS_o_ai
10676
vec_xor(vector bool long long __a, vector bool long long __b) {
10677
return __a ^ __b;
10678
}
10679
10680
static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
10681
vector double __b) {
10682
return (vector double)((vector unsigned long long)__a ^
10683
(vector unsigned long long)__b);
10684
}
10685
10686
static __inline__ vector double __ATTRS_o_ai
10687
vec_xor(vector double __a, vector bool long long __b) {
10688
return (vector double)((vector unsigned long long)__a ^
10689
(vector unsigned long long)__b);
10690
}
10691
10692
static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
10693
vector double __b) {
10694
return (vector double)((vector unsigned long long)__a ^
10695
(vector unsigned long long)__b);
10696
}
10697
#endif
10698
10699
/* vec_vxor */
10700
10701
static __inline__ vector signed char __ATTRS_o_ai
10702
vec_vxor(vector signed char __a, vector signed char __b) {
10703
return __a ^ __b;
10704
}
10705
10706
static __inline__ vector signed char __ATTRS_o_ai
10707
vec_vxor(vector bool char __a, vector signed char __b) {
10708
return (vector signed char)__a ^ __b;
10709
}
10710
10711
static __inline__ vector signed char __ATTRS_o_ai
10712
vec_vxor(vector signed char __a, vector bool char __b) {
10713
return __a ^ (vector signed char)__b;
10714
}
10715
10716
static __inline__ vector unsigned char __ATTRS_o_ai
10717
vec_vxor(vector unsigned char __a, vector unsigned char __b) {
10718
return __a ^ __b;
10719
}
10720
10721
static __inline__ vector unsigned char __ATTRS_o_ai
10722
vec_vxor(vector bool char __a, vector unsigned char __b) {
10723
return (vector unsigned char)__a ^ __b;
10724
}
10725
10726
static __inline__ vector unsigned char __ATTRS_o_ai
10727
vec_vxor(vector unsigned char __a, vector bool char __b) {
10728
return __a ^ (vector unsigned char)__b;
10729
}
10730
10731
static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
10732
vector bool char __b) {
10733
return __a ^ __b;
10734
}
10735
10736
static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
10737
vector short __b) {
10738
return __a ^ __b;
10739
}
10740
10741
static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
10742
vector short __b) {
10743
return (vector short)__a ^ __b;
10744
}
10745
10746
static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
10747
vector bool short __b) {
10748
return __a ^ (vector short)__b;
10749
}
10750
10751
static __inline__ vector unsigned short __ATTRS_o_ai
10752
vec_vxor(vector unsigned short __a, vector unsigned short __b) {
10753
return __a ^ __b;
10754
}
10755
10756
static __inline__ vector unsigned short __ATTRS_o_ai
10757
vec_vxor(vector bool short __a, vector unsigned short __b) {
10758
return (vector unsigned short)__a ^ __b;
10759
}
10760
10761
static __inline__ vector unsigned short __ATTRS_o_ai
10762
vec_vxor(vector unsigned short __a, vector bool short __b) {
10763
return __a ^ (vector unsigned short)__b;
10764
}
10765
10766
static __inline__ vector bool short __ATTRS_o_ai
10767
vec_vxor(vector bool short __a, vector bool short __b) {
10768
return __a ^ __b;
10769
}
10770
10771
static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
10772
vector int __b) {
10773
return __a ^ __b;
10774
}
10775
10776
static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
10777
vector int __b) {
10778
return (vector int)__a ^ __b;
10779
}
10780
10781
static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
10782
vector bool int __b) {
10783
return __a ^ (vector int)__b;
10784
}
10785
10786
static __inline__ vector unsigned int __ATTRS_o_ai
10787
vec_vxor(vector unsigned int __a, vector unsigned int __b) {
10788
return __a ^ __b;
10789
}
10790
10791
static __inline__ vector unsigned int __ATTRS_o_ai
10792
vec_vxor(vector bool int __a, vector unsigned int __b) {
10793
return (vector unsigned int)__a ^ __b;
10794
}
10795
10796
static __inline__ vector unsigned int __ATTRS_o_ai
10797
vec_vxor(vector unsigned int __a, vector bool int __b) {
10798
return __a ^ (vector unsigned int)__b;
10799
}
10800
10801
static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
10802
vector bool int __b) {
10803
return __a ^ __b;
10804
}
10805
10806
static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
10807
vector float __b) {
10808
vector unsigned int __res =
10809
(vector unsigned int)__a ^ (vector unsigned int)__b;
10810
return (vector float)__res;
10811
}
10812
10813
static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
10814
vector float __b) {
10815
vector unsigned int __res =
10816
(vector unsigned int)__a ^ (vector unsigned int)__b;
10817
return (vector float)__res;
10818
}
10819
10820
static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
10821
vector bool int __b) {
10822
vector unsigned int __res =
10823
(vector unsigned int)__a ^ (vector unsigned int)__b;
10824
return (vector float)__res;
10825
}
10826
10827
#ifdef __VSX__
10828
static __inline__ vector signed long long __ATTRS_o_ai
10829
vec_vxor(vector signed long long __a, vector signed long long __b) {
10830
return __a ^ __b;
10831
}
10832
10833
static __inline__ vector signed long long __ATTRS_o_ai
10834
vec_vxor(vector bool long long __a, vector signed long long __b) {
10835
return (vector signed long long)__a ^ __b;
10836
}
10837
10838
static __inline__ vector signed long long __ATTRS_o_ai
10839
vec_vxor(vector signed long long __a, vector bool long long __b) {
10840
return __a ^ (vector signed long long)__b;
10841
}
10842
10843
static __inline__ vector unsigned long long __ATTRS_o_ai
10844
vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
10845
return __a ^ __b;
10846
}
10847
10848
static __inline__ vector unsigned long long __ATTRS_o_ai
10849
vec_vxor(vector bool long long __a, vector unsigned long long __b) {
10850
return (vector unsigned long long)__a ^ __b;
10851
}
10852
10853
static __inline__ vector unsigned long long __ATTRS_o_ai
10854
vec_vxor(vector unsigned long long __a, vector bool long long __b) {
10855
return __a ^ (vector unsigned long long)__b;
10856
}
10857
10858
static __inline__ vector bool long long __ATTRS_o_ai
10859
vec_vxor(vector bool long long __a, vector bool long long __b) {
10860
return __a ^ __b;
10861
}
10862
#endif
10863
10864
/* ------------------------ extensions for CBEA ----------------------------- */
10865
10866
/* vec_extract */
10867
10868
static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
10869
int __b) {
10870
return __a[__b];
10871
}
10872
10873
static __inline__ unsigned char __ATTRS_o_ai
10874
vec_extract(vector unsigned char __a, int __b) {
10875
return __a[__b];
10876
}
10877
10878
static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
10879
int __b) {
10880
return __a[__b];
10881
}
10882
10883
static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
10884
int __b) {
10885
return __a[__b];
10886
}
10887
10888
static __inline__ unsigned short __ATTRS_o_ai
10889
vec_extract(vector unsigned short __a, int __b) {
10890
return __a[__b];
10891
}
10892
10893
static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
10894
int __b) {
10895
return __a[__b];
10896
}
10897
10898
static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
10899
int __b) {
10900
return __a[__b];
10901
}
10902
10903
static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
10904
int __b) {
10905
return __a[__b];
10906
}
10907
10908
static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
10909
int __b) {
10910
return __a[__b];
10911
}
10912
10913
#ifdef __VSX__
10914
static __inline__ signed long long __ATTRS_o_ai
10915
vec_extract(vector signed long long __a, int __b) {
10916
return __a[__b];
10917
}
10918
10919
static __inline__ unsigned long long __ATTRS_o_ai
10920
vec_extract(vector unsigned long long __a, int __b) {
10921
return __a[__b];
10922
}
10923
10924
static __inline__ unsigned long long __ATTRS_o_ai
10925
vec_extract(vector bool long long __a, int __b) {
10926
return __a[__b];
10927
}
10928
10929
static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
10930
return __a[__b];
10931
}
10932
#endif
10933
10934
static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
10935
return __a[__b];
10936
}
10937
10938
/* vec_insert */
10939
10940
static __inline__ vector signed char __ATTRS_o_ai
10941
vec_insert(signed char __a, vector signed char __b, int __c) {
10942
__b[__c] = __a;
10943
return __b;
10944
}
10945
10946
static __inline__ vector unsigned char __ATTRS_o_ai
10947
vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
10948
__b[__c] = __a;
10949
return __b;
10950
}
10951
10952
static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
10953
vector bool char __b,
10954
int __c) {
10955
__b[__c] = __a;
10956
return __b;
10957
}
10958
10959
static __inline__ vector signed short __ATTRS_o_ai
10960
vec_insert(signed short __a, vector signed short __b, int __c) {
10961
__b[__c] = __a;
10962
return __b;
10963
}
10964
10965
static __inline__ vector unsigned short __ATTRS_o_ai
10966
vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
10967
__b[__c] = __a;
10968
return __b;
10969
}
10970
10971
static __inline__ vector bool short __ATTRS_o_ai
10972
vec_insert(unsigned short __a, vector bool short __b, int __c) {
10973
__b[__c] = __a;
10974
return __b;
10975
}
10976
10977
static __inline__ vector signed int __ATTRS_o_ai
10978
vec_insert(signed int __a, vector signed int __b, int __c) {
10979
__b[__c] = __a;
10980
return __b;
10981
}
10982
10983
static __inline__ vector unsigned int __ATTRS_o_ai
10984
vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
10985
__b[__c] = __a;
10986
return __b;
10987
}
10988
10989
static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
10990
vector bool int __b,
10991
int __c) {
10992
__b[__c] = __a;
10993
return __b;
10994
}
10995
10996
#ifdef __VSX__
10997
static __inline__ vector signed long long __ATTRS_o_ai
10998
vec_insert(signed long long __a, vector signed long long __b, int __c) {
10999
__b[__c] = __a;
11000
return __b;
11001
}
11002
11003
static __inline__ vector unsigned long long __ATTRS_o_ai
11004
vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
11005
__b[__c] = __a;
11006
return __b;
11007
}
11008
11009
static __inline__ vector bool long long __ATTRS_o_ai
11010
vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
11011
__b[__c] = __a;
11012
return __b;
11013
}
11014
static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
11015
vector double __b,
11016
int __c) {
11017
__b[__c] = __a;
11018
return __b;
11019
}
11020
#endif
11021
11022
static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
11023
vector float __b,
11024
int __c) {
11025
__b[__c] = __a;
11026
return __b;
11027
}
11028
11029
/* vec_lvlx */
11030
11031
static __inline__ vector signed char __ATTRS_o_ai
11032
vec_lvlx(int __a, const signed char *__b) {
11033
return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
11034
vec_lvsl(__a, __b));
11035
}
11036
11037
static __inline__ vector signed char __ATTRS_o_ai
11038
vec_lvlx(int __a, const vector signed char *__b) {
11039
return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
11040
vec_lvsl(__a, (unsigned char *)__b));
11041
}
11042
11043
static __inline__ vector unsigned char __ATTRS_o_ai
11044
vec_lvlx(int __a, const unsigned char *__b) {
11045
return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
11046
vec_lvsl(__a, __b));
11047
}
11048
11049
static __inline__ vector unsigned char __ATTRS_o_ai
11050
vec_lvlx(int __a, const vector unsigned char *__b) {
11051
return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
11052
vec_lvsl(__a, (unsigned char *)__b));
11053
}
11054
11055
static __inline__ vector bool char __ATTRS_o_ai
11056
vec_lvlx(int __a, const vector bool char *__b) {
11057
return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
11058
vec_lvsl(__a, (unsigned char *)__b));
11059
}
11060
11061
static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
11062
const short *__b) {
11063
return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
11064
}
11065
11066
static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
11067
const vector short *__b) {
11068
return vec_perm(vec_ld(__a, __b), (vector short)(0),
11069
vec_lvsl(__a, (unsigned char *)__b));
11070
}
11071
11072
static __inline__ vector unsigned short __ATTRS_o_ai
11073
vec_lvlx(int __a, const unsigned short *__b) {
11074
return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
11075
vec_lvsl(__a, __b));
11076
}
11077
11078
static __inline__ vector unsigned short __ATTRS_o_ai
11079
vec_lvlx(int __a, const vector unsigned short *__b) {
11080
return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
11081
vec_lvsl(__a, (unsigned char *)__b));
11082
}
11083
11084
static __inline__ vector bool short __ATTRS_o_ai
11085
vec_lvlx(int __a, const vector bool short *__b) {
11086
return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
11087
vec_lvsl(__a, (unsigned char *)__b));
11088
}
11089
11090
static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
11091
const vector pixel *__b) {
11092
return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
11093
vec_lvsl(__a, (unsigned char *)__b));
11094
}
11095
11096
static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
11097
return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
11098
}
11099
11100
static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
11101
const vector int *__b) {
11102
return vec_perm(vec_ld(__a, __b), (vector int)(0),
11103
vec_lvsl(__a, (unsigned char *)__b));
11104
}
11105
11106
static __inline__ vector unsigned int __ATTRS_o_ai
11107
vec_lvlx(int __a, const unsigned int *__b) {
11108
return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
11109
vec_lvsl(__a, __b));
11110
}
11111
11112
static __inline__ vector unsigned int __ATTRS_o_ai
11113
vec_lvlx(int __a, const vector unsigned int *__b) {
11114
return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
11115
vec_lvsl(__a, (unsigned char *)__b));
11116
}
11117
11118
static __inline__ vector bool int __ATTRS_o_ai
11119
vec_lvlx(int __a, const vector bool int *__b) {
11120
return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
11121
vec_lvsl(__a, (unsigned char *)__b));
11122
}
11123
11124
static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
11125
const float *__b) {
11126
return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
11127
}
11128
11129
static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
11130
const vector float *__b) {
11131
return vec_perm(vec_ld(__a, __b), (vector float)(0),
11132
vec_lvsl(__a, (unsigned char *)__b));
11133
}
11134
11135
/* vec_lvlxl */
11136
11137
static __inline__ vector signed char __ATTRS_o_ai
11138
vec_lvlxl(int __a, const signed char *__b) {
11139
return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
11140
vec_lvsl(__a, __b));
11141
}
11142
11143
static __inline__ vector signed char __ATTRS_o_ai
11144
vec_lvlxl(int __a, const vector signed char *__b) {
11145
return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
11146
vec_lvsl(__a, (unsigned char *)__b));
11147
}
11148
11149
static __inline__ vector unsigned char __ATTRS_o_ai
11150
vec_lvlxl(int __a, const unsigned char *__b) {
11151
return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
11152
vec_lvsl(__a, __b));
11153
}
11154
11155
static __inline__ vector unsigned char __ATTRS_o_ai
11156
vec_lvlxl(int __a, const vector unsigned char *__b) {
11157
return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
11158
vec_lvsl(__a, (unsigned char *)__b));
11159
}
11160
11161
static __inline__ vector bool char __ATTRS_o_ai
11162
vec_lvlxl(int __a, const vector bool char *__b) {
11163
return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
11164
vec_lvsl(__a, (unsigned char *)__b));
11165
}
11166
11167
static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
11168
const short *__b) {
11169
return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
11170
}
11171
11172
static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
11173
const vector short *__b) {
11174
return vec_perm(vec_ldl(__a, __b), (vector short)(0),
11175
vec_lvsl(__a, (unsigned char *)__b));
11176
}
11177
11178
static __inline__ vector unsigned short __ATTRS_o_ai
11179
vec_lvlxl(int __a, const unsigned short *__b) {
11180
return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
11181
vec_lvsl(__a, __b));
11182
}
11183
11184
static __inline__ vector unsigned short __ATTRS_o_ai
11185
vec_lvlxl(int __a, const vector unsigned short *__b) {
11186
return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
11187
vec_lvsl(__a, (unsigned char *)__b));
11188
}
11189
11190
static __inline__ vector bool short __ATTRS_o_ai
11191
vec_lvlxl(int __a, const vector bool short *__b) {
11192
return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
11193
vec_lvsl(__a, (unsigned char *)__b));
11194
}
11195
11196
static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
11197
const vector pixel *__b) {
11198
return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
11199
vec_lvsl(__a, (unsigned char *)__b));
11200
}
11201
11202
static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
11203
return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
11204
}
11205
11206
static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
11207
const vector int *__b) {
11208
return vec_perm(vec_ldl(__a, __b), (vector int)(0),
11209
vec_lvsl(__a, (unsigned char *)__b));
11210
}
11211
11212
static __inline__ vector unsigned int __ATTRS_o_ai
11213
vec_lvlxl(int __a, const unsigned int *__b) {
11214
return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
11215
vec_lvsl(__a, __b));
11216
}
11217
11218
static __inline__ vector unsigned int __ATTRS_o_ai
11219
vec_lvlxl(int __a, const vector unsigned int *__b) {
11220
return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
11221
vec_lvsl(__a, (unsigned char *)__b));
11222
}
11223
11224
static __inline__ vector bool int __ATTRS_o_ai
11225
vec_lvlxl(int __a, const vector bool int *__b) {
11226
return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
11227
vec_lvsl(__a, (unsigned char *)__b));
11228
}
11229
11230
static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
11231
const float *__b) {
11232
return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
11233
}
11234
11235
static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
11236
vector float *__b) {
11237
return vec_perm(vec_ldl(__a, __b), (vector float)(0),
11238
vec_lvsl(__a, (unsigned char *)__b));
11239
}
11240
11241
/* vec_lvrx */
11242
11243
static __inline__ vector signed char __ATTRS_o_ai
11244
vec_lvrx(int __a, const signed char *__b) {
11245
return vec_perm((vector signed char)(0), vec_ld(__a, __b),
11246
vec_lvsl(__a, __b));
11247
}
11248
11249
static __inline__ vector signed char __ATTRS_o_ai
11250
vec_lvrx(int __a, const vector signed char *__b) {
11251
return vec_perm((vector signed char)(0), vec_ld(__a, __b),
11252
vec_lvsl(__a, (unsigned char *)__b));
11253
}
11254
11255
static __inline__ vector unsigned char __ATTRS_o_ai
11256
vec_lvrx(int __a, const unsigned char *__b) {
11257
return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
11258
vec_lvsl(__a, __b));
11259
}
11260
11261
static __inline__ vector unsigned char __ATTRS_o_ai
11262
vec_lvrx(int __a, const vector unsigned char *__b) {
11263
return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
11264
vec_lvsl(__a, (unsigned char *)__b));
11265
}
11266
11267
static __inline__ vector bool char __ATTRS_o_ai
11268
vec_lvrx(int __a, const vector bool char *__b) {
11269
return vec_perm((vector bool char)(0), vec_ld(__a, __b),
11270
vec_lvsl(__a, (unsigned char *)__b));
11271
}
11272
11273
static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
11274
const short *__b) {
11275
return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11276
}
11277
11278
static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
11279
const vector short *__b) {
11280
return vec_perm((vector short)(0), vec_ld(__a, __b),
11281
vec_lvsl(__a, (unsigned char *)__b));
11282
}
11283
11284
static __inline__ vector unsigned short __ATTRS_o_ai
11285
vec_lvrx(int __a, const unsigned short *__b) {
11286
return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
11287
vec_lvsl(__a, __b));
11288
}
11289
11290
static __inline__ vector unsigned short __ATTRS_o_ai
11291
vec_lvrx(int __a, const vector unsigned short *__b) {
11292
return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
11293
vec_lvsl(__a, (unsigned char *)__b));
11294
}
11295
11296
static __inline__ vector bool short __ATTRS_o_ai
11297
vec_lvrx(int __a, const vector bool short *__b) {
11298
return vec_perm((vector bool short)(0), vec_ld(__a, __b),
11299
vec_lvsl(__a, (unsigned char *)__b));
11300
}
11301
11302
static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
11303
const vector pixel *__b) {
11304
return vec_perm((vector pixel)(0), vec_ld(__a, __b),
11305
vec_lvsl(__a, (unsigned char *)__b));
11306
}
11307
11308
static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
11309
return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11310
}
11311
11312
static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
11313
const vector int *__b) {
11314
return vec_perm((vector int)(0), vec_ld(__a, __b),
11315
vec_lvsl(__a, (unsigned char *)__b));
11316
}
11317
11318
static __inline__ vector unsigned int __ATTRS_o_ai
11319
vec_lvrx(int __a, const unsigned int *__b) {
11320
return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
11321
vec_lvsl(__a, __b));
11322
}
11323
11324
static __inline__ vector unsigned int __ATTRS_o_ai
11325
vec_lvrx(int __a, const vector unsigned int *__b) {
11326
return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
11327
vec_lvsl(__a, (unsigned char *)__b));
11328
}
11329
11330
static __inline__ vector bool int __ATTRS_o_ai
11331
vec_lvrx(int __a, const vector bool int *__b) {
11332
return vec_perm((vector bool int)(0), vec_ld(__a, __b),
11333
vec_lvsl(__a, (unsigned char *)__b));
11334
}
11335
11336
static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
11337
const float *__b) {
11338
return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11339
}
11340
11341
static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
11342
const vector float *__b) {
11343
return vec_perm((vector float)(0), vec_ld(__a, __b),
11344
vec_lvsl(__a, (unsigned char *)__b));
11345
}
11346
11347
/* vec_lvrxl */
11348
11349
static __inline__ vector signed char __ATTRS_o_ai
11350
vec_lvrxl(int __a, const signed char *__b) {
11351
return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
11352
vec_lvsl(__a, __b));
11353
}
11354
11355
static __inline__ vector signed char __ATTRS_o_ai
11356
vec_lvrxl(int __a, const vector signed char *__b) {
11357
return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
11358
vec_lvsl(__a, (unsigned char *)__b));
11359
}
11360
11361
static __inline__ vector unsigned char __ATTRS_o_ai
11362
vec_lvrxl(int __a, const unsigned char *__b) {
11363
return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
11364
vec_lvsl(__a, __b));
11365
}
11366
11367
static __inline__ vector unsigned char __ATTRS_o_ai
11368
vec_lvrxl(int __a, const vector unsigned char *__b) {
11369
return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
11370
vec_lvsl(__a, (unsigned char *)__b));
11371
}
11372
11373
static __inline__ vector bool char __ATTRS_o_ai
11374
vec_lvrxl(int __a, const vector bool char *__b) {
11375
return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
11376
vec_lvsl(__a, (unsigned char *)__b));
11377
}
11378
11379
static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
11380
const short *__b) {
11381
return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11382
}
11383
11384
static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
11385
const vector short *__b) {
11386
return vec_perm((vector short)(0), vec_ldl(__a, __b),
11387
vec_lvsl(__a, (unsigned char *)__b));
11388
}
11389
11390
static __inline__ vector unsigned short __ATTRS_o_ai
11391
vec_lvrxl(int __a, const unsigned short *__b) {
11392
return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
11393
vec_lvsl(__a, __b));
11394
}
11395
11396
static __inline__ vector unsigned short __ATTRS_o_ai
11397
vec_lvrxl(int __a, const vector unsigned short *__b) {
11398
return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
11399
vec_lvsl(__a, (unsigned char *)__b));
11400
}
11401
11402
static __inline__ vector bool short __ATTRS_o_ai
11403
vec_lvrxl(int __a, const vector bool short *__b) {
11404
return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
11405
vec_lvsl(__a, (unsigned char *)__b));
11406
}
11407
11408
static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
11409
const vector pixel *__b) {
11410
return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
11411
vec_lvsl(__a, (unsigned char *)__b));
11412
}
11413
11414
static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
11415
return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11416
}
11417
11418
static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
11419
const vector int *__b) {
11420
return vec_perm((vector int)(0), vec_ldl(__a, __b),
11421
vec_lvsl(__a, (unsigned char *)__b));
11422
}
11423
11424
static __inline__ vector unsigned int __ATTRS_o_ai
11425
vec_lvrxl(int __a, const unsigned int *__b) {
11426
return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
11427
vec_lvsl(__a, __b));
11428
}
11429
11430
static __inline__ vector unsigned int __ATTRS_o_ai
11431
vec_lvrxl(int __a, const vector unsigned int *__b) {
11432
return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
11433
vec_lvsl(__a, (unsigned char *)__b));
11434
}
11435
11436
static __inline__ vector bool int __ATTRS_o_ai
11437
vec_lvrxl(int __a, const vector bool int *__b) {
11438
return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
11439
vec_lvsl(__a, (unsigned char *)__b));
11440
}
11441
11442
static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
11443
const float *__b) {
11444
return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11445
}
11446
11447
static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
11448
const vector float *__b) {
11449
return vec_perm((vector float)(0), vec_ldl(__a, __b),
11450
vec_lvsl(__a, (unsigned char *)__b));
11451
}
11452
11453
/* vec_stvlx */
11454
11455
static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
11456
signed char *__c) {
11457
return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11458
__c);
11459
}
11460
11461
static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
11462
vector signed char *__c) {
11463
return vec_st(
11464
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11465
__b, __c);
11466
}
11467
11468
static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
11469
unsigned char *__c) {
11470
return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11471
__c);
11472
}
11473
11474
static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
11475
vector unsigned char *__c) {
11476
return vec_st(
11477
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11478
__b, __c);
11479
}
11480
11481
static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
11482
vector bool char *__c) {
11483
return vec_st(
11484
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11485
__b, __c);
11486
}
11487
11488
static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
11489
short *__c) {
11490
return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11491
__c);
11492
}
11493
11494
static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
11495
vector short *__c) {
11496
return vec_st(
11497
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11498
__b, __c);
11499
}
11500
11501
static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
11502
int __b, unsigned short *__c) {
11503
return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11504
__c);
11505
}
11506
11507
static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
11508
int __b,
11509
vector unsigned short *__c) {
11510
return vec_st(
11511
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11512
__b, __c);
11513
}
11514
11515
static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
11516
vector bool short *__c) {
11517
return vec_st(
11518
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11519
__b, __c);
11520
}
11521
11522
static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
11523
vector pixel *__c) {
11524
return vec_st(
11525
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11526
__b, __c);
11527
}
11528
11529
static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
11530
int *__c) {
11531
return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11532
__c);
11533
}
11534
11535
static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
11536
vector int *__c) {
11537
return vec_st(
11538
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11539
__b, __c);
11540
}
11541
11542
static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
11543
unsigned int *__c) {
11544
return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11545
__c);
11546
}
11547
11548
static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
11549
vector unsigned int *__c) {
11550
return vec_st(
11551
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11552
__b, __c);
11553
}
11554
11555
static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
11556
vector bool int *__c) {
11557
return vec_st(
11558
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11559
__b, __c);
11560
}
11561
11562
static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
11563
vector float *__c) {
11564
return vec_st(
11565
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11566
__b, __c);
11567
}
11568
11569
/* vec_stvlxl */
11570
11571
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
11572
signed char *__c) {
11573
return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11574
__c);
11575
}
11576
11577
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
11578
vector signed char *__c) {
11579
return vec_stl(
11580
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11581
__b, __c);
11582
}
11583
11584
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
11585
int __b, unsigned char *__c) {
11586
return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11587
__c);
11588
}
11589
11590
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
11591
int __b,
11592
vector unsigned char *__c) {
11593
return vec_stl(
11594
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11595
__b, __c);
11596
}
11597
11598
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
11599
vector bool char *__c) {
11600
return vec_stl(
11601
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11602
__b, __c);
11603
}
11604
11605
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11606
short *__c) {
11607
return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11608
__c);
11609
}
11610
11611
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11612
vector short *__c) {
11613
return vec_stl(
11614
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11615
__b, __c);
11616
}
11617
11618
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
11619
int __b, unsigned short *__c) {
11620
return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11621
__c);
11622
}
11623
11624
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
11625
int __b,
11626
vector unsigned short *__c) {
11627
return vec_stl(
11628
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11629
__b, __c);
11630
}
11631
11632
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
11633
vector bool short *__c) {
11634
return vec_stl(
11635
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11636
__b, __c);
11637
}
11638
11639
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
11640
vector pixel *__c) {
11641
return vec_stl(
11642
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11643
__b, __c);
11644
}
11645
11646
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
11647
int *__c) {
11648
return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11649
__c);
11650
}
11651
11652
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
11653
vector int *__c) {
11654
return vec_stl(
11655
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11656
__b, __c);
11657
}
11658
11659
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11660
unsigned int *__c) {
11661
return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11662
__c);
11663
}
11664
11665
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11666
vector unsigned int *__c) {
11667
return vec_stl(
11668
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11669
__b, __c);
11670
}
11671
11672
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
11673
vector bool int *__c) {
11674
return vec_stl(
11675
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11676
__b, __c);
11677
}
11678
11679
static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
11680
vector float *__c) {
11681
return vec_stl(
11682
vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11683
__b, __c);
11684
}
11685
11686
/* vec_stvrx */
11687
11688
static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11689
signed char *__c) {
11690
return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11691
__c);
11692
}
11693
11694
static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11695
vector signed char *__c) {
11696
return vec_st(
11697
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11698
__b, __c);
11699
}
11700
11701
static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11702
unsigned char *__c) {
11703
return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11704
__c);
11705
}
11706
11707
static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11708
vector unsigned char *__c) {
11709
return vec_st(
11710
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11711
__b, __c);
11712
}
11713
11714
static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
11715
vector bool char *__c) {
11716
return vec_st(
11717
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11718
__b, __c);
11719
}
11720
11721
static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11722
short *__c) {
11723
return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11724
__c);
11725
}
11726
11727
static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11728
vector short *__c) {
11729
return vec_st(
11730
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11731
__b, __c);
11732
}
11733
11734
static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
11735
int __b, unsigned short *__c) {
11736
return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11737
__c);
11738
}
11739
11740
static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
11741
int __b,
11742
vector unsigned short *__c) {
11743
return vec_st(
11744
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11745
__b, __c);
11746
}
11747
11748
static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
11749
vector bool short *__c) {
11750
return vec_st(
11751
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11752
__b, __c);
11753
}
11754
11755
static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
11756
vector pixel *__c) {
11757
return vec_st(
11758
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11759
__b, __c);
11760
}
11761
11762
static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
11763
int *__c) {
11764
return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11765
__c);
11766
}
11767
11768
static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
11769
vector int *__c) {
11770
return vec_st(
11771
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11772
__b, __c);
11773
}
11774
11775
static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11776
unsigned int *__c) {
11777
return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11778
__c);
11779
}
11780
11781
static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11782
vector unsigned int *__c) {
11783
return vec_st(
11784
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11785
__b, __c);
11786
}
11787
11788
static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
11789
vector bool int *__c) {
11790
return vec_st(
11791
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11792
__b, __c);
11793
}
11794
11795
static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
11796
vector float *__c) {
11797
return vec_st(
11798
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11799
__b, __c);
11800
}
11801
11802
/* vec_stvrxl */
11803
11804
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11805
signed char *__c) {
11806
return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11807
__c);
11808
}
11809
11810
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11811
vector signed char *__c) {
11812
return vec_stl(
11813
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11814
__b, __c);
11815
}
11816
11817
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
11818
int __b, unsigned char *__c) {
11819
return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11820
__c);
11821
}
11822
11823
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
11824
int __b,
11825
vector unsigned char *__c) {
11826
return vec_stl(
11827
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11828
__b, __c);
11829
}
11830
11831
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
11832
vector bool char *__c) {
11833
return vec_stl(
11834
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11835
__b, __c);
11836
}
11837
11838
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11839
short *__c) {
11840
return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11841
__c);
11842
}
11843
11844
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11845
vector short *__c) {
11846
return vec_stl(
11847
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11848
__b, __c);
11849
}
11850
11851
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
11852
int __b, unsigned short *__c) {
11853
return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11854
__c);
11855
}
11856
11857
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
11858
int __b,
11859
vector unsigned short *__c) {
11860
return vec_stl(
11861
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11862
__b, __c);
11863
}
11864
11865
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
11866
vector bool short *__c) {
11867
return vec_stl(
11868
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11869
__b, __c);
11870
}
11871
11872
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
11873
vector pixel *__c) {
11874
return vec_stl(
11875
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11876
__b, __c);
11877
}
11878
11879
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
11880
int *__c) {
11881
return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11882
__c);
11883
}
11884
11885
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
11886
vector int *__c) {
11887
return vec_stl(
11888
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11889
__b, __c);
11890
}
11891
11892
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11893
unsigned int *__c) {
11894
return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11895
__c);
11896
}
11897
11898
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11899
vector unsigned int *__c) {
11900
return vec_stl(
11901
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11902
__b, __c);
11903
}
11904
11905
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
11906
vector bool int *__c) {
11907
return vec_stl(
11908
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11909
__b, __c);
11910
}
11911
11912
static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
11913
vector float *__c) {
11914
return vec_stl(
11915
vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11916
__b, __c);
11917
}
11918
11919
/* vec_promote */
11920
11921
static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
11922
int __b) {
11923
vector signed char __res = (vector signed char)(0);
11924
__res[__b] = __a;
11925
return __res;
11926
}
11927
11928
static __inline__ vector unsigned char __ATTRS_o_ai
11929
vec_promote(unsigned char __a, int __b) {
11930
vector unsigned char __res = (vector unsigned char)(0);
11931
__res[__b] = __a;
11932
return __res;
11933
}
11934
11935
static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
11936
vector short __res = (vector short)(0);
11937
__res[__b] = __a;
11938
return __res;
11939
}
11940
11941
static __inline__ vector unsigned short __ATTRS_o_ai
11942
vec_promote(unsigned short __a, int __b) {
11943
vector unsigned short __res = (vector unsigned short)(0);
11944
__res[__b] = __a;
11945
return __res;
11946
}
11947
11948
static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
11949
vector int __res = (vector int)(0);
11950
__res[__b] = __a;
11951
return __res;
11952
}
11953
11954
static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
11955
int __b) {
11956
vector unsigned int __res = (vector unsigned int)(0);
11957
__res[__b] = __a;
11958
return __res;
11959
}
11960
11961
static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
11962
vector float __res = (vector float)(0);
11963
__res[__b] = __a;
11964
return __res;
11965
}
11966
11967
/* vec_splats */
11968
11969
static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
11970
return (vector signed char)(__a);
11971
}
11972
11973
static __inline__ vector unsigned char __ATTRS_o_ai
11974
vec_splats(unsigned char __a) {
11975
return (vector unsigned char)(__a);
11976
}
11977
11978
static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
11979
return (vector short)(__a);
11980
}
11981
11982
static __inline__ vector unsigned short __ATTRS_o_ai
11983
vec_splats(unsigned short __a) {
11984
return (vector unsigned short)(__a);
11985
}
11986
11987
static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
11988
return (vector int)(__a);
11989
}
11990
11991
static __inline__ vector unsigned int __ATTRS_o_ai
11992
vec_splats(unsigned int __a) {
11993
return (vector unsigned int)(__a);
11994
}
11995
11996
#ifdef __VSX__
11997
static __inline__ vector signed long long __ATTRS_o_ai
11998
vec_splats(signed long long __a) {
11999
return (vector signed long long)(__a);
12000
}
12001
12002
static __inline__ vector unsigned long long __ATTRS_o_ai
12003
vec_splats(unsigned long long __a) {
12004
return (vector unsigned long long)(__a);
12005
}
12006
12007
#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
12008
static __inline__ vector signed __int128 __ATTRS_o_ai
12009
vec_splats(signed __int128 __a) {
12010
return (vector signed __int128)(__a);
12011
}
12012
12013
static __inline__ vector unsigned __int128 __ATTRS_o_ai
12014
vec_splats(unsigned __int128 __a) {
12015
return (vector unsigned __int128)(__a);
12016
}
12017
12018
#endif
12019
12020
static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
12021
return (vector double)(__a);
12022
}
12023
#endif
12024
12025
static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
12026
return (vector float)(__a);
12027
}
12028
12029
/* ----------------------------- predicates --------------------------------- */
12030
12031
/* vec_all_eq */
12032
12033
static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
12034
vector signed char __b) {
12035
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12036
(vector char)__b);
12037
}
12038
12039
static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
12040
vector bool char __b) {
12041
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12042
(vector char)__b);
12043
}
12044
12045
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
12046
vector unsigned char __b) {
12047
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12048
(vector char)__b);
12049
}
12050
12051
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
12052
vector bool char __b) {
12053
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12054
(vector char)__b);
12055
}
12056
12057
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12058
vector signed char __b) {
12059
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12060
(vector char)__b);
12061
}
12062
12063
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12064
vector unsigned char __b) {
12065
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12066
(vector char)__b);
12067
}
12068
12069
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12070
vector bool char __b) {
12071
return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12072
(vector char)__b);
12073
}
12074
12075
static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
12076
vector short __b) {
12077
return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
12078
}
12079
12080
static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
12081
vector bool short __b) {
12082
return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
12083
}
12084
12085
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
12086
vector unsigned short __b) {
12087
return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12088
(vector short)__b);
12089
}
12090
12091
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
12092
vector bool short __b) {
12093
return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12094
(vector short)__b);
12095
}
12096
12097
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12098
vector short __b) {
12099
return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12100
(vector short)__b);
12101
}
12102
12103
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12104
vector unsigned short __b) {
12105
return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12106
(vector short)__b);
12107
}
12108
12109
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12110
vector bool short __b) {
12111
return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12112
(vector short)__b);
12113
}
12114
12115
static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
12116
vector pixel __b) {
12117
return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12118
(vector short)__b);
12119
}
12120
12121
static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
12122
return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
12123
}
12124
12125
static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
12126
vector bool int __b) {
12127
return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
12128
}
12129
12130
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
12131
vector unsigned int __b) {
12132
return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12133
(vector int)__b);
12134
}
12135
12136
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
12137
vector bool int __b) {
12138
return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12139
(vector int)__b);
12140
}
12141
12142
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12143
vector int __b) {
12144
return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12145
(vector int)__b);
12146
}
12147
12148
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12149
vector unsigned int __b) {
12150
return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12151
(vector int)__b);
12152
}
12153
12154
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12155
vector bool int __b) {
12156
return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12157
(vector int)__b);
12158
}
12159
12160
#ifdef __POWER8_VECTOR__
12161
static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
12162
vector signed long long __b) {
12163
return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
12164
}
12165
12166
static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
12167
vector bool long long __b) {
12168
return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
12169
}
12170
12171
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
12172
vector unsigned long long __b) {
12173
return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12174
(vector long long)__b);
12175
}
12176
12177
static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
12178
vector bool long long __b) {
12179
return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12180
(vector long long)__b);
12181
}
12182
12183
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12184
vector long long __b) {
12185
return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12186
(vector long long)__b);
12187
}
12188
12189
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12190
vector unsigned long long __b) {
12191
return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12192
(vector long long)__b);
12193
}
12194
12195
static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12196
vector bool long long __b) {
12197
return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12198
(vector long long)__b);
12199
}
12200
#endif
12201
12202
static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
12203
vector float __b) {
12204
#ifdef __VSX__
12205
return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
12206
#else
12207
return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
12208
#endif
12209
}
12210
12211
#ifdef __VSX__
12212
static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
12213
vector double __b) {
12214
return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
12215
}
12216
#endif
12217
12218
/* vec_all_ge */
12219
12220
static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
12221
vector signed char __b) {
12222
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
12223
}
12224
12225
static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
12226
vector bool char __b) {
12227
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
12228
}
12229
12230
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
12231
vector unsigned char __b) {
12232
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
12233
}
12234
12235
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
12236
vector bool char __b) {
12237
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
12238
}
12239
12240
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12241
vector signed char __b) {
12242
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
12243
(vector unsigned char)__a);
12244
}
12245
12246
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12247
vector unsigned char __b) {
12248
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
12249
}
12250
12251
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12252
vector bool char __b) {
12253
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
12254
(vector unsigned char)__a);
12255
}
12256
12257
static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
12258
vector short __b) {
12259
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
12260
}
12261
12262
static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
12263
vector bool short __b) {
12264
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
12265
}
12266
12267
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
12268
vector unsigned short __b) {
12269
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
12270
}
12271
12272
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
12273
vector bool short __b) {
12274
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12275
__a);
12276
}
12277
12278
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12279
vector short __b) {
12280
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12281
(vector unsigned short)__a);
12282
}
12283
12284
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12285
vector unsigned short __b) {
12286
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
12287
(vector unsigned short)__a);
12288
}
12289
12290
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12291
vector bool short __b) {
12292
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12293
(vector unsigned short)__a);
12294
}
12295
12296
static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
12297
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
12298
}
12299
12300
static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
12301
vector bool int __b) {
12302
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
12303
}
12304
12305
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
12306
vector unsigned int __b) {
12307
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
12308
}
12309
12310
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
12311
vector bool int __b) {
12312
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
12313
}
12314
12315
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12316
vector int __b) {
12317
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
12318
(vector unsigned int)__a);
12319
}
12320
12321
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12322
vector unsigned int __b) {
12323
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
12324
}
12325
12326
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12327
vector bool int __b) {
12328
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
12329
(vector unsigned int)__a);
12330
}
12331
12332
#ifdef __POWER8_VECTOR__
12333
static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
12334
vector signed long long __b) {
12335
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
12336
}
12337
static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
12338
vector bool long long __b) {
12339
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
12340
__a);
12341
}
12342
12343
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
12344
vector unsigned long long __b) {
12345
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
12346
}
12347
12348
static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
12349
vector bool long long __b) {
12350
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12351
__a);
12352
}
12353
12354
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12355
vector signed long long __b) {
12356
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12357
(vector unsigned long long)__a);
12358
}
12359
12360
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12361
vector unsigned long long __b) {
12362
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
12363
(vector unsigned long long)__a);
12364
}
12365
12366
static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12367
vector bool long long __b) {
12368
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12369
(vector unsigned long long)__a);
12370
}
12371
#endif
12372
12373
static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
12374
vector float __b) {
12375
#ifdef __VSX__
12376
return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
12377
#else
12378
return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
12379
#endif
12380
}
12381
12382
#ifdef __VSX__
12383
static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
12384
vector double __b) {
12385
return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
12386
}
12387
#endif
12388
12389
/* vec_all_gt */
12390
12391
static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
12392
vector signed char __b) {
12393
return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
12394
}
12395
12396
static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
12397
vector bool char __b) {
12398
return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
12399
}
12400
12401
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
12402
vector unsigned char __b) {
12403
return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
12404
}
12405
12406
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
12407
vector bool char __b) {
12408
return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
12409
}
12410
12411
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12412
vector signed char __b) {
12413
return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
12414
(vector unsigned char)__b);
12415
}
12416
12417
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12418
vector unsigned char __b) {
12419
return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
12420
}
12421
12422
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12423
vector bool char __b) {
12424
return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
12425
(vector unsigned char)__b);
12426
}
12427
12428
static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
12429
vector short __b) {
12430
return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
12431
}
12432
12433
static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
12434
vector bool short __b) {
12435
return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
12436
}
12437
12438
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
12439
vector unsigned short __b) {
12440
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
12441
}
12442
12443
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
12444
vector bool short __b) {
12445
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
12446
(vector unsigned short)__b);
12447
}
12448
12449
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12450
vector short __b) {
12451
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12452
(vector unsigned short)__b);
12453
}
12454
12455
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12456
vector unsigned short __b) {
12457
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12458
__b);
12459
}
12460
12461
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12462
vector bool short __b) {
12463
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12464
(vector unsigned short)__b);
12465
}
12466
12467
static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
12468
return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
12469
}
12470
12471
static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
12472
vector bool int __b) {
12473
return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
12474
}
12475
12476
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
12477
vector unsigned int __b) {
12478
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
12479
}
12480
12481
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
12482
vector bool int __b) {
12483
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
12484
}
12485
12486
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12487
vector int __b) {
12488
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
12489
(vector unsigned int)__b);
12490
}
12491
12492
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12493
vector unsigned int __b) {
12494
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
12495
}
12496
12497
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12498
vector bool int __b) {
12499
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
12500
(vector unsigned int)__b);
12501
}
12502
12503
#ifdef __POWER8_VECTOR__
12504
static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
12505
vector signed long long __b) {
12506
return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
12507
}
12508
static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
12509
vector bool long long __b) {
12510
return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
12511
(vector signed long long)__b);
12512
}
12513
12514
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
12515
vector unsigned long long __b) {
12516
return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
12517
}
12518
12519
static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
12520
vector bool long long __b) {
12521
return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
12522
(vector unsigned long long)__b);
12523
}
12524
12525
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12526
vector signed long long __b) {
12527
return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12528
(vector unsigned long long)__b);
12529
}
12530
12531
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12532
vector unsigned long long __b) {
12533
return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12534
__b);
12535
}
12536
12537
static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12538
vector bool long long __b) {
12539
return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12540
(vector unsigned long long)__b);
12541
}
12542
#endif
12543
12544
static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
12545
vector float __b) {
12546
#ifdef __VSX__
12547
return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
12548
#else
12549
return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
12550
#endif
12551
}
12552
12553
#ifdef __VSX__
12554
static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
12555
vector double __b) {
12556
return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
12557
}
12558
#endif
12559
12560
/* vec_all_in */
12561
12562
static __inline__ int __attribute__((__always_inline__))
12563
vec_all_in(vector float __a, vector float __b) {
12564
return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
12565
}
12566
12567
/* vec_all_le */
12568
12569
static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
12570
vector signed char __b) {
12571
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
12572
}
12573
12574
static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
12575
vector bool char __b) {
12576
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
12577
}
12578
12579
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
12580
vector unsigned char __b) {
12581
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
12582
}
12583
12584
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
12585
vector bool char __b) {
12586
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
12587
}
12588
12589
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12590
vector signed char __b) {
12591
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
12592
(vector unsigned char)__b);
12593
}
12594
12595
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12596
vector unsigned char __b) {
12597
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
12598
}
12599
12600
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12601
vector bool char __b) {
12602
return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
12603
(vector unsigned char)__b);
12604
}
12605
12606
static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
12607
vector short __b) {
12608
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
12609
}
12610
12611
static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
12612
vector bool short __b) {
12613
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
12614
}
12615
12616
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
12617
vector unsigned short __b) {
12618
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
12619
}
12620
12621
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
12622
vector bool short __b) {
12623
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
12624
(vector unsigned short)__b);
12625
}
12626
12627
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12628
vector short __b) {
12629
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12630
(vector unsigned short)__b);
12631
}
12632
12633
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12634
vector unsigned short __b) {
12635
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12636
__b);
12637
}
12638
12639
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12640
vector bool short __b) {
12641
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12642
(vector unsigned short)__b);
12643
}
12644
12645
static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
12646
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
12647
}
12648
12649
static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
12650
vector bool int __b) {
12651
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
12652
}
12653
12654
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
12655
vector unsigned int __b) {
12656
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
12657
}
12658
12659
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
12660
vector bool int __b) {
12661
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
12662
}
12663
12664
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12665
vector int __b) {
12666
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
12667
(vector unsigned int)__b);
12668
}
12669
12670
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12671
vector unsigned int __b) {
12672
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
12673
}
12674
12675
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12676
vector bool int __b) {
12677
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
12678
(vector unsigned int)__b);
12679
}
12680
12681
#ifdef __POWER8_VECTOR__
12682
static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
12683
vector signed long long __b) {
12684
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
12685
}
12686
12687
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
12688
vector unsigned long long __b) {
12689
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
12690
}
12691
12692
static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
12693
vector bool long long __b) {
12694
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
12695
(vector signed long long)__b);
12696
}
12697
12698
static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
12699
vector bool long long __b) {
12700
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
12701
(vector unsigned long long)__b);
12702
}
12703
12704
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12705
vector signed long long __b) {
12706
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12707
(vector unsigned long long)__b);
12708
}
12709
12710
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12711
vector unsigned long long __b) {
12712
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12713
__b);
12714
}
12715
12716
static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12717
vector bool long long __b) {
12718
return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12719
(vector unsigned long long)__b);
12720
}
12721
#endif
12722
12723
static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
12724
vector float __b) {
12725
#ifdef __VSX__
12726
return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
12727
#else
12728
return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
12729
#endif
12730
}
12731
12732
#ifdef __VSX__
12733
static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
12734
vector double __b) {
12735
return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
12736
}
12737
#endif
12738
12739
/* vec_all_lt */
12740
12741
static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12742
vector signed char __b) {
12743
return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
12744
}
12745
12746
static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12747
vector bool char __b) {
12748
return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
12749
}
12750
12751
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12752
vector unsigned char __b) {
12753
return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
12754
}
12755
12756
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12757
vector bool char __b) {
12758
return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
12759
}
12760
12761
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12762
vector signed char __b) {
12763
return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12764
(vector unsigned char)__a);
12765
}
12766
12767
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12768
vector unsigned char __b) {
12769
return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
12770
}
12771
12772
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12773
vector bool char __b) {
12774
return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12775
(vector unsigned char)__a);
12776
}
12777
12778
static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
12779
vector short __b) {
12780
return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
12781
}
12782
12783
static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
12784
vector bool short __b) {
12785
return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
12786
}
12787
12788
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12789
vector unsigned short __b) {
12790
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
12791
}
12792
12793
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12794
vector bool short __b) {
12795
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12796
__a);
12797
}
12798
12799
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12800
vector short __b) {
12801
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12802
(vector unsigned short)__a);
12803
}
12804
12805
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12806
vector unsigned short __b) {
12807
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
12808
(vector unsigned short)__a);
12809
}
12810
12811
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12812
vector bool short __b) {
12813
return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12814
(vector unsigned short)__a);
12815
}
12816
12817
static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
12818
return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
12819
}
12820
12821
static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
12822
vector bool int __b) {
12823
return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
12824
}
12825
12826
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12827
vector unsigned int __b) {
12828
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
12829
}
12830
12831
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12832
vector bool int __b) {
12833
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
12834
}
12835
12836
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12837
vector int __b) {
12838
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12839
(vector unsigned int)__a);
12840
}
12841
12842
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12843
vector unsigned int __b) {
12844
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
12845
}
12846
12847
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12848
vector bool int __b) {
12849
return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12850
(vector unsigned int)__a);
12851
}
12852
12853
#ifdef __POWER8_VECTOR__
12854
static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12855
vector signed long long __b) {
12856
return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
12857
}
12858
12859
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12860
vector unsigned long long __b) {
12861
return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
12862
}
12863
12864
static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12865
vector bool long long __b) {
12866
return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
12867
__a);
12868
}
12869
12870
static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12871
vector bool long long __b) {
12872
return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12873
__a);
12874
}
12875
12876
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12877
vector signed long long __b) {
12878
return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12879
(vector unsigned long long)__a);
12880
}
12881
12882
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12883
vector unsigned long long __b) {
12884
return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
12885
(vector unsigned long long)__a);
12886
}
12887
12888
static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12889
vector bool long long __b) {
12890
return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12891
(vector unsigned long long)__a);
12892
}
12893
#endif
12894
12895
static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
12896
vector float __b) {
12897
#ifdef __VSX__
12898
return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
12899
#else
12900
return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
12901
#endif
12902
}
12903
12904
#ifdef __VSX__
12905
static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
12906
vector double __b) {
12907
return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
12908
}
12909
#endif
12910
12911
/* vec_all_nan */
12912
12913
static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
12914
#ifdef __VSX__
12915
return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
12916
#else
12917
return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
12918
#endif
12919
}
12920
12921
#ifdef __VSX__
12922
static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
12923
return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
12924
}
12925
#endif
12926
12927
/* vec_all_ne */
12928
12929
static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12930
vector signed char __b) {
12931
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12932
(vector char)__b);
12933
}
12934
12935
static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12936
vector bool char __b) {
12937
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12938
(vector char)__b);
12939
}
12940
12941
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12942
vector unsigned char __b) {
12943
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12944
(vector char)__b);
12945
}
12946
12947
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12948
vector bool char __b) {
12949
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12950
(vector char)__b);
12951
}
12952
12953
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12954
vector signed char __b) {
12955
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12956
(vector char)__b);
12957
}
12958
12959
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12960
vector unsigned char __b) {
12961
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12962
(vector char)__b);
12963
}
12964
12965
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12966
vector bool char __b) {
12967
return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12968
(vector char)__b);
12969
}
12970
12971
static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
12972
vector short __b) {
12973
return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
12974
}
12975
12976
static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
12977
vector bool short __b) {
12978
return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
12979
}
12980
12981
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12982
vector unsigned short __b) {
12983
return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12984
(vector short)__b);
12985
}
12986
12987
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12988
vector bool short __b) {
12989
return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12990
(vector short)__b);
12991
}
12992
12993
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
12994
vector short __b) {
12995
return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12996
(vector short)__b);
12997
}
12998
12999
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
13000
vector unsigned short __b) {
13001
return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13002
(vector short)__b);
13003
}
13004
13005
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
13006
vector bool short __b) {
13007
return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13008
(vector short)__b);
13009
}
13010
13011
static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
13012
vector pixel __b) {
13013
return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13014
(vector short)__b);
13015
}
13016
13017
static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
13018
return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
13019
}
13020
13021
static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
13022
vector bool int __b) {
13023
return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
13024
}
13025
13026
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
13027
vector unsigned int __b) {
13028
return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13029
(vector int)__b);
13030
}
13031
13032
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
13033
vector bool int __b) {
13034
return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13035
(vector int)__b);
13036
}
13037
13038
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13039
vector int __b) {
13040
return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13041
(vector int)__b);
13042
}
13043
13044
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13045
vector unsigned int __b) {
13046
return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13047
(vector int)__b);
13048
}
13049
13050
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13051
vector bool int __b) {
13052
return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13053
(vector int)__b);
13054
}
13055
13056
#ifdef __POWER8_VECTOR__
13057
static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
13058
vector signed long long __b) {
13059
return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
13060
}
13061
13062
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
13063
vector unsigned long long __b) {
13064
return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
13065
(vector long long)__b);
13066
}
13067
13068
static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
13069
vector bool long long __b) {
13070
return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
13071
(vector signed long long)__b);
13072
}
13073
13074
static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
13075
vector bool long long __b) {
13076
return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13077
(vector signed long long)__b);
13078
}
13079
13080
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13081
vector signed long long __b) {
13082
return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13083
(vector signed long long)__b);
13084
}
13085
13086
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13087
vector unsigned long long __b) {
13088
return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13089
(vector signed long long)__b);
13090
}
13091
13092
static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13093
vector bool long long __b) {
13094
return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13095
(vector signed long long)__b);
13096
}
13097
#endif
13098
13099
static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
13100
vector float __b) {
13101
#ifdef __VSX__
13102
return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
13103
#else
13104
return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
13105
#endif
13106
}
13107
13108
#ifdef __VSX__
13109
static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
13110
vector double __b) {
13111
return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
13112
}
13113
#endif
13114
13115
/* vec_all_nge */
13116
13117
static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
13118
vector float __b) {
13119
#ifdef __VSX__
13120
return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
13121
#else
13122
return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
13123
#endif
13124
}
13125
13126
#ifdef __VSX__
13127
static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
13128
vector double __b) {
13129
return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
13130
}
13131
#endif
13132
13133
/* vec_all_ngt */
13134
13135
static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
13136
vector float __b) {
13137
#ifdef __VSX__
13138
return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
13139
#else
13140
return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
13141
#endif
13142
}
13143
13144
#ifdef __VSX__
13145
static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
13146
vector double __b) {
13147
return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
13148
}
13149
#endif
13150
13151
/* vec_all_nle */
13152
13153
static __inline__ int __attribute__((__always_inline__))
13154
vec_all_nle(vector float __a, vector float __b) {
13155
return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
13156
}
13157
13158
/* vec_all_nlt */
13159
13160
static __inline__ int __attribute__((__always_inline__))
13161
vec_all_nlt(vector float __a, vector float __b) {
13162
return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
13163
}
13164
13165
/* vec_all_numeric */
13166
13167
static __inline__ int __attribute__((__always_inline__))
13168
vec_all_numeric(vector float __a) {
13169
return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
13170
}
13171
13172
/* vec_any_eq */
13173
13174
static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
13175
vector signed char __b) {
13176
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13177
(vector char)__b);
13178
}
13179
13180
static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
13181
vector bool char __b) {
13182
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13183
(vector char)__b);
13184
}
13185
13186
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
13187
vector unsigned char __b) {
13188
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13189
(vector char)__b);
13190
}
13191
13192
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
13193
vector bool char __b) {
13194
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13195
(vector char)__b);
13196
}
13197
13198
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13199
vector signed char __b) {
13200
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13201
(vector char)__b);
13202
}
13203
13204
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13205
vector unsigned char __b) {
13206
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13207
(vector char)__b);
13208
}
13209
13210
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13211
vector bool char __b) {
13212
return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13213
(vector char)__b);
13214
}
13215
13216
static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
13217
vector short __b) {
13218
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
13219
}
13220
13221
static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
13222
vector bool short __b) {
13223
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
13224
}
13225
13226
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
13227
vector unsigned short __b) {
13228
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13229
(vector short)__b);
13230
}
13231
13232
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
13233
vector bool short __b) {
13234
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13235
(vector short)__b);
13236
}
13237
13238
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13239
vector short __b) {
13240
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13241
(vector short)__b);
13242
}
13243
13244
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13245
vector unsigned short __b) {
13246
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13247
(vector short)__b);
13248
}
13249
13250
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13251
vector bool short __b) {
13252
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13253
(vector short)__b);
13254
}
13255
13256
static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
13257
vector pixel __b) {
13258
return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13259
(vector short)__b);
13260
}
13261
13262
static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
13263
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
13264
}
13265
13266
static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
13267
vector bool int __b) {
13268
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
13269
}
13270
13271
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
13272
vector unsigned int __b) {
13273
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13274
(vector int)__b);
13275
}
13276
13277
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
13278
vector bool int __b) {
13279
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13280
(vector int)__b);
13281
}
13282
13283
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13284
vector int __b) {
13285
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13286
(vector int)__b);
13287
}
13288
13289
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13290
vector unsigned int __b) {
13291
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13292
(vector int)__b);
13293
}
13294
13295
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13296
vector bool int __b) {
13297
return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13298
(vector int)__b);
13299
}
13300
13301
#ifdef __POWER8_VECTOR__
13302
static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
13303
vector signed long long __b) {
13304
return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
13305
}
13306
13307
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
13308
vector unsigned long long __b) {
13309
return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
13310
(vector long long)__b);
13311
}
13312
13313
static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
13314
vector bool long long __b) {
13315
return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
13316
(vector signed long long)__b);
13317
}
13318
13319
static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
13320
vector bool long long __b) {
13321
return __builtin_altivec_vcmpequd_p(
13322
__CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13323
}
13324
13325
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13326
vector signed long long __b) {
13327
return __builtin_altivec_vcmpequd_p(
13328
__CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13329
}
13330
13331
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13332
vector unsigned long long __b) {
13333
return __builtin_altivec_vcmpequd_p(
13334
__CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13335
}
13336
13337
static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13338
vector bool long long __b) {
13339
return __builtin_altivec_vcmpequd_p(
13340
__CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13341
}
13342
#endif
13343
13344
static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
13345
vector float __b) {
13346
#ifdef __VSX__
13347
return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
13348
#else
13349
return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
13350
#endif
13351
}
13352
13353
#ifdef __VSX__
13354
static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
13355
vector double __b) {
13356
return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
13357
}
13358
#endif
13359
13360
/* vec_any_ge */
13361
13362
static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
13363
vector signed char __b) {
13364
return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
13365
}
13366
13367
static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
13368
vector bool char __b) {
13369
return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
13370
__a);
13371
}
13372
13373
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
13374
vector unsigned char __b) {
13375
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
13376
}
13377
13378
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
13379
vector bool char __b) {
13380
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13381
__a);
13382
}
13383
13384
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13385
vector signed char __b) {
13386
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13387
(vector unsigned char)__a);
13388
}
13389
13390
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13391
vector unsigned char __b) {
13392
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
13393
(vector unsigned char)__a);
13394
}
13395
13396
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13397
vector bool char __b) {
13398
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13399
(vector unsigned char)__a);
13400
}
13401
13402
static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
13403
vector short __b) {
13404
return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
13405
}
13406
13407
static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
13408
vector bool short __b) {
13409
return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
13410
}
13411
13412
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
13413
vector unsigned short __b) {
13414
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
13415
}
13416
13417
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
13418
vector bool short __b) {
13419
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13420
__a);
13421
}
13422
13423
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13424
vector short __b) {
13425
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13426
(vector unsigned short)__a);
13427
}
13428
13429
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13430
vector unsigned short __b) {
13431
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
13432
(vector unsigned short)__a);
13433
}
13434
13435
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13436
vector bool short __b) {
13437
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13438
(vector unsigned short)__a);
13439
}
13440
13441
static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
13442
return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
13443
}
13444
13445
static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
13446
vector bool int __b) {
13447
return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
13448
}
13449
13450
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
13451
vector unsigned int __b) {
13452
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
13453
}
13454
13455
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
13456
vector bool int __b) {
13457
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13458
__a);
13459
}
13460
13461
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13462
vector int __b) {
13463
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13464
(vector unsigned int)__a);
13465
}
13466
13467
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13468
vector unsigned int __b) {
13469
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
13470
(vector unsigned int)__a);
13471
}
13472
13473
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13474
vector bool int __b) {
13475
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13476
(vector unsigned int)__a);
13477
}
13478
13479
#ifdef __POWER8_VECTOR__
13480
static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
13481
vector signed long long __b) {
13482
return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
13483
}
13484
13485
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
13486
vector unsigned long long __b) {
13487
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
13488
}
13489
13490
static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
13491
vector bool long long __b) {
13492
return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
13493
(vector signed long long)__b, __a);
13494
}
13495
13496
static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
13497
vector bool long long __b) {
13498
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13499
(vector unsigned long long)__b, __a);
13500
}
13501
13502
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13503
vector signed long long __b) {
13504
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13505
(vector unsigned long long)__b,
13506
(vector unsigned long long)__a);
13507
}
13508
13509
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13510
vector unsigned long long __b) {
13511
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
13512
(vector unsigned long long)__a);
13513
}
13514
13515
static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13516
vector bool long long __b) {
13517
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13518
(vector unsigned long long)__b,
13519
(vector unsigned long long)__a);
13520
}
13521
#endif
13522
13523
static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
13524
vector float __b) {
13525
#ifdef __VSX__
13526
return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
13527
#else
13528
return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
13529
#endif
13530
}
13531
13532
#ifdef __VSX__
13533
static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
13534
vector double __b) {
13535
return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
13536
}
13537
#endif
13538
13539
/* vec_any_gt */
13540
13541
static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
13542
vector signed char __b) {
13543
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
13544
}
13545
13546
static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
13547
vector bool char __b) {
13548
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
13549
(vector signed char)__b);
13550
}
13551
13552
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
13553
vector unsigned char __b) {
13554
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
13555
}
13556
13557
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
13558
vector bool char __b) {
13559
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
13560
(vector unsigned char)__b);
13561
}
13562
13563
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13564
vector signed char __b) {
13565
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13566
(vector unsigned char)__b);
13567
}
13568
13569
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13570
vector unsigned char __b) {
13571
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13572
__b);
13573
}
13574
13575
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13576
vector bool char __b) {
13577
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13578
(vector unsigned char)__b);
13579
}
13580
13581
static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
13582
vector short __b) {
13583
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
13584
}
13585
13586
static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
13587
vector bool short __b) {
13588
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
13589
}
13590
13591
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
13592
vector unsigned short __b) {
13593
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
13594
}
13595
13596
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
13597
vector bool short __b) {
13598
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
13599
(vector unsigned short)__b);
13600
}
13601
13602
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13603
vector short __b) {
13604
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13605
(vector unsigned short)__b);
13606
}
13607
13608
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13609
vector unsigned short __b) {
13610
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13611
__b);
13612
}
13613
13614
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13615
vector bool short __b) {
13616
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13617
(vector unsigned short)__b);
13618
}
13619
13620
static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
13621
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
13622
}
13623
13624
static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
13625
vector bool int __b) {
13626
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
13627
}
13628
13629
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
13630
vector unsigned int __b) {
13631
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
13632
}
13633
13634
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
13635
vector bool int __b) {
13636
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
13637
(vector unsigned int)__b);
13638
}
13639
13640
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13641
vector int __b) {
13642
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13643
(vector unsigned int)__b);
13644
}
13645
13646
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13647
vector unsigned int __b) {
13648
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13649
__b);
13650
}
13651
13652
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13653
vector bool int __b) {
13654
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13655
(vector unsigned int)__b);
13656
}
13657
13658
#ifdef __POWER8_VECTOR__
13659
static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
13660
vector signed long long __b) {
13661
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
13662
}
13663
13664
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
13665
vector unsigned long long __b) {
13666
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
13667
}
13668
13669
static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
13670
vector bool long long __b) {
13671
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
13672
(vector signed long long)__b);
13673
}
13674
13675
static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
13676
vector bool long long __b) {
13677
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
13678
(vector unsigned long long)__b);
13679
}
13680
13681
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13682
vector signed long long __b) {
13683
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13684
(vector unsigned long long)__a,
13685
(vector unsigned long long)__b);
13686
}
13687
13688
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13689
vector unsigned long long __b) {
13690
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13691
(vector unsigned long long)__a, __b);
13692
}
13693
13694
static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13695
vector bool long long __b) {
13696
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13697
(vector unsigned long long)__a,
13698
(vector unsigned long long)__b);
13699
}
13700
#endif
13701
13702
static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
13703
vector float __b) {
13704
#ifdef __VSX__
13705
return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
13706
#else
13707
return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
13708
#endif
13709
}
13710
13711
#ifdef __VSX__
13712
static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
13713
vector double __b) {
13714
return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
13715
}
13716
#endif
13717
13718
/* vec_any_le */
13719
13720
static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
13721
vector signed char __b) {
13722
return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
13723
}
13724
13725
static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
13726
vector bool char __b) {
13727
return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
13728
(vector signed char)__b);
13729
}
13730
13731
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
13732
vector unsigned char __b) {
13733
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
13734
}
13735
13736
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
13737
vector bool char __b) {
13738
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
13739
(vector unsigned char)__b);
13740
}
13741
13742
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13743
vector signed char __b) {
13744
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13745
(vector unsigned char)__b);
13746
}
13747
13748
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13749
vector unsigned char __b) {
13750
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13751
__b);
13752
}
13753
13754
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13755
vector bool char __b) {
13756
return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13757
(vector unsigned char)__b);
13758
}
13759
13760
static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
13761
vector short __b) {
13762
return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
13763
}
13764
13765
static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
13766
vector bool short __b) {
13767
return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
13768
}
13769
13770
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
13771
vector unsigned short __b) {
13772
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
13773
}
13774
13775
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
13776
vector bool short __b) {
13777
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
13778
(vector unsigned short)__b);
13779
}
13780
13781
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13782
vector short __b) {
13783
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13784
(vector unsigned short)__b);
13785
}
13786
13787
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13788
vector unsigned short __b) {
13789
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13790
__b);
13791
}
13792
13793
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13794
vector bool short __b) {
13795
return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13796
(vector unsigned short)__b);
13797
}
13798
13799
static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
13800
return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
13801
}
13802
13803
static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
13804
vector bool int __b) {
13805
return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
13806
}
13807
13808
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
13809
vector unsigned int __b) {
13810
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
13811
}
13812
13813
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
13814
vector bool int __b) {
13815
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
13816
(vector unsigned int)__b);
13817
}
13818
13819
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13820
vector int __b) {
13821
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13822
(vector unsigned int)__b);
13823
}
13824
13825
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13826
vector unsigned int __b) {
13827
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13828
__b);
13829
}
13830
13831
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13832
vector bool int __b) {
13833
return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13834
(vector unsigned int)__b);
13835
}
13836
13837
#ifdef __POWER8_VECTOR__
13838
static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
13839
vector signed long long __b) {
13840
return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
13841
}
13842
13843
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
13844
vector unsigned long long __b) {
13845
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
13846
}
13847
13848
static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
13849
vector bool long long __b) {
13850
return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
13851
(vector signed long long)__b);
13852
}
13853
13854
static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
13855
vector bool long long __b) {
13856
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
13857
(vector unsigned long long)__b);
13858
}
13859
13860
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13861
vector signed long long __b) {
13862
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13863
(vector unsigned long long)__a,
13864
(vector unsigned long long)__b);
13865
}
13866
13867
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13868
vector unsigned long long __b) {
13869
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13870
(vector unsigned long long)__a, __b);
13871
}
13872
13873
static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13874
vector bool long long __b) {
13875
return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13876
(vector unsigned long long)__a,
13877
(vector unsigned long long)__b);
13878
}
13879
#endif
13880
13881
static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
13882
vector float __b) {
13883
#ifdef __VSX__
13884
return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
13885
#else
13886
return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
13887
#endif
13888
}
13889
13890
#ifdef __VSX__
13891
static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
13892
vector double __b) {
13893
return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
13894
}
13895
#endif
13896
13897
/* vec_any_lt */
13898
13899
static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13900
vector signed char __b) {
13901
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
13902
}
13903
13904
static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13905
vector bool char __b) {
13906
return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
13907
__a);
13908
}
13909
13910
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13911
vector unsigned char __b) {
13912
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
13913
}
13914
13915
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13916
vector bool char __b) {
13917
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13918
__a);
13919
}
13920
13921
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13922
vector signed char __b) {
13923
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13924
(vector unsigned char)__a);
13925
}
13926
13927
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13928
vector unsigned char __b) {
13929
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
13930
(vector unsigned char)__a);
13931
}
13932
13933
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13934
vector bool char __b) {
13935
return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13936
(vector unsigned char)__a);
13937
}
13938
13939
static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
13940
vector short __b) {
13941
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
13942
}
13943
13944
static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
13945
vector bool short __b) {
13946
return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
13947
}
13948
13949
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13950
vector unsigned short __b) {
13951
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
13952
}
13953
13954
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13955
vector bool short __b) {
13956
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13957
__a);
13958
}
13959
13960
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13961
vector short __b) {
13962
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13963
(vector unsigned short)__a);
13964
}
13965
13966
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13967
vector unsigned short __b) {
13968
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
13969
(vector unsigned short)__a);
13970
}
13971
13972
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13973
vector bool short __b) {
13974
return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13975
(vector unsigned short)__a);
13976
}
13977
13978
static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
13979
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
13980
}
13981
13982
static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
13983
vector bool int __b) {
13984
return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
13985
}
13986
13987
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13988
vector unsigned int __b) {
13989
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
13990
}
13991
13992
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13993
vector bool int __b) {
13994
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
13995
__a);
13996
}
13997
13998
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
13999
vector int __b) {
14000
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
14001
(vector unsigned int)__a);
14002
}
14003
14004
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
14005
vector unsigned int __b) {
14006
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
14007
(vector unsigned int)__a);
14008
}
14009
14010
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
14011
vector bool int __b) {
14012
return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
14013
(vector unsigned int)__a);
14014
}
14015
14016
#ifdef __POWER8_VECTOR__
14017
static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
14018
vector signed long long __b) {
14019
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
14020
}
14021
14022
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
14023
vector unsigned long long __b) {
14024
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
14025
}
14026
14027
static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
14028
vector bool long long __b) {
14029
return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
14030
(vector signed long long)__b, __a);
14031
}
14032
14033
static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
14034
vector bool long long __b) {
14035
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14036
(vector unsigned long long)__b, __a);
14037
}
14038
14039
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14040
vector signed long long __b) {
14041
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14042
(vector unsigned long long)__b,
14043
(vector unsigned long long)__a);
14044
}
14045
14046
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14047
vector unsigned long long __b) {
14048
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
14049
(vector unsigned long long)__a);
14050
}
14051
14052
static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14053
vector bool long long __b) {
14054
return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14055
(vector unsigned long long)__b,
14056
(vector unsigned long long)__a);
14057
}
14058
#endif
14059
14060
static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
14061
vector float __b) {
14062
#ifdef __VSX__
14063
return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
14064
#else
14065
return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
14066
#endif
14067
}
14068
14069
#ifdef __VSX__
14070
static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
14071
vector double __b) {
14072
return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
14073
}
14074
#endif
14075
14076
/* vec_any_nan */
14077
14078
static __inline__ int __attribute__((__always_inline__))
14079
vec_any_nan(vector float __a) {
14080
return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
14081
}
14082
14083
/* vec_any_ne */
14084
14085
static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
14086
vector signed char __b) {
14087
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14088
(vector char)__b);
14089
}
14090
14091
static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
14092
vector bool char __b) {
14093
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14094
(vector char)__b);
14095
}
14096
14097
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
14098
vector unsigned char __b) {
14099
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14100
(vector char)__b);
14101
}
14102
14103
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
14104
vector bool char __b) {
14105
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14106
(vector char)__b);
14107
}
14108
14109
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14110
vector signed char __b) {
14111
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14112
(vector char)__b);
14113
}
14114
14115
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14116
vector unsigned char __b) {
14117
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14118
(vector char)__b);
14119
}
14120
14121
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14122
vector bool char __b) {
14123
return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14124
(vector char)__b);
14125
}
14126
14127
static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
14128
vector short __b) {
14129
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
14130
}
14131
14132
static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
14133
vector bool short __b) {
14134
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
14135
}
14136
14137
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
14138
vector unsigned short __b) {
14139
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14140
(vector short)__b);
14141
}
14142
14143
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
14144
vector bool short __b) {
14145
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14146
(vector short)__b);
14147
}
14148
14149
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14150
vector short __b) {
14151
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14152
(vector short)__b);
14153
}
14154
14155
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14156
vector unsigned short __b) {
14157
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14158
(vector short)__b);
14159
}
14160
14161
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14162
vector bool short __b) {
14163
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14164
(vector short)__b);
14165
}
14166
14167
static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
14168
vector pixel __b) {
14169
return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14170
(vector short)__b);
14171
}
14172
14173
static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
14174
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
14175
}
14176
14177
static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
14178
vector bool int __b) {
14179
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
14180
}
14181
14182
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
14183
vector unsigned int __b) {
14184
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14185
(vector int)__b);
14186
}
14187
14188
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
14189
vector bool int __b) {
14190
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14191
(vector int)__b);
14192
}
14193
14194
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14195
vector int __b) {
14196
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14197
(vector int)__b);
14198
}
14199
14200
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14201
vector unsigned int __b) {
14202
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14203
(vector int)__b);
14204
}
14205
14206
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14207
vector bool int __b) {
14208
return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14209
(vector int)__b);
14210
}
14211
14212
#ifdef __POWER8_VECTOR__
14213
static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
14214
vector signed long long __b) {
14215
return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
14216
}
14217
14218
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
14219
vector unsigned long long __b) {
14220
return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
14221
(vector long long)__b);
14222
}
14223
14224
static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
14225
vector bool long long __b) {
14226
return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
14227
(vector signed long long)__b);
14228
}
14229
14230
static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
14231
vector bool long long __b) {
14232
return __builtin_altivec_vcmpequd_p(
14233
__CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14234
}
14235
14236
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14237
vector signed long long __b) {
14238
return __builtin_altivec_vcmpequd_p(
14239
__CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14240
}
14241
14242
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14243
vector unsigned long long __b) {
14244
return __builtin_altivec_vcmpequd_p(
14245
__CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14246
}
14247
14248
static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14249
vector bool long long __b) {
14250
return __builtin_altivec_vcmpequd_p(
14251
__CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14252
}
14253
#endif
14254
14255
static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
14256
vector float __b) {
14257
#ifdef __VSX__
14258
return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
14259
#else
14260
return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
14261
#endif
14262
}
14263
14264
#ifdef __VSX__
14265
static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
14266
vector double __b) {
14267
return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
14268
}
14269
#endif
14270
14271
/* vec_any_nge */
14272
14273
static __inline__ int __attribute__((__always_inline__))
14274
vec_any_nge(vector float __a, vector float __b) {
14275
return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
14276
}
14277
14278
/* vec_any_ngt */
14279
14280
static __inline__ int __attribute__((__always_inline__))
14281
vec_any_ngt(vector float __a, vector float __b) {
14282
return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
14283
}
14284
14285
/* vec_any_nle */
14286
14287
static __inline__ int __attribute__((__always_inline__))
14288
vec_any_nle(vector float __a, vector float __b) {
14289
return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
14290
}
14291
14292
/* vec_any_nlt */
14293
14294
static __inline__ int __attribute__((__always_inline__))
14295
vec_any_nlt(vector float __a, vector float __b) {
14296
return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
14297
}
14298
14299
/* vec_any_numeric */
14300
14301
static __inline__ int __attribute__((__always_inline__))
14302
vec_any_numeric(vector float __a) {
14303
return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
14304
}
14305
14306
/* vec_any_out */
14307
14308
static __inline__ int __attribute__((__always_inline__))
14309
vec_any_out(vector float __a, vector float __b) {
14310
return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
14311
}
14312
14313
/* Power 8 Crypto functions
14314
Note: We diverge from the current GCC implementation with regard
14315
to cryptography and related functions as follows:
14316
- Only the SHA and AES instructions and builtins are disabled by -mno-crypto
14317
- The remaining ones are only available on Power8 and up so
14318
require -mpower8-vector
14319
The justification for this is that export requirements require that
14320
Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
14321
support). As a result, we need to be able to turn off support for those.
14322
The remaining ones (currently controlled by -mcrypto for GCC) still
14323
need to be provided on compliant hardware even if Vector.Crypto is not
14324
provided.
14325
*/
14326
#ifdef __CRYPTO__
14327
#define vec_sbox_be __builtin_altivec_crypto_vsbox
14328
#define vec_cipher_be __builtin_altivec_crypto_vcipher
14329
#define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
14330
#define vec_ncipher_be __builtin_altivec_crypto_vncipher
14331
#define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
14332
14333
static __inline__ vector unsigned long long __attribute__((__always_inline__))
14334
__builtin_crypto_vsbox(vector unsigned long long __a) {
14335
return __builtin_altivec_crypto_vsbox(__a);
14336
}
14337
14338
static __inline__ vector unsigned long long __attribute__((__always_inline__))
14339
__builtin_crypto_vcipher(vector unsigned long long __a,
14340
vector unsigned long long __b) {
14341
return __builtin_altivec_crypto_vcipher(__a, __b);
14342
}
14343
14344
static __inline__ vector unsigned long long __attribute__((__always_inline__))
14345
__builtin_crypto_vcipherlast(vector unsigned long long __a,
14346
vector unsigned long long __b) {
14347
return __builtin_altivec_crypto_vcipherlast(__a, __b);
14348
}
14349
14350
static __inline__ vector unsigned long long __attribute__((__always_inline__))
14351
__builtin_crypto_vncipher(vector unsigned long long __a,
14352
vector unsigned long long __b) {
14353
return __builtin_altivec_crypto_vncipher(__a, __b);
14354
}
14355
14356
static __inline__ vector unsigned long long __attribute__((__always_inline__))
14357
__builtin_crypto_vncipherlast(vector unsigned long long __a,
14358
vector unsigned long long __b) {
14359
return __builtin_altivec_crypto_vncipherlast(__a, __b);
14360
}
14361
14362
#define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
14363
#define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
14364
14365
#define vec_shasigma_be(X, Y, Z) \
14366
_Generic((X), vector unsigned int \
14367
: __builtin_crypto_vshasigmaw, vector unsigned long long \
14368
: __builtin_crypto_vshasigmad)((X), (Y), (Z))
14369
#endif
14370
14371
#ifdef __POWER8_VECTOR__
14372
static __inline__ vector unsigned char __ATTRS_o_ai
14373
__builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
14374
vector unsigned char __c) {
14375
return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
14376
}
14377
14378
static __inline__ vector unsigned short __ATTRS_o_ai
14379
__builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
14380
vector unsigned short __c) {
14381
return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
14382
(vector unsigned char)__a, (vector unsigned char)__b,
14383
(vector unsigned char)__c);
14384
}
14385
14386
static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
14387
vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
14388
return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
14389
(vector unsigned char)__a, (vector unsigned char)__b,
14390
(vector unsigned char)__c);
14391
}
14392
14393
static __inline__ vector unsigned long long __ATTRS_o_ai
14394
__builtin_crypto_vpermxor(vector unsigned long long __a,
14395
vector unsigned long long __b,
14396
vector unsigned long long __c) {
14397
return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
14398
(vector unsigned char)__a, (vector unsigned char)__b,
14399
(vector unsigned char)__c);
14400
}
14401
14402
static __inline__ vector unsigned char __ATTRS_o_ai
14403
__builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
14404
return __builtin_altivec_crypto_vpmsumb(__a, __b);
14405
}
14406
14407
static __inline__ vector unsigned short __ATTRS_o_ai
14408
__builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
14409
return __builtin_altivec_crypto_vpmsumh(__a, __b);
14410
}
14411
14412
static __inline__ vector unsigned int __ATTRS_o_ai
14413
__builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
14414
return __builtin_altivec_crypto_vpmsumw(__a, __b);
14415
}
14416
14417
static __inline__ vector unsigned long long __ATTRS_o_ai
14418
__builtin_crypto_vpmsumb(vector unsigned long long __a,
14419
vector unsigned long long __b) {
14420
return __builtin_altivec_crypto_vpmsumd(__a, __b);
14421
}
14422
14423
static __inline__ vector signed char __ATTRS_o_ai
14424
vec_vgbbd(vector signed char __a) {
14425
return __builtin_altivec_vgbbd((vector unsigned char)__a);
14426
}
14427
14428
#define vec_pmsum_be __builtin_crypto_vpmsumb
14429
#define vec_gb __builtin_altivec_vgbbd
14430
14431
static __inline__ vector unsigned char __ATTRS_o_ai
14432
vec_vgbbd(vector unsigned char __a) {
14433
return __builtin_altivec_vgbbd(__a);
14434
}
14435
14436
static __inline__ vector long long __ATTRS_o_ai
14437
vec_vbpermq(vector signed char __a, vector signed char __b) {
14438
return __builtin_altivec_vbpermq((vector unsigned char)__a,
14439
(vector unsigned char)__b);
14440
}
14441
14442
static __inline__ vector long long __ATTRS_o_ai
14443
vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
14444
return __builtin_altivec_vbpermq(__a, __b);
14445
}
14446
14447
#ifdef __powerpc64__
14448
static __inline__ vector unsigned long long __attribute__((__always_inline__))
14449
vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
14450
return __builtin_altivec_vbpermq((vector unsigned char)__a,
14451
(vector unsigned char)__b);
14452
}
14453
#endif
14454
#endif
14455
14456
#undef __ATTRS_o_ai
14457
14458
#endif /* __ALTIVEC_H */
14459
14460