clang API Documentation
00001 /*===---- altivec.h - Standard header for type generic math ---------------===*\ 00002 * 00003 * Permission is hereby granted, free of charge, to any person obtaining a copy 00004 * of this software and associated documentation files (the "Software"), to deal 00005 * in the Software without restriction, including without limitation the rights 00006 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00007 * copies of the Software, and to permit persons to whom the Software is 00008 * furnished to do so, subject to the following conditions: 00009 * 00010 * The above copyright notice and this permission notice shall be included in 00011 * all copies or substantial portions of the Software. 00012 * 00013 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00014 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00015 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00016 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00017 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00018 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00019 * THE SOFTWARE. 00020 * 00021 \*===----------------------------------------------------------------------===*/ 00022 00023 #ifndef __ALTIVEC_H 00024 #define __ALTIVEC_H 00025 00026 #ifndef __ALTIVEC__ 00027 #error "AltiVec support not enabled" 00028 #endif 00029 00030 /* constants for mapping CR6 bits to predicate result. */ 00031 00032 #define __CR6_EQ 0 00033 #define __CR6_EQ_REV 1 00034 #define __CR6_LT 2 00035 #define __CR6_LT_REV 3 00036 00037 #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__)) 00038 00039 static vector signed char __ATTRS_o_ai 00040 vec_perm(vector signed char __a, vector signed char __b, vector unsigned char __c); 00041 00042 static vector unsigned char __ATTRS_o_ai 00043 vec_perm(vector unsigned char __a, 00044 vector unsigned char __b, 00045 vector unsigned char __c); 00046 00047 static vector bool char __ATTRS_o_ai 00048 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c); 00049 00050 static vector short __ATTRS_o_ai 00051 vec_perm(vector short __a, vector short __b, vector unsigned char __c); 00052 00053 static vector unsigned short __ATTRS_o_ai 00054 vec_perm(vector unsigned short __a, 00055 vector unsigned short __b, 00056 vector unsigned char __c); 00057 00058 static vector bool short __ATTRS_o_ai 00059 vec_perm(vector bool short __a, vector bool short __b, vector unsigned char __c); 00060 00061 static vector pixel __ATTRS_o_ai 00062 vec_perm(vector pixel __a, vector pixel __b, vector unsigned char __c); 00063 00064 static vector int __ATTRS_o_ai 00065 vec_perm(vector int __a, vector int __b, vector unsigned char __c); 00066 00067 static vector unsigned int __ATTRS_o_ai 00068 vec_perm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c); 00069 00070 static vector bool int __ATTRS_o_ai 00071 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c); 00072 00073 static vector float __ATTRS_o_ai 00074 vec_perm(vector float __a, vector float __b, vector unsigned char __c); 00075 00076 static vector unsigned char __ATTRS_o_ai 00077 vec_xor(vector unsigned char __a, vector unsigned char __b); 00078 00079 /* vec_abs */ 00080 00081 #define __builtin_altivec_abs_v16qi vec_abs 00082 #define __builtin_altivec_abs_v8hi vec_abs 00083 #define __builtin_altivec_abs_v4si vec_abs 00084 00085 static vector signed char __ATTRS_o_ai 00086 vec_abs(vector signed char __a) 00087 { 00088 return __builtin_altivec_vmaxsb(__a, -__a); 00089 } 00090 00091 static vector signed short __ATTRS_o_ai 00092 vec_abs(vector signed short __a) 00093 { 00094 return __builtin_altivec_vmaxsh(__a, -__a); 00095 } 00096 00097 static vector signed int __ATTRS_o_ai 00098 vec_abs(vector signed int __a) 00099 { 00100 return __builtin_altivec_vmaxsw(__a, -__a); 00101 } 00102 00103 static vector float __ATTRS_o_ai 00104 vec_abs(vector float __a) 00105 { 00106 vector unsigned int __res = (vector unsigned int)__a 00107 & (vector unsigned int)(0x7FFFFFFF); 00108 return (vector float)__res; 00109 } 00110 00111 /* vec_abss */ 00112 00113 #define __builtin_altivec_abss_v16qi vec_abss 00114 #define __builtin_altivec_abss_v8hi vec_abss 00115 #define __builtin_altivec_abss_v4si vec_abss 00116 00117 static vector signed char __ATTRS_o_ai 00118 vec_abss(vector signed char __a) 00119 { 00120 return __builtin_altivec_vmaxsb 00121 (__a, __builtin_altivec_vsubsbs((vector signed char)(0), __a)); 00122 } 00123 00124 static vector signed short __ATTRS_o_ai 00125 vec_abss(vector signed short __a) 00126 { 00127 return __builtin_altivec_vmaxsh 00128 (__a, __builtin_altivec_vsubshs((vector signed short)(0), __a)); 00129 } 00130 00131 static vector signed int __ATTRS_o_ai 00132 vec_abss(vector signed int __a) 00133 { 00134 return __builtin_altivec_vmaxsw 00135 (__a, __builtin_altivec_vsubsws((vector signed int)(0), __a)); 00136 } 00137 00138 /* vec_add */ 00139 00140 static vector signed char __ATTRS_o_ai 00141 vec_add(vector signed char __a, vector signed char __b) 00142 { 00143 return __a + __b; 00144 } 00145 00146 static vector signed char __ATTRS_o_ai 00147 vec_add(vector bool char __a, vector signed char __b) 00148 { 00149 return (vector signed char)__a + __b; 00150 } 00151 00152 static vector signed char __ATTRS_o_ai 00153 vec_add(vector signed char __a, vector bool char __b) 00154 { 00155 return __a + (vector signed char)__b; 00156 } 00157 00158 static vector unsigned char __ATTRS_o_ai 00159 vec_add(vector unsigned char __a, vector unsigned char __b) 00160 { 00161 return __a + __b; 00162 } 00163 00164 static vector unsigned char __ATTRS_o_ai 00165 vec_add(vector bool char __a, vector unsigned char __b) 00166 { 00167 return (vector unsigned char)__a + __b; 00168 } 00169 00170 static vector unsigned char __ATTRS_o_ai 00171 vec_add(vector unsigned char __a, vector bool char __b) 00172 { 00173 return __a + (vector unsigned char)__b; 00174 } 00175 00176 static vector short __ATTRS_o_ai 00177 vec_add(vector short __a, vector short __b) 00178 { 00179 return __a + __b; 00180 } 00181 00182 static vector short __ATTRS_o_ai 00183 vec_add(vector bool short __a, vector short __b) 00184 { 00185 return (vector short)__a + __b; 00186 } 00187 00188 static vector short __ATTRS_o_ai 00189 vec_add(vector short __a, vector bool short __b) 00190 { 00191 return __a + (vector short)__b; 00192 } 00193 00194 static vector unsigned short __ATTRS_o_ai 00195 vec_add(vector unsigned short __a, vector unsigned short __b) 00196 { 00197 return __a + __b; 00198 } 00199 00200 static vector unsigned short __ATTRS_o_ai 00201 vec_add(vector bool short __a, vector unsigned short __b) 00202 { 00203 return (vector unsigned short)__a + __b; 00204 } 00205 00206 static vector unsigned short __ATTRS_o_ai 00207 vec_add(vector unsigned short __a, vector bool short __b) 00208 { 00209 return __a + (vector unsigned short)__b; 00210 } 00211 00212 static vector int __ATTRS_o_ai 00213 vec_add(vector int __a, vector int __b) 00214 { 00215 return __a + __b; 00216 } 00217 00218 static vector int __ATTRS_o_ai 00219 vec_add(vector bool int __a, vector int __b) 00220 { 00221 return (vector int)__a + __b; 00222 } 00223 00224 static vector int __ATTRS_o_ai 00225 vec_add(vector int __a, vector bool int __b) 00226 { 00227 return __a + (vector int)__b; 00228 } 00229 00230 static vector unsigned int __ATTRS_o_ai 00231 vec_add(vector unsigned int __a, vector unsigned int __b) 00232 { 00233 return __a + __b; 00234 } 00235 00236 static vector unsigned int __ATTRS_o_ai 00237 vec_add(vector bool int __a, vector unsigned int __b) 00238 { 00239 return (vector unsigned int)__a + __b; 00240 } 00241 00242 static vector unsigned int __ATTRS_o_ai 00243 vec_add(vector unsigned int __a, vector bool int __b) 00244 { 00245 return __a + (vector unsigned int)__b; 00246 } 00247 00248 static vector float __ATTRS_o_ai 00249 vec_add(vector float __a, vector float __b) 00250 { 00251 return __a + __b; 00252 } 00253 00254 /* vec_vaddubm */ 00255 00256 #define __builtin_altivec_vaddubm vec_vaddubm 00257 00258 static vector signed char __ATTRS_o_ai 00259 vec_vaddubm(vector signed char __a, vector signed char __b) 00260 { 00261 return __a + __b; 00262 } 00263 00264 static vector signed char __ATTRS_o_ai 00265 vec_vaddubm(vector bool char __a, vector signed char __b) 00266 { 00267 return (vector signed char)__a + __b; 00268 } 00269 00270 static vector signed char __ATTRS_o_ai 00271 vec_vaddubm(vector signed char __a, vector bool char __b) 00272 { 00273 return __a + (vector signed char)__b; 00274 } 00275 00276 static vector unsigned char __ATTRS_o_ai 00277 vec_vaddubm(vector unsigned char __a, vector unsigned char __b) 00278 { 00279 return __a + __b; 00280 } 00281 00282 static vector unsigned char __ATTRS_o_ai 00283 vec_vaddubm(vector bool char __a, vector unsigned char __b) 00284 { 00285 return (vector unsigned char)__a + __b; 00286 } 00287 00288 static vector unsigned char __ATTRS_o_ai 00289 vec_vaddubm(vector unsigned char __a, vector bool char __b) 00290 { 00291 return __a + (vector unsigned char)__b; 00292 } 00293 00294 /* vec_vadduhm */ 00295 00296 #define __builtin_altivec_vadduhm vec_vadduhm 00297 00298 static vector short __ATTRS_o_ai 00299 vec_vadduhm(vector short __a, vector short __b) 00300 { 00301 return __a + __b; 00302 } 00303 00304 static vector short __ATTRS_o_ai 00305 vec_vadduhm(vector bool short __a, vector short __b) 00306 { 00307 return (vector short)__a + __b; 00308 } 00309 00310 static vector short __ATTRS_o_ai 00311 vec_vadduhm(vector short __a, vector bool short __b) 00312 { 00313 return __a + (vector short)__b; 00314 } 00315 00316 static vector unsigned short __ATTRS_o_ai 00317 vec_vadduhm(vector unsigned short __a, vector unsigned short __b) 00318 { 00319 return __a + __b; 00320 } 00321 00322 static vector unsigned short __ATTRS_o_ai 00323 vec_vadduhm(vector bool short __a, vector unsigned short __b) 00324 { 00325 return (vector unsigned short)__a + __b; 00326 } 00327 00328 static vector unsigned short __ATTRS_o_ai 00329 vec_vadduhm(vector unsigned short __a, vector bool short __b) 00330 { 00331 return __a + (vector unsigned short)__b; 00332 } 00333 00334 /* vec_vadduwm */ 00335 00336 #define __builtin_altivec_vadduwm vec_vadduwm 00337 00338 static vector int __ATTRS_o_ai 00339 vec_vadduwm(vector int __a, vector int __b) 00340 { 00341 return __a + __b; 00342 } 00343 00344 static vector int __ATTRS_o_ai 00345 vec_vadduwm(vector bool int __a, vector int __b) 00346 { 00347 return (vector int)__a + __b; 00348 } 00349 00350 static vector int __ATTRS_o_ai 00351 vec_vadduwm(vector int __a, vector bool int __b) 00352 { 00353 return __a + (vector int)__b; 00354 } 00355 00356 static vector unsigned int __ATTRS_o_ai 00357 vec_vadduwm(vector unsigned int __a, vector unsigned int __b) 00358 { 00359 return __a + __b; 00360 } 00361 00362 static vector unsigned int __ATTRS_o_ai 00363 vec_vadduwm(vector bool int __a, vector unsigned int __b) 00364 { 00365 return (vector unsigned int)__a + __b; 00366 } 00367 00368 static vector unsigned int __ATTRS_o_ai 00369 vec_vadduwm(vector unsigned int __a, vector bool int __b) 00370 { 00371 return __a + (vector unsigned int)__b; 00372 } 00373 00374 /* vec_vaddfp */ 00375 00376 #define __builtin_altivec_vaddfp vec_vaddfp 00377 00378 static vector float __attribute__((__always_inline__)) 00379 vec_vaddfp(vector float __a, vector float __b) 00380 { 00381 return __a + __b; 00382 } 00383 00384 /* vec_addc */ 00385 00386 static vector unsigned int __attribute__((__always_inline__)) 00387 vec_addc(vector unsigned int __a, vector unsigned int __b) 00388 { 00389 return __builtin_altivec_vaddcuw(__a, __b); 00390 } 00391 00392 /* vec_vaddcuw */ 00393 00394 static vector unsigned int __attribute__((__always_inline__)) 00395 vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) 00396 { 00397 return __builtin_altivec_vaddcuw(__a, __b); 00398 } 00399 00400 /* vec_adds */ 00401 00402 static vector signed char __ATTRS_o_ai 00403 vec_adds(vector signed char __a, vector signed char __b) 00404 { 00405 return __builtin_altivec_vaddsbs(__a, __b); 00406 } 00407 00408 static vector signed char __ATTRS_o_ai 00409 vec_adds(vector bool char __a, vector signed char __b) 00410 { 00411 return __builtin_altivec_vaddsbs((vector signed char)__a, __b); 00412 } 00413 00414 static vector signed char __ATTRS_o_ai 00415 vec_adds(vector signed char __a, vector bool char __b) 00416 { 00417 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b); 00418 } 00419 00420 static vector unsigned char __ATTRS_o_ai 00421 vec_adds(vector unsigned char __a, vector unsigned char __b) 00422 { 00423 return __builtin_altivec_vaddubs(__a, __b); 00424 } 00425 00426 static vector unsigned char __ATTRS_o_ai 00427 vec_adds(vector bool char __a, vector unsigned char __b) 00428 { 00429 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b); 00430 } 00431 00432 static vector unsigned char __ATTRS_o_ai 00433 vec_adds(vector unsigned char __a, vector bool char __b) 00434 { 00435 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b); 00436 } 00437 00438 static vector short __ATTRS_o_ai 00439 vec_adds(vector short __a, vector short __b) 00440 { 00441 return __builtin_altivec_vaddshs(__a, __b); 00442 } 00443 00444 static vector short __ATTRS_o_ai 00445 vec_adds(vector bool short __a, vector short __b) 00446 { 00447 return __builtin_altivec_vaddshs((vector short)__a, __b); 00448 } 00449 00450 static vector short __ATTRS_o_ai 00451 vec_adds(vector short __a, vector bool short __b) 00452 { 00453 return __builtin_altivec_vaddshs(__a, (vector short)__b); 00454 } 00455 00456 static vector unsigned short __ATTRS_o_ai 00457 vec_adds(vector unsigned short __a, vector unsigned short __b) 00458 { 00459 return __builtin_altivec_vadduhs(__a, __b); 00460 } 00461 00462 static vector unsigned short __ATTRS_o_ai 00463 vec_adds(vector bool short __a, vector unsigned short __b) 00464 { 00465 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b); 00466 } 00467 00468 static vector unsigned short __ATTRS_o_ai 00469 vec_adds(vector unsigned short __a, vector bool short __b) 00470 { 00471 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b); 00472 } 00473 00474 static vector int __ATTRS_o_ai 00475 vec_adds(vector int __a, vector int __b) 00476 { 00477 return __builtin_altivec_vaddsws(__a, __b); 00478 } 00479 00480 static vector int __ATTRS_o_ai 00481 vec_adds(vector bool int __a, vector int __b) 00482 { 00483 return __builtin_altivec_vaddsws((vector int)__a, __b); 00484 } 00485 00486 static vector int __ATTRS_o_ai 00487 vec_adds(vector int __a, vector bool int __b) 00488 { 00489 return __builtin_altivec_vaddsws(__a, (vector int)__b); 00490 } 00491 00492 static vector unsigned int __ATTRS_o_ai 00493 vec_adds(vector unsigned int __a, vector unsigned int __b) 00494 { 00495 return __builtin_altivec_vadduws(__a, __b); 00496 } 00497 00498 static vector unsigned int __ATTRS_o_ai 00499 vec_adds(vector bool int __a, vector unsigned int __b) 00500 { 00501 return __builtin_altivec_vadduws((vector unsigned int)__a, __b); 00502 } 00503 00504 static vector unsigned int __ATTRS_o_ai 00505 vec_adds(vector unsigned int __a, vector bool int __b) 00506 { 00507 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b); 00508 } 00509 00510 /* vec_vaddsbs */ 00511 00512 static vector signed char __ATTRS_o_ai 00513 vec_vaddsbs(vector signed char __a, vector signed char __b) 00514 { 00515 return __builtin_altivec_vaddsbs(__a, __b); 00516 } 00517 00518 static vector signed char __ATTRS_o_ai 00519 vec_vaddsbs(vector bool char __a, vector signed char __b) 00520 { 00521 return __builtin_altivec_vaddsbs((vector signed char)__a, __b); 00522 } 00523 00524 static vector signed char __ATTRS_o_ai 00525 vec_vaddsbs(vector signed char __a, vector bool char __b) 00526 { 00527 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b); 00528 } 00529 00530 /* vec_vaddubs */ 00531 00532 static vector unsigned char __ATTRS_o_ai 00533 vec_vaddubs(vector unsigned char __a, vector unsigned char __b) 00534 { 00535 return __builtin_altivec_vaddubs(__a, __b); 00536 } 00537 00538 static vector unsigned char __ATTRS_o_ai 00539 vec_vaddubs(vector bool char __a, vector unsigned char __b) 00540 { 00541 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b); 00542 } 00543 00544 static vector unsigned char __ATTRS_o_ai 00545 vec_vaddubs(vector unsigned char __a, vector bool char __b) 00546 { 00547 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b); 00548 } 00549 00550 /* vec_vaddshs */ 00551 00552 static vector short __ATTRS_o_ai 00553 vec_vaddshs(vector short __a, vector short __b) 00554 { 00555 return __builtin_altivec_vaddshs(__a, __b); 00556 } 00557 00558 static vector short __ATTRS_o_ai 00559 vec_vaddshs(vector bool short __a, vector short __b) 00560 { 00561 return __builtin_altivec_vaddshs((vector short)__a, __b); 00562 } 00563 00564 static vector short __ATTRS_o_ai 00565 vec_vaddshs(vector short __a, vector bool short __b) 00566 { 00567 return __builtin_altivec_vaddshs(__a, (vector short)__b); 00568 } 00569 00570 /* vec_vadduhs */ 00571 00572 static vector unsigned short __ATTRS_o_ai 00573 vec_vadduhs(vector unsigned short __a, vector unsigned short __b) 00574 { 00575 return __builtin_altivec_vadduhs(__a, __b); 00576 } 00577 00578 static vector unsigned short __ATTRS_o_ai 00579 vec_vadduhs(vector bool short __a, vector unsigned short __b) 00580 { 00581 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b); 00582 } 00583 00584 static vector unsigned short __ATTRS_o_ai 00585 vec_vadduhs(vector unsigned short __a, vector bool short __b) 00586 { 00587 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b); 00588 } 00589 00590 /* vec_vaddsws */ 00591 00592 static vector int __ATTRS_o_ai 00593 vec_vaddsws(vector int __a, vector int __b) 00594 { 00595 return __builtin_altivec_vaddsws(__a, __b); 00596 } 00597 00598 static vector int __ATTRS_o_ai 00599 vec_vaddsws(vector bool int __a, vector int __b) 00600 { 00601 return __builtin_altivec_vaddsws((vector int)__a, __b); 00602 } 00603 00604 static vector int __ATTRS_o_ai 00605 vec_vaddsws(vector int __a, vector bool int __b) 00606 { 00607 return __builtin_altivec_vaddsws(__a, (vector int)__b); 00608 } 00609 00610 /* vec_vadduws */ 00611 00612 static vector unsigned int __ATTRS_o_ai 00613 vec_vadduws(vector unsigned int __a, vector unsigned int __b) 00614 { 00615 return __builtin_altivec_vadduws(__a, __b); 00616 } 00617 00618 static vector unsigned int __ATTRS_o_ai 00619 vec_vadduws(vector bool int __a, vector unsigned int __b) 00620 { 00621 return __builtin_altivec_vadduws((vector unsigned int)__a, __b); 00622 } 00623 00624 static vector unsigned int __ATTRS_o_ai 00625 vec_vadduws(vector unsigned int __a, vector bool int __b) 00626 { 00627 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b); 00628 } 00629 00630 /* vec_and */ 00631 00632 #define __builtin_altivec_vand vec_and 00633 00634 static vector signed char __ATTRS_o_ai 00635 vec_and(vector signed char __a, vector signed char __b) 00636 { 00637 return __a & __b; 00638 } 00639 00640 static vector signed char __ATTRS_o_ai 00641 vec_and(vector bool char __a, vector signed char __b) 00642 { 00643 return (vector signed char)__a & __b; 00644 } 00645 00646 static vector signed char __ATTRS_o_ai 00647 vec_and(vector signed char __a, vector bool char __b) 00648 { 00649 return __a & (vector signed char)__b; 00650 } 00651 00652 static vector unsigned char __ATTRS_o_ai 00653 vec_and(vector unsigned char __a, vector unsigned char __b) 00654 { 00655 return __a & __b; 00656 } 00657 00658 static vector unsigned char __ATTRS_o_ai 00659 vec_and(vector bool char __a, vector unsigned char __b) 00660 { 00661 return (vector unsigned char)__a & __b; 00662 } 00663 00664 static vector unsigned char __ATTRS_o_ai 00665 vec_and(vector unsigned char __a, vector bool char __b) 00666 { 00667 return __a & (vector unsigned char)__b; 00668 } 00669 00670 static vector bool char __ATTRS_o_ai 00671 vec_and(vector bool char __a, vector bool char __b) 00672 { 00673 return __a & __b; 00674 } 00675 00676 static vector short __ATTRS_o_ai 00677 vec_and(vector short __a, vector short __b) 00678 { 00679 return __a & __b; 00680 } 00681 00682 static vector short __ATTRS_o_ai 00683 vec_and(vector bool short __a, vector short __b) 00684 { 00685 return (vector short)__a & __b; 00686 } 00687 00688 static vector short __ATTRS_o_ai 00689 vec_and(vector short __a, vector bool short __b) 00690 { 00691 return __a & (vector short)__b; 00692 } 00693 00694 static vector unsigned short __ATTRS_o_ai 00695 vec_and(vector unsigned short __a, vector unsigned short __b) 00696 { 00697 return __a & __b; 00698 } 00699 00700 static vector unsigned short __ATTRS_o_ai 00701 vec_and(vector bool short __a, vector unsigned short __b) 00702 { 00703 return (vector unsigned short)__a & __b; 00704 } 00705 00706 static vector unsigned short __ATTRS_o_ai 00707 vec_and(vector unsigned short __a, vector bool short __b) 00708 { 00709 return __a & (vector unsigned short)__b; 00710 } 00711 00712 static vector bool short __ATTRS_o_ai 00713 vec_and(vector bool short __a, vector bool short __b) 00714 { 00715 return __a & __b; 00716 } 00717 00718 static vector int __ATTRS_o_ai 00719 vec_and(vector int __a, vector int __b) 00720 { 00721 return __a & __b; 00722 } 00723 00724 static vector int __ATTRS_o_ai 00725 vec_and(vector bool int __a, vector int __b) 00726 { 00727 return (vector int)__a & __b; 00728 } 00729 00730 static vector int __ATTRS_o_ai 00731 vec_and(vector int __a, vector bool int __b) 00732 { 00733 return __a & (vector int)__b; 00734 } 00735 00736 static vector unsigned int __ATTRS_o_ai 00737 vec_and(vector unsigned int __a, vector unsigned int __b) 00738 { 00739 return __a & __b; 00740 } 00741 00742 static vector unsigned int __ATTRS_o_ai 00743 vec_and(vector bool int __a, vector unsigned int __b) 00744 { 00745 return (vector unsigned int)__a & __b; 00746 } 00747 00748 static vector unsigned int __ATTRS_o_ai 00749 vec_and(vector unsigned int __a, vector bool int __b) 00750 { 00751 return __a & (vector unsigned int)__b; 00752 } 00753 00754 static vector bool int __ATTRS_o_ai 00755 vec_and(vector bool int __a, vector bool int __b) 00756 { 00757 return __a & __b; 00758 } 00759 00760 static vector float __ATTRS_o_ai 00761 vec_and(vector float __a, vector float __b) 00762 { 00763 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; 00764 return (vector float)__res; 00765 } 00766 00767 static vector float __ATTRS_o_ai 00768 vec_and(vector bool int __a, vector float __b) 00769 { 00770 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; 00771 return (vector float)__res; 00772 } 00773 00774 static vector float __ATTRS_o_ai 00775 vec_and(vector float __a, vector bool int __b) 00776 { 00777 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; 00778 return (vector float)__res; 00779 } 00780 00781 /* vec_vand */ 00782 00783 static vector signed char __ATTRS_o_ai 00784 vec_vand(vector signed char __a, vector signed char __b) 00785 { 00786 return __a & __b; 00787 } 00788 00789 static vector signed char __ATTRS_o_ai 00790 vec_vand(vector bool char __a, vector signed char __b) 00791 { 00792 return (vector signed char)__a & __b; 00793 } 00794 00795 static vector signed char __ATTRS_o_ai 00796 vec_vand(vector signed char __a, vector bool char __b) 00797 { 00798 return __a & (vector signed char)__b; 00799 } 00800 00801 static vector unsigned char __ATTRS_o_ai 00802 vec_vand(vector unsigned char __a, vector unsigned char __b) 00803 { 00804 return __a & __b; 00805 } 00806 00807 static vector unsigned char __ATTRS_o_ai 00808 vec_vand(vector bool char __a, vector unsigned char __b) 00809 { 00810 return (vector unsigned char)__a & __b; 00811 } 00812 00813 static vector unsigned char __ATTRS_o_ai 00814 vec_vand(vector unsigned char __a, vector bool char __b) 00815 { 00816 return __a & (vector unsigned char)__b; 00817 } 00818 00819 static vector bool char __ATTRS_o_ai 00820 vec_vand(vector bool char __a, vector bool char __b) 00821 { 00822 return __a & __b; 00823 } 00824 00825 static vector short __ATTRS_o_ai 00826 vec_vand(vector short __a, vector short __b) 00827 { 00828 return __a & __b; 00829 } 00830 00831 static vector short __ATTRS_o_ai 00832 vec_vand(vector bool short __a, vector short __b) 00833 { 00834 return (vector short)__a & __b; 00835 } 00836 00837 static vector short __ATTRS_o_ai 00838 vec_vand(vector short __a, vector bool short __b) 00839 { 00840 return __a & (vector short)__b; 00841 } 00842 00843 static vector unsigned short __ATTRS_o_ai 00844 vec_vand(vector unsigned short __a, vector unsigned short __b) 00845 { 00846 return __a & __b; 00847 } 00848 00849 static vector unsigned short __ATTRS_o_ai 00850 vec_vand(vector bool short __a, vector unsigned short __b) 00851 { 00852 return (vector unsigned short)__a & __b; 00853 } 00854 00855 static vector unsigned short __ATTRS_o_ai 00856 vec_vand(vector unsigned short __a, vector bool short __b) 00857 { 00858 return __a & (vector unsigned short)__b; 00859 } 00860 00861 static vector bool short __ATTRS_o_ai 00862 vec_vand(vector bool short __a, vector bool short __b) 00863 { 00864 return __a & __b; 00865 } 00866 00867 static vector int __ATTRS_o_ai 00868 vec_vand(vector int __a, vector int __b) 00869 { 00870 return __a & __b; 00871 } 00872 00873 static vector int __ATTRS_o_ai 00874 vec_vand(vector bool int __a, vector int __b) 00875 { 00876 return (vector int)__a & __b; 00877 } 00878 00879 static vector int __ATTRS_o_ai 00880 vec_vand(vector int __a, vector bool int __b) 00881 { 00882 return __a & (vector int)__b; 00883 } 00884 00885 static vector unsigned int __ATTRS_o_ai 00886 vec_vand(vector unsigned int __a, vector unsigned int __b) 00887 { 00888 return __a & __b; 00889 } 00890 00891 static vector unsigned int __ATTRS_o_ai 00892 vec_vand(vector bool int __a, vector unsigned int __b) 00893 { 00894 return (vector unsigned int)__a & __b; 00895 } 00896 00897 static vector unsigned int __ATTRS_o_ai 00898 vec_vand(vector unsigned int __a, vector bool int __b) 00899 { 00900 return __a & (vector unsigned int)__b; 00901 } 00902 00903 static vector bool int __ATTRS_o_ai 00904 vec_vand(vector bool int __a, vector bool int __b) 00905 { 00906 return __a & __b; 00907 } 00908 00909 static vector float __ATTRS_o_ai 00910 vec_vand(vector float __a, vector float __b) 00911 { 00912 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; 00913 return (vector float)__res; 00914 } 00915 00916 static vector float __ATTRS_o_ai 00917 vec_vand(vector bool int __a, vector float __b) 00918 { 00919 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; 00920 return (vector float)__res; 00921 } 00922 00923 static vector float __ATTRS_o_ai 00924 vec_vand(vector float __a, vector bool int __b) 00925 { 00926 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b; 00927 return (vector float)__res; 00928 } 00929 00930 /* vec_andc */ 00931 00932 #define __builtin_altivec_vandc vec_andc 00933 00934 static vector signed char __ATTRS_o_ai 00935 vec_andc(vector signed char __a, vector signed char __b) 00936 { 00937 return __a & ~__b; 00938 } 00939 00940 static vector signed char __ATTRS_o_ai 00941 vec_andc(vector bool char __a, vector signed char __b) 00942 { 00943 return (vector signed char)__a & ~__b; 00944 } 00945 00946 static vector signed char __ATTRS_o_ai 00947 vec_andc(vector signed char __a, vector bool char __b) 00948 { 00949 return __a & ~(vector signed char)__b; 00950 } 00951 00952 static vector unsigned char __ATTRS_o_ai 00953 vec_andc(vector unsigned char __a, vector unsigned char __b) 00954 { 00955 return __a & ~__b; 00956 } 00957 00958 static vector unsigned char __ATTRS_o_ai 00959 vec_andc(vector bool char __a, vector unsigned char __b) 00960 { 00961 return (vector unsigned char)__a & ~__b; 00962 } 00963 00964 static vector unsigned char __ATTRS_o_ai 00965 vec_andc(vector unsigned char __a, vector bool char __b) 00966 { 00967 return __a & ~(vector unsigned char)__b; 00968 } 00969 00970 static vector bool char __ATTRS_o_ai 00971 vec_andc(vector bool char __a, vector bool char __b) 00972 { 00973 return __a & ~__b; 00974 } 00975 00976 static vector short __ATTRS_o_ai 00977 vec_andc(vector short __a, vector short __b) 00978 { 00979 return __a & ~__b; 00980 } 00981 00982 static vector short __ATTRS_o_ai 00983 vec_andc(vector bool short __a, vector short __b) 00984 { 00985 return (vector short)__a & ~__b; 00986 } 00987 00988 static vector short __ATTRS_o_ai 00989 vec_andc(vector short __a, vector bool short __b) 00990 { 00991 return __a & ~(vector short)__b; 00992 } 00993 00994 static vector unsigned short __ATTRS_o_ai 00995 vec_andc(vector unsigned short __a, vector unsigned short __b) 00996 { 00997 return __a & ~__b; 00998 } 00999 01000 static vector unsigned short __ATTRS_o_ai 01001 vec_andc(vector bool short __a, vector unsigned short __b) 01002 { 01003 return (vector unsigned short)__a & ~__b; 01004 } 01005 01006 static vector unsigned short __ATTRS_o_ai 01007 vec_andc(vector unsigned short __a, vector bool short __b) 01008 { 01009 return __a & ~(vector unsigned short)__b; 01010 } 01011 01012 static vector bool short __ATTRS_o_ai 01013 vec_andc(vector bool short __a, vector bool short __b) 01014 { 01015 return __a & ~__b; 01016 } 01017 01018 static vector int __ATTRS_o_ai 01019 vec_andc(vector int __a, vector int __b) 01020 { 01021 return __a & ~__b; 01022 } 01023 01024 static vector int __ATTRS_o_ai 01025 vec_andc(vector bool int __a, vector int __b) 01026 { 01027 return (vector int)__a & ~__b; 01028 } 01029 01030 static vector int __ATTRS_o_ai 01031 vec_andc(vector int __a, vector bool int __b) 01032 { 01033 return __a & ~(vector int)__b; 01034 } 01035 01036 static vector unsigned int __ATTRS_o_ai 01037 vec_andc(vector unsigned int __a, vector unsigned int __b) 01038 { 01039 return __a & ~__b; 01040 } 01041 01042 static vector unsigned int __ATTRS_o_ai 01043 vec_andc(vector bool int __a, vector unsigned int __b) 01044 { 01045 return (vector unsigned int)__a & ~__b; 01046 } 01047 01048 static vector unsigned int __ATTRS_o_ai 01049 vec_andc(vector unsigned int __a, vector bool int __b) 01050 { 01051 return __a & ~(vector unsigned int)__b; 01052 } 01053 01054 static vector bool int __ATTRS_o_ai 01055 vec_andc(vector bool int __a, vector bool int __b) 01056 { 01057 return __a & ~__b; 01058 } 01059 01060 static vector float __ATTRS_o_ai 01061 vec_andc(vector float __a, vector float __b) 01062 { 01063 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; 01064 return (vector float)__res; 01065 } 01066 01067 static vector float __ATTRS_o_ai 01068 vec_andc(vector bool int __a, vector float __b) 01069 { 01070 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; 01071 return (vector float)__res; 01072 } 01073 01074 static vector float __ATTRS_o_ai 01075 vec_andc(vector float __a, vector bool int __b) 01076 { 01077 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; 01078 return (vector float)__res; 01079 } 01080 01081 /* vec_vandc */ 01082 01083 static vector signed char __ATTRS_o_ai 01084 vec_vandc(vector signed char __a, vector signed char __b) 01085 { 01086 return __a & ~__b; 01087 } 01088 01089 static vector signed char __ATTRS_o_ai 01090 vec_vandc(vector bool char __a, vector signed char __b) 01091 { 01092 return (vector signed char)__a & ~__b; 01093 } 01094 01095 static vector signed char __ATTRS_o_ai 01096 vec_vandc(vector signed char __a, vector bool char __b) 01097 { 01098 return __a & ~(vector signed char)__b; 01099 } 01100 01101 static vector unsigned char __ATTRS_o_ai 01102 vec_vandc(vector unsigned char __a, vector unsigned char __b) 01103 { 01104 return __a & ~__b; 01105 } 01106 01107 static vector unsigned char __ATTRS_o_ai 01108 vec_vandc(vector bool char __a, vector unsigned char __b) 01109 { 01110 return (vector unsigned char)__a & ~__b; 01111 } 01112 01113 static vector unsigned char __ATTRS_o_ai 01114 vec_vandc(vector unsigned char __a, vector bool char __b) 01115 { 01116 return __a & ~(vector unsigned char)__b; 01117 } 01118 01119 static vector bool char __ATTRS_o_ai 01120 vec_vandc(vector bool char __a, vector bool char __b) 01121 { 01122 return __a & ~__b; 01123 } 01124 01125 static vector short __ATTRS_o_ai 01126 vec_vandc(vector short __a, vector short __b) 01127 { 01128 return __a & ~__b; 01129 } 01130 01131 static vector short __ATTRS_o_ai 01132 vec_vandc(vector bool short __a, vector short __b) 01133 { 01134 return (vector short)__a & ~__b; 01135 } 01136 01137 static vector short __ATTRS_o_ai 01138 vec_vandc(vector short __a, vector bool short __b) 01139 { 01140 return __a & ~(vector short)__b; 01141 } 01142 01143 static vector unsigned short __ATTRS_o_ai 01144 vec_vandc(vector unsigned short __a, vector unsigned short __b) 01145 { 01146 return __a & ~__b; 01147 } 01148 01149 static vector unsigned short __ATTRS_o_ai 01150 vec_vandc(vector bool short __a, vector unsigned short __b) 01151 { 01152 return (vector unsigned short)__a & ~__b; 01153 } 01154 01155 static vector unsigned short __ATTRS_o_ai 01156 vec_vandc(vector unsigned short __a, vector bool short __b) 01157 { 01158 return __a & ~(vector unsigned short)__b; 01159 } 01160 01161 static vector bool short __ATTRS_o_ai 01162 vec_vandc(vector bool short __a, vector bool short __b) 01163 { 01164 return __a & ~__b; 01165 } 01166 01167 static vector int __ATTRS_o_ai 01168 vec_vandc(vector int __a, vector int __b) 01169 { 01170 return __a & ~__b; 01171 } 01172 01173 static vector int __ATTRS_o_ai 01174 vec_vandc(vector bool int __a, vector int __b) 01175 { 01176 return (vector int)__a & ~__b; 01177 } 01178 01179 static vector int __ATTRS_o_ai 01180 vec_vandc(vector int __a, vector bool int __b) 01181 { 01182 return __a & ~(vector int)__b; 01183 } 01184 01185 static vector unsigned int __ATTRS_o_ai 01186 vec_vandc(vector unsigned int __a, vector unsigned int __b) 01187 { 01188 return __a & ~__b; 01189 } 01190 01191 static vector unsigned int __ATTRS_o_ai 01192 vec_vandc(vector bool int __a, vector unsigned int __b) 01193 { 01194 return (vector unsigned int)__a & ~__b; 01195 } 01196 01197 static vector unsigned int __ATTRS_o_ai 01198 vec_vandc(vector unsigned int __a, vector bool int __b) 01199 { 01200 return __a & ~(vector unsigned int)__b; 01201 } 01202 01203 static vector bool int __ATTRS_o_ai 01204 vec_vandc(vector bool int __a, vector bool int __b) 01205 { 01206 return __a & ~__b; 01207 } 01208 01209 static vector float __ATTRS_o_ai 01210 vec_vandc(vector float __a, vector float __b) 01211 { 01212 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; 01213 return (vector float)__res; 01214 } 01215 01216 static vector float __ATTRS_o_ai 01217 vec_vandc(vector bool int __a, vector float __b) 01218 { 01219 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; 01220 return (vector float)__res; 01221 } 01222 01223 static vector float __ATTRS_o_ai 01224 vec_vandc(vector float __a, vector bool int __b) 01225 { 01226 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b; 01227 return (vector float)__res; 01228 } 01229 01230 /* vec_avg */ 01231 01232 static vector signed char __ATTRS_o_ai 01233 vec_avg(vector signed char __a, vector signed char __b) 01234 { 01235 return __builtin_altivec_vavgsb(__a, __b); 01236 } 01237 01238 static vector unsigned char __ATTRS_o_ai 01239 vec_avg(vector unsigned char __a, vector unsigned char __b) 01240 { 01241 return __builtin_altivec_vavgub(__a, __b); 01242 } 01243 01244 static vector short __ATTRS_o_ai 01245 vec_avg(vector short __a, vector short __b) 01246 { 01247 return __builtin_altivec_vavgsh(__a, __b); 01248 } 01249 01250 static vector unsigned short __ATTRS_o_ai 01251 vec_avg(vector unsigned short __a, vector unsigned short __b) 01252 { 01253 return __builtin_altivec_vavguh(__a, __b); 01254 } 01255 01256 static vector int __ATTRS_o_ai 01257 vec_avg(vector int __a, vector int __b) 01258 { 01259 return __builtin_altivec_vavgsw(__a, __b); 01260 } 01261 01262 static vector unsigned int __ATTRS_o_ai 01263 vec_avg(vector unsigned int __a, vector unsigned int __b) 01264 { 01265 return __builtin_altivec_vavguw(__a, __b); 01266 } 01267 01268 /* vec_vavgsb */ 01269 01270 static vector signed char __attribute__((__always_inline__)) 01271 vec_vavgsb(vector signed char __a, vector signed char __b) 01272 { 01273 return __builtin_altivec_vavgsb(__a, __b); 01274 } 01275 01276 /* vec_vavgub */ 01277 01278 static vector unsigned char __attribute__((__always_inline__)) 01279 vec_vavgub(vector unsigned char __a, vector unsigned char __b) 01280 { 01281 return __builtin_altivec_vavgub(__a, __b); 01282 } 01283 01284 /* vec_vavgsh */ 01285 01286 static vector short __attribute__((__always_inline__)) 01287 vec_vavgsh(vector short __a, vector short __b) 01288 { 01289 return __builtin_altivec_vavgsh(__a, __b); 01290 } 01291 01292 /* vec_vavguh */ 01293 01294 static vector unsigned short __attribute__((__always_inline__)) 01295 vec_vavguh(vector unsigned short __a, vector unsigned short __b) 01296 { 01297 return __builtin_altivec_vavguh(__a, __b); 01298 } 01299 01300 /* vec_vavgsw */ 01301 01302 static vector int __attribute__((__always_inline__)) 01303 vec_vavgsw(vector int __a, vector int __b) 01304 { 01305 return __builtin_altivec_vavgsw(__a, __b); 01306 } 01307 01308 /* vec_vavguw */ 01309 01310 static vector unsigned int __attribute__((__always_inline__)) 01311 vec_vavguw(vector unsigned int __a, vector unsigned int __b) 01312 { 01313 return __builtin_altivec_vavguw(__a, __b); 01314 } 01315 01316 /* vec_ceil */ 01317 01318 static vector float __attribute__((__always_inline__)) 01319 vec_ceil(vector float __a) 01320 { 01321 return __builtin_altivec_vrfip(__a); 01322 } 01323 01324 /* vec_vrfip */ 01325 01326 static vector float __attribute__((__always_inline__)) 01327 vec_vrfip(vector float __a) 01328 { 01329 return __builtin_altivec_vrfip(__a); 01330 } 01331 01332 /* vec_cmpb */ 01333 01334 static vector int __attribute__((__always_inline__)) 01335 vec_cmpb(vector float __a, vector float __b) 01336 { 01337 return __builtin_altivec_vcmpbfp(__a, __b); 01338 } 01339 01340 /* vec_vcmpbfp */ 01341 01342 static vector int __attribute__((__always_inline__)) 01343 vec_vcmpbfp(vector float __a, vector float __b) 01344 { 01345 return __builtin_altivec_vcmpbfp(__a, __b); 01346 } 01347 01348 /* vec_cmpeq */ 01349 01350 static vector bool char __ATTRS_o_ai 01351 vec_cmpeq(vector signed char __a, vector signed char __b) 01352 { 01353 return (vector bool char) 01354 __builtin_altivec_vcmpequb((vector char)__a, (vector char)__b); 01355 } 01356 01357 static vector bool char __ATTRS_o_ai 01358 vec_cmpeq(vector unsigned char __a, vector unsigned char __b) 01359 { 01360 return (vector bool char) 01361 __builtin_altivec_vcmpequb((vector char)__a, (vector char)__b); 01362 } 01363 01364 static vector bool short __ATTRS_o_ai 01365 vec_cmpeq(vector short __a, vector short __b) 01366 { 01367 return (vector bool short)__builtin_altivec_vcmpequh(__a, __b); 01368 } 01369 01370 static vector bool short __ATTRS_o_ai 01371 vec_cmpeq(vector unsigned short __a, vector unsigned short __b) 01372 { 01373 return (vector bool short) 01374 __builtin_altivec_vcmpequh((vector short)__a, (vector short)__b); 01375 } 01376 01377 static vector bool int __ATTRS_o_ai 01378 vec_cmpeq(vector int __a, vector int __b) 01379 { 01380 return (vector bool int)__builtin_altivec_vcmpequw(__a, __b); 01381 } 01382 01383 static vector bool int __ATTRS_o_ai 01384 vec_cmpeq(vector unsigned int __a, vector unsigned int __b) 01385 { 01386 return (vector bool int) 01387 __builtin_altivec_vcmpequw((vector int)__a, (vector int)__b); 01388 } 01389 01390 static vector bool int __ATTRS_o_ai 01391 vec_cmpeq(vector float __a, vector float __b) 01392 { 01393 return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b); 01394 } 01395 01396 /* vec_cmpge */ 01397 01398 static vector bool int __attribute__((__always_inline__)) 01399 vec_cmpge(vector float __a, vector float __b) 01400 { 01401 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b); 01402 } 01403 01404 /* vec_vcmpgefp */ 01405 01406 static vector bool int __attribute__((__always_inline__)) 01407 vec_vcmpgefp(vector float __a, vector float __b) 01408 { 01409 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b); 01410 } 01411 01412 /* vec_cmpgt */ 01413 01414 static vector bool char __ATTRS_o_ai 01415 vec_cmpgt(vector signed char __a, vector signed char __b) 01416 { 01417 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b); 01418 } 01419 01420 static vector bool char __ATTRS_o_ai 01421 vec_cmpgt(vector unsigned char __a, vector unsigned char __b) 01422 { 01423 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b); 01424 } 01425 01426 static vector bool short __ATTRS_o_ai 01427 vec_cmpgt(vector short __a, vector short __b) 01428 { 01429 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b); 01430 } 01431 01432 static vector bool short __ATTRS_o_ai 01433 vec_cmpgt(vector unsigned short __a, vector unsigned short __b) 01434 { 01435 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b); 01436 } 01437 01438 static vector bool int __ATTRS_o_ai 01439 vec_cmpgt(vector int __a, vector int __b) 01440 { 01441 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b); 01442 } 01443 01444 static vector bool int __ATTRS_o_ai 01445 vec_cmpgt(vector unsigned int __a, vector unsigned int __b) 01446 { 01447 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b); 01448 } 01449 01450 static vector bool int __ATTRS_o_ai 01451 vec_cmpgt(vector float __a, vector float __b) 01452 { 01453 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b); 01454 } 01455 01456 /* vec_vcmpgtsb */ 01457 01458 static vector bool char __attribute__((__always_inline__)) 01459 vec_vcmpgtsb(vector signed char __a, vector signed char __b) 01460 { 01461 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b); 01462 } 01463 01464 /* vec_vcmpgtub */ 01465 01466 static vector bool char __attribute__((__always_inline__)) 01467 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) 01468 { 01469 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b); 01470 } 01471 01472 /* vec_vcmpgtsh */ 01473 01474 static vector bool short __attribute__((__always_inline__)) 01475 vec_vcmpgtsh(vector short __a, vector short __b) 01476 { 01477 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b); 01478 } 01479 01480 /* vec_vcmpgtuh */ 01481 01482 static vector bool short __attribute__((__always_inline__)) 01483 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) 01484 { 01485 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b); 01486 } 01487 01488 /* vec_vcmpgtsw */ 01489 01490 static vector bool int __attribute__((__always_inline__)) 01491 vec_vcmpgtsw(vector int __a, vector int __b) 01492 { 01493 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b); 01494 } 01495 01496 /* vec_vcmpgtuw */ 01497 01498 static vector bool int __attribute__((__always_inline__)) 01499 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) 01500 { 01501 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b); 01502 } 01503 01504 /* vec_vcmpgtfp */ 01505 01506 static vector bool int __attribute__((__always_inline__)) 01507 vec_vcmpgtfp(vector float __a, vector float __b) 01508 { 01509 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b); 01510 } 01511 01512 /* vec_cmple */ 01513 01514 static vector bool int __attribute__((__always_inline__)) 01515 vec_cmple(vector float __a, vector float __b) 01516 { 01517 return (vector bool int)__builtin_altivec_vcmpgefp(__b, __a); 01518 } 01519 01520 /* vec_cmplt */ 01521 01522 static vector bool char __ATTRS_o_ai 01523 vec_cmplt(vector signed char __a, vector signed char __b) 01524 { 01525 return (vector bool char)__builtin_altivec_vcmpgtsb(__b, __a); 01526 } 01527 01528 static vector bool char __ATTRS_o_ai 01529 vec_cmplt(vector unsigned char __a, vector unsigned char __b) 01530 { 01531 return (vector bool char)__builtin_altivec_vcmpgtub(__b, __a); 01532 } 01533 01534 static vector bool short __ATTRS_o_ai 01535 vec_cmplt(vector short __a, vector short __b) 01536 { 01537 return (vector bool short)__builtin_altivec_vcmpgtsh(__b, __a); 01538 } 01539 01540 static vector bool short __ATTRS_o_ai 01541 vec_cmplt(vector unsigned short __a, vector unsigned short __b) 01542 { 01543 return (vector bool short)__builtin_altivec_vcmpgtuh(__b, __a); 01544 } 01545 01546 static vector bool int __ATTRS_o_ai 01547 vec_cmplt(vector int __a, vector int __b) 01548 { 01549 return (vector bool int)__builtin_altivec_vcmpgtsw(__b, __a); 01550 } 01551 01552 static vector bool int __ATTRS_o_ai 01553 vec_cmplt(vector unsigned int __a, vector unsigned int __b) 01554 { 01555 return (vector bool int)__builtin_altivec_vcmpgtuw(__b, __a); 01556 } 01557 01558 static vector bool int __ATTRS_o_ai 01559 vec_cmplt(vector float __a, vector float __b) 01560 { 01561 return (vector bool int)__builtin_altivec_vcmpgtfp(__b, __a); 01562 } 01563 01564 /* vec_ctf */ 01565 01566 static vector float __ATTRS_o_ai 01567 vec_ctf(vector int __a, int __b) 01568 { 01569 return __builtin_altivec_vcfsx(__a, __b); 01570 } 01571 01572 static vector float __ATTRS_o_ai 01573 vec_ctf(vector unsigned int __a, int __b) 01574 { 01575 return __builtin_altivec_vcfux((vector int)__a, __b); 01576 } 01577 01578 /* vec_vcfsx */ 01579 01580 static vector float __attribute__((__always_inline__)) 01581 vec_vcfsx(vector int __a, int __b) 01582 { 01583 return __builtin_altivec_vcfsx(__a, __b); 01584 } 01585 01586 /* vec_vcfux */ 01587 01588 static vector float __attribute__((__always_inline__)) 01589 vec_vcfux(vector unsigned int __a, int __b) 01590 { 01591 return __builtin_altivec_vcfux((vector int)__a, __b); 01592 } 01593 01594 /* vec_cts */ 01595 01596 static vector int __attribute__((__always_inline__)) 01597 vec_cts(vector float __a, int __b) 01598 { 01599 return __builtin_altivec_vctsxs(__a, __b); 01600 } 01601 01602 /* vec_vctsxs */ 01603 01604 static vector int __attribute__((__always_inline__)) 01605 vec_vctsxs(vector float __a, int __b) 01606 { 01607 return __builtin_altivec_vctsxs(__a, __b); 01608 } 01609 01610 /* vec_ctu */ 01611 01612 static vector unsigned int __attribute__((__always_inline__)) 01613 vec_ctu(vector float __a, int __b) 01614 { 01615 return __builtin_altivec_vctuxs(__a, __b); 01616 } 01617 01618 /* vec_vctuxs */ 01619 01620 static vector unsigned int __attribute__((__always_inline__)) 01621 vec_vctuxs(vector float __a, int __b) 01622 { 01623 return __builtin_altivec_vctuxs(__a, __b); 01624 } 01625 01626 /* vec_div */ 01627 #ifdef __VSX__ 01628 static vector float __ATTRS_o_ai 01629 vec_div(vector float __a, vector float __b) 01630 { 01631 return __builtin_vsx_xvdivsp(__a, __b); 01632 } 01633 01634 static vector double __ATTRS_o_ai 01635 vec_div(vector double __a, vector double __b) 01636 { 01637 return __builtin_vsx_xvdivdp(__a, __b); 01638 } 01639 #endif 01640 01641 /* vec_dss */ 01642 01643 static void __attribute__((__always_inline__)) 01644 vec_dss(int __a) 01645 { 01646 __builtin_altivec_dss(__a); 01647 } 01648 01649 /* vec_dssall */ 01650 01651 static void __attribute__((__always_inline__)) 01652 vec_dssall(void) 01653 { 01654 __builtin_altivec_dssall(); 01655 } 01656 01657 /* vec_dst */ 01658 01659 static void __attribute__((__always_inline__)) 01660 vec_dst(const void *__a, int __b, int __c) 01661 { 01662 __builtin_altivec_dst(__a, __b, __c); 01663 } 01664 01665 /* vec_dstst */ 01666 01667 static void __attribute__((__always_inline__)) 01668 vec_dstst(const void *__a, int __b, int __c) 01669 { 01670 __builtin_altivec_dstst(__a, __b, __c); 01671 } 01672 01673 /* vec_dststt */ 01674 01675 static void __attribute__((__always_inline__)) 01676 vec_dststt(const void *__a, int __b, int __c) 01677 { 01678 __builtin_altivec_dststt(__a, __b, __c); 01679 } 01680 01681 /* vec_dstt */ 01682 01683 static void __attribute__((__always_inline__)) 01684 vec_dstt(const void *__a, int __b, int __c) 01685 { 01686 __builtin_altivec_dstt(__a, __b, __c); 01687 } 01688 01689 /* vec_expte */ 01690 01691 static vector float __attribute__((__always_inline__)) 01692 vec_expte(vector float __a) 01693 { 01694 return __builtin_altivec_vexptefp(__a); 01695 } 01696 01697 /* vec_vexptefp */ 01698 01699 static vector float __attribute__((__always_inline__)) 01700 vec_vexptefp(vector float __a) 01701 { 01702 return __builtin_altivec_vexptefp(__a); 01703 } 01704 01705 /* vec_floor */ 01706 01707 static vector float __attribute__((__always_inline__)) 01708 vec_floor(vector float __a) 01709 { 01710 return __builtin_altivec_vrfim(__a); 01711 } 01712 01713 /* vec_vrfim */ 01714 01715 static vector float __attribute__((__always_inline__)) 01716 vec_vrfim(vector float __a) 01717 { 01718 return __builtin_altivec_vrfim(__a); 01719 } 01720 01721 /* vec_ld */ 01722 01723 static vector signed char __ATTRS_o_ai 01724 vec_ld(int __a, const vector signed char *__b) 01725 { 01726 return (vector signed char)__builtin_altivec_lvx(__a, __b); 01727 } 01728 01729 static vector signed char __ATTRS_o_ai 01730 vec_ld(int __a, const signed char *__b) 01731 { 01732 return (vector signed char)__builtin_altivec_lvx(__a, __b); 01733 } 01734 01735 static vector unsigned char __ATTRS_o_ai 01736 vec_ld(int __a, const vector unsigned char *__b) 01737 { 01738 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 01739 } 01740 01741 static vector unsigned char __ATTRS_o_ai 01742 vec_ld(int __a, const unsigned char *__b) 01743 { 01744 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 01745 } 01746 01747 static vector bool char __ATTRS_o_ai 01748 vec_ld(int __a, const vector bool char *__b) 01749 { 01750 return (vector bool char)__builtin_altivec_lvx(__a, __b); 01751 } 01752 01753 static vector short __ATTRS_o_ai 01754 vec_ld(int __a, const vector short *__b) 01755 { 01756 return (vector short)__builtin_altivec_lvx(__a, __b); 01757 } 01758 01759 static vector short __ATTRS_o_ai 01760 vec_ld(int __a, const short *__b) 01761 { 01762 return (vector short)__builtin_altivec_lvx(__a, __b); 01763 } 01764 01765 static vector unsigned short __ATTRS_o_ai 01766 vec_ld(int __a, const vector unsigned short *__b) 01767 { 01768 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 01769 } 01770 01771 static vector unsigned short __ATTRS_o_ai 01772 vec_ld(int __a, const unsigned short *__b) 01773 { 01774 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 01775 } 01776 01777 static vector bool short __ATTRS_o_ai 01778 vec_ld(int __a, const vector bool short *__b) 01779 { 01780 return (vector bool short)__builtin_altivec_lvx(__a, __b); 01781 } 01782 01783 static vector pixel __ATTRS_o_ai 01784 vec_ld(int __a, const vector pixel *__b) 01785 { 01786 return (vector pixel)__builtin_altivec_lvx(__a, __b); 01787 } 01788 01789 static vector int __ATTRS_o_ai 01790 vec_ld(int __a, const vector int *__b) 01791 { 01792 return (vector int)__builtin_altivec_lvx(__a, __b); 01793 } 01794 01795 static vector int __ATTRS_o_ai 01796 vec_ld(int __a, const int *__b) 01797 { 01798 return (vector int)__builtin_altivec_lvx(__a, __b); 01799 } 01800 01801 static vector unsigned int __ATTRS_o_ai 01802 vec_ld(int __a, const vector unsigned int *__b) 01803 { 01804 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 01805 } 01806 01807 static vector unsigned int __ATTRS_o_ai 01808 vec_ld(int __a, const unsigned int *__b) 01809 { 01810 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 01811 } 01812 01813 static vector bool int __ATTRS_o_ai 01814 vec_ld(int __a, const vector bool int *__b) 01815 { 01816 return (vector bool int)__builtin_altivec_lvx(__a, __b); 01817 } 01818 01819 static vector float __ATTRS_o_ai 01820 vec_ld(int __a, const vector float *__b) 01821 { 01822 return (vector float)__builtin_altivec_lvx(__a, __b); 01823 } 01824 01825 static vector float __ATTRS_o_ai 01826 vec_ld(int __a, const float *__b) 01827 { 01828 return (vector float)__builtin_altivec_lvx(__a, __b); 01829 } 01830 01831 /* vec_lvx */ 01832 01833 static vector signed char __ATTRS_o_ai 01834 vec_lvx(int __a, const vector signed char *__b) 01835 { 01836 return (vector signed char)__builtin_altivec_lvx(__a, __b); 01837 } 01838 01839 static vector signed char __ATTRS_o_ai 01840 vec_lvx(int __a, const signed char *__b) 01841 { 01842 return (vector signed char)__builtin_altivec_lvx(__a, __b); 01843 } 01844 01845 static vector unsigned char __ATTRS_o_ai 01846 vec_lvx(int __a, const vector unsigned char *__b) 01847 { 01848 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 01849 } 01850 01851 static vector unsigned char __ATTRS_o_ai 01852 vec_lvx(int __a, const unsigned char *__b) 01853 { 01854 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 01855 } 01856 01857 static vector bool char __ATTRS_o_ai 01858 vec_lvx(int __a, const vector bool char *__b) 01859 { 01860 return (vector bool char)__builtin_altivec_lvx(__a, __b); 01861 } 01862 01863 static vector short __ATTRS_o_ai 01864 vec_lvx(int __a, const vector short *__b) 01865 { 01866 return (vector short)__builtin_altivec_lvx(__a, __b); 01867 } 01868 01869 static vector short __ATTRS_o_ai 01870 vec_lvx(int __a, const short *__b) 01871 { 01872 return (vector short)__builtin_altivec_lvx(__a, __b); 01873 } 01874 01875 static vector unsigned short __ATTRS_o_ai 01876 vec_lvx(int __a, const vector unsigned short *__b) 01877 { 01878 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 01879 } 01880 01881 static vector unsigned short __ATTRS_o_ai 01882 vec_lvx(int __a, const unsigned short *__b) 01883 { 01884 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 01885 } 01886 01887 static vector bool short __ATTRS_o_ai 01888 vec_lvx(int __a, const vector bool short *__b) 01889 { 01890 return (vector bool short)__builtin_altivec_lvx(__a, __b); 01891 } 01892 01893 static vector pixel __ATTRS_o_ai 01894 vec_lvx(int __a, const vector pixel *__b) 01895 { 01896 return (vector pixel)__builtin_altivec_lvx(__a, __b); 01897 } 01898 01899 static vector int __ATTRS_o_ai 01900 vec_lvx(int __a, const vector int *__b) 01901 { 01902 return (vector int)__builtin_altivec_lvx(__a, __b); 01903 } 01904 01905 static vector int __ATTRS_o_ai 01906 vec_lvx(int __a, const int *__b) 01907 { 01908 return (vector int)__builtin_altivec_lvx(__a, __b); 01909 } 01910 01911 static vector unsigned int __ATTRS_o_ai 01912 vec_lvx(int __a, const vector unsigned int *__b) 01913 { 01914 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 01915 } 01916 01917 static vector unsigned int __ATTRS_o_ai 01918 vec_lvx(int __a, const unsigned int *__b) 01919 { 01920 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 01921 } 01922 01923 static vector bool int __ATTRS_o_ai 01924 vec_lvx(int __a, const vector bool int *__b) 01925 { 01926 return (vector bool int)__builtin_altivec_lvx(__a, __b); 01927 } 01928 01929 static vector float __ATTRS_o_ai 01930 vec_lvx(int __a, const vector float *__b) 01931 { 01932 return (vector float)__builtin_altivec_lvx(__a, __b); 01933 } 01934 01935 static vector float __ATTRS_o_ai 01936 vec_lvx(int __a, const float *__b) 01937 { 01938 return (vector float)__builtin_altivec_lvx(__a, __b); 01939 } 01940 01941 /* vec_lde */ 01942 01943 static vector signed char __ATTRS_o_ai 01944 vec_lde(int __a, const signed char *__b) 01945 { 01946 return (vector signed char)__builtin_altivec_lvebx(__a, __b); 01947 } 01948 01949 static vector unsigned char __ATTRS_o_ai 01950 vec_lde(int __a, const unsigned char *__b) 01951 { 01952 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b); 01953 } 01954 01955 static vector short __ATTRS_o_ai 01956 vec_lde(int __a, const short *__b) 01957 { 01958 return (vector short)__builtin_altivec_lvehx(__a, __b); 01959 } 01960 01961 static vector unsigned short __ATTRS_o_ai 01962 vec_lde(int __a, const unsigned short *__b) 01963 { 01964 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b); 01965 } 01966 01967 static vector int __ATTRS_o_ai 01968 vec_lde(int __a, const int *__b) 01969 { 01970 return (vector int)__builtin_altivec_lvewx(__a, __b); 01971 } 01972 01973 static vector unsigned int __ATTRS_o_ai 01974 vec_lde(int __a, const unsigned int *__b) 01975 { 01976 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b); 01977 } 01978 01979 static vector float __ATTRS_o_ai 01980 vec_lde(int __a, const float *__b) 01981 { 01982 return (vector float)__builtin_altivec_lvewx(__a, __b); 01983 } 01984 01985 /* vec_lvebx */ 01986 01987 static vector signed char __ATTRS_o_ai 01988 vec_lvebx(int __a, const signed char *__b) 01989 { 01990 return (vector signed char)__builtin_altivec_lvebx(__a, __b); 01991 } 01992 01993 static vector unsigned char __ATTRS_o_ai 01994 vec_lvebx(int __a, const unsigned char *__b) 01995 { 01996 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b); 01997 } 01998 01999 /* vec_lvehx */ 02000 02001 static vector short __ATTRS_o_ai 02002 vec_lvehx(int __a, const short *__b) 02003 { 02004 return (vector short)__builtin_altivec_lvehx(__a, __b); 02005 } 02006 02007 static vector unsigned short __ATTRS_o_ai 02008 vec_lvehx(int __a, const unsigned short *__b) 02009 { 02010 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b); 02011 } 02012 02013 /* vec_lvewx */ 02014 02015 static vector int __ATTRS_o_ai 02016 vec_lvewx(int __a, const int *__b) 02017 { 02018 return (vector int)__builtin_altivec_lvewx(__a, __b); 02019 } 02020 02021 static vector unsigned int __ATTRS_o_ai 02022 vec_lvewx(int __a, const unsigned int *__b) 02023 { 02024 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b); 02025 } 02026 02027 static vector float __ATTRS_o_ai 02028 vec_lvewx(int __a, const float *__b) 02029 { 02030 return (vector float)__builtin_altivec_lvewx(__a, __b); 02031 } 02032 02033 /* vec_ldl */ 02034 02035 static vector signed char __ATTRS_o_ai 02036 vec_ldl(int __a, const vector signed char *__b) 02037 { 02038 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 02039 } 02040 02041 static vector signed char __ATTRS_o_ai 02042 vec_ldl(int __a, const signed char *__b) 02043 { 02044 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 02045 } 02046 02047 static vector unsigned char __ATTRS_o_ai 02048 vec_ldl(int __a, const vector unsigned char *__b) 02049 { 02050 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 02051 } 02052 02053 static vector unsigned char __ATTRS_o_ai 02054 vec_ldl(int __a, const unsigned char *__b) 02055 { 02056 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 02057 } 02058 02059 static vector bool char __ATTRS_o_ai 02060 vec_ldl(int __a, const vector bool char *__b) 02061 { 02062 return (vector bool char)__builtin_altivec_lvxl(__a, __b); 02063 } 02064 02065 static vector short __ATTRS_o_ai 02066 vec_ldl(int __a, const vector short *__b) 02067 { 02068 return (vector short)__builtin_altivec_lvxl(__a, __b); 02069 } 02070 02071 static vector short __ATTRS_o_ai 02072 vec_ldl(int __a, const short *__b) 02073 { 02074 return (vector short)__builtin_altivec_lvxl(__a, __b); 02075 } 02076 02077 static vector unsigned short __ATTRS_o_ai 02078 vec_ldl(int __a, const vector unsigned short *__b) 02079 { 02080 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 02081 } 02082 02083 static vector unsigned short __ATTRS_o_ai 02084 vec_ldl(int __a, const unsigned short *__b) 02085 { 02086 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 02087 } 02088 02089 static vector bool short __ATTRS_o_ai 02090 vec_ldl(int __a, const vector bool short *__b) 02091 { 02092 return (vector bool short)__builtin_altivec_lvxl(__a, __b); 02093 } 02094 02095 static vector pixel __ATTRS_o_ai 02096 vec_ldl(int __a, const vector pixel *__b) 02097 { 02098 return (vector pixel short)__builtin_altivec_lvxl(__a, __b); 02099 } 02100 02101 static vector int __ATTRS_o_ai 02102 vec_ldl(int __a, const vector int *__b) 02103 { 02104 return (vector int)__builtin_altivec_lvxl(__a, __b); 02105 } 02106 02107 static vector int __ATTRS_o_ai 02108 vec_ldl(int __a, const int *__b) 02109 { 02110 return (vector int)__builtin_altivec_lvxl(__a, __b); 02111 } 02112 02113 static vector unsigned int __ATTRS_o_ai 02114 vec_ldl(int __a, const vector unsigned int *__b) 02115 { 02116 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 02117 } 02118 02119 static vector unsigned int __ATTRS_o_ai 02120 vec_ldl(int __a, const unsigned int *__b) 02121 { 02122 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 02123 } 02124 02125 static vector bool int __ATTRS_o_ai 02126 vec_ldl(int __a, const vector bool int *__b) 02127 { 02128 return (vector bool int)__builtin_altivec_lvxl(__a, __b); 02129 } 02130 02131 static vector float __ATTRS_o_ai 02132 vec_ldl(int __a, const vector float *__b) 02133 { 02134 return (vector float)__builtin_altivec_lvxl(__a, __b); 02135 } 02136 02137 static vector float __ATTRS_o_ai 02138 vec_ldl(int __a, const float *__b) 02139 { 02140 return (vector float)__builtin_altivec_lvxl(__a, __b); 02141 } 02142 02143 /* vec_lvxl */ 02144 02145 static vector signed char __ATTRS_o_ai 02146 vec_lvxl(int __a, const vector signed char *__b) 02147 { 02148 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 02149 } 02150 02151 static vector signed char __ATTRS_o_ai 02152 vec_lvxl(int __a, const signed char *__b) 02153 { 02154 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 02155 } 02156 02157 static vector unsigned char __ATTRS_o_ai 02158 vec_lvxl(int __a, const vector unsigned char *__b) 02159 { 02160 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 02161 } 02162 02163 static vector unsigned char __ATTRS_o_ai 02164 vec_lvxl(int __a, const unsigned char *__b) 02165 { 02166 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 02167 } 02168 02169 static vector bool char __ATTRS_o_ai 02170 vec_lvxl(int __a, const vector bool char *__b) 02171 { 02172 return (vector bool char)__builtin_altivec_lvxl(__a, __b); 02173 } 02174 02175 static vector short __ATTRS_o_ai 02176 vec_lvxl(int __a, const vector short *__b) 02177 { 02178 return (vector short)__builtin_altivec_lvxl(__a, __b); 02179 } 02180 02181 static vector short __ATTRS_o_ai 02182 vec_lvxl(int __a, const short *__b) 02183 { 02184 return (vector short)__builtin_altivec_lvxl(__a, __b); 02185 } 02186 02187 static vector unsigned short __ATTRS_o_ai 02188 vec_lvxl(int __a, const vector unsigned short *__b) 02189 { 02190 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 02191 } 02192 02193 static vector unsigned short __ATTRS_o_ai 02194 vec_lvxl(int __a, const unsigned short *__b) 02195 { 02196 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 02197 } 02198 02199 static vector bool short __ATTRS_o_ai 02200 vec_lvxl(int __a, const vector bool short *__b) 02201 { 02202 return (vector bool short)__builtin_altivec_lvxl(__a, __b); 02203 } 02204 02205 static vector pixel __ATTRS_o_ai 02206 vec_lvxl(int __a, const vector pixel *__b) 02207 { 02208 return (vector pixel)__builtin_altivec_lvxl(__a, __b); 02209 } 02210 02211 static vector int __ATTRS_o_ai 02212 vec_lvxl(int __a, const vector int *__b) 02213 { 02214 return (vector int)__builtin_altivec_lvxl(__a, __b); 02215 } 02216 02217 static vector int __ATTRS_o_ai 02218 vec_lvxl(int __a, const int *__b) 02219 { 02220 return (vector int)__builtin_altivec_lvxl(__a, __b); 02221 } 02222 02223 static vector unsigned int __ATTRS_o_ai 02224 vec_lvxl(int __a, const vector unsigned int *__b) 02225 { 02226 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 02227 } 02228 02229 static vector unsigned int __ATTRS_o_ai 02230 vec_lvxl(int __a, const unsigned int *__b) 02231 { 02232 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 02233 } 02234 02235 static vector bool int __ATTRS_o_ai 02236 vec_lvxl(int __a, const vector bool int *__b) 02237 { 02238 return (vector bool int)__builtin_altivec_lvxl(__a, __b); 02239 } 02240 02241 static vector float __ATTRS_o_ai 02242 vec_lvxl(int __a, const vector float *__b) 02243 { 02244 return (vector float)__builtin_altivec_lvxl(__a, __b); 02245 } 02246 02247 static vector float __ATTRS_o_ai 02248 vec_lvxl(int __a, const float *__b) 02249 { 02250 return (vector float)__builtin_altivec_lvxl(__a, __b); 02251 } 02252 02253 /* vec_loge */ 02254 02255 static vector float __attribute__((__always_inline__)) 02256 vec_loge(vector float __a) 02257 { 02258 return __builtin_altivec_vlogefp(__a); 02259 } 02260 02261 /* vec_vlogefp */ 02262 02263 static vector float __attribute__((__always_inline__)) 02264 vec_vlogefp(vector float __a) 02265 { 02266 return __builtin_altivec_vlogefp(__a); 02267 } 02268 02269 /* vec_lvsl */ 02270 02271 #ifdef __LITTLE_ENDIAN__ 02272 static vector unsigned char __ATTRS_o_ai 02273 __attribute__((deprecated("use assignment for unaligned little endian \ 02274 loads/stores"))) 02275 vec_lvsl(int __a, const signed char *__b) 02276 { 02277 vector unsigned char mask = 02278 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02279 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02280 return vec_perm(mask, mask, reverse); 02281 } 02282 #else 02283 static vector unsigned char __ATTRS_o_ai 02284 vec_lvsl(int __a, const signed char *__b) 02285 { 02286 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02287 } 02288 #endif 02289 02290 #ifdef __LITTLE_ENDIAN__ 02291 static vector unsigned char __ATTRS_o_ai 02292 __attribute__((deprecated("use assignment for unaligned little endian \ 02293 loads/stores"))) 02294 vec_lvsl(int __a, const unsigned char *__b) 02295 { 02296 vector unsigned char mask = 02297 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02298 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02299 return vec_perm(mask, mask, reverse); 02300 } 02301 #else 02302 static vector unsigned char __ATTRS_o_ai 02303 vec_lvsl(int __a, const unsigned char *__b) 02304 { 02305 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02306 } 02307 #endif 02308 02309 #ifdef __LITTLE_ENDIAN__ 02310 static vector unsigned char __ATTRS_o_ai 02311 __attribute__((deprecated("use assignment for unaligned little endian \ 02312 loads/stores"))) 02313 vec_lvsl(int __a, const short *__b) 02314 { 02315 vector unsigned char mask = 02316 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02317 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02318 return vec_perm(mask, mask, reverse); 02319 } 02320 #else 02321 static vector unsigned char __ATTRS_o_ai 02322 vec_lvsl(int __a, const short *__b) 02323 { 02324 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02325 } 02326 #endif 02327 02328 #ifdef __LITTLE_ENDIAN__ 02329 static vector unsigned char __ATTRS_o_ai 02330 __attribute__((deprecated("use assignment for unaligned little endian \ 02331 loads/stores"))) 02332 vec_lvsl(int __a, const unsigned short *__b) 02333 { 02334 vector unsigned char mask = 02335 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02336 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02337 return vec_perm(mask, mask, reverse); 02338 } 02339 #else 02340 static vector unsigned char __ATTRS_o_ai 02341 vec_lvsl(int __a, const unsigned short *__b) 02342 { 02343 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02344 } 02345 #endif 02346 02347 #ifdef __LITTLE_ENDIAN__ 02348 static vector unsigned char __ATTRS_o_ai 02349 __attribute__((deprecated("use assignment for unaligned little endian \ 02350 loads/stores"))) 02351 vec_lvsl(int __a, const int *__b) 02352 { 02353 vector unsigned char mask = 02354 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02355 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02356 return vec_perm(mask, mask, reverse); 02357 } 02358 #else 02359 static vector unsigned char __ATTRS_o_ai 02360 vec_lvsl(int __a, const int *__b) 02361 { 02362 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02363 } 02364 #endif 02365 02366 #ifdef __LITTLE_ENDIAN__ 02367 static vector unsigned char __ATTRS_o_ai 02368 __attribute__((deprecated("use assignment for unaligned little endian \ 02369 loads/stores"))) 02370 vec_lvsl(int __a, const unsigned int *__b) 02371 { 02372 vector unsigned char mask = 02373 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02374 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02375 return vec_perm(mask, mask, reverse); 02376 } 02377 #else 02378 static vector unsigned char __ATTRS_o_ai 02379 vec_lvsl(int __a, const unsigned int *__b) 02380 { 02381 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02382 } 02383 #endif 02384 02385 #ifdef __LITTLE_ENDIAN__ 02386 static vector unsigned char __ATTRS_o_ai 02387 __attribute__((deprecated("use assignment for unaligned little endian \ 02388 loads/stores"))) 02389 vec_lvsl(int __a, const float *__b) 02390 { 02391 vector unsigned char mask = 02392 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02393 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02394 return vec_perm(mask, mask, reverse); 02395 } 02396 #else 02397 static vector unsigned char __ATTRS_o_ai 02398 vec_lvsl(int __a, const float *__b) 02399 { 02400 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 02401 } 02402 #endif 02403 02404 /* vec_lvsr */ 02405 02406 #ifdef __LITTLE_ENDIAN__ 02407 static vector unsigned char __ATTRS_o_ai 02408 __attribute__((deprecated("use assignment for unaligned little endian \ 02409 loads/stores"))) 02410 vec_lvsr(int __a, const signed char *__b) 02411 { 02412 vector unsigned char mask = 02413 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02414 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02415 return vec_perm(mask, mask, reverse); 02416 } 02417 #else 02418 static vector unsigned char __ATTRS_o_ai 02419 vec_lvsr(int __a, const signed char *__b) 02420 { 02421 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02422 } 02423 #endif 02424 02425 #ifdef __LITTLE_ENDIAN__ 02426 static vector unsigned char __ATTRS_o_ai 02427 __attribute__((deprecated("use assignment for unaligned little endian \ 02428 loads/stores"))) 02429 vec_lvsr(int __a, const unsigned char *__b) 02430 { 02431 vector unsigned char mask = 02432 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02433 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02434 return vec_perm(mask, mask, reverse); 02435 } 02436 #else 02437 static vector unsigned char __ATTRS_o_ai 02438 vec_lvsr(int __a, const unsigned char *__b) 02439 { 02440 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02441 } 02442 #endif 02443 02444 #ifdef __LITTLE_ENDIAN__ 02445 static vector unsigned char __ATTRS_o_ai 02446 __attribute__((deprecated("use assignment for unaligned little endian \ 02447 loads/stores"))) 02448 vec_lvsr(int __a, const short *__b) 02449 { 02450 vector unsigned char mask = 02451 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02452 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02453 return vec_perm(mask, mask, reverse); 02454 } 02455 #else 02456 static vector unsigned char __ATTRS_o_ai 02457 vec_lvsr(int __a, const short *__b) 02458 { 02459 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02460 } 02461 #endif 02462 02463 #ifdef __LITTLE_ENDIAN__ 02464 static vector unsigned char __ATTRS_o_ai 02465 __attribute__((deprecated("use assignment for unaligned little endian \ 02466 loads/stores"))) 02467 vec_lvsr(int __a, const unsigned short *__b) 02468 { 02469 vector unsigned char mask = 02470 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02471 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02472 return vec_perm(mask, mask, reverse); 02473 } 02474 #else 02475 static vector unsigned char __ATTRS_o_ai 02476 vec_lvsr(int __a, const unsigned short *__b) 02477 { 02478 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02479 } 02480 #endif 02481 02482 #ifdef __LITTLE_ENDIAN__ 02483 static vector unsigned char __ATTRS_o_ai 02484 __attribute__((deprecated("use assignment for unaligned little endian \ 02485 loads/stores"))) 02486 vec_lvsr(int __a, const int *__b) 02487 { 02488 vector unsigned char mask = 02489 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02490 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02491 return vec_perm(mask, mask, reverse); 02492 } 02493 #else 02494 static vector unsigned char __ATTRS_o_ai 02495 vec_lvsr(int __a, const int *__b) 02496 { 02497 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02498 } 02499 #endif 02500 02501 #ifdef __LITTLE_ENDIAN__ 02502 static vector unsigned char __ATTRS_o_ai 02503 __attribute__((deprecated("use assignment for unaligned little endian \ 02504 loads/stores"))) 02505 vec_lvsr(int __a, const unsigned int *__b) 02506 { 02507 vector unsigned char mask = 02508 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02509 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02510 return vec_perm(mask, mask, reverse); 02511 } 02512 #else 02513 static vector unsigned char __ATTRS_o_ai 02514 vec_lvsr(int __a, const unsigned int *__b) 02515 { 02516 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02517 } 02518 #endif 02519 02520 #ifdef __LITTLE_ENDIAN__ 02521 static vector unsigned char __ATTRS_o_ai 02522 __attribute__((deprecated("use assignment for unaligned little endian \ 02523 loads/stores"))) 02524 vec_lvsr(int __a, const float *__b) 02525 { 02526 vector unsigned char mask = 02527 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02528 vector unsigned char reverse = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; 02529 return vec_perm(mask, mask, reverse); 02530 } 02531 #else 02532 static vector unsigned char __ATTRS_o_ai 02533 vec_lvsr(int __a, const float *__b) 02534 { 02535 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 02536 } 02537 #endif 02538 02539 /* vec_madd */ 02540 02541 static vector float __attribute__((__always_inline__)) 02542 vec_madd(vector float __a, vector float __b, vector float __c) 02543 { 02544 return __builtin_altivec_vmaddfp(__a, __b, __c); 02545 } 02546 02547 /* vec_vmaddfp */ 02548 02549 static vector float __attribute__((__always_inline__)) 02550 vec_vmaddfp(vector float __a, vector float __b, vector float __c) 02551 { 02552 return __builtin_altivec_vmaddfp(__a, __b, __c); 02553 } 02554 02555 /* vec_madds */ 02556 02557 static vector signed short __attribute__((__always_inline__)) 02558 vec_madds(vector signed short __a, vector signed short __b, vector signed short __c) 02559 { 02560 return __builtin_altivec_vmhaddshs(__a, __b, __c); 02561 } 02562 02563 /* vec_vmhaddshs */ 02564 static vector signed short __attribute__((__always_inline__)) 02565 vec_vmhaddshs(vector signed short __a, 02566 vector signed short __b, 02567 vector signed short __c) 02568 { 02569 return __builtin_altivec_vmhaddshs(__a, __b, __c); 02570 } 02571 02572 /* vec_max */ 02573 02574 static vector signed char __ATTRS_o_ai 02575 vec_max(vector signed char __a, vector signed char __b) 02576 { 02577 return __builtin_altivec_vmaxsb(__a, __b); 02578 } 02579 02580 static vector signed char __ATTRS_o_ai 02581 vec_max(vector bool char __a, vector signed char __b) 02582 { 02583 return __builtin_altivec_vmaxsb((vector signed char)__a, __b); 02584 } 02585 02586 static vector signed char __ATTRS_o_ai 02587 vec_max(vector signed char __a, vector bool char __b) 02588 { 02589 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b); 02590 } 02591 02592 static vector unsigned char __ATTRS_o_ai 02593 vec_max(vector unsigned char __a, vector unsigned char __b) 02594 { 02595 return __builtin_altivec_vmaxub(__a, __b); 02596 } 02597 02598 static vector unsigned char __ATTRS_o_ai 02599 vec_max(vector bool char __a, vector unsigned char __b) 02600 { 02601 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b); 02602 } 02603 02604 static vector unsigned char __ATTRS_o_ai 02605 vec_max(vector unsigned char __a, vector bool char __b) 02606 { 02607 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b); 02608 } 02609 02610 static vector short __ATTRS_o_ai 02611 vec_max(vector short __a, vector short __b) 02612 { 02613 return __builtin_altivec_vmaxsh(__a, __b); 02614 } 02615 02616 static vector short __ATTRS_o_ai 02617 vec_max(vector bool short __a, vector short __b) 02618 { 02619 return __builtin_altivec_vmaxsh((vector short)__a, __b); 02620 } 02621 02622 static vector short __ATTRS_o_ai 02623 vec_max(vector short __a, vector bool short __b) 02624 { 02625 return __builtin_altivec_vmaxsh(__a, (vector short)__b); 02626 } 02627 02628 static vector unsigned short __ATTRS_o_ai 02629 vec_max(vector unsigned short __a, vector unsigned short __b) 02630 { 02631 return __builtin_altivec_vmaxuh(__a, __b); 02632 } 02633 02634 static vector unsigned short __ATTRS_o_ai 02635 vec_max(vector bool short __a, vector unsigned short __b) 02636 { 02637 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b); 02638 } 02639 02640 static vector unsigned short __ATTRS_o_ai 02641 vec_max(vector unsigned short __a, vector bool short __b) 02642 { 02643 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b); 02644 } 02645 02646 static vector int __ATTRS_o_ai 02647 vec_max(vector int __a, vector int __b) 02648 { 02649 return __builtin_altivec_vmaxsw(__a, __b); 02650 } 02651 02652 static vector int __ATTRS_o_ai 02653 vec_max(vector bool int __a, vector int __b) 02654 { 02655 return __builtin_altivec_vmaxsw((vector int)__a, __b); 02656 } 02657 02658 static vector int __ATTRS_o_ai 02659 vec_max(vector int __a, vector bool int __b) 02660 { 02661 return __builtin_altivec_vmaxsw(__a, (vector int)__b); 02662 } 02663 02664 static vector unsigned int __ATTRS_o_ai 02665 vec_max(vector unsigned int __a, vector unsigned int __b) 02666 { 02667 return __builtin_altivec_vmaxuw(__a, __b); 02668 } 02669 02670 static vector unsigned int __ATTRS_o_ai 02671 vec_max(vector bool int __a, vector unsigned int __b) 02672 { 02673 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b); 02674 } 02675 02676 static vector unsigned int __ATTRS_o_ai 02677 vec_max(vector unsigned int __a, vector bool int __b) 02678 { 02679 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b); 02680 } 02681 02682 static vector float __ATTRS_o_ai 02683 vec_max(vector float __a, vector float __b) 02684 { 02685 #ifdef __VSX__ 02686 return __builtin_vsx_xvmaxsp(__a, __b); 02687 #else 02688 return __builtin_altivec_vmaxfp(__a, __b); 02689 #endif 02690 } 02691 02692 #ifdef __VSX__ 02693 static vector double __ATTRS_o_ai 02694 vec_max(vector double __a, vector double __b) 02695 { 02696 return __builtin_vsx_xvmaxdp(__a, __b); 02697 } 02698 #endif 02699 02700 /* vec_vmaxsb */ 02701 02702 static vector signed char __ATTRS_o_ai 02703 vec_vmaxsb(vector signed char __a, vector signed char __b) 02704 { 02705 return __builtin_altivec_vmaxsb(__a, __b); 02706 } 02707 02708 static vector signed char __ATTRS_o_ai 02709 vec_vmaxsb(vector bool char __a, vector signed char __b) 02710 { 02711 return __builtin_altivec_vmaxsb((vector signed char)__a, __b); 02712 } 02713 02714 static vector signed char __ATTRS_o_ai 02715 vec_vmaxsb(vector signed char __a, vector bool char __b) 02716 { 02717 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b); 02718 } 02719 02720 /* vec_vmaxub */ 02721 02722 static vector unsigned char __ATTRS_o_ai 02723 vec_vmaxub(vector unsigned char __a, vector unsigned char __b) 02724 { 02725 return __builtin_altivec_vmaxub(__a, __b); 02726 } 02727 02728 static vector unsigned char __ATTRS_o_ai 02729 vec_vmaxub(vector bool char __a, vector unsigned char __b) 02730 { 02731 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b); 02732 } 02733 02734 static vector unsigned char __ATTRS_o_ai 02735 vec_vmaxub(vector unsigned char __a, vector bool char __b) 02736 { 02737 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b); 02738 } 02739 02740 /* vec_vmaxsh */ 02741 02742 static vector short __ATTRS_o_ai 02743 vec_vmaxsh(vector short __a, vector short __b) 02744 { 02745 return __builtin_altivec_vmaxsh(__a, __b); 02746 } 02747 02748 static vector short __ATTRS_o_ai 02749 vec_vmaxsh(vector bool short __a, vector short __b) 02750 { 02751 return __builtin_altivec_vmaxsh((vector short)__a, __b); 02752 } 02753 02754 static vector short __ATTRS_o_ai 02755 vec_vmaxsh(vector short __a, vector bool short __b) 02756 { 02757 return __builtin_altivec_vmaxsh(__a, (vector short)__b); 02758 } 02759 02760 /* vec_vmaxuh */ 02761 02762 static vector unsigned short __ATTRS_o_ai 02763 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) 02764 { 02765 return __builtin_altivec_vmaxuh(__a, __b); 02766 } 02767 02768 static vector unsigned short __ATTRS_o_ai 02769 vec_vmaxuh(vector bool short __a, vector unsigned short __b) 02770 { 02771 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b); 02772 } 02773 02774 static vector unsigned short __ATTRS_o_ai 02775 vec_vmaxuh(vector unsigned short __a, vector bool short __b) 02776 { 02777 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b); 02778 } 02779 02780 /* vec_vmaxsw */ 02781 02782 static vector int __ATTRS_o_ai 02783 vec_vmaxsw(vector int __a, vector int __b) 02784 { 02785 return __builtin_altivec_vmaxsw(__a, __b); 02786 } 02787 02788 static vector int __ATTRS_o_ai 02789 vec_vmaxsw(vector bool int __a, vector int __b) 02790 { 02791 return __builtin_altivec_vmaxsw((vector int)__a, __b); 02792 } 02793 02794 static vector int __ATTRS_o_ai 02795 vec_vmaxsw(vector int __a, vector bool int __b) 02796 { 02797 return __builtin_altivec_vmaxsw(__a, (vector int)__b); 02798 } 02799 02800 /* vec_vmaxuw */ 02801 02802 static vector unsigned int __ATTRS_o_ai 02803 vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) 02804 { 02805 return __builtin_altivec_vmaxuw(__a, __b); 02806 } 02807 02808 static vector unsigned int __ATTRS_o_ai 02809 vec_vmaxuw(vector bool int __a, vector unsigned int __b) 02810 { 02811 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b); 02812 } 02813 02814 static vector unsigned int __ATTRS_o_ai 02815 vec_vmaxuw(vector unsigned int __a, vector bool int __b) 02816 { 02817 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b); 02818 } 02819 02820 /* vec_vmaxfp */ 02821 02822 static vector float __attribute__((__always_inline__)) 02823 vec_vmaxfp(vector float __a, vector float __b) 02824 { 02825 #ifdef __VSX__ 02826 return __builtin_vsx_xvmaxsp(__a, __b); 02827 #else 02828 return __builtin_altivec_vmaxfp(__a, __b); 02829 #endif 02830 } 02831 02832 /* vec_mergeh */ 02833 02834 static vector signed char __ATTRS_o_ai 02835 vec_mergeh(vector signed char __a, vector signed char __b) 02836 { 02837 return vec_perm(__a, __b, (vector unsigned char) 02838 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 02839 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 02840 } 02841 02842 static vector unsigned char __ATTRS_o_ai 02843 vec_mergeh(vector unsigned char __a, vector unsigned char __b) 02844 { 02845 return vec_perm(__a, __b, (vector unsigned char) 02846 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 02847 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 02848 } 02849 02850 static vector bool char __ATTRS_o_ai 02851 vec_mergeh(vector bool char __a, vector bool char __b) 02852 { 02853 return vec_perm(__a, __b, (vector unsigned char) 02854 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 02855 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 02856 } 02857 02858 static vector short __ATTRS_o_ai 02859 vec_mergeh(vector short __a, vector short __b) 02860 { 02861 return vec_perm(__a, __b, (vector unsigned char) 02862 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02863 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02864 } 02865 02866 static vector unsigned short __ATTRS_o_ai 02867 vec_mergeh(vector unsigned short __a, vector unsigned short __b) 02868 { 02869 return vec_perm(__a, __b, (vector unsigned char) 02870 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02871 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02872 } 02873 02874 static vector bool short __ATTRS_o_ai 02875 vec_mergeh(vector bool short __a, vector bool short __b) 02876 { 02877 return vec_perm(__a, __b, (vector unsigned char) 02878 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02879 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02880 } 02881 02882 static vector pixel __ATTRS_o_ai 02883 vec_mergeh(vector pixel __a, vector pixel __b) 02884 { 02885 return vec_perm(__a, __b, (vector unsigned char) 02886 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02887 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02888 } 02889 02890 static vector int __ATTRS_o_ai 02891 vec_mergeh(vector int __a, vector int __b) 02892 { 02893 return vec_perm(__a, __b, (vector unsigned char) 02894 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 02895 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 02896 } 02897 02898 static vector unsigned int __ATTRS_o_ai 02899 vec_mergeh(vector unsigned int __a, vector unsigned int __b) 02900 { 02901 return vec_perm(__a, __b, (vector unsigned char) 02902 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 02903 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 02904 } 02905 02906 static vector bool int __ATTRS_o_ai 02907 vec_mergeh(vector bool int __a, vector bool int __b) 02908 { 02909 return vec_perm(__a, __b, (vector unsigned char) 02910 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 02911 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 02912 } 02913 02914 static vector float __ATTRS_o_ai 02915 vec_mergeh(vector float __a, vector float __b) 02916 { 02917 return vec_perm(__a, __b, (vector unsigned char) 02918 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 02919 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 02920 } 02921 02922 /* vec_vmrghb */ 02923 02924 #define __builtin_altivec_vmrghb vec_vmrghb 02925 02926 static vector signed char __ATTRS_o_ai 02927 vec_vmrghb(vector signed char __a, vector signed char __b) 02928 { 02929 return vec_perm(__a, __b, (vector unsigned char) 02930 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 02931 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 02932 } 02933 02934 static vector unsigned char __ATTRS_o_ai 02935 vec_vmrghb(vector unsigned char __a, vector unsigned char __b) 02936 { 02937 return vec_perm(__a, __b, (vector unsigned char) 02938 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 02939 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 02940 } 02941 02942 static vector bool char __ATTRS_o_ai 02943 vec_vmrghb(vector bool char __a, vector bool char __b) 02944 { 02945 return vec_perm(__a, __b, (vector unsigned char) 02946 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 02947 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 02948 } 02949 02950 /* vec_vmrghh */ 02951 02952 #define __builtin_altivec_vmrghh vec_vmrghh 02953 02954 static vector short __ATTRS_o_ai 02955 vec_vmrghh(vector short __a, vector short __b) 02956 { 02957 return vec_perm(__a, __b, (vector unsigned char) 02958 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02959 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02960 } 02961 02962 static vector unsigned short __ATTRS_o_ai 02963 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) 02964 { 02965 return vec_perm(__a, __b, (vector unsigned char) 02966 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02967 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02968 } 02969 02970 static vector bool short __ATTRS_o_ai 02971 vec_vmrghh(vector bool short __a, vector bool short __b) 02972 { 02973 return vec_perm(__a, __b, (vector unsigned char) 02974 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02975 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02976 } 02977 02978 static vector pixel __ATTRS_o_ai 02979 vec_vmrghh(vector pixel __a, vector pixel __b) 02980 { 02981 return vec_perm(__a, __b, (vector unsigned char) 02982 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 02983 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 02984 } 02985 02986 /* vec_vmrghw */ 02987 02988 #define __builtin_altivec_vmrghw vec_vmrghw 02989 02990 static vector int __ATTRS_o_ai 02991 vec_vmrghw(vector int __a, vector int __b) 02992 { 02993 return vec_perm(__a, __b, (vector unsigned char) 02994 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 02995 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 02996 } 02997 02998 static vector unsigned int __ATTRS_o_ai 02999 vec_vmrghw(vector unsigned int __a, vector unsigned int __b) 03000 { 03001 return vec_perm(__a, __b, (vector unsigned char) 03002 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 03003 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 03004 } 03005 03006 static vector bool int __ATTRS_o_ai 03007 vec_vmrghw(vector bool int __a, vector bool int __b) 03008 { 03009 return vec_perm(__a, __b, (vector unsigned char) 03010 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 03011 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 03012 } 03013 03014 static vector float __ATTRS_o_ai 03015 vec_vmrghw(vector float __a, vector float __b) 03016 { 03017 return vec_perm(__a, __b, (vector unsigned char) 03018 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 03019 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 03020 } 03021 03022 /* vec_mergel */ 03023 03024 static vector signed char __ATTRS_o_ai 03025 vec_mergel(vector signed char __a, vector signed char __b) 03026 { 03027 return vec_perm(__a, __b, (vector unsigned char) 03028 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 03029 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 03030 } 03031 03032 static vector unsigned char __ATTRS_o_ai 03033 vec_mergel(vector unsigned char __a, vector unsigned char __b) 03034 { 03035 return vec_perm(__a, __b, (vector unsigned char) 03036 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 03037 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 03038 } 03039 03040 static vector bool char __ATTRS_o_ai 03041 vec_mergel(vector bool char __a, vector bool char __b) 03042 { 03043 return vec_perm(__a, __b, (vector unsigned char) 03044 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 03045 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 03046 } 03047 03048 static vector short __ATTRS_o_ai 03049 vec_mergel(vector short __a, vector short __b) 03050 { 03051 return vec_perm(__a, __b, (vector unsigned char) 03052 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03053 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03054 } 03055 03056 static vector unsigned short __ATTRS_o_ai 03057 vec_mergel(vector unsigned short __a, vector unsigned short __b) 03058 { 03059 return vec_perm(__a, __b, (vector unsigned char) 03060 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03061 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03062 } 03063 03064 static vector bool short __ATTRS_o_ai 03065 vec_mergel(vector bool short __a, vector bool short __b) 03066 { 03067 return vec_perm(__a, __b, (vector unsigned char) 03068 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03069 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03070 } 03071 03072 static vector pixel __ATTRS_o_ai 03073 vec_mergel(vector pixel __a, vector pixel __b) 03074 { 03075 return vec_perm(__a, __b, (vector unsigned char) 03076 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03077 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03078 } 03079 03080 static vector int __ATTRS_o_ai 03081 vec_mergel(vector int __a, vector int __b) 03082 { 03083 return vec_perm(__a, __b, (vector unsigned char) 03084 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03085 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03086 } 03087 03088 static vector unsigned int __ATTRS_o_ai 03089 vec_mergel(vector unsigned int __a, vector unsigned int __b) 03090 { 03091 return vec_perm(__a, __b, (vector unsigned char) 03092 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03093 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03094 } 03095 03096 static vector bool int __ATTRS_o_ai 03097 vec_mergel(vector bool int __a, vector bool int __b) 03098 { 03099 return vec_perm(__a, __b, (vector unsigned char) 03100 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03101 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03102 } 03103 03104 static vector float __ATTRS_o_ai 03105 vec_mergel(vector float __a, vector float __b) 03106 { 03107 return vec_perm(__a, __b, (vector unsigned char) 03108 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03109 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03110 } 03111 03112 /* vec_vmrglb */ 03113 03114 #define __builtin_altivec_vmrglb vec_vmrglb 03115 03116 static vector signed char __ATTRS_o_ai 03117 vec_vmrglb(vector signed char __a, vector signed char __b) 03118 { 03119 return vec_perm(__a, __b, (vector unsigned char) 03120 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 03121 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 03122 } 03123 03124 static vector unsigned char __ATTRS_o_ai 03125 vec_vmrglb(vector unsigned char __a, vector unsigned char __b) 03126 { 03127 return vec_perm(__a, __b, (vector unsigned char) 03128 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 03129 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 03130 } 03131 03132 static vector bool char __ATTRS_o_ai 03133 vec_vmrglb(vector bool char __a, vector bool char __b) 03134 { 03135 return vec_perm(__a, __b, (vector unsigned char) 03136 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 03137 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 03138 } 03139 03140 /* vec_vmrglh */ 03141 03142 #define __builtin_altivec_vmrglh vec_vmrglh 03143 03144 static vector short __ATTRS_o_ai 03145 vec_vmrglh(vector short __a, vector short __b) 03146 { 03147 return vec_perm(__a, __b, (vector unsigned char) 03148 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03149 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03150 } 03151 03152 static vector unsigned short __ATTRS_o_ai 03153 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) 03154 { 03155 return vec_perm(__a, __b, (vector unsigned char) 03156 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03157 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03158 } 03159 03160 static vector bool short __ATTRS_o_ai 03161 vec_vmrglh(vector bool short __a, vector bool short __b) 03162 { 03163 return vec_perm(__a, __b, (vector unsigned char) 03164 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03165 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03166 } 03167 03168 static vector pixel __ATTRS_o_ai 03169 vec_vmrglh(vector pixel __a, vector pixel __b) 03170 { 03171 return vec_perm(__a, __b, (vector unsigned char) 03172 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 03173 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 03174 } 03175 03176 /* vec_vmrglw */ 03177 03178 #define __builtin_altivec_vmrglw vec_vmrglw 03179 03180 static vector int __ATTRS_o_ai 03181 vec_vmrglw(vector int __a, vector int __b) 03182 { 03183 return vec_perm(__a, __b, (vector unsigned char) 03184 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03185 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03186 } 03187 03188 static vector unsigned int __ATTRS_o_ai 03189 vec_vmrglw(vector unsigned int __a, vector unsigned int __b) 03190 { 03191 return vec_perm(__a, __b, (vector unsigned char) 03192 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03193 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03194 } 03195 03196 static vector bool int __ATTRS_o_ai 03197 vec_vmrglw(vector bool int __a, vector bool int __b) 03198 { 03199 return vec_perm(__a, __b, (vector unsigned char) 03200 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03201 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03202 } 03203 03204 static vector float __ATTRS_o_ai 03205 vec_vmrglw(vector float __a, vector float __b) 03206 { 03207 return vec_perm(__a, __b, (vector unsigned char) 03208 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 03209 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 03210 } 03211 03212 /* vec_mfvscr */ 03213 03214 static vector unsigned short __attribute__((__always_inline__)) 03215 vec_mfvscr(void) 03216 { 03217 return __builtin_altivec_mfvscr(); 03218 } 03219 03220 /* vec_min */ 03221 03222 static vector signed char __ATTRS_o_ai 03223 vec_min(vector signed char __a, vector signed char __b) 03224 { 03225 return __builtin_altivec_vminsb(__a, __b); 03226 } 03227 03228 static vector signed char __ATTRS_o_ai 03229 vec_min(vector bool char __a, vector signed char __b) 03230 { 03231 return __builtin_altivec_vminsb((vector signed char)__a, __b); 03232 } 03233 03234 static vector signed char __ATTRS_o_ai 03235 vec_min(vector signed char __a, vector bool char __b) 03236 { 03237 return __builtin_altivec_vminsb(__a, (vector signed char)__b); 03238 } 03239 03240 static vector unsigned char __ATTRS_o_ai 03241 vec_min(vector unsigned char __a, vector unsigned char __b) 03242 { 03243 return __builtin_altivec_vminub(__a, __b); 03244 } 03245 03246 static vector unsigned char __ATTRS_o_ai 03247 vec_min(vector bool char __a, vector unsigned char __b) 03248 { 03249 return __builtin_altivec_vminub((vector unsigned char)__a, __b); 03250 } 03251 03252 static vector unsigned char __ATTRS_o_ai 03253 vec_min(vector unsigned char __a, vector bool char __b) 03254 { 03255 return __builtin_altivec_vminub(__a, (vector unsigned char)__b); 03256 } 03257 03258 static vector short __ATTRS_o_ai 03259 vec_min(vector short __a, vector short __b) 03260 { 03261 return __builtin_altivec_vminsh(__a, __b); 03262 } 03263 03264 static vector short __ATTRS_o_ai 03265 vec_min(vector bool short __a, vector short __b) 03266 { 03267 return __builtin_altivec_vminsh((vector short)__a, __b); 03268 } 03269 03270 static vector short __ATTRS_o_ai 03271 vec_min(vector short __a, vector bool short __b) 03272 { 03273 return __builtin_altivec_vminsh(__a, (vector short)__b); 03274 } 03275 03276 static vector unsigned short __ATTRS_o_ai 03277 vec_min(vector unsigned short __a, vector unsigned short __b) 03278 { 03279 return __builtin_altivec_vminuh(__a, __b); 03280 } 03281 03282 static vector unsigned short __ATTRS_o_ai 03283 vec_min(vector bool short __a, vector unsigned short __b) 03284 { 03285 return __builtin_altivec_vminuh((vector unsigned short)__a, __b); 03286 } 03287 03288 static vector unsigned short __ATTRS_o_ai 03289 vec_min(vector unsigned short __a, vector bool short __b) 03290 { 03291 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b); 03292 } 03293 03294 static vector int __ATTRS_o_ai 03295 vec_min(vector int __a, vector int __b) 03296 { 03297 return __builtin_altivec_vminsw(__a, __b); 03298 } 03299 03300 static vector int __ATTRS_o_ai 03301 vec_min(vector bool int __a, vector int __b) 03302 { 03303 return __builtin_altivec_vminsw((vector int)__a, __b); 03304 } 03305 03306 static vector int __ATTRS_o_ai 03307 vec_min(vector int __a, vector bool int __b) 03308 { 03309 return __builtin_altivec_vminsw(__a, (vector int)__b); 03310 } 03311 03312 static vector unsigned int __ATTRS_o_ai 03313 vec_min(vector unsigned int __a, vector unsigned int __b) 03314 { 03315 return __builtin_altivec_vminuw(__a, __b); 03316 } 03317 03318 static vector unsigned int __ATTRS_o_ai 03319 vec_min(vector bool int __a, vector unsigned int __b) 03320 { 03321 return __builtin_altivec_vminuw((vector unsigned int)__a, __b); 03322 } 03323 03324 static vector unsigned int __ATTRS_o_ai 03325 vec_min(vector unsigned int __a, vector bool int __b) 03326 { 03327 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b); 03328 } 03329 03330 static vector float __ATTRS_o_ai 03331 vec_min(vector float __a, vector float __b) 03332 { 03333 #ifdef __VSX__ 03334 return __builtin_vsx_xvminsp(__a, __b); 03335 #else 03336 return __builtin_altivec_vminfp(__a, __b); 03337 #endif 03338 } 03339 03340 #ifdef __VSX__ 03341 static vector double __ATTRS_o_ai 03342 vec_min(vector double __a, vector double __b) 03343 { 03344 return __builtin_vsx_xvmindp(__a, __b); 03345 } 03346 #endif 03347 03348 /* vec_vminsb */ 03349 03350 static vector signed char __ATTRS_o_ai 03351 vec_vminsb(vector signed char __a, vector signed char __b) 03352 { 03353 return __builtin_altivec_vminsb(__a, __b); 03354 } 03355 03356 static vector signed char __ATTRS_o_ai 03357 vec_vminsb(vector bool char __a, vector signed char __b) 03358 { 03359 return __builtin_altivec_vminsb((vector signed char)__a, __b); 03360 } 03361 03362 static vector signed char __ATTRS_o_ai 03363 vec_vminsb(vector signed char __a, vector bool char __b) 03364 { 03365 return __builtin_altivec_vminsb(__a, (vector signed char)__b); 03366 } 03367 03368 /* vec_vminub */ 03369 03370 static vector unsigned char __ATTRS_o_ai 03371 vec_vminub(vector unsigned char __a, vector unsigned char __b) 03372 { 03373 return __builtin_altivec_vminub(__a, __b); 03374 } 03375 03376 static vector unsigned char __ATTRS_o_ai 03377 vec_vminub(vector bool char __a, vector unsigned char __b) 03378 { 03379 return __builtin_altivec_vminub((vector unsigned char)__a, __b); 03380 } 03381 03382 static vector unsigned char __ATTRS_o_ai 03383 vec_vminub(vector unsigned char __a, vector bool char __b) 03384 { 03385 return __builtin_altivec_vminub(__a, (vector unsigned char)__b); 03386 } 03387 03388 /* vec_vminsh */ 03389 03390 static vector short __ATTRS_o_ai 03391 vec_vminsh(vector short __a, vector short __b) 03392 { 03393 return __builtin_altivec_vminsh(__a, __b); 03394 } 03395 03396 static vector short __ATTRS_o_ai 03397 vec_vminsh(vector bool short __a, vector short __b) 03398 { 03399 return __builtin_altivec_vminsh((vector short)__a, __b); 03400 } 03401 03402 static vector short __ATTRS_o_ai 03403 vec_vminsh(vector short __a, vector bool short __b) 03404 { 03405 return __builtin_altivec_vminsh(__a, (vector short)__b); 03406 } 03407 03408 /* vec_vminuh */ 03409 03410 static vector unsigned short __ATTRS_o_ai 03411 vec_vminuh(vector unsigned short __a, vector unsigned short __b) 03412 { 03413 return __builtin_altivec_vminuh(__a, __b); 03414 } 03415 03416 static vector unsigned short __ATTRS_o_ai 03417 vec_vminuh(vector bool short __a, vector unsigned short __b) 03418 { 03419 return __builtin_altivec_vminuh((vector unsigned short)__a, __b); 03420 } 03421 03422 static vector unsigned short __ATTRS_o_ai 03423 vec_vminuh(vector unsigned short __a, vector bool short __b) 03424 { 03425 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b); 03426 } 03427 03428 /* vec_vminsw */ 03429 03430 static vector int __ATTRS_o_ai 03431 vec_vminsw(vector int __a, vector int __b) 03432 { 03433 return __builtin_altivec_vminsw(__a, __b); 03434 } 03435 03436 static vector int __ATTRS_o_ai 03437 vec_vminsw(vector bool int __a, vector int __b) 03438 { 03439 return __builtin_altivec_vminsw((vector int)__a, __b); 03440 } 03441 03442 static vector int __ATTRS_o_ai 03443 vec_vminsw(vector int __a, vector bool int __b) 03444 { 03445 return __builtin_altivec_vminsw(__a, (vector int)__b); 03446 } 03447 03448 /* vec_vminuw */ 03449 03450 static vector unsigned int __ATTRS_o_ai 03451 vec_vminuw(vector unsigned int __a, vector unsigned int __b) 03452 { 03453 return __builtin_altivec_vminuw(__a, __b); 03454 } 03455 03456 static vector unsigned int __ATTRS_o_ai 03457 vec_vminuw(vector bool int __a, vector unsigned int __b) 03458 { 03459 return __builtin_altivec_vminuw((vector unsigned int)__a, __b); 03460 } 03461 03462 static vector unsigned int __ATTRS_o_ai 03463 vec_vminuw(vector unsigned int __a, vector bool int __b) 03464 { 03465 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b); 03466 } 03467 03468 /* vec_vminfp */ 03469 03470 static vector float __attribute__((__always_inline__)) 03471 vec_vminfp(vector float __a, vector float __b) 03472 { 03473 #ifdef __VSX__ 03474 return __builtin_vsx_xvminsp(__a, __b); 03475 #else 03476 return __builtin_altivec_vminfp(__a, __b); 03477 #endif 03478 } 03479 03480 /* vec_mladd */ 03481 03482 #define __builtin_altivec_vmladduhm vec_mladd 03483 03484 static vector short __ATTRS_o_ai 03485 vec_mladd(vector short __a, vector short __b, vector short __c) 03486 { 03487 return __a * __b + __c; 03488 } 03489 03490 static vector short __ATTRS_o_ai 03491 vec_mladd(vector short __a, vector unsigned short __b, vector unsigned short __c) 03492 { 03493 return __a * (vector short)__b + (vector short)__c; 03494 } 03495 03496 static vector short __ATTRS_o_ai 03497 vec_mladd(vector unsigned short __a, vector short __b, vector short __c) 03498 { 03499 return (vector short)__a * __b + __c; 03500 } 03501 03502 static vector unsigned short __ATTRS_o_ai 03503 vec_mladd(vector unsigned short __a, 03504 vector unsigned short __b, 03505 vector unsigned short __c) 03506 { 03507 return __a * __b + __c; 03508 } 03509 03510 /* vec_vmladduhm */ 03511 03512 static vector short __ATTRS_o_ai 03513 vec_vmladduhm(vector short __a, vector short __b, vector short __c) 03514 { 03515 return __a * __b + __c; 03516 } 03517 03518 static vector short __ATTRS_o_ai 03519 vec_vmladduhm(vector short __a, vector unsigned short __b, vector unsigned short __c) 03520 { 03521 return __a * (vector short)__b + (vector short)__c; 03522 } 03523 03524 static vector short __ATTRS_o_ai 03525 vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) 03526 { 03527 return (vector short)__a * __b + __c; 03528 } 03529 03530 static vector unsigned short __ATTRS_o_ai 03531 vec_vmladduhm(vector unsigned short __a, 03532 vector unsigned short __b, 03533 vector unsigned short __c) 03534 { 03535 return __a * __b + __c; 03536 } 03537 03538 /* vec_mradds */ 03539 03540 static vector short __attribute__((__always_inline__)) 03541 vec_mradds(vector short __a, vector short __b, vector short __c) 03542 { 03543 return __builtin_altivec_vmhraddshs(__a, __b, __c); 03544 } 03545 03546 /* vec_vmhraddshs */ 03547 03548 static vector short __attribute__((__always_inline__)) 03549 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) 03550 { 03551 return __builtin_altivec_vmhraddshs(__a, __b, __c); 03552 } 03553 03554 /* vec_msum */ 03555 03556 static vector int __ATTRS_o_ai 03557 vec_msum(vector signed char __a, vector unsigned char __b, vector int __c) 03558 { 03559 return __builtin_altivec_vmsummbm(__a, __b, __c); 03560 } 03561 03562 static vector unsigned int __ATTRS_o_ai 03563 vec_msum(vector unsigned char __a, vector unsigned char __b, vector unsigned int __c) 03564 { 03565 return __builtin_altivec_vmsumubm(__a, __b, __c); 03566 } 03567 03568 static vector int __ATTRS_o_ai 03569 vec_msum(vector short __a, vector short __b, vector int __c) 03570 { 03571 return __builtin_altivec_vmsumshm(__a, __b, __c); 03572 } 03573 03574 static vector unsigned int __ATTRS_o_ai 03575 vec_msum(vector unsigned short __a, 03576 vector unsigned short __b, 03577 vector unsigned int __c) 03578 { 03579 return __builtin_altivec_vmsumuhm(__a, __b, __c); 03580 } 03581 03582 /* vec_vmsummbm */ 03583 03584 static vector int __attribute__((__always_inline__)) 03585 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) 03586 { 03587 return __builtin_altivec_vmsummbm(__a, __b, __c); 03588 } 03589 03590 /* vec_vmsumubm */ 03591 03592 static vector unsigned int __attribute__((__always_inline__)) 03593 vec_vmsumubm(vector unsigned char __a, 03594 vector unsigned char __b, 03595 vector unsigned int __c) 03596 { 03597 return __builtin_altivec_vmsumubm(__a, __b, __c); 03598 } 03599 03600 /* vec_vmsumshm */ 03601 03602 static vector int __attribute__((__always_inline__)) 03603 vec_vmsumshm(vector short __a, vector short __b, vector int __c) 03604 { 03605 return __builtin_altivec_vmsumshm(__a, __b, __c); 03606 } 03607 03608 /* vec_vmsumuhm */ 03609 03610 static vector unsigned int __attribute__((__always_inline__)) 03611 vec_vmsumuhm(vector unsigned short __a, 03612 vector unsigned short __b, 03613 vector unsigned int __c) 03614 { 03615 return __builtin_altivec_vmsumuhm(__a, __b, __c); 03616 } 03617 03618 /* vec_msums */ 03619 03620 static vector int __ATTRS_o_ai 03621 vec_msums(vector short __a, vector short __b, vector int __c) 03622 { 03623 return __builtin_altivec_vmsumshs(__a, __b, __c); 03624 } 03625 03626 static vector unsigned int __ATTRS_o_ai 03627 vec_msums(vector unsigned short __a, 03628 vector unsigned short __b, 03629 vector unsigned int __c) 03630 { 03631 return __builtin_altivec_vmsumuhs(__a, __b, __c); 03632 } 03633 03634 /* vec_vmsumshs */ 03635 03636 static vector int __attribute__((__always_inline__)) 03637 vec_vmsumshs(vector short __a, vector short __b, vector int __c) 03638 { 03639 return __builtin_altivec_vmsumshs(__a, __b, __c); 03640 } 03641 03642 /* vec_vmsumuhs */ 03643 03644 static vector unsigned int __attribute__((__always_inline__)) 03645 vec_vmsumuhs(vector unsigned short __a, 03646 vector unsigned short __b, 03647 vector unsigned int __c) 03648 { 03649 return __builtin_altivec_vmsumuhs(__a, __b, __c); 03650 } 03651 03652 /* vec_mtvscr */ 03653 03654 static void __ATTRS_o_ai 03655 vec_mtvscr(vector signed char __a) 03656 { 03657 __builtin_altivec_mtvscr((vector int)__a); 03658 } 03659 03660 static void __ATTRS_o_ai 03661 vec_mtvscr(vector unsigned char __a) 03662 { 03663 __builtin_altivec_mtvscr((vector int)__a); 03664 } 03665 03666 static void __ATTRS_o_ai 03667 vec_mtvscr(vector bool char __a) 03668 { 03669 __builtin_altivec_mtvscr((vector int)__a); 03670 } 03671 03672 static void __ATTRS_o_ai 03673 vec_mtvscr(vector short __a) 03674 { 03675 __builtin_altivec_mtvscr((vector int)__a); 03676 } 03677 03678 static void __ATTRS_o_ai 03679 vec_mtvscr(vector unsigned short __a) 03680 { 03681 __builtin_altivec_mtvscr((vector int)__a); 03682 } 03683 03684 static void __ATTRS_o_ai 03685 vec_mtvscr(vector bool short __a) 03686 { 03687 __builtin_altivec_mtvscr((vector int)__a); 03688 } 03689 03690 static void __ATTRS_o_ai 03691 vec_mtvscr(vector pixel __a) 03692 { 03693 __builtin_altivec_mtvscr((vector int)__a); 03694 } 03695 03696 static void __ATTRS_o_ai 03697 vec_mtvscr(vector int __a) 03698 { 03699 __builtin_altivec_mtvscr((vector int)__a); 03700 } 03701 03702 static void __ATTRS_o_ai 03703 vec_mtvscr(vector unsigned int __a) 03704 { 03705 __builtin_altivec_mtvscr((vector int)__a); 03706 } 03707 03708 static void __ATTRS_o_ai 03709 vec_mtvscr(vector bool int __a) 03710 { 03711 __builtin_altivec_mtvscr((vector int)__a); 03712 } 03713 03714 static void __ATTRS_o_ai 03715 vec_mtvscr(vector float __a) 03716 { 03717 __builtin_altivec_mtvscr((vector int)__a); 03718 } 03719 03720 /* The vmulos* and vmules* instructions have a big endian bias, so 03721 we must reverse the meaning of "even" and "odd" for little endian. */ 03722 03723 /* vec_mule */ 03724 03725 static vector short __ATTRS_o_ai 03726 vec_mule(vector signed char __a, vector signed char __b) 03727 { 03728 #ifdef __LITTLE_ENDIAN__ 03729 return __builtin_altivec_vmulosb(__a, __b); 03730 #else 03731 return __builtin_altivec_vmulesb(__a, __b); 03732 #endif 03733 } 03734 03735 static vector unsigned short __ATTRS_o_ai 03736 vec_mule(vector unsigned char __a, vector unsigned char __b) 03737 { 03738 #ifdef __LITTLE_ENDIAN__ 03739 return __builtin_altivec_vmuloub(__a, __b); 03740 #else 03741 return __builtin_altivec_vmuleub(__a, __b); 03742 #endif 03743 } 03744 03745 static vector int __ATTRS_o_ai 03746 vec_mule(vector short __a, vector short __b) 03747 { 03748 #ifdef __LITTLE_ENDIAN__ 03749 return __builtin_altivec_vmulosh(__a, __b); 03750 #else 03751 return __builtin_altivec_vmulesh(__a, __b); 03752 #endif 03753 } 03754 03755 static vector unsigned int __ATTRS_o_ai 03756 vec_mule(vector unsigned short __a, vector unsigned short __b) 03757 { 03758 #ifdef __LITTLE_ENDIAN__ 03759 return __builtin_altivec_vmulouh(__a, __b); 03760 #else 03761 return __builtin_altivec_vmuleuh(__a, __b); 03762 #endif 03763 } 03764 03765 /* vec_vmulesb */ 03766 03767 static vector short __attribute__((__always_inline__)) 03768 vec_vmulesb(vector signed char __a, vector signed char __b) 03769 { 03770 #ifdef __LITTLE_ENDIAN__ 03771 return __builtin_altivec_vmulosb(__a, __b); 03772 #else 03773 return __builtin_altivec_vmulesb(__a, __b); 03774 #endif 03775 } 03776 03777 /* vec_vmuleub */ 03778 03779 static vector unsigned short __attribute__((__always_inline__)) 03780 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) 03781 { 03782 #ifdef __LITTLE_ENDIAN__ 03783 return __builtin_altivec_vmuloub(__a, __b); 03784 #else 03785 return __builtin_altivec_vmuleub(__a, __b); 03786 #endif 03787 } 03788 03789 /* vec_vmulesh */ 03790 03791 static vector int __attribute__((__always_inline__)) 03792 vec_vmulesh(vector short __a, vector short __b) 03793 { 03794 #ifdef __LITTLE_ENDIAN__ 03795 return __builtin_altivec_vmulosh(__a, __b); 03796 #else 03797 return __builtin_altivec_vmulesh(__a, __b); 03798 #endif 03799 } 03800 03801 /* vec_vmuleuh */ 03802 03803 static vector unsigned int __attribute__((__always_inline__)) 03804 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) 03805 { 03806 #ifdef __LITTLE_ENDIAN__ 03807 return __builtin_altivec_vmulouh(__a, __b); 03808 #else 03809 return __builtin_altivec_vmuleuh(__a, __b); 03810 #endif 03811 } 03812 03813 /* vec_mulo */ 03814 03815 static vector short __ATTRS_o_ai 03816 vec_mulo(vector signed char __a, vector signed char __b) 03817 { 03818 #ifdef __LITTLE_ENDIAN__ 03819 return __builtin_altivec_vmulesb(__a, __b); 03820 #else 03821 return __builtin_altivec_vmulosb(__a, __b); 03822 #endif 03823 } 03824 03825 static vector unsigned short __ATTRS_o_ai 03826 vec_mulo(vector unsigned char __a, vector unsigned char __b) 03827 { 03828 #ifdef __LITTLE_ENDIAN__ 03829 return __builtin_altivec_vmuleub(__a, __b); 03830 #else 03831 return __builtin_altivec_vmuloub(__a, __b); 03832 #endif 03833 } 03834 03835 static vector int __ATTRS_o_ai 03836 vec_mulo(vector short __a, vector short __b) 03837 { 03838 #ifdef __LITTLE_ENDIAN__ 03839 return __builtin_altivec_vmulesh(__a, __b); 03840 #else 03841 return __builtin_altivec_vmulosh(__a, __b); 03842 #endif 03843 } 03844 03845 static vector unsigned int __ATTRS_o_ai 03846 vec_mulo(vector unsigned short __a, vector unsigned short __b) 03847 { 03848 #ifdef __LITTLE_ENDIAN__ 03849 return __builtin_altivec_vmuleuh(__a, __b); 03850 #else 03851 return __builtin_altivec_vmulouh(__a, __b); 03852 #endif 03853 } 03854 03855 /* vec_vmulosb */ 03856 03857 static vector short __attribute__((__always_inline__)) 03858 vec_vmulosb(vector signed char __a, vector signed char __b) 03859 { 03860 #ifdef __LITTLE_ENDIAN__ 03861 return __builtin_altivec_vmulesb(__a, __b); 03862 #else 03863 return __builtin_altivec_vmulosb(__a, __b); 03864 #endif 03865 } 03866 03867 /* vec_vmuloub */ 03868 03869 static vector unsigned short __attribute__((__always_inline__)) 03870 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) 03871 { 03872 #ifdef __LITTLE_ENDIAN__ 03873 return __builtin_altivec_vmuleub(__a, __b); 03874 #else 03875 return __builtin_altivec_vmuloub(__a, __b); 03876 #endif 03877 } 03878 03879 /* vec_vmulosh */ 03880 03881 static vector int __attribute__((__always_inline__)) 03882 vec_vmulosh(vector short __a, vector short __b) 03883 { 03884 #ifdef __LITTLE_ENDIAN__ 03885 return __builtin_altivec_vmulesh(__a, __b); 03886 #else 03887 return __builtin_altivec_vmulosh(__a, __b); 03888 #endif 03889 } 03890 03891 /* vec_vmulouh */ 03892 03893 static vector unsigned int __attribute__((__always_inline__)) 03894 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) 03895 { 03896 #ifdef __LITTLE_ENDIAN__ 03897 return __builtin_altivec_vmuleuh(__a, __b); 03898 #else 03899 return __builtin_altivec_vmulouh(__a, __b); 03900 #endif 03901 } 03902 03903 /* vec_nmsub */ 03904 03905 static vector float __attribute__((__always_inline__)) 03906 vec_nmsub(vector float __a, vector float __b, vector float __c) 03907 { 03908 return __builtin_altivec_vnmsubfp(__a, __b, __c); 03909 } 03910 03911 /* vec_vnmsubfp */ 03912 03913 static vector float __attribute__((__always_inline__)) 03914 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) 03915 { 03916 return __builtin_altivec_vnmsubfp(__a, __b, __c); 03917 } 03918 03919 /* vec_nor */ 03920 03921 #define __builtin_altivec_vnor vec_nor 03922 03923 static vector signed char __ATTRS_o_ai 03924 vec_nor(vector signed char __a, vector signed char __b) 03925 { 03926 return ~(__a | __b); 03927 } 03928 03929 static vector unsigned char __ATTRS_o_ai 03930 vec_nor(vector unsigned char __a, vector unsigned char __b) 03931 { 03932 return ~(__a | __b); 03933 } 03934 03935 static vector bool char __ATTRS_o_ai 03936 vec_nor(vector bool char __a, vector bool char __b) 03937 { 03938 return ~(__a | __b); 03939 } 03940 03941 static vector short __ATTRS_o_ai 03942 vec_nor(vector short __a, vector short __b) 03943 { 03944 return ~(__a | __b); 03945 } 03946 03947 static vector unsigned short __ATTRS_o_ai 03948 vec_nor(vector unsigned short __a, vector unsigned short __b) 03949 { 03950 return ~(__a | __b); 03951 } 03952 03953 static vector bool short __ATTRS_o_ai 03954 vec_nor(vector bool short __a, vector bool short __b) 03955 { 03956 return ~(__a | __b); 03957 } 03958 03959 static vector int __ATTRS_o_ai 03960 vec_nor(vector int __a, vector int __b) 03961 { 03962 return ~(__a | __b); 03963 } 03964 03965 static vector unsigned int __ATTRS_o_ai 03966 vec_nor(vector unsigned int __a, vector unsigned int __b) 03967 { 03968 return ~(__a | __b); 03969 } 03970 03971 static vector bool int __ATTRS_o_ai 03972 vec_nor(vector bool int __a, vector bool int __b) 03973 { 03974 return ~(__a | __b); 03975 } 03976 03977 static vector float __ATTRS_o_ai 03978 vec_nor(vector float __a, vector float __b) 03979 { 03980 vector unsigned int __res = ~((vector unsigned int)__a | (vector unsigned int)__b); 03981 return (vector float)__res; 03982 } 03983 03984 /* vec_vnor */ 03985 03986 static vector signed char __ATTRS_o_ai 03987 vec_vnor(vector signed char __a, vector signed char __b) 03988 { 03989 return ~(__a | __b); 03990 } 03991 03992 static vector unsigned char __ATTRS_o_ai 03993 vec_vnor(vector unsigned char __a, vector unsigned char __b) 03994 { 03995 return ~(__a | __b); 03996 } 03997 03998 static vector bool char __ATTRS_o_ai 03999 vec_vnor(vector bool char __a, vector bool char __b) 04000 { 04001 return ~(__a | __b); 04002 } 04003 04004 static vector short __ATTRS_o_ai 04005 vec_vnor(vector short __a, vector short __b) 04006 { 04007 return ~(__a | __b); 04008 } 04009 04010 static vector unsigned short __ATTRS_o_ai 04011 vec_vnor(vector unsigned short __a, vector unsigned short __b) 04012 { 04013 return ~(__a | __b); 04014 } 04015 04016 static vector bool short __ATTRS_o_ai 04017 vec_vnor(vector bool short __a, vector bool short __b) 04018 { 04019 return ~(__a | __b); 04020 } 04021 04022 static vector int __ATTRS_o_ai 04023 vec_vnor(vector int __a, vector int __b) 04024 { 04025 return ~(__a | __b); 04026 } 04027 04028 static vector unsigned int __ATTRS_o_ai 04029 vec_vnor(vector unsigned int __a, vector unsigned int __b) 04030 { 04031 return ~(__a | __b); 04032 } 04033 04034 static vector bool int __ATTRS_o_ai 04035 vec_vnor(vector bool int __a, vector bool int __b) 04036 { 04037 return ~(__a | __b); 04038 } 04039 04040 static vector float __ATTRS_o_ai 04041 vec_vnor(vector float __a, vector float __b) 04042 { 04043 vector unsigned int __res = ~((vector unsigned int)__a | (vector unsigned int)__b); 04044 return (vector float)__res; 04045 } 04046 04047 /* vec_or */ 04048 04049 #define __builtin_altivec_vor vec_or 04050 04051 static vector signed char __ATTRS_o_ai 04052 vec_or(vector signed char __a, vector signed char __b) 04053 { 04054 return __a | __b; 04055 } 04056 04057 static vector signed char __ATTRS_o_ai 04058 vec_or(vector bool char __a, vector signed char __b) 04059 { 04060 return (vector signed char)__a | __b; 04061 } 04062 04063 static vector signed char __ATTRS_o_ai 04064 vec_or(vector signed char __a, vector bool char __b) 04065 { 04066 return __a | (vector signed char)__b; 04067 } 04068 04069 static vector unsigned char __ATTRS_o_ai 04070 vec_or(vector unsigned char __a, vector unsigned char __b) 04071 { 04072 return __a | __b; 04073 } 04074 04075 static vector unsigned char __ATTRS_o_ai 04076 vec_or(vector bool char __a, vector unsigned char __b) 04077 { 04078 return (vector unsigned char)__a | __b; 04079 } 04080 04081 static vector unsigned char __ATTRS_o_ai 04082 vec_or(vector unsigned char __a, vector bool char __b) 04083 { 04084 return __a | (vector unsigned char)__b; 04085 } 04086 04087 static vector bool char __ATTRS_o_ai 04088 vec_or(vector bool char __a, vector bool char __b) 04089 { 04090 return __a | __b; 04091 } 04092 04093 static vector short __ATTRS_o_ai 04094 vec_or(vector short __a, vector short __b) 04095 { 04096 return __a | __b; 04097 } 04098 04099 static vector short __ATTRS_o_ai 04100 vec_or(vector bool short __a, vector short __b) 04101 { 04102 return (vector short)__a | __b; 04103 } 04104 04105 static vector short __ATTRS_o_ai 04106 vec_or(vector short __a, vector bool short __b) 04107 { 04108 return __a | (vector short)__b; 04109 } 04110 04111 static vector unsigned short __ATTRS_o_ai 04112 vec_or(vector unsigned short __a, vector unsigned short __b) 04113 { 04114 return __a | __b; 04115 } 04116 04117 static vector unsigned short __ATTRS_o_ai 04118 vec_or(vector bool short __a, vector unsigned short __b) 04119 { 04120 return (vector unsigned short)__a | __b; 04121 } 04122 04123 static vector unsigned short __ATTRS_o_ai 04124 vec_or(vector unsigned short __a, vector bool short __b) 04125 { 04126 return __a | (vector unsigned short)__b; 04127 } 04128 04129 static vector bool short __ATTRS_o_ai 04130 vec_or(vector bool short __a, vector bool short __b) 04131 { 04132 return __a | __b; 04133 } 04134 04135 static vector int __ATTRS_o_ai 04136 vec_or(vector int __a, vector int __b) 04137 { 04138 return __a | __b; 04139 } 04140 04141 static vector int __ATTRS_o_ai 04142 vec_or(vector bool int __a, vector int __b) 04143 { 04144 return (vector int)__a | __b; 04145 } 04146 04147 static vector int __ATTRS_o_ai 04148 vec_or(vector int __a, vector bool int __b) 04149 { 04150 return __a | (vector int)__b; 04151 } 04152 04153 static vector unsigned int __ATTRS_o_ai 04154 vec_or(vector unsigned int __a, vector unsigned int __b) 04155 { 04156 return __a | __b; 04157 } 04158 04159 static vector unsigned int __ATTRS_o_ai 04160 vec_or(vector bool int __a, vector unsigned int __b) 04161 { 04162 return (vector unsigned int)__a | __b; 04163 } 04164 04165 static vector unsigned int __ATTRS_o_ai 04166 vec_or(vector unsigned int __a, vector bool int __b) 04167 { 04168 return __a | (vector unsigned int)__b; 04169 } 04170 04171 static vector bool int __ATTRS_o_ai 04172 vec_or(vector bool int __a, vector bool int __b) 04173 { 04174 return __a | __b; 04175 } 04176 04177 static vector float __ATTRS_o_ai 04178 vec_or(vector float __a, vector float __b) 04179 { 04180 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; 04181 return (vector float)__res; 04182 } 04183 04184 static vector float __ATTRS_o_ai 04185 vec_or(vector bool int __a, vector float __b) 04186 { 04187 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; 04188 return (vector float)__res; 04189 } 04190 04191 static vector float __ATTRS_o_ai 04192 vec_or(vector float __a, vector bool int __b) 04193 { 04194 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; 04195 return (vector float)__res; 04196 } 04197 04198 /* vec_vor */ 04199 04200 static vector signed char __ATTRS_o_ai 04201 vec_vor(vector signed char __a, vector signed char __b) 04202 { 04203 return __a | __b; 04204 } 04205 04206 static vector signed char __ATTRS_o_ai 04207 vec_vor(vector bool char __a, vector signed char __b) 04208 { 04209 return (vector signed char)__a | __b; 04210 } 04211 04212 static vector signed char __ATTRS_o_ai 04213 vec_vor(vector signed char __a, vector bool char __b) 04214 { 04215 return __a | (vector signed char)__b; 04216 } 04217 04218 static vector unsigned char __ATTRS_o_ai 04219 vec_vor(vector unsigned char __a, vector unsigned char __b) 04220 { 04221 return __a | __b; 04222 } 04223 04224 static vector unsigned char __ATTRS_o_ai 04225 vec_vor(vector bool char __a, vector unsigned char __b) 04226 { 04227 return (vector unsigned char)__a | __b; 04228 } 04229 04230 static vector unsigned char __ATTRS_o_ai 04231 vec_vor(vector unsigned char __a, vector bool char __b) 04232 { 04233 return __a | (vector unsigned char)__b; 04234 } 04235 04236 static vector bool char __ATTRS_o_ai 04237 vec_vor(vector bool char __a, vector bool char __b) 04238 { 04239 return __a | __b; 04240 } 04241 04242 static vector short __ATTRS_o_ai 04243 vec_vor(vector short __a, vector short __b) 04244 { 04245 return __a | __b; 04246 } 04247 04248 static vector short __ATTRS_o_ai 04249 vec_vor(vector bool short __a, vector short __b) 04250 { 04251 return (vector short)__a | __b; 04252 } 04253 04254 static vector short __ATTRS_o_ai 04255 vec_vor(vector short __a, vector bool short __b) 04256 { 04257 return __a | (vector short)__b; 04258 } 04259 04260 static vector unsigned short __ATTRS_o_ai 04261 vec_vor(vector unsigned short __a, vector unsigned short __b) 04262 { 04263 return __a | __b; 04264 } 04265 04266 static vector unsigned short __ATTRS_o_ai 04267 vec_vor(vector bool short __a, vector unsigned short __b) 04268 { 04269 return (vector unsigned short)__a | __b; 04270 } 04271 04272 static vector unsigned short __ATTRS_o_ai 04273 vec_vor(vector unsigned short __a, vector bool short __b) 04274 { 04275 return __a | (vector unsigned short)__b; 04276 } 04277 04278 static vector bool short __ATTRS_o_ai 04279 vec_vor(vector bool short __a, vector bool short __b) 04280 { 04281 return __a | __b; 04282 } 04283 04284 static vector int __ATTRS_o_ai 04285 vec_vor(vector int __a, vector int __b) 04286 { 04287 return __a | __b; 04288 } 04289 04290 static vector int __ATTRS_o_ai 04291 vec_vor(vector bool int __a, vector int __b) 04292 { 04293 return (vector int)__a | __b; 04294 } 04295 04296 static vector int __ATTRS_o_ai 04297 vec_vor(vector int __a, vector bool int __b) 04298 { 04299 return __a | (vector int)__b; 04300 } 04301 04302 static vector unsigned int __ATTRS_o_ai 04303 vec_vor(vector unsigned int __a, vector unsigned int __b) 04304 { 04305 return __a | __b; 04306 } 04307 04308 static vector unsigned int __ATTRS_o_ai 04309 vec_vor(vector bool int __a, vector unsigned int __b) 04310 { 04311 return (vector unsigned int)__a | __b; 04312 } 04313 04314 static vector unsigned int __ATTRS_o_ai 04315 vec_vor(vector unsigned int __a, vector bool int __b) 04316 { 04317 return __a | (vector unsigned int)__b; 04318 } 04319 04320 static vector bool int __ATTRS_o_ai 04321 vec_vor(vector bool int __a, vector bool int __b) 04322 { 04323 return __a | __b; 04324 } 04325 04326 static vector float __ATTRS_o_ai 04327 vec_vor(vector float __a, vector float __b) 04328 { 04329 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; 04330 return (vector float)__res; 04331 } 04332 04333 static vector float __ATTRS_o_ai 04334 vec_vor(vector bool int __a, vector float __b) 04335 { 04336 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; 04337 return (vector float)__res; 04338 } 04339 04340 static vector float __ATTRS_o_ai 04341 vec_vor(vector float __a, vector bool int __b) 04342 { 04343 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b; 04344 return (vector float)__res; 04345 } 04346 04347 /* vec_pack */ 04348 04349 /* The various vector pack instructions have a big-endian bias, so for 04350 little endian we must handle reversed element numbering. */ 04351 04352 static vector signed char __ATTRS_o_ai 04353 vec_pack(vector signed short __a, vector signed short __b) 04354 { 04355 #ifdef __LITTLE_ENDIAN__ 04356 return (vector signed char)vec_perm(__a, __b, (vector unsigned char) 04357 (0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 04358 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 04359 #else 04360 return (vector signed char)vec_perm(__a, __b, (vector unsigned char) 04361 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 04362 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 04363 #endif 04364 } 04365 04366 static vector unsigned char __ATTRS_o_ai 04367 vec_pack(vector unsigned short __a, vector unsigned short __b) 04368 { 04369 #ifdef __LITTLE_ENDIAN__ 04370 return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char) 04371 (0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 04372 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 04373 #else 04374 return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char) 04375 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 04376 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 04377 #endif 04378 } 04379 04380 static vector bool char __ATTRS_o_ai 04381 vec_pack(vector bool short __a, vector bool short __b) 04382 { 04383 #ifdef __LITTLE_ENDIAN__ 04384 return (vector bool char)vec_perm(__a, __b, (vector unsigned char) 04385 (0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 04386 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 04387 #else 04388 return (vector bool char)vec_perm(__a, __b, (vector unsigned char) 04389 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 04390 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 04391 #endif 04392 } 04393 04394 static vector short __ATTRS_o_ai 04395 vec_pack(vector int __a, vector int __b) 04396 { 04397 #ifdef __LITTLE_ENDIAN__ 04398 return (vector short)vec_perm(__a, __b, (vector unsigned char) 04399 (0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 04400 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 04401 #else 04402 return (vector short)vec_perm(__a, __b, (vector unsigned char) 04403 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 04404 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 04405 #endif 04406 } 04407 04408 static vector unsigned short __ATTRS_o_ai 04409 vec_pack(vector unsigned int __a, vector unsigned int __b) 04410 { 04411 #ifdef __LITTLE_ENDIAN__ 04412 return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char) 04413 (0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 04414 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 04415 #else 04416 return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char) 04417 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 04418 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 04419 #endif 04420 } 04421 04422 static vector bool short __ATTRS_o_ai 04423 vec_pack(vector bool int __a, vector bool int __b) 04424 { 04425 #ifdef __LITTLE_ENDIAN__ 04426 return (vector bool short)vec_perm(__a, __b, (vector unsigned char) 04427 (0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 04428 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 04429 #else 04430 return (vector bool short)vec_perm(__a, __b, (vector unsigned char) 04431 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 04432 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 04433 #endif 04434 } 04435 04436 /* vec_vpkuhum */ 04437 04438 #define __builtin_altivec_vpkuhum vec_vpkuhum 04439 04440 static vector signed char __ATTRS_o_ai 04441 vec_vpkuhum(vector signed short __a, vector signed short __b) 04442 { 04443 #ifdef __LITTLE_ENDIAN__ 04444 return (vector signed char)vec_perm(__a, __b, (vector unsigned char) 04445 (0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 04446 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 04447 #else 04448 return (vector signed char)vec_perm(__a, __b, (vector unsigned char) 04449 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 04450 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 04451 #endif 04452 } 04453 04454 static vector unsigned char __ATTRS_o_ai 04455 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) 04456 { 04457 #ifdef __LITTLE_ENDIAN__ 04458 return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char) 04459 (0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 04460 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 04461 #else 04462 return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char) 04463 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 04464 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 04465 #endif 04466 } 04467 04468 static vector bool char __ATTRS_o_ai 04469 vec_vpkuhum(vector bool short __a, vector bool short __b) 04470 { 04471 #ifdef __LITTLE_ENDIAN__ 04472 return (vector bool char)vec_perm(__a, __b, (vector unsigned char) 04473 (0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 04474 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 04475 #else 04476 return (vector bool char)vec_perm(__a, __b, (vector unsigned char) 04477 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 04478 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 04479 #endif 04480 } 04481 04482 /* vec_vpkuwum */ 04483 04484 #define __builtin_altivec_vpkuwum vec_vpkuwum 04485 04486 static vector short __ATTRS_o_ai 04487 vec_vpkuwum(vector int __a, vector int __b) 04488 { 04489 #ifdef __LITTLE_ENDIAN__ 04490 return (vector short)vec_perm(__a, __b, (vector unsigned char) 04491 (0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 04492 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 04493 #else 04494 return (vector short)vec_perm(__a, __b, (vector unsigned char) 04495 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 04496 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 04497 #endif 04498 } 04499 04500 static vector unsigned short __ATTRS_o_ai 04501 vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) 04502 { 04503 #ifdef __LITTLE_ENDIAN__ 04504 return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char) 04505 (0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 04506 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 04507 #else 04508 return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char) 04509 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 04510 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 04511 #endif 04512 } 04513 04514 static vector bool short __ATTRS_o_ai 04515 vec_vpkuwum(vector bool int __a, vector bool int __b) 04516 { 04517 #ifdef __LITTLE_ENDIAN__ 04518 return (vector bool short)vec_perm(__a, __b, (vector unsigned char) 04519 (0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 04520 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 04521 #else 04522 return (vector bool short)vec_perm(__a, __b, (vector unsigned char) 04523 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 04524 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 04525 #endif 04526 } 04527 04528 /* vec_packpx */ 04529 04530 static vector pixel __attribute__((__always_inline__)) 04531 vec_packpx(vector unsigned int __a, vector unsigned int __b) 04532 { 04533 #ifdef __LITTLE_ENDIAN__ 04534 return (vector pixel)__builtin_altivec_vpkpx(__b, __a); 04535 #else 04536 return (vector pixel)__builtin_altivec_vpkpx(__a, __b); 04537 #endif 04538 } 04539 04540 /* vec_vpkpx */ 04541 04542 static vector pixel __attribute__((__always_inline__)) 04543 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) 04544 { 04545 #ifdef __LITTLE_ENDIAN__ 04546 return (vector pixel)__builtin_altivec_vpkpx(__b, __a); 04547 #else 04548 return (vector pixel)__builtin_altivec_vpkpx(__a, __b); 04549 #endif 04550 } 04551 04552 /* vec_packs */ 04553 04554 static vector signed char __ATTRS_o_ai 04555 vec_packs(vector short __a, vector short __b) 04556 { 04557 #ifdef __LITTLE_ENDIAN__ 04558 return __builtin_altivec_vpkshss(__b, __a); 04559 #else 04560 return __builtin_altivec_vpkshss(__a, __b); 04561 #endif 04562 } 04563 04564 static vector unsigned char __ATTRS_o_ai 04565 vec_packs(vector unsigned short __a, vector unsigned short __b) 04566 { 04567 #ifdef __LITTLE_ENDIAN__ 04568 return __builtin_altivec_vpkuhus(__b, __a); 04569 #else 04570 return __builtin_altivec_vpkuhus(__a, __b); 04571 #endif 04572 } 04573 04574 static vector signed short __ATTRS_o_ai 04575 vec_packs(vector int __a, vector int __b) 04576 { 04577 #ifdef __LITTLE_ENDIAN__ 04578 return __builtin_altivec_vpkswss(__b, __a); 04579 #else 04580 return __builtin_altivec_vpkswss(__a, __b); 04581 #endif 04582 } 04583 04584 static vector unsigned short __ATTRS_o_ai 04585 vec_packs(vector unsigned int __a, vector unsigned int __b) 04586 { 04587 #ifdef __LITTLE_ENDIAN__ 04588 return __builtin_altivec_vpkuwus(__b, __a); 04589 #else 04590 return __builtin_altivec_vpkuwus(__a, __b); 04591 #endif 04592 } 04593 04594 /* vec_vpkshss */ 04595 04596 static vector signed char __attribute__((__always_inline__)) 04597 vec_vpkshss(vector short __a, vector short __b) 04598 { 04599 #ifdef __LITTLE_ENDIAN__ 04600 return __builtin_altivec_vpkshss(__b, __a); 04601 #else 04602 return __builtin_altivec_vpkshss(__a, __b); 04603 #endif 04604 } 04605 04606 /* vec_vpkuhus */ 04607 04608 static vector unsigned char __attribute__((__always_inline__)) 04609 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) 04610 { 04611 #ifdef __LITTLE_ENDIAN__ 04612 return __builtin_altivec_vpkuhus(__b, __a); 04613 #else 04614 return __builtin_altivec_vpkuhus(__a, __b); 04615 #endif 04616 } 04617 04618 /* vec_vpkswss */ 04619 04620 static vector signed short __attribute__((__always_inline__)) 04621 vec_vpkswss(vector int __a, vector int __b) 04622 { 04623 #ifdef __LITTLE_ENDIAN__ 04624 return __builtin_altivec_vpkswss(__b, __a); 04625 #else 04626 return __builtin_altivec_vpkswss(__a, __b); 04627 #endif 04628 } 04629 04630 /* vec_vpkuwus */ 04631 04632 static vector unsigned short __attribute__((__always_inline__)) 04633 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) 04634 { 04635 #ifdef __LITTLE_ENDIAN__ 04636 return __builtin_altivec_vpkuwus(__b, __a); 04637 #else 04638 return __builtin_altivec_vpkuwus(__a, __b); 04639 #endif 04640 } 04641 04642 /* vec_packsu */ 04643 04644 static vector unsigned char __ATTRS_o_ai 04645 vec_packsu(vector short __a, vector short __b) 04646 { 04647 #ifdef __LITTLE_ENDIAN__ 04648 return __builtin_altivec_vpkshus(__b, __a); 04649 #else 04650 return __builtin_altivec_vpkshus(__a, __b); 04651 #endif 04652 } 04653 04654 static vector unsigned char __ATTRS_o_ai 04655 vec_packsu(vector unsigned short __a, vector unsigned short __b) 04656 { 04657 #ifdef __LITTLE_ENDIAN__ 04658 return __builtin_altivec_vpkuhus(__b, __a); 04659 #else 04660 return __builtin_altivec_vpkuhus(__a, __b); 04661 #endif 04662 } 04663 04664 static vector unsigned short __ATTRS_o_ai 04665 vec_packsu(vector int __a, vector int __b) 04666 { 04667 #ifdef __LITTLE_ENDIAN__ 04668 return __builtin_altivec_vpkswus(__b, __a); 04669 #else 04670 return __builtin_altivec_vpkswus(__a, __b); 04671 #endif 04672 } 04673 04674 static vector unsigned short __ATTRS_o_ai 04675 vec_packsu(vector unsigned int __a, vector unsigned int __b) 04676 { 04677 #ifdef __LITTLE_ENDIAN__ 04678 return __builtin_altivec_vpkuwus(__b, __a); 04679 #else 04680 return __builtin_altivec_vpkuwus(__a, __b); 04681 #endif 04682 } 04683 04684 /* vec_vpkshus */ 04685 04686 static vector unsigned char __ATTRS_o_ai 04687 vec_vpkshus(vector short __a, vector short __b) 04688 { 04689 #ifdef __LITTLE_ENDIAN__ 04690 return __builtin_altivec_vpkshus(__b, __a); 04691 #else 04692 return __builtin_altivec_vpkshus(__a, __b); 04693 #endif 04694 } 04695 04696 static vector unsigned char __ATTRS_o_ai 04697 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) 04698 { 04699 #ifdef __LITTLE_ENDIAN__ 04700 return __builtin_altivec_vpkuhus(__b, __a); 04701 #else 04702 return __builtin_altivec_vpkuhus(__a, __b); 04703 #endif 04704 } 04705 04706 /* vec_vpkswus */ 04707 04708 static vector unsigned short __ATTRS_o_ai 04709 vec_vpkswus(vector int __a, vector int __b) 04710 { 04711 #ifdef __LITTLE_ENDIAN__ 04712 return __builtin_altivec_vpkswus(__b, __a); 04713 #else 04714 return __builtin_altivec_vpkswus(__a, __b); 04715 #endif 04716 } 04717 04718 static vector unsigned short __ATTRS_o_ai 04719 vec_vpkswus(vector unsigned int __a, vector unsigned int __b) 04720 { 04721 #ifdef __LITTLE_ENDIAN__ 04722 return __builtin_altivec_vpkuwus(__b, __a); 04723 #else 04724 return __builtin_altivec_vpkuwus(__a, __b); 04725 #endif 04726 } 04727 04728 /* vec_perm */ 04729 04730 // The vperm instruction is defined architecturally with a big-endian bias. 04731 // For little endian, we swap the input operands and invert the permute 04732 // control vector. Only the rightmost 5 bits matter, so we could use 04733 // a vector of all 31s instead of all 255s to perform the inversion. 04734 // However, when the PCV is not a constant, using 255 has an advantage 04735 // in that the vec_xor can be recognized as a vec_nor (and for P8 and 04736 // later, possibly a vec_nand). 04737 04738 vector signed char __ATTRS_o_ai 04739 vec_perm(vector signed char __a, vector signed char __b, vector unsigned char __c) 04740 { 04741 #ifdef __LITTLE_ENDIAN__ 04742 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04743 255,255,255,255,255,255,255,255}; 04744 __d = vec_xor(__c, __d); 04745 return (vector signed char) 04746 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04747 #else 04748 return (vector signed char) 04749 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04750 #endif 04751 } 04752 04753 vector unsigned char __ATTRS_o_ai 04754 vec_perm(vector unsigned char __a, 04755 vector unsigned char __b, 04756 vector unsigned char __c) 04757 { 04758 #ifdef __LITTLE_ENDIAN__ 04759 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04760 255,255,255,255,255,255,255,255}; 04761 __d = vec_xor(__c, __d); 04762 return (vector unsigned char) 04763 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04764 #else 04765 return (vector unsigned char) 04766 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04767 #endif 04768 } 04769 04770 vector bool char __ATTRS_o_ai 04771 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) 04772 { 04773 #ifdef __LITTLE_ENDIAN__ 04774 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04775 255,255,255,255,255,255,255,255}; 04776 __d = vec_xor(__c, __d); 04777 return (vector bool char) 04778 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04779 #else 04780 return (vector bool char) 04781 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04782 #endif 04783 } 04784 04785 vector short __ATTRS_o_ai 04786 vec_perm(vector short __a, vector short __b, vector unsigned char __c) 04787 { 04788 #ifdef __LITTLE_ENDIAN__ 04789 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04790 255,255,255,255,255,255,255,255}; 04791 __d = vec_xor(__c, __d); 04792 return (vector short) 04793 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04794 #else 04795 return (vector short) 04796 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04797 #endif 04798 } 04799 04800 vector unsigned short __ATTRS_o_ai 04801 vec_perm(vector unsigned short __a, 04802 vector unsigned short __b, 04803 vector unsigned char __c) 04804 { 04805 #ifdef __LITTLE_ENDIAN__ 04806 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04807 255,255,255,255,255,255,255,255}; 04808 __d = vec_xor(__c, __d); 04809 return (vector unsigned short) 04810 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04811 #else 04812 return (vector unsigned short) 04813 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04814 #endif 04815 } 04816 04817 vector bool short __ATTRS_o_ai 04818 vec_perm(vector bool short __a, vector bool short __b, vector unsigned char __c) 04819 { 04820 #ifdef __LITTLE_ENDIAN__ 04821 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04822 255,255,255,255,255,255,255,255}; 04823 __d = vec_xor(__c, __d); 04824 return (vector bool short) 04825 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04826 #else 04827 return (vector bool short) 04828 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04829 #endif 04830 } 04831 04832 vector pixel __ATTRS_o_ai 04833 vec_perm(vector pixel __a, vector pixel __b, vector unsigned char __c) 04834 { 04835 #ifdef __LITTLE_ENDIAN__ 04836 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04837 255,255,255,255,255,255,255,255}; 04838 __d = vec_xor(__c, __d); 04839 return (vector pixel) 04840 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04841 #else 04842 return (vector pixel) 04843 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04844 #endif 04845 } 04846 04847 vector int __ATTRS_o_ai 04848 vec_perm(vector int __a, vector int __b, vector unsigned char __c) 04849 { 04850 #ifdef __LITTLE_ENDIAN__ 04851 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04852 255,255,255,255,255,255,255,255}; 04853 __d = vec_xor(__c, __d); 04854 return (vector int)__builtin_altivec_vperm_4si(__b, __a, __d); 04855 #else 04856 return (vector int)__builtin_altivec_vperm_4si(__a, __b, __c); 04857 #endif 04858 } 04859 04860 vector unsigned int __ATTRS_o_ai 04861 vec_perm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c) 04862 { 04863 #ifdef __LITTLE_ENDIAN__ 04864 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04865 255,255,255,255,255,255,255,255}; 04866 __d = vec_xor(__c, __d); 04867 return (vector unsigned int) 04868 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04869 #else 04870 return (vector unsigned int) 04871 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04872 #endif 04873 } 04874 04875 vector bool int __ATTRS_o_ai 04876 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) 04877 { 04878 #ifdef __LITTLE_ENDIAN__ 04879 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04880 255,255,255,255,255,255,255,255}; 04881 __d = vec_xor(__c, __d); 04882 return (vector bool int) 04883 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04884 #else 04885 return (vector bool int) 04886 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04887 #endif 04888 } 04889 04890 vector float __ATTRS_o_ai 04891 vec_perm(vector float __a, vector float __b, vector unsigned char __c) 04892 { 04893 #ifdef __LITTLE_ENDIAN__ 04894 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04895 255,255,255,255,255,255,255,255}; 04896 __d = vec_xor(__c, __d); 04897 return (vector float) 04898 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04899 #else 04900 return (vector float) 04901 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04902 #endif 04903 } 04904 04905 #ifdef __VSX__ 04906 vector long long __ATTRS_o_ai 04907 vec_perm(vector long long __a, vector long long __b, vector unsigned char __c) 04908 { 04909 #ifdef __LITTLE_ENDIAN__ 04910 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04911 255,255,255,255,255,255,255,255}; 04912 __d = vec_xor(__c, __d); 04913 return (vector long long)__builtin_altivec_vperm_4si(__b, __a, __d); 04914 #else 04915 return (vector long long)__builtin_altivec_vperm_4si(__a, __b, __c); 04916 #endif 04917 } 04918 04919 vector unsigned long long __ATTRS_o_ai 04920 vec_perm(vector unsigned long long __a, vector unsigned long long __b, 04921 vector unsigned char __c) 04922 { 04923 #ifdef __LITTLE_ENDIAN__ 04924 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04925 255,255,255,255,255,255,255,255}; 04926 __d = vec_xor(__c, __d); 04927 return (vector unsigned long long) 04928 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04929 #else 04930 return (vector unsigned long long) 04931 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04932 #endif 04933 } 04934 04935 vector double __ATTRS_o_ai 04936 vec_perm(vector double __a, vector double __b, vector unsigned char __c) 04937 { 04938 #ifdef __LITTLE_ENDIAN__ 04939 vector unsigned char __d = {255,255,255,255,255,255,255,255, 04940 255,255,255,255,255,255,255,255}; 04941 __d = vec_xor(__c, __d); 04942 return (vector double) 04943 __builtin_altivec_vperm_4si((vector int)__b, (vector int)__a, __d); 04944 #else 04945 return (vector double) 04946 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c); 04947 #endif 04948 } 04949 #endif 04950 04951 /* vec_vperm */ 04952 04953 static vector signed char __ATTRS_o_ai 04954 vec_vperm(vector signed char __a, vector signed char __b, vector unsigned char __c) 04955 { 04956 return vec_perm(__a, __b, __c); 04957 } 04958 04959 static vector unsigned char __ATTRS_o_ai 04960 vec_vperm(vector unsigned char __a, 04961 vector unsigned char __b, 04962 vector unsigned char __c) 04963 { 04964 return vec_perm(__a, __b, __c); 04965 } 04966 04967 static vector bool char __ATTRS_o_ai 04968 vec_vperm(vector bool char __a, vector bool char __b, vector unsigned char __c) 04969 { 04970 return vec_perm(__a, __b, __c); 04971 } 04972 04973 static vector short __ATTRS_o_ai 04974 vec_vperm(vector short __a, vector short __b, vector unsigned char __c) 04975 { 04976 return vec_perm(__a, __b, __c); 04977 } 04978 04979 static vector unsigned short __ATTRS_o_ai 04980 vec_vperm(vector unsigned short __a, 04981 vector unsigned short __b, 04982 vector unsigned char __c) 04983 { 04984 return vec_perm(__a, __b, __c); 04985 } 04986 04987 static vector bool short __ATTRS_o_ai 04988 vec_vperm(vector bool short __a, vector bool short __b, vector unsigned char __c) 04989 { 04990 return vec_perm(__a, __b, __c); 04991 } 04992 04993 static vector pixel __ATTRS_o_ai 04994 vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) 04995 { 04996 return vec_perm(__a, __b, __c); 04997 } 04998 04999 static vector int __ATTRS_o_ai 05000 vec_vperm(vector int __a, vector int __b, vector unsigned char __c) 05001 { 05002 return vec_perm(__a, __b, __c); 05003 } 05004 05005 static vector unsigned int __ATTRS_o_ai 05006 vec_vperm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c) 05007 { 05008 return vec_perm(__a, __b, __c); 05009 } 05010 05011 static vector bool int __ATTRS_o_ai 05012 vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) 05013 { 05014 return vec_perm(__a, __b, __c); 05015 } 05016 05017 static vector float __ATTRS_o_ai 05018 vec_vperm(vector float __a, vector float __b, vector unsigned char __c) 05019 { 05020 return vec_perm(__a, __b, __c); 05021 } 05022 05023 #ifdef __VSX__ 05024 static vector long long __ATTRS_o_ai 05025 vec_vperm(vector long long __a, vector long long __b, vector unsigned char __c) 05026 { 05027 return vec_perm(__a, __b, __c); 05028 } 05029 05030 static vector unsigned long long __ATTRS_o_ai 05031 vec_vperm(vector unsigned long long __a, vector unsigned long long __b, 05032 vector unsigned char __c) 05033 { 05034 return vec_perm(__a, __b, __c); 05035 } 05036 05037 static vector double __ATTRS_o_ai 05038 vec_vperm(vector double __a, vector double __b, vector unsigned char __c) 05039 { 05040 return vec_perm(__a, __b, __c); 05041 } 05042 #endif 05043 05044 /* vec_re */ 05045 05046 static vector float __attribute__((__always_inline__)) 05047 vec_re(vector float __a) 05048 { 05049 return __builtin_altivec_vrefp(__a); 05050 } 05051 05052 /* vec_vrefp */ 05053 05054 static vector float __attribute__((__always_inline__)) 05055 vec_vrefp(vector float __a) 05056 { 05057 return __builtin_altivec_vrefp(__a); 05058 } 05059 05060 /* vec_rl */ 05061 05062 static vector signed char __ATTRS_o_ai 05063 vec_rl(vector signed char __a, vector unsigned char __b) 05064 { 05065 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b); 05066 } 05067 05068 static vector unsigned char __ATTRS_o_ai 05069 vec_rl(vector unsigned char __a, vector unsigned char __b) 05070 { 05071 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b); 05072 } 05073 05074 static vector short __ATTRS_o_ai 05075 vec_rl(vector short __a, vector unsigned short __b) 05076 { 05077 return __builtin_altivec_vrlh(__a, __b); 05078 } 05079 05080 static vector unsigned short __ATTRS_o_ai 05081 vec_rl(vector unsigned short __a, vector unsigned short __b) 05082 { 05083 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b); 05084 } 05085 05086 static vector int __ATTRS_o_ai 05087 vec_rl(vector int __a, vector unsigned int __b) 05088 { 05089 return __builtin_altivec_vrlw(__a, __b); 05090 } 05091 05092 static vector unsigned int __ATTRS_o_ai 05093 vec_rl(vector unsigned int __a, vector unsigned int __b) 05094 { 05095 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b); 05096 } 05097 05098 /* vec_vrlb */ 05099 05100 static vector signed char __ATTRS_o_ai 05101 vec_vrlb(vector signed char __a, vector unsigned char __b) 05102 { 05103 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b); 05104 } 05105 05106 static vector unsigned char __ATTRS_o_ai 05107 vec_vrlb(vector unsigned char __a, vector unsigned char __b) 05108 { 05109 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b); 05110 } 05111 05112 /* vec_vrlh */ 05113 05114 static vector short __ATTRS_o_ai 05115 vec_vrlh(vector short __a, vector unsigned short __b) 05116 { 05117 return __builtin_altivec_vrlh(__a, __b); 05118 } 05119 05120 static vector unsigned short __ATTRS_o_ai 05121 vec_vrlh(vector unsigned short __a, vector unsigned short __b) 05122 { 05123 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b); 05124 } 05125 05126 /* vec_vrlw */ 05127 05128 static vector int __ATTRS_o_ai 05129 vec_vrlw(vector int __a, vector unsigned int __b) 05130 { 05131 return __builtin_altivec_vrlw(__a, __b); 05132 } 05133 05134 static vector unsigned int __ATTRS_o_ai 05135 vec_vrlw(vector unsigned int __a, vector unsigned int __b) 05136 { 05137 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b); 05138 } 05139 05140 /* vec_round */ 05141 05142 static vector float __attribute__((__always_inline__)) 05143 vec_round(vector float __a) 05144 { 05145 return __builtin_altivec_vrfin(__a); 05146 } 05147 05148 /* vec_vrfin */ 05149 05150 static vector float __attribute__((__always_inline__)) 05151 vec_vrfin(vector float __a) 05152 { 05153 return __builtin_altivec_vrfin(__a); 05154 } 05155 05156 /* vec_rsqrte */ 05157 05158 static __vector float __attribute__((__always_inline__)) 05159 vec_rsqrte(vector float __a) 05160 { 05161 return __builtin_altivec_vrsqrtefp(__a); 05162 } 05163 05164 /* vec_vrsqrtefp */ 05165 05166 static __vector float __attribute__((__always_inline__)) 05167 vec_vrsqrtefp(vector float __a) 05168 { 05169 return __builtin_altivec_vrsqrtefp(__a); 05170 } 05171 05172 /* vec_sel */ 05173 05174 #define __builtin_altivec_vsel_4si vec_sel 05175 05176 static vector signed char __ATTRS_o_ai 05177 vec_sel(vector signed char __a, vector signed char __b, vector unsigned char __c) 05178 { 05179 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 05180 } 05181 05182 static vector signed char __ATTRS_o_ai 05183 vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) 05184 { 05185 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 05186 } 05187 05188 static vector unsigned char __ATTRS_o_ai 05189 vec_sel(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) 05190 { 05191 return (__a & ~__c) | (__b & __c); 05192 } 05193 05194 static vector unsigned char __ATTRS_o_ai 05195 vec_sel(vector unsigned char __a, vector unsigned char __b, vector bool char __c) 05196 { 05197 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c); 05198 } 05199 05200 static vector bool char __ATTRS_o_ai 05201 vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) 05202 { 05203 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c); 05204 } 05205 05206 static vector bool char __ATTRS_o_ai 05207 vec_sel(vector bool char __a, vector bool char __b, vector bool char __c) 05208 { 05209 return (__a & ~__c) | (__b & __c); 05210 } 05211 05212 static vector short __ATTRS_o_ai 05213 vec_sel(vector short __a, vector short __b, vector unsigned short __c) 05214 { 05215 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 05216 } 05217 05218 static vector short __ATTRS_o_ai 05219 vec_sel(vector short __a, vector short __b, vector bool short __c) 05220 { 05221 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 05222 } 05223 05224 static vector unsigned short __ATTRS_o_ai 05225 vec_sel(vector unsigned short __a, 05226 vector unsigned short __b, 05227 vector unsigned short __c) 05228 { 05229 return (__a & ~__c) | (__b & __c); 05230 } 05231 05232 static vector unsigned short __ATTRS_o_ai 05233 vec_sel(vector unsigned short __a, vector unsigned short __b, vector bool short __c) 05234 { 05235 return (__a & ~(vector unsigned short)__c) | (__b & (vector unsigned short)__c); 05236 } 05237 05238 static vector bool short __ATTRS_o_ai 05239 vec_sel(vector bool short __a, vector bool short __b, vector unsigned short __c) 05240 { 05241 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c); 05242 } 05243 05244 static vector bool short __ATTRS_o_ai 05245 vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) 05246 { 05247 return (__a & ~__c) | (__b & __c); 05248 } 05249 05250 static vector int __ATTRS_o_ai 05251 vec_sel(vector int __a, vector int __b, vector unsigned int __c) 05252 { 05253 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 05254 } 05255 05256 static vector int __ATTRS_o_ai 05257 vec_sel(vector int __a, vector int __b, vector bool int __c) 05258 { 05259 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 05260 } 05261 05262 static vector unsigned int __ATTRS_o_ai 05263 vec_sel(vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) 05264 { 05265 return (__a & ~__c) | (__b & __c); 05266 } 05267 05268 static vector unsigned int __ATTRS_o_ai 05269 vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) 05270 { 05271 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c); 05272 } 05273 05274 static vector bool int __ATTRS_o_ai 05275 vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) 05276 { 05277 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c); 05278 } 05279 05280 static vector bool int __ATTRS_o_ai 05281 vec_sel(vector bool int __a, vector bool int __b, vector bool int __c) 05282 { 05283 return (__a & ~__c) | (__b & __c); 05284 } 05285 05286 static vector float __ATTRS_o_ai 05287 vec_sel(vector float __a, vector float __b, vector unsigned int __c) 05288 { 05289 vector int __res = ((vector int)__a & ~(vector int)__c) 05290 | ((vector int)__b & (vector int)__c); 05291 return (vector float)__res; 05292 } 05293 05294 static vector float __ATTRS_o_ai 05295 vec_sel(vector float __a, vector float __b, vector bool int __c) 05296 { 05297 vector int __res = ((vector int)__a & ~(vector int)__c) 05298 | ((vector int)__b & (vector int)__c); 05299 return (vector float)__res; 05300 } 05301 05302 /* vec_vsel */ 05303 05304 static vector signed char __ATTRS_o_ai 05305 vec_vsel(vector signed char __a, vector signed char __b, vector unsigned char __c) 05306 { 05307 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 05308 } 05309 05310 static vector signed char __ATTRS_o_ai 05311 vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) 05312 { 05313 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 05314 } 05315 05316 static vector unsigned char __ATTRS_o_ai 05317 vec_vsel(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) 05318 { 05319 return (__a & ~__c) | (__b & __c); 05320 } 05321 05322 static vector unsigned char __ATTRS_o_ai 05323 vec_vsel(vector unsigned char __a, vector unsigned char __b, vector bool char __c) 05324 { 05325 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c); 05326 } 05327 05328 static vector bool char __ATTRS_o_ai 05329 vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) 05330 { 05331 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c); 05332 } 05333 05334 static vector bool char __ATTRS_o_ai 05335 vec_vsel(vector bool char __a, vector bool char __b, vector bool char __c) 05336 { 05337 return (__a & ~__c) | (__b & __c); 05338 } 05339 05340 static vector short __ATTRS_o_ai 05341 vec_vsel(vector short __a, vector short __b, vector unsigned short __c) 05342 { 05343 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 05344 } 05345 05346 static vector short __ATTRS_o_ai 05347 vec_vsel(vector short __a, vector short __b, vector bool short __c) 05348 { 05349 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 05350 } 05351 05352 static vector unsigned short __ATTRS_o_ai 05353 vec_vsel(vector unsigned short __a, 05354 vector unsigned short __b, 05355 vector unsigned short __c) 05356 { 05357 return (__a & ~__c) | (__b & __c); 05358 } 05359 05360 static vector unsigned short __ATTRS_o_ai 05361 vec_vsel(vector unsigned short __a, vector unsigned short __b, vector bool short __c) 05362 { 05363 return (__a & ~(vector unsigned short)__c) | (__b & (vector unsigned short)__c); 05364 } 05365 05366 static vector bool short __ATTRS_o_ai 05367 vec_vsel(vector bool short __a, vector bool short __b, vector unsigned short __c) 05368 { 05369 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c); 05370 } 05371 05372 static vector bool short __ATTRS_o_ai 05373 vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) 05374 { 05375 return (__a & ~__c) | (__b & __c); 05376 } 05377 05378 static vector int __ATTRS_o_ai 05379 vec_vsel(vector int __a, vector int __b, vector unsigned int __c) 05380 { 05381 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 05382 } 05383 05384 static vector int __ATTRS_o_ai 05385 vec_vsel(vector int __a, vector int __b, vector bool int __c) 05386 { 05387 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 05388 } 05389 05390 static vector unsigned int __ATTRS_o_ai 05391 vec_vsel(vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) 05392 { 05393 return (__a & ~__c) | (__b & __c); 05394 } 05395 05396 static vector unsigned int __ATTRS_o_ai 05397 vec_vsel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) 05398 { 05399 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c); 05400 } 05401 05402 static vector bool int __ATTRS_o_ai 05403 vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) 05404 { 05405 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c); 05406 } 05407 05408 static vector bool int __ATTRS_o_ai 05409 vec_vsel(vector bool int __a, vector bool int __b, vector bool int __c) 05410 { 05411 return (__a & ~__c) | (__b & __c); 05412 } 05413 05414 static vector float __ATTRS_o_ai 05415 vec_vsel(vector float __a, vector float __b, vector unsigned int __c) 05416 { 05417 vector int __res = ((vector int)__a & ~(vector int)__c) 05418 | ((vector int)__b & (vector int)__c); 05419 return (vector float)__res; 05420 } 05421 05422 static vector float __ATTRS_o_ai 05423 vec_vsel(vector float __a, vector float __b, vector bool int __c) 05424 { 05425 vector int __res = ((vector int)__a & ~(vector int)__c) 05426 | ((vector int)__b & (vector int)__c); 05427 return (vector float)__res; 05428 } 05429 05430 /* vec_sl */ 05431 05432 static vector signed char __ATTRS_o_ai 05433 vec_sl(vector signed char __a, vector unsigned char __b) 05434 { 05435 return __a << (vector signed char)__b; 05436 } 05437 05438 static vector unsigned char __ATTRS_o_ai 05439 vec_sl(vector unsigned char __a, vector unsigned char __b) 05440 { 05441 return __a << __b; 05442 } 05443 05444 static vector short __ATTRS_o_ai 05445 vec_sl(vector short __a, vector unsigned short __b) 05446 { 05447 return __a << (vector short)__b; 05448 } 05449 05450 static vector unsigned short __ATTRS_o_ai 05451 vec_sl(vector unsigned short __a, vector unsigned short __b) 05452 { 05453 return __a << __b; 05454 } 05455 05456 static vector int __ATTRS_o_ai 05457 vec_sl(vector int __a, vector unsigned int __b) 05458 { 05459 return __a << (vector int)__b; 05460 } 05461 05462 static vector unsigned int __ATTRS_o_ai 05463 vec_sl(vector unsigned int __a, vector unsigned int __b) 05464 { 05465 return __a << __b; 05466 } 05467 05468 /* vec_vslb */ 05469 05470 #define __builtin_altivec_vslb vec_vslb 05471 05472 static vector signed char __ATTRS_o_ai 05473 vec_vslb(vector signed char __a, vector unsigned char __b) 05474 { 05475 return vec_sl(__a, __b); 05476 } 05477 05478 static vector unsigned char __ATTRS_o_ai 05479 vec_vslb(vector unsigned char __a, vector unsigned char __b) 05480 { 05481 return vec_sl(__a, __b); 05482 } 05483 05484 /* vec_vslh */ 05485 05486 #define __builtin_altivec_vslh vec_vslh 05487 05488 static vector short __ATTRS_o_ai 05489 vec_vslh(vector short __a, vector unsigned short __b) 05490 { 05491 return vec_sl(__a, __b); 05492 } 05493 05494 static vector unsigned short __ATTRS_o_ai 05495 vec_vslh(vector unsigned short __a, vector unsigned short __b) 05496 { 05497 return vec_sl(__a, __b); 05498 } 05499 05500 /* vec_vslw */ 05501 05502 #define __builtin_altivec_vslw vec_vslw 05503 05504 static vector int __ATTRS_o_ai 05505 vec_vslw(vector int __a, vector unsigned int __b) 05506 { 05507 return vec_sl(__a, __b); 05508 } 05509 05510 static vector unsigned int __ATTRS_o_ai 05511 vec_vslw(vector unsigned int __a, vector unsigned int __b) 05512 { 05513 return vec_sl(__a, __b); 05514 } 05515 05516 /* vec_sld */ 05517 05518 #define __builtin_altivec_vsldoi_4si vec_sld 05519 05520 static vector signed char __ATTRS_o_ai 05521 vec_sld(vector signed char __a, vector signed char __b, unsigned char __c) 05522 { 05523 return vec_perm(__a, __b, (vector unsigned char) 05524 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05525 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05526 } 05527 05528 static vector unsigned char __ATTRS_o_ai 05529 vec_sld(vector unsigned char __a, vector unsigned char __b, unsigned char __c) 05530 { 05531 return vec_perm(__a, __b, (vector unsigned char) 05532 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05533 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05534 } 05535 05536 static vector short __ATTRS_o_ai 05537 vec_sld(vector short __a, vector short __b, unsigned char __c) 05538 { 05539 return vec_perm(__a, __b, (vector unsigned char) 05540 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05541 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05542 } 05543 05544 static vector unsigned short __ATTRS_o_ai 05545 vec_sld(vector unsigned short __a, vector unsigned short __b, unsigned char __c) 05546 { 05547 return vec_perm(__a, __b, (vector unsigned char) 05548 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05549 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05550 } 05551 05552 static vector pixel __ATTRS_o_ai 05553 vec_sld(vector pixel __a, vector pixel __b, unsigned char __c) 05554 { 05555 return vec_perm(__a, __b, (vector unsigned char) 05556 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05557 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05558 } 05559 05560 static vector int __ATTRS_o_ai 05561 vec_sld(vector int __a, vector int __b, unsigned char __c) 05562 { 05563 return vec_perm(__a, __b, (vector unsigned char) 05564 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05565 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05566 } 05567 05568 static vector unsigned int __ATTRS_o_ai 05569 vec_sld(vector unsigned int __a, vector unsigned int __b, unsigned char __c) 05570 { 05571 return vec_perm(__a, __b, (vector unsigned char) 05572 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05573 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05574 } 05575 05576 static vector float __ATTRS_o_ai 05577 vec_sld(vector float __a, vector float __b, unsigned char __c) 05578 { 05579 return vec_perm(__a, __b, (vector unsigned char) 05580 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05581 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05582 } 05583 05584 /* vec_vsldoi */ 05585 05586 static vector signed char __ATTRS_o_ai 05587 vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) 05588 { 05589 return vec_perm(__a, __b, (vector unsigned char) 05590 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05591 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05592 } 05593 05594 static vector unsigned char __ATTRS_o_ai 05595 vec_vsldoi(vector unsigned char __a, vector unsigned char __b, unsigned char __c) 05596 { 05597 return vec_perm(__a, __b, (vector unsigned char) 05598 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05599 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05600 } 05601 05602 static vector short __ATTRS_o_ai 05603 vec_vsldoi(vector short __a, vector short __b, unsigned char __c) 05604 { 05605 return vec_perm(__a, __b, (vector unsigned char) 05606 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05607 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05608 } 05609 05610 static vector unsigned short __ATTRS_o_ai 05611 vec_vsldoi(vector unsigned short __a, vector unsigned short __b, unsigned char __c) 05612 { 05613 return vec_perm(__a, __b, (vector unsigned char) 05614 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05615 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05616 } 05617 05618 static vector pixel __ATTRS_o_ai 05619 vec_vsldoi(vector pixel __a, vector pixel __b, unsigned char __c) 05620 { 05621 return vec_perm(__a, __b, (vector unsigned char) 05622 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05623 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05624 } 05625 05626 static vector int __ATTRS_o_ai 05627 vec_vsldoi(vector int __a, vector int __b, unsigned char __c) 05628 { 05629 return vec_perm(__a, __b, (vector unsigned char) 05630 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05631 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05632 } 05633 05634 static vector unsigned int __ATTRS_o_ai 05635 vec_vsldoi(vector unsigned int __a, vector unsigned int __b, unsigned char __c) 05636 { 05637 return vec_perm(__a, __b, (vector unsigned char) 05638 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05639 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05640 } 05641 05642 static vector float __ATTRS_o_ai 05643 vec_vsldoi(vector float __a, vector float __b, unsigned char __c) 05644 { 05645 return vec_perm(__a, __b, (vector unsigned char) 05646 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7, 05647 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15)); 05648 } 05649 05650 /* vec_sll */ 05651 05652 static vector signed char __ATTRS_o_ai 05653 vec_sll(vector signed char __a, vector unsigned char __b) 05654 { 05655 return (vector signed char) 05656 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05657 } 05658 05659 static vector signed char __ATTRS_o_ai 05660 vec_sll(vector signed char __a, vector unsigned short __b) 05661 { 05662 return (vector signed char) 05663 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05664 } 05665 05666 static vector signed char __ATTRS_o_ai 05667 vec_sll(vector signed char __a, vector unsigned int __b) 05668 { 05669 return (vector signed char) 05670 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05671 } 05672 05673 static vector unsigned char __ATTRS_o_ai 05674 vec_sll(vector unsigned char __a, vector unsigned char __b) 05675 { 05676 return (vector unsigned char) 05677 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05678 } 05679 05680 static vector unsigned char __ATTRS_o_ai 05681 vec_sll(vector unsigned char __a, vector unsigned short __b) 05682 { 05683 return (vector unsigned char) 05684 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05685 } 05686 05687 static vector unsigned char __ATTRS_o_ai 05688 vec_sll(vector unsigned char __a, vector unsigned int __b) 05689 { 05690 return (vector unsigned char) 05691 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05692 } 05693 05694 static vector bool char __ATTRS_o_ai 05695 vec_sll(vector bool char __a, vector unsigned char __b) 05696 { 05697 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05698 } 05699 05700 static vector bool char __ATTRS_o_ai 05701 vec_sll(vector bool char __a, vector unsigned short __b) 05702 { 05703 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05704 } 05705 05706 static vector bool char __ATTRS_o_ai 05707 vec_sll(vector bool char __a, vector unsigned int __b) 05708 { 05709 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05710 } 05711 05712 static vector short __ATTRS_o_ai 05713 vec_sll(vector short __a, vector unsigned char __b) 05714 { 05715 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05716 } 05717 05718 static vector short __ATTRS_o_ai 05719 vec_sll(vector short __a, vector unsigned short __b) 05720 { 05721 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05722 } 05723 05724 static vector short __ATTRS_o_ai 05725 vec_sll(vector short __a, vector unsigned int __b) 05726 { 05727 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05728 } 05729 05730 static vector unsigned short __ATTRS_o_ai 05731 vec_sll(vector unsigned short __a, vector unsigned char __b) 05732 { 05733 return (vector unsigned short) 05734 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05735 } 05736 05737 static vector unsigned short __ATTRS_o_ai 05738 vec_sll(vector unsigned short __a, vector unsigned short __b) 05739 { 05740 return (vector unsigned short) 05741 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05742 } 05743 05744 static vector unsigned short __ATTRS_o_ai 05745 vec_sll(vector unsigned short __a, vector unsigned int __b) 05746 { 05747 return (vector unsigned short) 05748 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05749 } 05750 05751 static vector bool short __ATTRS_o_ai 05752 vec_sll(vector bool short __a, vector unsigned char __b) 05753 { 05754 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05755 } 05756 05757 static vector bool short __ATTRS_o_ai 05758 vec_sll(vector bool short __a, vector unsigned short __b) 05759 { 05760 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05761 } 05762 05763 static vector bool short __ATTRS_o_ai 05764 vec_sll(vector bool short __a, vector unsigned int __b) 05765 { 05766 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05767 } 05768 05769 static vector pixel __ATTRS_o_ai 05770 vec_sll(vector pixel __a, vector unsigned char __b) 05771 { 05772 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05773 } 05774 05775 static vector pixel __ATTRS_o_ai 05776 vec_sll(vector pixel __a, vector unsigned short __b) 05777 { 05778 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05779 } 05780 05781 static vector pixel __ATTRS_o_ai 05782 vec_sll(vector pixel __a, vector unsigned int __b) 05783 { 05784 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05785 } 05786 05787 static vector int __ATTRS_o_ai 05788 vec_sll(vector int __a, vector unsigned char __b) 05789 { 05790 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 05791 } 05792 05793 static vector int __ATTRS_o_ai 05794 vec_sll(vector int __a, vector unsigned short __b) 05795 { 05796 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 05797 } 05798 05799 static vector int __ATTRS_o_ai 05800 vec_sll(vector int __a, vector unsigned int __b) 05801 { 05802 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 05803 } 05804 05805 static vector unsigned int __ATTRS_o_ai 05806 vec_sll(vector unsigned int __a, vector unsigned char __b) 05807 { 05808 return (vector unsigned int) 05809 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05810 } 05811 05812 static vector unsigned int __ATTRS_o_ai 05813 vec_sll(vector unsigned int __a, vector unsigned short __b) 05814 { 05815 return (vector unsigned int) 05816 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05817 } 05818 05819 static vector unsigned int __ATTRS_o_ai 05820 vec_sll(vector unsigned int __a, vector unsigned int __b) 05821 { 05822 return (vector unsigned int) 05823 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05824 } 05825 05826 static vector bool int __ATTRS_o_ai 05827 vec_sll(vector bool int __a, vector unsigned char __b) 05828 { 05829 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05830 } 05831 05832 static vector bool int __ATTRS_o_ai 05833 vec_sll(vector bool int __a, vector unsigned short __b) 05834 { 05835 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05836 } 05837 05838 static vector bool int __ATTRS_o_ai 05839 vec_sll(vector bool int __a, vector unsigned int __b) 05840 { 05841 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05842 } 05843 05844 /* vec_vsl */ 05845 05846 static vector signed char __ATTRS_o_ai 05847 vec_vsl(vector signed char __a, vector unsigned char __b) 05848 { 05849 return (vector signed char) 05850 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05851 } 05852 05853 static vector signed char __ATTRS_o_ai 05854 vec_vsl(vector signed char __a, vector unsigned short __b) 05855 { 05856 return (vector signed char) 05857 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05858 } 05859 05860 static vector signed char __ATTRS_o_ai 05861 vec_vsl(vector signed char __a, vector unsigned int __b) 05862 { 05863 return (vector signed char) 05864 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05865 } 05866 05867 static vector unsigned char __ATTRS_o_ai 05868 vec_vsl(vector unsigned char __a, vector unsigned char __b) 05869 { 05870 return (vector unsigned char) 05871 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05872 } 05873 05874 static vector unsigned char __ATTRS_o_ai 05875 vec_vsl(vector unsigned char __a, vector unsigned short __b) 05876 { 05877 return (vector unsigned char) 05878 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05879 } 05880 05881 static vector unsigned char __ATTRS_o_ai 05882 vec_vsl(vector unsigned char __a, vector unsigned int __b) 05883 { 05884 return (vector unsigned char) 05885 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05886 } 05887 05888 static vector bool char __ATTRS_o_ai 05889 vec_vsl(vector bool char __a, vector unsigned char __b) 05890 { 05891 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05892 } 05893 05894 static vector bool char __ATTRS_o_ai 05895 vec_vsl(vector bool char __a, vector unsigned short __b) 05896 { 05897 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05898 } 05899 05900 static vector bool char __ATTRS_o_ai 05901 vec_vsl(vector bool char __a, vector unsigned int __b) 05902 { 05903 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05904 } 05905 05906 static vector short __ATTRS_o_ai 05907 vec_vsl(vector short __a, vector unsigned char __b) 05908 { 05909 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05910 } 05911 05912 static vector short __ATTRS_o_ai 05913 vec_vsl(vector short __a, vector unsigned short __b) 05914 { 05915 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05916 } 05917 05918 static vector short __ATTRS_o_ai 05919 vec_vsl(vector short __a, vector unsigned int __b) 05920 { 05921 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05922 } 05923 05924 static vector unsigned short __ATTRS_o_ai 05925 vec_vsl(vector unsigned short __a, vector unsigned char __b) 05926 { 05927 return (vector unsigned short) 05928 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05929 } 05930 05931 static vector unsigned short __ATTRS_o_ai 05932 vec_vsl(vector unsigned short __a, vector unsigned short __b) 05933 { 05934 return (vector unsigned short) 05935 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05936 } 05937 05938 static vector unsigned short __ATTRS_o_ai 05939 vec_vsl(vector unsigned short __a, vector unsigned int __b) 05940 { 05941 return (vector unsigned short) 05942 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 05943 } 05944 05945 static vector bool short __ATTRS_o_ai 05946 vec_vsl(vector bool short __a, vector unsigned char __b) 05947 { 05948 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05949 } 05950 05951 static vector bool short __ATTRS_o_ai 05952 vec_vsl(vector bool short __a, vector unsigned short __b) 05953 { 05954 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05955 } 05956 05957 static vector bool short __ATTRS_o_ai 05958 vec_vsl(vector bool short __a, vector unsigned int __b) 05959 { 05960 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05961 } 05962 05963 static vector pixel __ATTRS_o_ai 05964 vec_vsl(vector pixel __a, vector unsigned char __b) 05965 { 05966 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05967 } 05968 05969 static vector pixel __ATTRS_o_ai 05970 vec_vsl(vector pixel __a, vector unsigned short __b) 05971 { 05972 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05973 } 05974 05975 static vector pixel __ATTRS_o_ai 05976 vec_vsl(vector pixel __a, vector unsigned int __b) 05977 { 05978 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 05979 } 05980 05981 static vector int __ATTRS_o_ai 05982 vec_vsl(vector int __a, vector unsigned char __b) 05983 { 05984 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 05985 } 05986 05987 static vector int __ATTRS_o_ai 05988 vec_vsl(vector int __a, vector unsigned short __b) 05989 { 05990 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 05991 } 05992 05993 static vector int __ATTRS_o_ai 05994 vec_vsl(vector int __a, vector unsigned int __b) 05995 { 05996 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 05997 } 05998 05999 static vector unsigned int __ATTRS_o_ai 06000 vec_vsl(vector unsigned int __a, vector unsigned char __b) 06001 { 06002 return (vector unsigned int) 06003 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 06004 } 06005 06006 static vector unsigned int __ATTRS_o_ai 06007 vec_vsl(vector unsigned int __a, vector unsigned short __b) 06008 { 06009 return (vector unsigned int) 06010 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 06011 } 06012 06013 static vector unsigned int __ATTRS_o_ai 06014 vec_vsl(vector unsigned int __a, vector unsigned int __b) 06015 { 06016 return (vector unsigned int) 06017 __builtin_altivec_vsl((vector int)__a, (vector int)__b); 06018 } 06019 06020 static vector bool int __ATTRS_o_ai 06021 vec_vsl(vector bool int __a, vector unsigned char __b) 06022 { 06023 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 06024 } 06025 06026 static vector bool int __ATTRS_o_ai 06027 vec_vsl(vector bool int __a, vector unsigned short __b) 06028 { 06029 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 06030 } 06031 06032 static vector bool int __ATTRS_o_ai 06033 vec_vsl(vector bool int __a, vector unsigned int __b) 06034 { 06035 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 06036 } 06037 06038 /* vec_slo */ 06039 06040 static vector signed char __ATTRS_o_ai 06041 vec_slo(vector signed char __a, vector signed char __b) 06042 { 06043 return (vector signed char) 06044 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06045 } 06046 06047 static vector signed char __ATTRS_o_ai 06048 vec_slo(vector signed char __a, vector unsigned char __b) 06049 { 06050 return (vector signed char) 06051 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06052 } 06053 06054 static vector unsigned char __ATTRS_o_ai 06055 vec_slo(vector unsigned char __a, vector signed char __b) 06056 { 06057 return (vector unsigned char) 06058 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06059 } 06060 06061 static vector unsigned char __ATTRS_o_ai 06062 vec_slo(vector unsigned char __a, vector unsigned char __b) 06063 { 06064 return (vector unsigned char) 06065 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06066 } 06067 06068 static vector short __ATTRS_o_ai 06069 vec_slo(vector short __a, vector signed char __b) 06070 { 06071 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06072 } 06073 06074 static vector short __ATTRS_o_ai 06075 vec_slo(vector short __a, vector unsigned char __b) 06076 { 06077 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06078 } 06079 06080 static vector unsigned short __ATTRS_o_ai 06081 vec_slo(vector unsigned short __a, vector signed char __b) 06082 { 06083 return (vector unsigned short) 06084 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06085 } 06086 06087 static vector unsigned short __ATTRS_o_ai 06088 vec_slo(vector unsigned short __a, vector unsigned char __b) 06089 { 06090 return (vector unsigned short) 06091 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06092 } 06093 06094 static vector pixel __ATTRS_o_ai 06095 vec_slo(vector pixel __a, vector signed char __b) 06096 { 06097 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06098 } 06099 06100 static vector pixel __ATTRS_o_ai 06101 vec_slo(vector pixel __a, vector unsigned char __b) 06102 { 06103 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06104 } 06105 06106 static vector int __ATTRS_o_ai 06107 vec_slo(vector int __a, vector signed char __b) 06108 { 06109 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 06110 } 06111 06112 static vector int __ATTRS_o_ai 06113 vec_slo(vector int __a, vector unsigned char __b) 06114 { 06115 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 06116 } 06117 06118 static vector unsigned int __ATTRS_o_ai 06119 vec_slo(vector unsigned int __a, vector signed char __b) 06120 { 06121 return (vector unsigned int) 06122 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06123 } 06124 06125 static vector unsigned int __ATTRS_o_ai 06126 vec_slo(vector unsigned int __a, vector unsigned char __b) 06127 { 06128 return (vector unsigned int) 06129 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06130 } 06131 06132 static vector float __ATTRS_o_ai 06133 vec_slo(vector float __a, vector signed char __b) 06134 { 06135 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06136 } 06137 06138 static vector float __ATTRS_o_ai 06139 vec_slo(vector float __a, vector unsigned char __b) 06140 { 06141 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06142 } 06143 06144 /* vec_vslo */ 06145 06146 static vector signed char __ATTRS_o_ai 06147 vec_vslo(vector signed char __a, vector signed char __b) 06148 { 06149 return (vector signed char) 06150 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06151 } 06152 06153 static vector signed char __ATTRS_o_ai 06154 vec_vslo(vector signed char __a, vector unsigned char __b) 06155 { 06156 return (vector signed char) 06157 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06158 } 06159 06160 static vector unsigned char __ATTRS_o_ai 06161 vec_vslo(vector unsigned char __a, vector signed char __b) 06162 { 06163 return (vector unsigned char) 06164 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06165 } 06166 06167 static vector unsigned char __ATTRS_o_ai 06168 vec_vslo(vector unsigned char __a, vector unsigned char __b) 06169 { 06170 return (vector unsigned char) 06171 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06172 } 06173 06174 static vector short __ATTRS_o_ai 06175 vec_vslo(vector short __a, vector signed char __b) 06176 { 06177 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06178 } 06179 06180 static vector short __ATTRS_o_ai 06181 vec_vslo(vector short __a, vector unsigned char __b) 06182 { 06183 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06184 } 06185 06186 static vector unsigned short __ATTRS_o_ai 06187 vec_vslo(vector unsigned short __a, vector signed char __b) 06188 { 06189 return (vector unsigned short) 06190 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06191 } 06192 06193 static vector unsigned short __ATTRS_o_ai 06194 vec_vslo(vector unsigned short __a, vector unsigned char __b) 06195 { 06196 return (vector unsigned short) 06197 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06198 } 06199 06200 static vector pixel __ATTRS_o_ai 06201 vec_vslo(vector pixel __a, vector signed char __b) 06202 { 06203 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06204 } 06205 06206 static vector pixel __ATTRS_o_ai 06207 vec_vslo(vector pixel __a, vector unsigned char __b) 06208 { 06209 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06210 } 06211 06212 static vector int __ATTRS_o_ai 06213 vec_vslo(vector int __a, vector signed char __b) 06214 { 06215 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 06216 } 06217 06218 static vector int __ATTRS_o_ai 06219 vec_vslo(vector int __a, vector unsigned char __b) 06220 { 06221 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 06222 } 06223 06224 static vector unsigned int __ATTRS_o_ai 06225 vec_vslo(vector unsigned int __a, vector signed char __b) 06226 { 06227 return (vector unsigned int) 06228 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06229 } 06230 06231 static vector unsigned int __ATTRS_o_ai 06232 vec_vslo(vector unsigned int __a, vector unsigned char __b) 06233 { 06234 return (vector unsigned int) 06235 __builtin_altivec_vslo((vector int)__a, (vector int)__b); 06236 } 06237 06238 static vector float __ATTRS_o_ai 06239 vec_vslo(vector float __a, vector signed char __b) 06240 { 06241 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06242 } 06243 06244 static vector float __ATTRS_o_ai 06245 vec_vslo(vector float __a, vector unsigned char __b) 06246 { 06247 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 06248 } 06249 06250 /* vec_splat */ 06251 06252 static vector signed char __ATTRS_o_ai 06253 vec_splat(vector signed char __a, unsigned char __b) 06254 { 06255 return vec_perm(__a, __a, (vector unsigned char)(__b)); 06256 } 06257 06258 static vector unsigned char __ATTRS_o_ai 06259 vec_splat(vector unsigned char __a, unsigned char __b) 06260 { 06261 return vec_perm(__a, __a, (vector unsigned char)(__b)); 06262 } 06263 06264 static vector bool char __ATTRS_o_ai 06265 vec_splat(vector bool char __a, unsigned char __b) 06266 { 06267 return vec_perm(__a, __a, (vector unsigned char)(__b)); 06268 } 06269 06270 static vector short __ATTRS_o_ai 06271 vec_splat(vector short __a, unsigned char __b) 06272 { 06273 __b *= 2; 06274 unsigned char b1=__b+1; 06275 return vec_perm(__a, __a, (vector unsigned char) 06276 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06277 } 06278 06279 static vector unsigned short __ATTRS_o_ai 06280 vec_splat(vector unsigned short __a, unsigned char __b) 06281 { 06282 __b *= 2; 06283 unsigned char b1=__b+1; 06284 return vec_perm(__a, __a, (vector unsigned char) 06285 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06286 } 06287 06288 static vector bool short __ATTRS_o_ai 06289 vec_splat(vector bool short __a, unsigned char __b) 06290 { 06291 __b *= 2; 06292 unsigned char b1=__b+1; 06293 return vec_perm(__a, __a, (vector unsigned char) 06294 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06295 } 06296 06297 static vector pixel __ATTRS_o_ai 06298 vec_splat(vector pixel __a, unsigned char __b) 06299 { 06300 __b *= 2; 06301 unsigned char b1=__b+1; 06302 return vec_perm(__a, __a, (vector unsigned char) 06303 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06304 } 06305 06306 static vector int __ATTRS_o_ai 06307 vec_splat(vector int __a, unsigned char __b) 06308 { 06309 __b *= 4; 06310 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06311 return vec_perm(__a, __a, (vector unsigned char) 06312 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06313 } 06314 06315 static vector unsigned int __ATTRS_o_ai 06316 vec_splat(vector unsigned int __a, unsigned char __b) 06317 { 06318 __b *= 4; 06319 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06320 return vec_perm(__a, __a, (vector unsigned char) 06321 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06322 } 06323 06324 static vector bool int __ATTRS_o_ai 06325 vec_splat(vector bool int __a, unsigned char __b) 06326 { 06327 __b *= 4; 06328 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06329 return vec_perm(__a, __a, (vector unsigned char) 06330 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06331 } 06332 06333 static vector float __ATTRS_o_ai 06334 vec_splat(vector float __a, unsigned char __b) 06335 { 06336 __b *= 4; 06337 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06338 return vec_perm(__a, __a, (vector unsigned char) 06339 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06340 } 06341 06342 /* vec_vspltb */ 06343 06344 #define __builtin_altivec_vspltb vec_vspltb 06345 06346 static vector signed char __ATTRS_o_ai 06347 vec_vspltb(vector signed char __a, unsigned char __b) 06348 { 06349 return vec_perm(__a, __a, (vector unsigned char)(__b)); 06350 } 06351 06352 static vector unsigned char __ATTRS_o_ai 06353 vec_vspltb(vector unsigned char __a, unsigned char __b) 06354 { 06355 return vec_perm(__a, __a, (vector unsigned char)(__b)); 06356 } 06357 06358 static vector bool char __ATTRS_o_ai 06359 vec_vspltb(vector bool char __a, unsigned char __b) 06360 { 06361 return vec_perm(__a, __a, (vector unsigned char)(__b)); 06362 } 06363 06364 /* vec_vsplth */ 06365 06366 #define __builtin_altivec_vsplth vec_vsplth 06367 06368 static vector short __ATTRS_o_ai 06369 vec_vsplth(vector short __a, unsigned char __b) 06370 { 06371 __b *= 2; 06372 unsigned char b1=__b+1; 06373 return vec_perm(__a, __a, (vector unsigned char) 06374 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06375 } 06376 06377 static vector unsigned short __ATTRS_o_ai 06378 vec_vsplth(vector unsigned short __a, unsigned char __b) 06379 { 06380 __b *= 2; 06381 unsigned char b1=__b+1; 06382 return vec_perm(__a, __a, (vector unsigned char) 06383 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06384 } 06385 06386 static vector bool short __ATTRS_o_ai 06387 vec_vsplth(vector bool short __a, unsigned char __b) 06388 { 06389 __b *= 2; 06390 unsigned char b1=__b+1; 06391 return vec_perm(__a, __a, (vector unsigned char) 06392 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06393 } 06394 06395 static vector pixel __ATTRS_o_ai 06396 vec_vsplth(vector pixel __a, unsigned char __b) 06397 { 06398 __b *= 2; 06399 unsigned char b1=__b+1; 06400 return vec_perm(__a, __a, (vector unsigned char) 06401 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1)); 06402 } 06403 06404 /* vec_vspltw */ 06405 06406 #define __builtin_altivec_vspltw vec_vspltw 06407 06408 static vector int __ATTRS_o_ai 06409 vec_vspltw(vector int __a, unsigned char __b) 06410 { 06411 __b *= 4; 06412 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06413 return vec_perm(__a, __a, (vector unsigned char) 06414 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06415 } 06416 06417 static vector unsigned int __ATTRS_o_ai 06418 vec_vspltw(vector unsigned int __a, unsigned char __b) 06419 { 06420 __b *= 4; 06421 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06422 return vec_perm(__a, __a, (vector unsigned char) 06423 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06424 } 06425 06426 static vector bool int __ATTRS_o_ai 06427 vec_vspltw(vector bool int __a, unsigned char __b) 06428 { 06429 __b *= 4; 06430 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06431 return vec_perm(__a, __a, (vector unsigned char) 06432 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06433 } 06434 06435 static vector float __ATTRS_o_ai 06436 vec_vspltw(vector float __a, unsigned char __b) 06437 { 06438 __b *= 4; 06439 unsigned char b1=__b+1, b2=__b+2, b3=__b+3; 06440 return vec_perm(__a, __a, (vector unsigned char) 06441 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3)); 06442 } 06443 06444 /* vec_splat_s8 */ 06445 06446 #define __builtin_altivec_vspltisb vec_splat_s8 06447 06448 // FIXME: parameter should be treated as 5-bit signed literal 06449 static vector signed char __ATTRS_o_ai 06450 vec_splat_s8(signed char __a) 06451 { 06452 return (vector signed char)(__a); 06453 } 06454 06455 /* vec_vspltisb */ 06456 06457 // FIXME: parameter should be treated as 5-bit signed literal 06458 static vector signed char __ATTRS_o_ai 06459 vec_vspltisb(signed char __a) 06460 { 06461 return (vector signed char)(__a); 06462 } 06463 06464 /* vec_splat_s16 */ 06465 06466 #define __builtin_altivec_vspltish vec_splat_s16 06467 06468 // FIXME: parameter should be treated as 5-bit signed literal 06469 static vector short __ATTRS_o_ai 06470 vec_splat_s16(signed char __a) 06471 { 06472 return (vector short)(__a); 06473 } 06474 06475 /* vec_vspltish */ 06476 06477 // FIXME: parameter should be treated as 5-bit signed literal 06478 static vector short __ATTRS_o_ai 06479 vec_vspltish(signed char __a) 06480 { 06481 return (vector short)(__a); 06482 } 06483 06484 /* vec_splat_s32 */ 06485 06486 #define __builtin_altivec_vspltisw vec_splat_s32 06487 06488 // FIXME: parameter should be treated as 5-bit signed literal 06489 static vector int __ATTRS_o_ai 06490 vec_splat_s32(signed char __a) 06491 { 06492 return (vector int)(__a); 06493 } 06494 06495 /* vec_vspltisw */ 06496 06497 // FIXME: parameter should be treated as 5-bit signed literal 06498 static vector int __ATTRS_o_ai 06499 vec_vspltisw(signed char __a) 06500 { 06501 return (vector int)(__a); 06502 } 06503 06504 /* vec_splat_u8 */ 06505 06506 // FIXME: parameter should be treated as 5-bit signed literal 06507 static vector unsigned char __ATTRS_o_ai 06508 vec_splat_u8(unsigned char __a) 06509 { 06510 return (vector unsigned char)(__a); 06511 } 06512 06513 /* vec_splat_u16 */ 06514 06515 // FIXME: parameter should be treated as 5-bit signed literal 06516 static vector unsigned short __ATTRS_o_ai 06517 vec_splat_u16(signed char __a) 06518 { 06519 return (vector unsigned short)(__a); 06520 } 06521 06522 /* vec_splat_u32 */ 06523 06524 // FIXME: parameter should be treated as 5-bit signed literal 06525 static vector unsigned int __ATTRS_o_ai 06526 vec_splat_u32(signed char __a) 06527 { 06528 return (vector unsigned int)(__a); 06529 } 06530 06531 /* vec_sr */ 06532 06533 static vector signed char __ATTRS_o_ai 06534 vec_sr(vector signed char __a, vector unsigned char __b) 06535 { 06536 return __a >> (vector signed char)__b; 06537 } 06538 06539 static vector unsigned char __ATTRS_o_ai 06540 vec_sr(vector unsigned char __a, vector unsigned char __b) 06541 { 06542 return __a >> __b; 06543 } 06544 06545 static vector short __ATTRS_o_ai 06546 vec_sr(vector short __a, vector unsigned short __b) 06547 { 06548 return __a >> (vector short)__b; 06549 } 06550 06551 static vector unsigned short __ATTRS_o_ai 06552 vec_sr(vector unsigned short __a, vector unsigned short __b) 06553 { 06554 return __a >> __b; 06555 } 06556 06557 static vector int __ATTRS_o_ai 06558 vec_sr(vector int __a, vector unsigned int __b) 06559 { 06560 return __a >> (vector int)__b; 06561 } 06562 06563 static vector unsigned int __ATTRS_o_ai 06564 vec_sr(vector unsigned int __a, vector unsigned int __b) 06565 { 06566 return __a >> __b; 06567 } 06568 06569 /* vec_vsrb */ 06570 06571 #define __builtin_altivec_vsrb vec_vsrb 06572 06573 static vector signed char __ATTRS_o_ai 06574 vec_vsrb(vector signed char __a, vector unsigned char __b) 06575 { 06576 return __a >> (vector signed char)__b; 06577 } 06578 06579 static vector unsigned char __ATTRS_o_ai 06580 vec_vsrb(vector unsigned char __a, vector unsigned char __b) 06581 { 06582 return __a >> __b; 06583 } 06584 06585 /* vec_vsrh */ 06586 06587 #define __builtin_altivec_vsrh vec_vsrh 06588 06589 static vector short __ATTRS_o_ai 06590 vec_vsrh(vector short __a, vector unsigned short __b) 06591 { 06592 return __a >> (vector short)__b; 06593 } 06594 06595 static vector unsigned short __ATTRS_o_ai 06596 vec_vsrh(vector unsigned short __a, vector unsigned short __b) 06597 { 06598 return __a >> __b; 06599 } 06600 06601 /* vec_vsrw */ 06602 06603 #define __builtin_altivec_vsrw vec_vsrw 06604 06605 static vector int __ATTRS_o_ai 06606 vec_vsrw(vector int __a, vector unsigned int __b) 06607 { 06608 return __a >> (vector int)__b; 06609 } 06610 06611 static vector unsigned int __ATTRS_o_ai 06612 vec_vsrw(vector unsigned int __a, vector unsigned int __b) 06613 { 06614 return __a >> __b; 06615 } 06616 06617 /* vec_sra */ 06618 06619 static vector signed char __ATTRS_o_ai 06620 vec_sra(vector signed char __a, vector unsigned char __b) 06621 { 06622 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b); 06623 } 06624 06625 static vector unsigned char __ATTRS_o_ai 06626 vec_sra(vector unsigned char __a, vector unsigned char __b) 06627 { 06628 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b); 06629 } 06630 06631 static vector short __ATTRS_o_ai 06632 vec_sra(vector short __a, vector unsigned short __b) 06633 { 06634 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b); 06635 } 06636 06637 static vector unsigned short __ATTRS_o_ai 06638 vec_sra(vector unsigned short __a, vector unsigned short __b) 06639 { 06640 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b); 06641 } 06642 06643 static vector int __ATTRS_o_ai 06644 vec_sra(vector int __a, vector unsigned int __b) 06645 { 06646 return __builtin_altivec_vsraw(__a, __b); 06647 } 06648 06649 static vector unsigned int __ATTRS_o_ai 06650 vec_sra(vector unsigned int __a, vector unsigned int __b) 06651 { 06652 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b); 06653 } 06654 06655 /* vec_vsrab */ 06656 06657 static vector signed char __ATTRS_o_ai 06658 vec_vsrab(vector signed char __a, vector unsigned char __b) 06659 { 06660 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b); 06661 } 06662 06663 static vector unsigned char __ATTRS_o_ai 06664 vec_vsrab(vector unsigned char __a, vector unsigned char __b) 06665 { 06666 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b); 06667 } 06668 06669 /* vec_vsrah */ 06670 06671 static vector short __ATTRS_o_ai 06672 vec_vsrah(vector short __a, vector unsigned short __b) 06673 { 06674 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b); 06675 } 06676 06677 static vector unsigned short __ATTRS_o_ai 06678 vec_vsrah(vector unsigned short __a, vector unsigned short __b) 06679 { 06680 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b); 06681 } 06682 06683 /* vec_vsraw */ 06684 06685 static vector int __ATTRS_o_ai 06686 vec_vsraw(vector int __a, vector unsigned int __b) 06687 { 06688 return __builtin_altivec_vsraw(__a, __b); 06689 } 06690 06691 static vector unsigned int __ATTRS_o_ai 06692 vec_vsraw(vector unsigned int __a, vector unsigned int __b) 06693 { 06694 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b); 06695 } 06696 06697 /* vec_srl */ 06698 06699 static vector signed char __ATTRS_o_ai 06700 vec_srl(vector signed char __a, vector unsigned char __b) 06701 { 06702 return (vector signed char) 06703 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06704 } 06705 06706 static vector signed char __ATTRS_o_ai 06707 vec_srl(vector signed char __a, vector unsigned short __b) 06708 { 06709 return (vector signed char) 06710 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06711 } 06712 06713 static vector signed char __ATTRS_o_ai 06714 vec_srl(vector signed char __a, vector unsigned int __b) 06715 { 06716 return (vector signed char) 06717 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06718 } 06719 06720 static vector unsigned char __ATTRS_o_ai 06721 vec_srl(vector unsigned char __a, vector unsigned char __b) 06722 { 06723 return (vector unsigned char) 06724 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06725 } 06726 06727 static vector unsigned char __ATTRS_o_ai 06728 vec_srl(vector unsigned char __a, vector unsigned short __b) 06729 { 06730 return (vector unsigned char) 06731 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06732 } 06733 06734 static vector unsigned char __ATTRS_o_ai 06735 vec_srl(vector unsigned char __a, vector unsigned int __b) 06736 { 06737 return (vector unsigned char) 06738 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06739 } 06740 06741 static vector bool char __ATTRS_o_ai 06742 vec_srl(vector bool char __a, vector unsigned char __b) 06743 { 06744 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06745 } 06746 06747 static vector bool char __ATTRS_o_ai 06748 vec_srl(vector bool char __a, vector unsigned short __b) 06749 { 06750 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06751 } 06752 06753 static vector bool char __ATTRS_o_ai 06754 vec_srl(vector bool char __a, vector unsigned int __b) 06755 { 06756 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06757 } 06758 06759 static vector short __ATTRS_o_ai 06760 vec_srl(vector short __a, vector unsigned char __b) 06761 { 06762 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06763 } 06764 06765 static vector short __ATTRS_o_ai 06766 vec_srl(vector short __a, vector unsigned short __b) 06767 { 06768 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06769 } 06770 06771 static vector short __ATTRS_o_ai 06772 vec_srl(vector short __a, vector unsigned int __b) 06773 { 06774 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06775 } 06776 06777 static vector unsigned short __ATTRS_o_ai 06778 vec_srl(vector unsigned short __a, vector unsigned char __b) 06779 { 06780 return (vector unsigned short) 06781 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06782 } 06783 06784 static vector unsigned short __ATTRS_o_ai 06785 vec_srl(vector unsigned short __a, vector unsigned short __b) 06786 { 06787 return (vector unsigned short) 06788 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06789 } 06790 06791 static vector unsigned short __ATTRS_o_ai 06792 vec_srl(vector unsigned short __a, vector unsigned int __b) 06793 { 06794 return (vector unsigned short) 06795 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06796 } 06797 06798 static vector bool short __ATTRS_o_ai 06799 vec_srl(vector bool short __a, vector unsigned char __b) 06800 { 06801 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06802 } 06803 06804 static vector bool short __ATTRS_o_ai 06805 vec_srl(vector bool short __a, vector unsigned short __b) 06806 { 06807 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06808 } 06809 06810 static vector bool short __ATTRS_o_ai 06811 vec_srl(vector bool short __a, vector unsigned int __b) 06812 { 06813 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06814 } 06815 06816 static vector pixel __ATTRS_o_ai 06817 vec_srl(vector pixel __a, vector unsigned char __b) 06818 { 06819 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06820 } 06821 06822 static vector pixel __ATTRS_o_ai 06823 vec_srl(vector pixel __a, vector unsigned short __b) 06824 { 06825 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06826 } 06827 06828 static vector pixel __ATTRS_o_ai 06829 vec_srl(vector pixel __a, vector unsigned int __b) 06830 { 06831 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06832 } 06833 06834 static vector int __ATTRS_o_ai 06835 vec_srl(vector int __a, vector unsigned char __b) 06836 { 06837 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 06838 } 06839 06840 static vector int __ATTRS_o_ai 06841 vec_srl(vector int __a, vector unsigned short __b) 06842 { 06843 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 06844 } 06845 06846 static vector int __ATTRS_o_ai 06847 vec_srl(vector int __a, vector unsigned int __b) 06848 { 06849 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 06850 } 06851 06852 static vector unsigned int __ATTRS_o_ai 06853 vec_srl(vector unsigned int __a, vector unsigned char __b) 06854 { 06855 return (vector unsigned int) 06856 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06857 } 06858 06859 static vector unsigned int __ATTRS_o_ai 06860 vec_srl(vector unsigned int __a, vector unsigned short __b) 06861 { 06862 return (vector unsigned int) 06863 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06864 } 06865 06866 static vector unsigned int __ATTRS_o_ai 06867 vec_srl(vector unsigned int __a, vector unsigned int __b) 06868 { 06869 return (vector unsigned int) 06870 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06871 } 06872 06873 static vector bool int __ATTRS_o_ai 06874 vec_srl(vector bool int __a, vector unsigned char __b) 06875 { 06876 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06877 } 06878 06879 static vector bool int __ATTRS_o_ai 06880 vec_srl(vector bool int __a, vector unsigned short __b) 06881 { 06882 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06883 } 06884 06885 static vector bool int __ATTRS_o_ai 06886 vec_srl(vector bool int __a, vector unsigned int __b) 06887 { 06888 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06889 } 06890 06891 /* vec_vsr */ 06892 06893 static vector signed char __ATTRS_o_ai 06894 vec_vsr(vector signed char __a, vector unsigned char __b) 06895 { 06896 return (vector signed char) 06897 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06898 } 06899 06900 static vector signed char __ATTRS_o_ai 06901 vec_vsr(vector signed char __a, vector unsigned short __b) 06902 { 06903 return (vector signed char) 06904 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06905 } 06906 06907 static vector signed char __ATTRS_o_ai 06908 vec_vsr(vector signed char __a, vector unsigned int __b) 06909 { 06910 return (vector signed char) 06911 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06912 } 06913 06914 static vector unsigned char __ATTRS_o_ai 06915 vec_vsr(vector unsigned char __a, vector unsigned char __b) 06916 { 06917 return (vector unsigned char) 06918 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06919 } 06920 06921 static vector unsigned char __ATTRS_o_ai 06922 vec_vsr(vector unsigned char __a, vector unsigned short __b) 06923 { 06924 return (vector unsigned char) 06925 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06926 } 06927 06928 static vector unsigned char __ATTRS_o_ai 06929 vec_vsr(vector unsigned char __a, vector unsigned int __b) 06930 { 06931 return (vector unsigned char) 06932 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06933 } 06934 06935 static vector bool char __ATTRS_o_ai 06936 vec_vsr(vector bool char __a, vector unsigned char __b) 06937 { 06938 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06939 } 06940 06941 static vector bool char __ATTRS_o_ai 06942 vec_vsr(vector bool char __a, vector unsigned short __b) 06943 { 06944 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06945 } 06946 06947 static vector bool char __ATTRS_o_ai 06948 vec_vsr(vector bool char __a, vector unsigned int __b) 06949 { 06950 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06951 } 06952 06953 static vector short __ATTRS_o_ai 06954 vec_vsr(vector short __a, vector unsigned char __b) 06955 { 06956 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06957 } 06958 06959 static vector short __ATTRS_o_ai 06960 vec_vsr(vector short __a, vector unsigned short __b) 06961 { 06962 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06963 } 06964 06965 static vector short __ATTRS_o_ai 06966 vec_vsr(vector short __a, vector unsigned int __b) 06967 { 06968 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06969 } 06970 06971 static vector unsigned short __ATTRS_o_ai 06972 vec_vsr(vector unsigned short __a, vector unsigned char __b) 06973 { 06974 return (vector unsigned short) 06975 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06976 } 06977 06978 static vector unsigned short __ATTRS_o_ai 06979 vec_vsr(vector unsigned short __a, vector unsigned short __b) 06980 { 06981 return (vector unsigned short) 06982 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06983 } 06984 06985 static vector unsigned short __ATTRS_o_ai 06986 vec_vsr(vector unsigned short __a, vector unsigned int __b) 06987 { 06988 return (vector unsigned short) 06989 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 06990 } 06991 06992 static vector bool short __ATTRS_o_ai 06993 vec_vsr(vector bool short __a, vector unsigned char __b) 06994 { 06995 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 06996 } 06997 06998 static vector bool short __ATTRS_o_ai 06999 vec_vsr(vector bool short __a, vector unsigned short __b) 07000 { 07001 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07002 } 07003 07004 static vector bool short __ATTRS_o_ai 07005 vec_vsr(vector bool short __a, vector unsigned int __b) 07006 { 07007 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07008 } 07009 07010 static vector pixel __ATTRS_o_ai 07011 vec_vsr(vector pixel __a, vector unsigned char __b) 07012 { 07013 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07014 } 07015 07016 static vector pixel __ATTRS_o_ai 07017 vec_vsr(vector pixel __a, vector unsigned short __b) 07018 { 07019 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07020 } 07021 07022 static vector pixel __ATTRS_o_ai 07023 vec_vsr(vector pixel __a, vector unsigned int __b) 07024 { 07025 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07026 } 07027 07028 static vector int __ATTRS_o_ai 07029 vec_vsr(vector int __a, vector unsigned char __b) 07030 { 07031 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 07032 } 07033 07034 static vector int __ATTRS_o_ai 07035 vec_vsr(vector int __a, vector unsigned short __b) 07036 { 07037 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 07038 } 07039 07040 static vector int __ATTRS_o_ai 07041 vec_vsr(vector int __a, vector unsigned int __b) 07042 { 07043 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 07044 } 07045 07046 static vector unsigned int __ATTRS_o_ai 07047 vec_vsr(vector unsigned int __a, vector unsigned char __b) 07048 { 07049 return (vector unsigned int) 07050 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 07051 } 07052 07053 static vector unsigned int __ATTRS_o_ai 07054 vec_vsr(vector unsigned int __a, vector unsigned short __b) 07055 { 07056 return (vector unsigned int) 07057 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 07058 } 07059 07060 static vector unsigned int __ATTRS_o_ai 07061 vec_vsr(vector unsigned int __a, vector unsigned int __b) 07062 { 07063 return (vector unsigned int) 07064 __builtin_altivec_vsr((vector int)__a, (vector int)__b); 07065 } 07066 07067 static vector bool int __ATTRS_o_ai 07068 vec_vsr(vector bool int __a, vector unsigned char __b) 07069 { 07070 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07071 } 07072 07073 static vector bool int __ATTRS_o_ai 07074 vec_vsr(vector bool int __a, vector unsigned short __b) 07075 { 07076 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07077 } 07078 07079 static vector bool int __ATTRS_o_ai 07080 vec_vsr(vector bool int __a, vector unsigned int __b) 07081 { 07082 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 07083 } 07084 07085 /* vec_sro */ 07086 07087 static vector signed char __ATTRS_o_ai 07088 vec_sro(vector signed char __a, vector signed char __b) 07089 { 07090 return (vector signed char) 07091 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07092 } 07093 07094 static vector signed char __ATTRS_o_ai 07095 vec_sro(vector signed char __a, vector unsigned char __b) 07096 { 07097 return (vector signed char) 07098 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07099 } 07100 07101 static vector unsigned char __ATTRS_o_ai 07102 vec_sro(vector unsigned char __a, vector signed char __b) 07103 { 07104 return (vector unsigned char) 07105 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07106 } 07107 07108 static vector unsigned char __ATTRS_o_ai 07109 vec_sro(vector unsigned char __a, vector unsigned char __b) 07110 { 07111 return (vector unsigned char) 07112 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07113 } 07114 07115 static vector short __ATTRS_o_ai 07116 vec_sro(vector short __a, vector signed char __b) 07117 { 07118 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07119 } 07120 07121 static vector short __ATTRS_o_ai 07122 vec_sro(vector short __a, vector unsigned char __b) 07123 { 07124 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07125 } 07126 07127 static vector unsigned short __ATTRS_o_ai 07128 vec_sro(vector unsigned short __a, vector signed char __b) 07129 { 07130 return (vector unsigned short) 07131 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07132 } 07133 07134 static vector unsigned short __ATTRS_o_ai 07135 vec_sro(vector unsigned short __a, vector unsigned char __b) 07136 { 07137 return (vector unsigned short) 07138 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07139 } 07140 07141 static vector pixel __ATTRS_o_ai 07142 vec_sro(vector pixel __a, vector signed char __b) 07143 { 07144 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07145 } 07146 07147 static vector pixel __ATTRS_o_ai 07148 vec_sro(vector pixel __a, vector unsigned char __b) 07149 { 07150 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07151 } 07152 07153 static vector int __ATTRS_o_ai 07154 vec_sro(vector int __a, vector signed char __b) 07155 { 07156 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 07157 } 07158 07159 static vector int __ATTRS_o_ai 07160 vec_sro(vector int __a, vector unsigned char __b) 07161 { 07162 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 07163 } 07164 07165 static vector unsigned int __ATTRS_o_ai 07166 vec_sro(vector unsigned int __a, vector signed char __b) 07167 { 07168 return (vector unsigned int) 07169 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07170 } 07171 07172 static vector unsigned int __ATTRS_o_ai 07173 vec_sro(vector unsigned int __a, vector unsigned char __b) 07174 { 07175 return (vector unsigned int) 07176 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07177 } 07178 07179 static vector float __ATTRS_o_ai 07180 vec_sro(vector float __a, vector signed char __b) 07181 { 07182 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07183 } 07184 07185 static vector float __ATTRS_o_ai 07186 vec_sro(vector float __a, vector unsigned char __b) 07187 { 07188 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07189 } 07190 07191 /* vec_vsro */ 07192 07193 static vector signed char __ATTRS_o_ai 07194 vec_vsro(vector signed char __a, vector signed char __b) 07195 { 07196 return (vector signed char) 07197 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07198 } 07199 07200 static vector signed char __ATTRS_o_ai 07201 vec_vsro(vector signed char __a, vector unsigned char __b) 07202 { 07203 return (vector signed char) 07204 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07205 } 07206 07207 static vector unsigned char __ATTRS_o_ai 07208 vec_vsro(vector unsigned char __a, vector signed char __b) 07209 { 07210 return (vector unsigned char) 07211 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07212 } 07213 07214 static vector unsigned char __ATTRS_o_ai 07215 vec_vsro(vector unsigned char __a, vector unsigned char __b) 07216 { 07217 return (vector unsigned char) 07218 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07219 } 07220 07221 static vector short __ATTRS_o_ai 07222 vec_vsro(vector short __a, vector signed char __b) 07223 { 07224 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07225 } 07226 07227 static vector short __ATTRS_o_ai 07228 vec_vsro(vector short __a, vector unsigned char __b) 07229 { 07230 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07231 } 07232 07233 static vector unsigned short __ATTRS_o_ai 07234 vec_vsro(vector unsigned short __a, vector signed char __b) 07235 { 07236 return (vector unsigned short) 07237 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07238 } 07239 07240 static vector unsigned short __ATTRS_o_ai 07241 vec_vsro(vector unsigned short __a, vector unsigned char __b) 07242 { 07243 return (vector unsigned short) 07244 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07245 } 07246 07247 static vector pixel __ATTRS_o_ai 07248 vec_vsro(vector pixel __a, vector signed char __b) 07249 { 07250 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07251 } 07252 07253 static vector pixel __ATTRS_o_ai 07254 vec_vsro(vector pixel __a, vector unsigned char __b) 07255 { 07256 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07257 } 07258 07259 static vector int __ATTRS_o_ai 07260 vec_vsro(vector int __a, vector signed char __b) 07261 { 07262 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 07263 } 07264 07265 static vector int __ATTRS_o_ai 07266 vec_vsro(vector int __a, vector unsigned char __b) 07267 { 07268 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 07269 } 07270 07271 static vector unsigned int __ATTRS_o_ai 07272 vec_vsro(vector unsigned int __a, vector signed char __b) 07273 { 07274 return (vector unsigned int) 07275 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07276 } 07277 07278 static vector unsigned int __ATTRS_o_ai 07279 vec_vsro(vector unsigned int __a, vector unsigned char __b) 07280 { 07281 return (vector unsigned int) 07282 __builtin_altivec_vsro((vector int)__a, (vector int)__b); 07283 } 07284 07285 static vector float __ATTRS_o_ai 07286 vec_vsro(vector float __a, vector signed char __b) 07287 { 07288 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07289 } 07290 07291 static vector float __ATTRS_o_ai 07292 vec_vsro(vector float __a, vector unsigned char __b) 07293 { 07294 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 07295 } 07296 07297 /* vec_st */ 07298 07299 static void __ATTRS_o_ai 07300 vec_st(vector signed char __a, int __b, vector signed char *__c) 07301 { 07302 __builtin_altivec_stvx((vector int)__a, __b, __c); 07303 } 07304 07305 static void __ATTRS_o_ai 07306 vec_st(vector signed char __a, int __b, signed char *__c) 07307 { 07308 __builtin_altivec_stvx((vector int)__a, __b, __c); 07309 } 07310 07311 static void __ATTRS_o_ai 07312 vec_st(vector unsigned char __a, int __b, vector unsigned char *__c) 07313 { 07314 __builtin_altivec_stvx((vector int)__a, __b, __c); 07315 } 07316 07317 static void __ATTRS_o_ai 07318 vec_st(vector unsigned char __a, int __b, unsigned char *__c) 07319 { 07320 __builtin_altivec_stvx((vector int)__a, __b, __c); 07321 } 07322 07323 static void __ATTRS_o_ai 07324 vec_st(vector bool char __a, int __b, signed char *__c) 07325 { 07326 __builtin_altivec_stvx((vector int)__a, __b, __c); 07327 } 07328 07329 static void __ATTRS_o_ai 07330 vec_st(vector bool char __a, int __b, unsigned char *__c) 07331 { 07332 __builtin_altivec_stvx((vector int)__a, __b, __c); 07333 } 07334 07335 static void __ATTRS_o_ai 07336 vec_st(vector bool char __a, int __b, vector bool char *__c) 07337 { 07338 __builtin_altivec_stvx((vector int)__a, __b, __c); 07339 } 07340 07341 static void __ATTRS_o_ai 07342 vec_st(vector short __a, int __b, vector short *__c) 07343 { 07344 __builtin_altivec_stvx((vector int)__a, __b, __c); 07345 } 07346 07347 static void __ATTRS_o_ai 07348 vec_st(vector short __a, int __b, short *__c) 07349 { 07350 __builtin_altivec_stvx((vector int)__a, __b, __c); 07351 } 07352 07353 static void __ATTRS_o_ai 07354 vec_st(vector unsigned short __a, int __b, vector unsigned short *__c) 07355 { 07356 __builtin_altivec_stvx((vector int)__a, __b, __c); 07357 } 07358 07359 static void __ATTRS_o_ai 07360 vec_st(vector unsigned short __a, int __b, unsigned short *__c) 07361 { 07362 __builtin_altivec_stvx((vector int)__a, __b, __c); 07363 } 07364 07365 static void __ATTRS_o_ai 07366 vec_st(vector bool short __a, int __b, short *__c) 07367 { 07368 __builtin_altivec_stvx((vector int)__a, __b, __c); 07369 } 07370 07371 static void __ATTRS_o_ai 07372 vec_st(vector bool short __a, int __b, unsigned short *__c) 07373 { 07374 __builtin_altivec_stvx((vector int)__a, __b, __c); 07375 } 07376 07377 static void __ATTRS_o_ai 07378 vec_st(vector bool short __a, int __b, vector bool short *__c) 07379 { 07380 __builtin_altivec_stvx((vector int)__a, __b, __c); 07381 } 07382 07383 static void __ATTRS_o_ai 07384 vec_st(vector pixel __a, int __b, short *__c) 07385 { 07386 __builtin_altivec_stvx((vector int)__a, __b, __c); 07387 } 07388 07389 static void __ATTRS_o_ai 07390 vec_st(vector pixel __a, int __b, unsigned short *__c) 07391 { 07392 __builtin_altivec_stvx((vector int)__a, __b, __c); 07393 } 07394 07395 static void __ATTRS_o_ai 07396 vec_st(vector pixel __a, int __b, vector pixel *__c) 07397 { 07398 __builtin_altivec_stvx((vector int)__a, __b, __c); 07399 } 07400 07401 static void __ATTRS_o_ai 07402 vec_st(vector int __a, int __b, vector int *__c) 07403 { 07404 __builtin_altivec_stvx(__a, __b, __c); 07405 } 07406 07407 static void __ATTRS_o_ai 07408 vec_st(vector int __a, int __b, int *__c) 07409 { 07410 __builtin_altivec_stvx(__a, __b, __c); 07411 } 07412 07413 static void __ATTRS_o_ai 07414 vec_st(vector unsigned int __a, int __b, vector unsigned int *__c) 07415 { 07416 __builtin_altivec_stvx((vector int)__a, __b, __c); 07417 } 07418 07419 static void __ATTRS_o_ai 07420 vec_st(vector unsigned int __a, int __b, unsigned int *__c) 07421 { 07422 __builtin_altivec_stvx((vector int)__a, __b, __c); 07423 } 07424 07425 static void __ATTRS_o_ai 07426 vec_st(vector bool int __a, int __b, int *__c) 07427 { 07428 __builtin_altivec_stvx((vector int)__a, __b, __c); 07429 } 07430 07431 static void __ATTRS_o_ai 07432 vec_st(vector bool int __a, int __b, unsigned int *__c) 07433 { 07434 __builtin_altivec_stvx((vector int)__a, __b, __c); 07435 } 07436 07437 static void __ATTRS_o_ai 07438 vec_st(vector bool int __a, int __b, vector bool int *__c) 07439 { 07440 __builtin_altivec_stvx((vector int)__a, __b, __c); 07441 } 07442 07443 static void __ATTRS_o_ai 07444 vec_st(vector float __a, int __b, vector float *__c) 07445 { 07446 __builtin_altivec_stvx((vector int)__a, __b, __c); 07447 } 07448 07449 static void __ATTRS_o_ai 07450 vec_st(vector float __a, int __b, float *__c) 07451 { 07452 __builtin_altivec_stvx((vector int)__a, __b, __c); 07453 } 07454 07455 /* vec_stvx */ 07456 07457 static void __ATTRS_o_ai 07458 vec_stvx(vector signed char __a, int __b, vector signed char *__c) 07459 { 07460 __builtin_altivec_stvx((vector int)__a, __b, __c); 07461 } 07462 07463 static void __ATTRS_o_ai 07464 vec_stvx(vector signed char __a, int __b, signed char *__c) 07465 { 07466 __builtin_altivec_stvx((vector int)__a, __b, __c); 07467 } 07468 07469 static void __ATTRS_o_ai 07470 vec_stvx(vector unsigned char __a, int __b, vector unsigned char *__c) 07471 { 07472 __builtin_altivec_stvx((vector int)__a, __b, __c); 07473 } 07474 07475 static void __ATTRS_o_ai 07476 vec_stvx(vector unsigned char __a, int __b, unsigned char *__c) 07477 { 07478 __builtin_altivec_stvx((vector int)__a, __b, __c); 07479 } 07480 07481 static void __ATTRS_o_ai 07482 vec_stvx(vector bool char __a, int __b, signed char *__c) 07483 { 07484 __builtin_altivec_stvx((vector int)__a, __b, __c); 07485 } 07486 07487 static void __ATTRS_o_ai 07488 vec_stvx(vector bool char __a, int __b, unsigned char *__c) 07489 { 07490 __builtin_altivec_stvx((vector int)__a, __b, __c); 07491 } 07492 07493 static void __ATTRS_o_ai 07494 vec_stvx(vector bool char __a, int __b, vector bool char *__c) 07495 { 07496 __builtin_altivec_stvx((vector int)__a, __b, __c); 07497 } 07498 07499 static void __ATTRS_o_ai 07500 vec_stvx(vector short __a, int __b, vector short *__c) 07501 { 07502 __builtin_altivec_stvx((vector int)__a, __b, __c); 07503 } 07504 07505 static void __ATTRS_o_ai 07506 vec_stvx(vector short __a, int __b, short *__c) 07507 { 07508 __builtin_altivec_stvx((vector int)__a, __b, __c); 07509 } 07510 07511 static void __ATTRS_o_ai 07512 vec_stvx(vector unsigned short __a, int __b, vector unsigned short *__c) 07513 { 07514 __builtin_altivec_stvx((vector int)__a, __b, __c); 07515 } 07516 07517 static void __ATTRS_o_ai 07518 vec_stvx(vector unsigned short __a, int __b, unsigned short *__c) 07519 { 07520 __builtin_altivec_stvx((vector int)__a, __b, __c); 07521 } 07522 07523 static void __ATTRS_o_ai 07524 vec_stvx(vector bool short __a, int __b, short *__c) 07525 { 07526 __builtin_altivec_stvx((vector int)__a, __b, __c); 07527 } 07528 07529 static void __ATTRS_o_ai 07530 vec_stvx(vector bool short __a, int __b, unsigned short *__c) 07531 { 07532 __builtin_altivec_stvx((vector int)__a, __b, __c); 07533 } 07534 07535 static void __ATTRS_o_ai 07536 vec_stvx(vector bool short __a, int __b, vector bool short *__c) 07537 { 07538 __builtin_altivec_stvx((vector int)__a, __b, __c); 07539 } 07540 07541 static void __ATTRS_o_ai 07542 vec_stvx(vector pixel __a, int __b, short *__c) 07543 { 07544 __builtin_altivec_stvx((vector int)__a, __b, __c); 07545 } 07546 07547 static void __ATTRS_o_ai 07548 vec_stvx(vector pixel __a, int __b, unsigned short *__c) 07549 { 07550 __builtin_altivec_stvx((vector int)__a, __b, __c); 07551 } 07552 07553 static void __ATTRS_o_ai 07554 vec_stvx(vector pixel __a, int __b, vector pixel *__c) 07555 { 07556 __builtin_altivec_stvx((vector int)__a, __b, __c); 07557 } 07558 07559 static void __ATTRS_o_ai 07560 vec_stvx(vector int __a, int __b, vector int *__c) 07561 { 07562 __builtin_altivec_stvx(__a, __b, __c); 07563 } 07564 07565 static void __ATTRS_o_ai 07566 vec_stvx(vector int __a, int __b, int *__c) 07567 { 07568 __builtin_altivec_stvx(__a, __b, __c); 07569 } 07570 07571 static void __ATTRS_o_ai 07572 vec_stvx(vector unsigned int __a, int __b, vector unsigned int *__c) 07573 { 07574 __builtin_altivec_stvx((vector int)__a, __b, __c); 07575 } 07576 07577 static void __ATTRS_o_ai 07578 vec_stvx(vector unsigned int __a, int __b, unsigned int *__c) 07579 { 07580 __builtin_altivec_stvx((vector int)__a, __b, __c); 07581 } 07582 07583 static void __ATTRS_o_ai 07584 vec_stvx(vector bool int __a, int __b, int *__c) 07585 { 07586 __builtin_altivec_stvx((vector int)__a, __b, __c); 07587 } 07588 07589 static void __ATTRS_o_ai 07590 vec_stvx(vector bool int __a, int __b, unsigned int *__c) 07591 { 07592 __builtin_altivec_stvx((vector int)__a, __b, __c); 07593 } 07594 07595 static void __ATTRS_o_ai 07596 vec_stvx(vector bool int __a, int __b, vector bool int *__c) 07597 { 07598 __builtin_altivec_stvx((vector int)__a, __b, __c); 07599 } 07600 07601 static void __ATTRS_o_ai 07602 vec_stvx(vector float __a, int __b, vector float *__c) 07603 { 07604 __builtin_altivec_stvx((vector int)__a, __b, __c); 07605 } 07606 07607 static void __ATTRS_o_ai 07608 vec_stvx(vector float __a, int __b, float *__c) 07609 { 07610 __builtin_altivec_stvx((vector int)__a, __b, __c); 07611 } 07612 07613 /* vec_ste */ 07614 07615 static void __ATTRS_o_ai 07616 vec_ste(vector signed char __a, int __b, signed char *__c) 07617 { 07618 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07619 } 07620 07621 static void __ATTRS_o_ai 07622 vec_ste(vector unsigned char __a, int __b, unsigned char *__c) 07623 { 07624 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07625 } 07626 07627 static void __ATTRS_o_ai 07628 vec_ste(vector bool char __a, int __b, signed char *__c) 07629 { 07630 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07631 } 07632 07633 static void __ATTRS_o_ai 07634 vec_ste(vector bool char __a, int __b, unsigned char *__c) 07635 { 07636 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07637 } 07638 07639 static void __ATTRS_o_ai 07640 vec_ste(vector short __a, int __b, short *__c) 07641 { 07642 __builtin_altivec_stvehx(__a, __b, __c); 07643 } 07644 07645 static void __ATTRS_o_ai 07646 vec_ste(vector unsigned short __a, int __b, unsigned short *__c) 07647 { 07648 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07649 } 07650 07651 static void __ATTRS_o_ai 07652 vec_ste(vector bool short __a, int __b, short *__c) 07653 { 07654 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07655 } 07656 07657 static void __ATTRS_o_ai 07658 vec_ste(vector bool short __a, int __b, unsigned short *__c) 07659 { 07660 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07661 } 07662 07663 static void __ATTRS_o_ai 07664 vec_ste(vector pixel __a, int __b, short *__c) 07665 { 07666 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07667 } 07668 07669 static void __ATTRS_o_ai 07670 vec_ste(vector pixel __a, int __b, unsigned short *__c) 07671 { 07672 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07673 } 07674 07675 static void __ATTRS_o_ai 07676 vec_ste(vector int __a, int __b, int *__c) 07677 { 07678 __builtin_altivec_stvewx(__a, __b, __c); 07679 } 07680 07681 static void __ATTRS_o_ai 07682 vec_ste(vector unsigned int __a, int __b, unsigned int *__c) 07683 { 07684 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07685 } 07686 07687 static void __ATTRS_o_ai 07688 vec_ste(vector bool int __a, int __b, int *__c) 07689 { 07690 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07691 } 07692 07693 static void __ATTRS_o_ai 07694 vec_ste(vector bool int __a, int __b, unsigned int *__c) 07695 { 07696 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07697 } 07698 07699 static void __ATTRS_o_ai 07700 vec_ste(vector float __a, int __b, float *__c) 07701 { 07702 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07703 } 07704 07705 /* vec_stvebx */ 07706 07707 static void __ATTRS_o_ai 07708 vec_stvebx(vector signed char __a, int __b, signed char *__c) 07709 { 07710 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07711 } 07712 07713 static void __ATTRS_o_ai 07714 vec_stvebx(vector unsigned char __a, int __b, unsigned char *__c) 07715 { 07716 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07717 } 07718 07719 static void __ATTRS_o_ai 07720 vec_stvebx(vector bool char __a, int __b, signed char *__c) 07721 { 07722 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07723 } 07724 07725 static void __ATTRS_o_ai 07726 vec_stvebx(vector bool char __a, int __b, unsigned char *__c) 07727 { 07728 __builtin_altivec_stvebx((vector char)__a, __b, __c); 07729 } 07730 07731 /* vec_stvehx */ 07732 07733 static void __ATTRS_o_ai 07734 vec_stvehx(vector short __a, int __b, short *__c) 07735 { 07736 __builtin_altivec_stvehx(__a, __b, __c); 07737 } 07738 07739 static void __ATTRS_o_ai 07740 vec_stvehx(vector unsigned short __a, int __b, unsigned short *__c) 07741 { 07742 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07743 } 07744 07745 static void __ATTRS_o_ai 07746 vec_stvehx(vector bool short __a, int __b, short *__c) 07747 { 07748 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07749 } 07750 07751 static void __ATTRS_o_ai 07752 vec_stvehx(vector bool short __a, int __b, unsigned short *__c) 07753 { 07754 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07755 } 07756 07757 static void __ATTRS_o_ai 07758 vec_stvehx(vector pixel __a, int __b, short *__c) 07759 { 07760 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07761 } 07762 07763 static void __ATTRS_o_ai 07764 vec_stvehx(vector pixel __a, int __b, unsigned short *__c) 07765 { 07766 __builtin_altivec_stvehx((vector short)__a, __b, __c); 07767 } 07768 07769 /* vec_stvewx */ 07770 07771 static void __ATTRS_o_ai 07772 vec_stvewx(vector int __a, int __b, int *__c) 07773 { 07774 __builtin_altivec_stvewx(__a, __b, __c); 07775 } 07776 07777 static void __ATTRS_o_ai 07778 vec_stvewx(vector unsigned int __a, int __b, unsigned int *__c) 07779 { 07780 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07781 } 07782 07783 static void __ATTRS_o_ai 07784 vec_stvewx(vector bool int __a, int __b, int *__c) 07785 { 07786 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07787 } 07788 07789 static void __ATTRS_o_ai 07790 vec_stvewx(vector bool int __a, int __b, unsigned int *__c) 07791 { 07792 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07793 } 07794 07795 static void __ATTRS_o_ai 07796 vec_stvewx(vector float __a, int __b, float *__c) 07797 { 07798 __builtin_altivec_stvewx((vector int)__a, __b, __c); 07799 } 07800 07801 /* vec_stl */ 07802 07803 static void __ATTRS_o_ai 07804 vec_stl(vector signed char __a, int __b, vector signed char *__c) 07805 { 07806 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07807 } 07808 07809 static void __ATTRS_o_ai 07810 vec_stl(vector signed char __a, int __b, signed char *__c) 07811 { 07812 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07813 } 07814 07815 static void __ATTRS_o_ai 07816 vec_stl(vector unsigned char __a, int __b, vector unsigned char *__c) 07817 { 07818 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07819 } 07820 07821 static void __ATTRS_o_ai 07822 vec_stl(vector unsigned char __a, int __b, unsigned char *__c) 07823 { 07824 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07825 } 07826 07827 static void __ATTRS_o_ai 07828 vec_stl(vector bool char __a, int __b, signed char *__c) 07829 { 07830 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07831 } 07832 07833 static void __ATTRS_o_ai 07834 vec_stl(vector bool char __a, int __b, unsigned char *__c) 07835 { 07836 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07837 } 07838 07839 static void __ATTRS_o_ai 07840 vec_stl(vector bool char __a, int __b, vector bool char *__c) 07841 { 07842 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07843 } 07844 07845 static void __ATTRS_o_ai 07846 vec_stl(vector short __a, int __b, vector short *__c) 07847 { 07848 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07849 } 07850 07851 static void __ATTRS_o_ai 07852 vec_stl(vector short __a, int __b, short *__c) 07853 { 07854 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07855 } 07856 07857 static void __ATTRS_o_ai 07858 vec_stl(vector unsigned short __a, int __b, vector unsigned short *__c) 07859 { 07860 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07861 } 07862 07863 static void __ATTRS_o_ai 07864 vec_stl(vector unsigned short __a, int __b, unsigned short *__c) 07865 { 07866 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07867 } 07868 07869 static void __ATTRS_o_ai 07870 vec_stl(vector bool short __a, int __b, short *__c) 07871 { 07872 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07873 } 07874 07875 static void __ATTRS_o_ai 07876 vec_stl(vector bool short __a, int __b, unsigned short *__c) 07877 { 07878 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07879 } 07880 07881 static void __ATTRS_o_ai 07882 vec_stl(vector bool short __a, int __b, vector bool short *__c) 07883 { 07884 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07885 } 07886 07887 static void __ATTRS_o_ai 07888 vec_stl(vector pixel __a, int __b, short *__c) 07889 { 07890 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07891 } 07892 07893 static void __ATTRS_o_ai 07894 vec_stl(vector pixel __a, int __b, unsigned short *__c) 07895 { 07896 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07897 } 07898 07899 static void __ATTRS_o_ai 07900 vec_stl(vector pixel __a, int __b, vector pixel *__c) 07901 { 07902 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07903 } 07904 07905 static void __ATTRS_o_ai 07906 vec_stl(vector int __a, int __b, vector int *__c) 07907 { 07908 __builtin_altivec_stvxl(__a, __b, __c); 07909 } 07910 07911 static void __ATTRS_o_ai 07912 vec_stl(vector int __a, int __b, int *__c) 07913 { 07914 __builtin_altivec_stvxl(__a, __b, __c); 07915 } 07916 07917 static void __ATTRS_o_ai 07918 vec_stl(vector unsigned int __a, int __b, vector unsigned int *__c) 07919 { 07920 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07921 } 07922 07923 static void __ATTRS_o_ai 07924 vec_stl(vector unsigned int __a, int __b, unsigned int *__c) 07925 { 07926 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07927 } 07928 07929 static void __ATTRS_o_ai 07930 vec_stl(vector bool int __a, int __b, int *__c) 07931 { 07932 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07933 } 07934 07935 static void __ATTRS_o_ai 07936 vec_stl(vector bool int __a, int __b, unsigned int *__c) 07937 { 07938 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07939 } 07940 07941 static void __ATTRS_o_ai 07942 vec_stl(vector bool int __a, int __b, vector bool int *__c) 07943 { 07944 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07945 } 07946 07947 static void __ATTRS_o_ai 07948 vec_stl(vector float __a, int __b, vector float *__c) 07949 { 07950 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07951 } 07952 07953 static void __ATTRS_o_ai 07954 vec_stl(vector float __a, int __b, float *__c) 07955 { 07956 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07957 } 07958 07959 /* vec_stvxl */ 07960 07961 static void __ATTRS_o_ai 07962 vec_stvxl(vector signed char __a, int __b, vector signed char *__c) 07963 { 07964 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07965 } 07966 07967 static void __ATTRS_o_ai 07968 vec_stvxl(vector signed char __a, int __b, signed char *__c) 07969 { 07970 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07971 } 07972 07973 static void __ATTRS_o_ai 07974 vec_stvxl(vector unsigned char __a, int __b, vector unsigned char *__c) 07975 { 07976 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07977 } 07978 07979 static void __ATTRS_o_ai 07980 vec_stvxl(vector unsigned char __a, int __b, unsigned char *__c) 07981 { 07982 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07983 } 07984 07985 static void __ATTRS_o_ai 07986 vec_stvxl(vector bool char __a, int __b, signed char *__c) 07987 { 07988 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07989 } 07990 07991 static void __ATTRS_o_ai 07992 vec_stvxl(vector bool char __a, int __b, unsigned char *__c) 07993 { 07994 __builtin_altivec_stvxl((vector int)__a, __b, __c); 07995 } 07996 07997 static void __ATTRS_o_ai 07998 vec_stvxl(vector bool char __a, int __b, vector bool char *__c) 07999 { 08000 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08001 } 08002 08003 static void __ATTRS_o_ai 08004 vec_stvxl(vector short __a, int __b, vector short *__c) 08005 { 08006 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08007 } 08008 08009 static void __ATTRS_o_ai 08010 vec_stvxl(vector short __a, int __b, short *__c) 08011 { 08012 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08013 } 08014 08015 static void __ATTRS_o_ai 08016 vec_stvxl(vector unsigned short __a, int __b, vector unsigned short *__c) 08017 { 08018 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08019 } 08020 08021 static void __ATTRS_o_ai 08022 vec_stvxl(vector unsigned short __a, int __b, unsigned short *__c) 08023 { 08024 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08025 } 08026 08027 static void __ATTRS_o_ai 08028 vec_stvxl(vector bool short __a, int __b, short *__c) 08029 { 08030 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08031 } 08032 08033 static void __ATTRS_o_ai 08034 vec_stvxl(vector bool short __a, int __b, unsigned short *__c) 08035 { 08036 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08037 } 08038 08039 static void __ATTRS_o_ai 08040 vec_stvxl(vector bool short __a, int __b, vector bool short *__c) 08041 { 08042 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08043 } 08044 08045 static void __ATTRS_o_ai 08046 vec_stvxl(vector pixel __a, int __b, short *__c) 08047 { 08048 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08049 } 08050 08051 static void __ATTRS_o_ai 08052 vec_stvxl(vector pixel __a, int __b, unsigned short *__c) 08053 { 08054 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08055 } 08056 08057 static void __ATTRS_o_ai 08058 vec_stvxl(vector pixel __a, int __b, vector pixel *__c) 08059 { 08060 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08061 } 08062 08063 static void __ATTRS_o_ai 08064 vec_stvxl(vector int __a, int __b, vector int *__c) 08065 { 08066 __builtin_altivec_stvxl(__a, __b, __c); 08067 } 08068 08069 static void __ATTRS_o_ai 08070 vec_stvxl(vector int __a, int __b, int *__c) 08071 { 08072 __builtin_altivec_stvxl(__a, __b, __c); 08073 } 08074 08075 static void __ATTRS_o_ai 08076 vec_stvxl(vector unsigned int __a, int __b, vector unsigned int *__c) 08077 { 08078 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08079 } 08080 08081 static void __ATTRS_o_ai 08082 vec_stvxl(vector unsigned int __a, int __b, unsigned int *__c) 08083 { 08084 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08085 } 08086 08087 static void __ATTRS_o_ai 08088 vec_stvxl(vector bool int __a, int __b, int *__c) 08089 { 08090 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08091 } 08092 08093 static void __ATTRS_o_ai 08094 vec_stvxl(vector bool int __a, int __b, unsigned int *__c) 08095 { 08096 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08097 } 08098 08099 static void __ATTRS_o_ai 08100 vec_stvxl(vector bool int __a, int __b, vector bool int *__c) 08101 { 08102 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08103 } 08104 08105 static void __ATTRS_o_ai 08106 vec_stvxl(vector float __a, int __b, vector float *__c) 08107 { 08108 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08109 } 08110 08111 static void __ATTRS_o_ai 08112 vec_stvxl(vector float __a, int __b, float *__c) 08113 { 08114 __builtin_altivec_stvxl((vector int)__a, __b, __c); 08115 } 08116 08117 /* vec_sub */ 08118 08119 static vector signed char __ATTRS_o_ai 08120 vec_sub(vector signed char __a, vector signed char __b) 08121 { 08122 return __a - __b; 08123 } 08124 08125 static vector signed char __ATTRS_o_ai 08126 vec_sub(vector bool char __a, vector signed char __b) 08127 { 08128 return (vector signed char)__a - __b; 08129 } 08130 08131 static vector signed char __ATTRS_o_ai 08132 vec_sub(vector signed char __a, vector bool char __b) 08133 { 08134 return __a - (vector signed char)__b; 08135 } 08136 08137 static vector unsigned char __ATTRS_o_ai 08138 vec_sub(vector unsigned char __a, vector unsigned char __b) 08139 { 08140 return __a - __b; 08141 } 08142 08143 static vector unsigned char __ATTRS_o_ai 08144 vec_sub(vector bool char __a, vector unsigned char __b) 08145 { 08146 return (vector unsigned char)__a - __b; 08147 } 08148 08149 static vector unsigned char __ATTRS_o_ai 08150 vec_sub(vector unsigned char __a, vector bool char __b) 08151 { 08152 return __a - (vector unsigned char)__b; 08153 } 08154 08155 static vector short __ATTRS_o_ai 08156 vec_sub(vector short __a, vector short __b) 08157 { 08158 return __a - __b; 08159 } 08160 08161 static vector short __ATTRS_o_ai 08162 vec_sub(vector bool short __a, vector short __b) 08163 { 08164 return (vector short)__a - __b; 08165 } 08166 08167 static vector short __ATTRS_o_ai 08168 vec_sub(vector short __a, vector bool short __b) 08169 { 08170 return __a - (vector short)__b; 08171 } 08172 08173 static vector unsigned short __ATTRS_o_ai 08174 vec_sub(vector unsigned short __a, vector unsigned short __b) 08175 { 08176 return __a - __b; 08177 } 08178 08179 static vector unsigned short __ATTRS_o_ai 08180 vec_sub(vector bool short __a, vector unsigned short __b) 08181 { 08182 return (vector unsigned short)__a - __b; 08183 } 08184 08185 static vector unsigned short __ATTRS_o_ai 08186 vec_sub(vector unsigned short __a, vector bool short __b) 08187 { 08188 return __a - (vector unsigned short)__b; 08189 } 08190 08191 static vector int __ATTRS_o_ai 08192 vec_sub(vector int __a, vector int __b) 08193 { 08194 return __a - __b; 08195 } 08196 08197 static vector int __ATTRS_o_ai 08198 vec_sub(vector bool int __a, vector int __b) 08199 { 08200 return (vector int)__a - __b; 08201 } 08202 08203 static vector int __ATTRS_o_ai 08204 vec_sub(vector int __a, vector bool int __b) 08205 { 08206 return __a - (vector int)__b; 08207 } 08208 08209 static vector unsigned int __ATTRS_o_ai 08210 vec_sub(vector unsigned int __a, vector unsigned int __b) 08211 { 08212 return __a - __b; 08213 } 08214 08215 static vector unsigned int __ATTRS_o_ai 08216 vec_sub(vector bool int __a, vector unsigned int __b) 08217 { 08218 return (vector unsigned int)__a - __b; 08219 } 08220 08221 static vector unsigned int __ATTRS_o_ai 08222 vec_sub(vector unsigned int __a, vector bool int __b) 08223 { 08224 return __a - (vector unsigned int)__b; 08225 } 08226 08227 static vector float __ATTRS_o_ai 08228 vec_sub(vector float __a, vector float __b) 08229 { 08230 return __a - __b; 08231 } 08232 08233 /* vec_vsububm */ 08234 08235 #define __builtin_altivec_vsububm vec_vsububm 08236 08237 static vector signed char __ATTRS_o_ai 08238 vec_vsububm(vector signed char __a, vector signed char __b) 08239 { 08240 return __a - __b; 08241 } 08242 08243 static vector signed char __ATTRS_o_ai 08244 vec_vsububm(vector bool char __a, vector signed char __b) 08245 { 08246 return (vector signed char)__a - __b; 08247 } 08248 08249 static vector signed char __ATTRS_o_ai 08250 vec_vsububm(vector signed char __a, vector bool char __b) 08251 { 08252 return __a - (vector signed char)__b; 08253 } 08254 08255 static vector unsigned char __ATTRS_o_ai 08256 vec_vsububm(vector unsigned char __a, vector unsigned char __b) 08257 { 08258 return __a - __b; 08259 } 08260 08261 static vector unsigned char __ATTRS_o_ai 08262 vec_vsububm(vector bool char __a, vector unsigned char __b) 08263 { 08264 return (vector unsigned char)__a - __b; 08265 } 08266 08267 static vector unsigned char __ATTRS_o_ai 08268 vec_vsububm(vector unsigned char __a, vector bool char __b) 08269 { 08270 return __a - (vector unsigned char)__b; 08271 } 08272 08273 /* vec_vsubuhm */ 08274 08275 #define __builtin_altivec_vsubuhm vec_vsubuhm 08276 08277 static vector short __ATTRS_o_ai 08278 vec_vsubuhm(vector short __a, vector short __b) 08279 { 08280 return __a - __b; 08281 } 08282 08283 static vector short __ATTRS_o_ai 08284 vec_vsubuhm(vector bool short __a, vector short __b) 08285 { 08286 return (vector short)__a - __b; 08287 } 08288 08289 static vector short __ATTRS_o_ai 08290 vec_vsubuhm(vector short __a, vector bool short __b) 08291 { 08292 return __a - (vector short)__b; 08293 } 08294 08295 static vector unsigned short __ATTRS_o_ai 08296 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) 08297 { 08298 return __a - __b; 08299 } 08300 08301 static vector unsigned short __ATTRS_o_ai 08302 vec_vsubuhm(vector bool short __a, vector unsigned short __b) 08303 { 08304 return (vector unsigned short)__a - __b; 08305 } 08306 08307 static vector unsigned short __ATTRS_o_ai 08308 vec_vsubuhm(vector unsigned short __a, vector bool short __b) 08309 { 08310 return __a - (vector unsigned short)__b; 08311 } 08312 08313 /* vec_vsubuwm */ 08314 08315 #define __builtin_altivec_vsubuwm vec_vsubuwm 08316 08317 static vector int __ATTRS_o_ai 08318 vec_vsubuwm(vector int __a, vector int __b) 08319 { 08320 return __a - __b; 08321 } 08322 08323 static vector int __ATTRS_o_ai 08324 vec_vsubuwm(vector bool int __a, vector int __b) 08325 { 08326 return (vector int)__a - __b; 08327 } 08328 08329 static vector int __ATTRS_o_ai 08330 vec_vsubuwm(vector int __a, vector bool int __b) 08331 { 08332 return __a - (vector int)__b; 08333 } 08334 08335 static vector unsigned int __ATTRS_o_ai 08336 vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) 08337 { 08338 return __a - __b; 08339 } 08340 08341 static vector unsigned int __ATTRS_o_ai 08342 vec_vsubuwm(vector bool int __a, vector unsigned int __b) 08343 { 08344 return (vector unsigned int)__a - __b; 08345 } 08346 08347 static vector unsigned int __ATTRS_o_ai 08348 vec_vsubuwm(vector unsigned int __a, vector bool int __b) 08349 { 08350 return __a - (vector unsigned int)__b; 08351 } 08352 08353 /* vec_vsubfp */ 08354 08355 #define __builtin_altivec_vsubfp vec_vsubfp 08356 08357 static vector float __attribute__((__always_inline__)) 08358 vec_vsubfp(vector float __a, vector float __b) 08359 { 08360 return __a - __b; 08361 } 08362 08363 /* vec_subc */ 08364 08365 static vector unsigned int __attribute__((__always_inline__)) 08366 vec_subc(vector unsigned int __a, vector unsigned int __b) 08367 { 08368 return __builtin_altivec_vsubcuw(__a, __b); 08369 } 08370 08371 /* vec_vsubcuw */ 08372 08373 static vector unsigned int __attribute__((__always_inline__)) 08374 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) 08375 { 08376 return __builtin_altivec_vsubcuw(__a, __b); 08377 } 08378 08379 /* vec_subs */ 08380 08381 static vector signed char __ATTRS_o_ai 08382 vec_subs(vector signed char __a, vector signed char __b) 08383 { 08384 return __builtin_altivec_vsubsbs(__a, __b); 08385 } 08386 08387 static vector signed char __ATTRS_o_ai 08388 vec_subs(vector bool char __a, vector signed char __b) 08389 { 08390 return __builtin_altivec_vsubsbs((vector signed char)__a, __b); 08391 } 08392 08393 static vector signed char __ATTRS_o_ai 08394 vec_subs(vector signed char __a, vector bool char __b) 08395 { 08396 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b); 08397 } 08398 08399 static vector unsigned char __ATTRS_o_ai 08400 vec_subs(vector unsigned char __a, vector unsigned char __b) 08401 { 08402 return __builtin_altivec_vsububs(__a, __b); 08403 } 08404 08405 static vector unsigned char __ATTRS_o_ai 08406 vec_subs(vector bool char __a, vector unsigned char __b) 08407 { 08408 return __builtin_altivec_vsububs((vector unsigned char)__a, __b); 08409 } 08410 08411 static vector unsigned char __ATTRS_o_ai 08412 vec_subs(vector unsigned char __a, vector bool char __b) 08413 { 08414 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b); 08415 } 08416 08417 static vector short __ATTRS_o_ai 08418 vec_subs(vector short __a, vector short __b) 08419 { 08420 return __builtin_altivec_vsubshs(__a, __b); 08421 } 08422 08423 static vector short __ATTRS_o_ai 08424 vec_subs(vector bool short __a, vector short __b) 08425 { 08426 return __builtin_altivec_vsubshs((vector short)__a, __b); 08427 } 08428 08429 static vector short __ATTRS_o_ai 08430 vec_subs(vector short __a, vector bool short __b) 08431 { 08432 return __builtin_altivec_vsubshs(__a, (vector short)__b); 08433 } 08434 08435 static vector unsigned short __ATTRS_o_ai 08436 vec_subs(vector unsigned short __a, vector unsigned short __b) 08437 { 08438 return __builtin_altivec_vsubuhs(__a, __b); 08439 } 08440 08441 static vector unsigned short __ATTRS_o_ai 08442 vec_subs(vector bool short __a, vector unsigned short __b) 08443 { 08444 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b); 08445 } 08446 08447 static vector unsigned short __ATTRS_o_ai 08448 vec_subs(vector unsigned short __a, vector bool short __b) 08449 { 08450 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b); 08451 } 08452 08453 static vector int __ATTRS_o_ai 08454 vec_subs(vector int __a, vector int __b) 08455 { 08456 return __builtin_altivec_vsubsws(__a, __b); 08457 } 08458 08459 static vector int __ATTRS_o_ai 08460 vec_subs(vector bool int __a, vector int __b) 08461 { 08462 return __builtin_altivec_vsubsws((vector int)__a, __b); 08463 } 08464 08465 static vector int __ATTRS_o_ai 08466 vec_subs(vector int __a, vector bool int __b) 08467 { 08468 return __builtin_altivec_vsubsws(__a, (vector int)__b); 08469 } 08470 08471 static vector unsigned int __ATTRS_o_ai 08472 vec_subs(vector unsigned int __a, vector unsigned int __b) 08473 { 08474 return __builtin_altivec_vsubuws(__a, __b); 08475 } 08476 08477 static vector unsigned int __ATTRS_o_ai 08478 vec_subs(vector bool int __a, vector unsigned int __b) 08479 { 08480 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b); 08481 } 08482 08483 static vector unsigned int __ATTRS_o_ai 08484 vec_subs(vector unsigned int __a, vector bool int __b) 08485 { 08486 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b); 08487 } 08488 08489 /* vec_vsubsbs */ 08490 08491 static vector signed char __ATTRS_o_ai 08492 vec_vsubsbs(vector signed char __a, vector signed char __b) 08493 { 08494 return __builtin_altivec_vsubsbs(__a, __b); 08495 } 08496 08497 static vector signed char __ATTRS_o_ai 08498 vec_vsubsbs(vector bool char __a, vector signed char __b) 08499 { 08500 return __builtin_altivec_vsubsbs((vector signed char)__a, __b); 08501 } 08502 08503 static vector signed char __ATTRS_o_ai 08504 vec_vsubsbs(vector signed char __a, vector bool char __b) 08505 { 08506 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b); 08507 } 08508 08509 /* vec_vsububs */ 08510 08511 static vector unsigned char __ATTRS_o_ai 08512 vec_vsububs(vector unsigned char __a, vector unsigned char __b) 08513 { 08514 return __builtin_altivec_vsububs(__a, __b); 08515 } 08516 08517 static vector unsigned char __ATTRS_o_ai 08518 vec_vsububs(vector bool char __a, vector unsigned char __b) 08519 { 08520 return __builtin_altivec_vsububs((vector unsigned char)__a, __b); 08521 } 08522 08523 static vector unsigned char __ATTRS_o_ai 08524 vec_vsububs(vector unsigned char __a, vector bool char __b) 08525 { 08526 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b); 08527 } 08528 08529 /* vec_vsubshs */ 08530 08531 static vector short __ATTRS_o_ai 08532 vec_vsubshs(vector short __a, vector short __b) 08533 { 08534 return __builtin_altivec_vsubshs(__a, __b); 08535 } 08536 08537 static vector short __ATTRS_o_ai 08538 vec_vsubshs(vector bool short __a, vector short __b) 08539 { 08540 return __builtin_altivec_vsubshs((vector short)__a, __b); 08541 } 08542 08543 static vector short __ATTRS_o_ai 08544 vec_vsubshs(vector short __a, vector bool short __b) 08545 { 08546 return __builtin_altivec_vsubshs(__a, (vector short)__b); 08547 } 08548 08549 /* vec_vsubuhs */ 08550 08551 static vector unsigned short __ATTRS_o_ai 08552 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) 08553 { 08554 return __builtin_altivec_vsubuhs(__a, __b); 08555 } 08556 08557 static vector unsigned short __ATTRS_o_ai 08558 vec_vsubuhs(vector bool short __a, vector unsigned short __b) 08559 { 08560 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b); 08561 } 08562 08563 static vector unsigned short __ATTRS_o_ai 08564 vec_vsubuhs(vector unsigned short __a, vector bool short __b) 08565 { 08566 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b); 08567 } 08568 08569 /* vec_vsubsws */ 08570 08571 static vector int __ATTRS_o_ai 08572 vec_vsubsws(vector int __a, vector int __b) 08573 { 08574 return __builtin_altivec_vsubsws(__a, __b); 08575 } 08576 08577 static vector int __ATTRS_o_ai 08578 vec_vsubsws(vector bool int __a, vector int __b) 08579 { 08580 return __builtin_altivec_vsubsws((vector int)__a, __b); 08581 } 08582 08583 static vector int __ATTRS_o_ai 08584 vec_vsubsws(vector int __a, vector bool int __b) 08585 { 08586 return __builtin_altivec_vsubsws(__a, (vector int)__b); 08587 } 08588 08589 /* vec_vsubuws */ 08590 08591 static vector unsigned int __ATTRS_o_ai 08592 vec_vsubuws(vector unsigned int __a, vector unsigned int __b) 08593 { 08594 return __builtin_altivec_vsubuws(__a, __b); 08595 } 08596 08597 static vector unsigned int __ATTRS_o_ai 08598 vec_vsubuws(vector bool int __a, vector unsigned int __b) 08599 { 08600 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b); 08601 } 08602 08603 static vector unsigned int __ATTRS_o_ai 08604 vec_vsubuws(vector unsigned int __a, vector bool int __b) 08605 { 08606 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b); 08607 } 08608 08609 /* vec_sum4s */ 08610 08611 static vector int __ATTRS_o_ai 08612 vec_sum4s(vector signed char __a, vector int __b) 08613 { 08614 return __builtin_altivec_vsum4sbs(__a, __b); 08615 } 08616 08617 static vector unsigned int __ATTRS_o_ai 08618 vec_sum4s(vector unsigned char __a, vector unsigned int __b) 08619 { 08620 return __builtin_altivec_vsum4ubs(__a, __b); 08621 } 08622 08623 static vector int __ATTRS_o_ai 08624 vec_sum4s(vector signed short __a, vector int __b) 08625 { 08626 return __builtin_altivec_vsum4shs(__a, __b); 08627 } 08628 08629 /* vec_vsum4sbs */ 08630 08631 static vector int __attribute__((__always_inline__)) 08632 vec_vsum4sbs(vector signed char __a, vector int __b) 08633 { 08634 return __builtin_altivec_vsum4sbs(__a, __b); 08635 } 08636 08637 /* vec_vsum4ubs */ 08638 08639 static vector unsigned int __attribute__((__always_inline__)) 08640 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) 08641 { 08642 return __builtin_altivec_vsum4ubs(__a, __b); 08643 } 08644 08645 /* vec_vsum4shs */ 08646 08647 static vector int __attribute__((__always_inline__)) 08648 vec_vsum4shs(vector signed short __a, vector int __b) 08649 { 08650 return __builtin_altivec_vsum4shs(__a, __b); 08651 } 08652 08653 /* vec_sum2s */ 08654 08655 /* The vsum2sws instruction has a big-endian bias, so that the second 08656 input vector and the result always reference big-endian elements 08657 1 and 3 (little-endian element 0 and 2). For ease of porting the 08658 programmer wants elements 1 and 3 in both cases, so for little 08659 endian we must perform some permutes. */ 08660 08661 static vector signed int __attribute__((__always_inline__)) 08662 vec_sum2s(vector int __a, vector int __b) 08663 { 08664 #ifdef __LITTLE_ENDIAN__ 08665 vector int __c = (vector signed int) 08666 vec_perm(__b, __b, (vector unsigned char) 08667 (4,5,6,7,0,1,2,3,12,13,14,15,8,9,10,11)); 08668 __c = __builtin_altivec_vsum2sws(__a, __c); 08669 return (vector signed int) 08670 vec_perm(__c, __c, (vector unsigned char) 08671 (4,5,6,7,0,1,2,3,12,13,14,15,8,9,10,11)); 08672 #else 08673 return __builtin_altivec_vsum2sws(__a, __b); 08674 #endif 08675 } 08676 08677 /* vec_vsum2sws */ 08678 08679 static vector signed int __attribute__((__always_inline__)) 08680 vec_vsum2sws(vector int __a, vector int __b) 08681 { 08682 #ifdef __LITTLE_ENDIAN__ 08683 vector int __c = (vector signed int) 08684 vec_perm(__b, __b, (vector unsigned char) 08685 (4,5,6,7,0,1,2,3,12,13,14,15,8,9,10,11)); 08686 __c = __builtin_altivec_vsum2sws(__a, __c); 08687 return (vector signed int) 08688 vec_perm(__c, __c, (vector unsigned char) 08689 (4,5,6,7,0,1,2,3,12,13,14,15,8,9,10,11)); 08690 #else 08691 return __builtin_altivec_vsum2sws(__a, __b); 08692 #endif 08693 } 08694 08695 /* vec_sums */ 08696 08697 /* The vsumsws instruction has a big-endian bias, so that the second 08698 input vector and the result always reference big-endian element 3 08699 (little-endian element 0). For ease of porting the programmer 08700 wants element 3 in both cases, so for little endian we must perform 08701 some permutes. */ 08702 08703 static vector signed int __attribute__((__always_inline__)) 08704 vec_sums(vector signed int __a, vector signed int __b) 08705 { 08706 #ifdef __LITTLE_ENDIAN__ 08707 __b = (vector signed int)vec_splat(__b, 3); 08708 __b = __builtin_altivec_vsumsws(__a, __b); 08709 return (vector signed int)(0, 0, 0, __b[0]); 08710 #else 08711 return __builtin_altivec_vsumsws(__a, __b); 08712 #endif 08713 } 08714 08715 /* vec_vsumsws */ 08716 08717 static vector signed int __attribute__((__always_inline__)) 08718 vec_vsumsws(vector signed int __a, vector signed int __b) 08719 { 08720 #ifdef __LITTLE_ENDIAN__ 08721 __b = (vector signed int)vec_splat(__b, 3); 08722 __b = __builtin_altivec_vsumsws(__a, __b); 08723 return (vector signed int)(0, 0, 0, __b[0]); 08724 #else 08725 return __builtin_altivec_vsumsws(__a, __b); 08726 #endif 08727 } 08728 08729 /* vec_trunc */ 08730 08731 static vector float __attribute__((__always_inline__)) 08732 vec_trunc(vector float __a) 08733 { 08734 return __builtin_altivec_vrfiz(__a); 08735 } 08736 08737 /* vec_vrfiz */ 08738 08739 static vector float __attribute__((__always_inline__)) 08740 vec_vrfiz(vector float __a) 08741 { 08742 return __builtin_altivec_vrfiz(__a); 08743 } 08744 08745 /* vec_unpackh */ 08746 08747 /* The vector unpack instructions all have a big-endian bias, so for 08748 little endian we must reverse the meanings of "high" and "low." */ 08749 08750 static vector short __ATTRS_o_ai 08751 vec_unpackh(vector signed char __a) 08752 { 08753 #ifdef __LITTLE_ENDIAN__ 08754 return __builtin_altivec_vupklsb((vector char)__a); 08755 #else 08756 return __builtin_altivec_vupkhsb((vector char)__a); 08757 #endif 08758 } 08759 08760 static vector bool short __ATTRS_o_ai 08761 vec_unpackh(vector bool char __a) 08762 { 08763 #ifdef __LITTLE_ENDIAN__ 08764 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 08765 #else 08766 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 08767 #endif 08768 } 08769 08770 static vector int __ATTRS_o_ai 08771 vec_unpackh(vector short __a) 08772 { 08773 #ifdef __LITTLE_ENDIAN__ 08774 return __builtin_altivec_vupklsh(__a); 08775 #else 08776 return __builtin_altivec_vupkhsh(__a); 08777 #endif 08778 } 08779 08780 static vector bool int __ATTRS_o_ai 08781 vec_unpackh(vector bool short __a) 08782 { 08783 #ifdef __LITTLE_ENDIAN__ 08784 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 08785 #else 08786 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 08787 #endif 08788 } 08789 08790 static vector unsigned int __ATTRS_o_ai 08791 vec_unpackh(vector pixel __a) 08792 { 08793 #ifdef __LITTLE_ENDIAN__ 08794 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 08795 #else 08796 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 08797 #endif 08798 } 08799 08800 /* vec_vupkhsb */ 08801 08802 static vector short __ATTRS_o_ai 08803 vec_vupkhsb(vector signed char __a) 08804 { 08805 #ifdef __LITTLE_ENDIAN__ 08806 return __builtin_altivec_vupklsb((vector char)__a); 08807 #else 08808 return __builtin_altivec_vupkhsb((vector char)__a); 08809 #endif 08810 } 08811 08812 static vector bool short __ATTRS_o_ai 08813 vec_vupkhsb(vector bool char __a) 08814 { 08815 #ifdef __LITTLE_ENDIAN__ 08816 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 08817 #else 08818 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 08819 #endif 08820 } 08821 08822 /* vec_vupkhsh */ 08823 08824 static vector int __ATTRS_o_ai 08825 vec_vupkhsh(vector short __a) 08826 { 08827 #ifdef __LITTLE_ENDIAN__ 08828 return __builtin_altivec_vupklsh(__a); 08829 #else 08830 return __builtin_altivec_vupkhsh(__a); 08831 #endif 08832 } 08833 08834 static vector bool int __ATTRS_o_ai 08835 vec_vupkhsh(vector bool short __a) 08836 { 08837 #ifdef __LITTLE_ENDIAN__ 08838 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 08839 #else 08840 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 08841 #endif 08842 } 08843 08844 static vector unsigned int __ATTRS_o_ai 08845 vec_vupkhsh(vector pixel __a) 08846 { 08847 #ifdef __LITTLE_ENDIAN__ 08848 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 08849 #else 08850 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 08851 #endif 08852 } 08853 08854 /* vec_unpackl */ 08855 08856 static vector short __ATTRS_o_ai 08857 vec_unpackl(vector signed char __a) 08858 { 08859 #ifdef __LITTLE_ENDIAN__ 08860 return __builtin_altivec_vupkhsb((vector char)__a); 08861 #else 08862 return __builtin_altivec_vupklsb((vector char)__a); 08863 #endif 08864 } 08865 08866 static vector bool short __ATTRS_o_ai 08867 vec_unpackl(vector bool char __a) 08868 { 08869 #ifdef __LITTLE_ENDIAN__ 08870 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 08871 #else 08872 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 08873 #endif 08874 } 08875 08876 static vector int __ATTRS_o_ai 08877 vec_unpackl(vector short __a) 08878 { 08879 #ifdef __LITTLE_ENDIAN__ 08880 return __builtin_altivec_vupkhsh(__a); 08881 #else 08882 return __builtin_altivec_vupklsh(__a); 08883 #endif 08884 } 08885 08886 static vector bool int __ATTRS_o_ai 08887 vec_unpackl(vector bool short __a) 08888 { 08889 #ifdef __LITTLE_ENDIAN__ 08890 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 08891 #else 08892 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 08893 #endif 08894 } 08895 08896 static vector unsigned int __ATTRS_o_ai 08897 vec_unpackl(vector pixel __a) 08898 { 08899 #ifdef __LITTLE_ENDIAN__ 08900 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 08901 #else 08902 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 08903 #endif 08904 } 08905 08906 /* vec_vupklsb */ 08907 08908 static vector short __ATTRS_o_ai 08909 vec_vupklsb(vector signed char __a) 08910 { 08911 #ifdef __LITTLE_ENDIAN__ 08912 return __builtin_altivec_vupkhsb((vector char)__a); 08913 #else 08914 return __builtin_altivec_vupklsb((vector char)__a); 08915 #endif 08916 } 08917 08918 static vector bool short __ATTRS_o_ai 08919 vec_vupklsb(vector bool char __a) 08920 { 08921 #ifdef __LITTLE_ENDIAN__ 08922 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 08923 #else 08924 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 08925 #endif 08926 } 08927 08928 /* vec_vupklsh */ 08929 08930 static vector int __ATTRS_o_ai 08931 vec_vupklsh(vector short __a) 08932 { 08933 #ifdef __LITTLE_ENDIAN__ 08934 return __builtin_altivec_vupkhsh(__a); 08935 #else 08936 return __builtin_altivec_vupklsh(__a); 08937 #endif 08938 } 08939 08940 static vector bool int __ATTRS_o_ai 08941 vec_vupklsh(vector bool short __a) 08942 { 08943 #ifdef __LITTLE_ENDIAN__ 08944 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 08945 #else 08946 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 08947 #endif 08948 } 08949 08950 static vector unsigned int __ATTRS_o_ai 08951 vec_vupklsh(vector pixel __a) 08952 { 08953 #ifdef __LITTLE_ENDIAN__ 08954 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 08955 #else 08956 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 08957 #endif 08958 } 08959 08960 /* vec_vsx_ld */ 08961 08962 #ifdef __VSX__ 08963 08964 static vector signed int __ATTRS_o_ai 08965 vec_vsx_ld(int __a, const vector signed int *__b) 08966 { 08967 return (vector signed int)__builtin_vsx_lxvw4x(__a, __b); 08968 } 08969 08970 static vector unsigned int __ATTRS_o_ai 08971 vec_vsx_ld(int __a, const vector unsigned int *__b) 08972 { 08973 return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b); 08974 } 08975 08976 static vector float __ATTRS_o_ai 08977 vec_vsx_ld(int __a, const vector float *__b) 08978 { 08979 return (vector float)__builtin_vsx_lxvw4x(__a, __b); 08980 } 08981 08982 static vector signed long long __ATTRS_o_ai 08983 vec_vsx_ld(int __a, const vector signed long long *__b) 08984 { 08985 return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b); 08986 } 08987 08988 static vector unsigned long long __ATTRS_o_ai 08989 vec_vsx_ld(int __a, const vector unsigned long long *__b) 08990 { 08991 return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b); 08992 } 08993 08994 static vector double __ATTRS_o_ai 08995 vec_vsx_ld(int __a, const vector double *__b) 08996 { 08997 return (vector double)__builtin_vsx_lxvd2x(__a, __b); 08998 } 08999 09000 #endif 09001 09002 /* vec_vsx_st */ 09003 09004 #ifdef __VSX__ 09005 09006 static void __ATTRS_o_ai 09007 vec_vsx_st(vector signed int __a, int __b, vector signed int *__c) 09008 { 09009 __builtin_vsx_stxvw4x((vector int)__a, __b, __c); 09010 } 09011 09012 static void __ATTRS_o_ai 09013 vec_vsx_st(vector unsigned int __a, int __b, vector unsigned int *__c) 09014 { 09015 __builtin_vsx_stxvw4x((vector int)__a, __b, __c); 09016 } 09017 09018 static void __ATTRS_o_ai 09019 vec_vsx_st(vector float __a, int __b, vector float *__c) 09020 { 09021 __builtin_vsx_stxvw4x((vector int)__a, __b, __c); 09022 } 09023 09024 static void __ATTRS_o_ai 09025 vec_vsx_st(vector signed long long __a, int __b, vector signed long long *__c) 09026 { 09027 __builtin_vsx_stxvd2x((vector double)__a, __b, __c); 09028 } 09029 09030 static void __ATTRS_o_ai 09031 vec_vsx_st(vector unsigned long long __a, int __b, 09032 vector unsigned long long *__c) 09033 { 09034 __builtin_vsx_stxvd2x((vector double)__a, __b, __c); 09035 } 09036 09037 static void __ATTRS_o_ai 09038 vec_vsx_st(vector double __a, int __b, vector double *__c) 09039 { 09040 __builtin_vsx_stxvd2x((vector double)__a, __b, __c); 09041 } 09042 09043 #endif 09044 09045 /* vec_xor */ 09046 09047 #define __builtin_altivec_vxor vec_xor 09048 09049 static vector signed char __ATTRS_o_ai 09050 vec_xor(vector signed char __a, vector signed char __b) 09051 { 09052 return __a ^ __b; 09053 } 09054 09055 static vector signed char __ATTRS_o_ai 09056 vec_xor(vector bool char __a, vector signed char __b) 09057 { 09058 return (vector signed char)__a ^ __b; 09059 } 09060 09061 static vector signed char __ATTRS_o_ai 09062 vec_xor(vector signed char __a, vector bool char __b) 09063 { 09064 return __a ^ (vector signed char)__b; 09065 } 09066 09067 static vector unsigned char __ATTRS_o_ai 09068 vec_xor(vector unsigned char __a, vector unsigned char __b) 09069 { 09070 return __a ^ __b; 09071 } 09072 09073 static vector unsigned char __ATTRS_o_ai 09074 vec_xor(vector bool char __a, vector unsigned char __b) 09075 { 09076 return (vector unsigned char)__a ^ __b; 09077 } 09078 09079 static vector unsigned char __ATTRS_o_ai 09080 vec_xor(vector unsigned char __a, vector bool char __b) 09081 { 09082 return __a ^ (vector unsigned char)__b; 09083 } 09084 09085 static vector bool char __ATTRS_o_ai 09086 vec_xor(vector bool char __a, vector bool char __b) 09087 { 09088 return __a ^ __b; 09089 } 09090 09091 static vector short __ATTRS_o_ai 09092 vec_xor(vector short __a, vector short __b) 09093 { 09094 return __a ^ __b; 09095 } 09096 09097 static vector short __ATTRS_o_ai 09098 vec_xor(vector bool short __a, vector short __b) 09099 { 09100 return (vector short)__a ^ __b; 09101 } 09102 09103 static vector short __ATTRS_o_ai 09104 vec_xor(vector short __a, vector bool short __b) 09105 { 09106 return __a ^ (vector short)__b; 09107 } 09108 09109 static vector unsigned short __ATTRS_o_ai 09110 vec_xor(vector unsigned short __a, vector unsigned short __b) 09111 { 09112 return __a ^ __b; 09113 } 09114 09115 static vector unsigned short __ATTRS_o_ai 09116 vec_xor(vector bool short __a, vector unsigned short __b) 09117 { 09118 return (vector unsigned short)__a ^ __b; 09119 } 09120 09121 static vector unsigned short __ATTRS_o_ai 09122 vec_xor(vector unsigned short __a, vector bool short __b) 09123 { 09124 return __a ^ (vector unsigned short)__b; 09125 } 09126 09127 static vector bool short __ATTRS_o_ai 09128 vec_xor(vector bool short __a, vector bool short __b) 09129 { 09130 return __a ^ __b; 09131 } 09132 09133 static vector int __ATTRS_o_ai 09134 vec_xor(vector int __a, vector int __b) 09135 { 09136 return __a ^ __b; 09137 } 09138 09139 static vector int __ATTRS_o_ai 09140 vec_xor(vector bool int __a, vector int __b) 09141 { 09142 return (vector int)__a ^ __b; 09143 } 09144 09145 static vector int __ATTRS_o_ai 09146 vec_xor(vector int __a, vector bool int __b) 09147 { 09148 return __a ^ (vector int)__b; 09149 } 09150 09151 static vector unsigned int __ATTRS_o_ai 09152 vec_xor(vector unsigned int __a, vector unsigned int __b) 09153 { 09154 return __a ^ __b; 09155 } 09156 09157 static vector unsigned int __ATTRS_o_ai 09158 vec_xor(vector bool int __a, vector unsigned int __b) 09159 { 09160 return (vector unsigned int)__a ^ __b; 09161 } 09162 09163 static vector unsigned int __ATTRS_o_ai 09164 vec_xor(vector unsigned int __a, vector bool int __b) 09165 { 09166 return __a ^ (vector unsigned int)__b; 09167 } 09168 09169 static vector bool int __ATTRS_o_ai 09170 vec_xor(vector bool int __a, vector bool int __b) 09171 { 09172 return __a ^ __b; 09173 } 09174 09175 static vector float __ATTRS_o_ai 09176 vec_xor(vector float __a, vector float __b) 09177 { 09178 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; 09179 return (vector float)__res; 09180 } 09181 09182 static vector float __ATTRS_o_ai 09183 vec_xor(vector bool int __a, vector float __b) 09184 { 09185 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; 09186 return (vector float)__res; 09187 } 09188 09189 static vector float __ATTRS_o_ai 09190 vec_xor(vector float __a, vector bool int __b) 09191 { 09192 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; 09193 return (vector float)__res; 09194 } 09195 09196 /* vec_vxor */ 09197 09198 static vector signed char __ATTRS_o_ai 09199 vec_vxor(vector signed char __a, vector signed char __b) 09200 { 09201 return __a ^ __b; 09202 } 09203 09204 static vector signed char __ATTRS_o_ai 09205 vec_vxor(vector bool char __a, vector signed char __b) 09206 { 09207 return (vector signed char)__a ^ __b; 09208 } 09209 09210 static vector signed char __ATTRS_o_ai 09211 vec_vxor(vector signed char __a, vector bool char __b) 09212 { 09213 return __a ^ (vector signed char)__b; 09214 } 09215 09216 static vector unsigned char __ATTRS_o_ai 09217 vec_vxor(vector unsigned char __a, vector unsigned char __b) 09218 { 09219 return __a ^ __b; 09220 } 09221 09222 static vector unsigned char __ATTRS_o_ai 09223 vec_vxor(vector bool char __a, vector unsigned char __b) 09224 { 09225 return (vector unsigned char)__a ^ __b; 09226 } 09227 09228 static vector unsigned char __ATTRS_o_ai 09229 vec_vxor(vector unsigned char __a, vector bool char __b) 09230 { 09231 return __a ^ (vector unsigned char)__b; 09232 } 09233 09234 static vector bool char __ATTRS_o_ai 09235 vec_vxor(vector bool char __a, vector bool char __b) 09236 { 09237 return __a ^ __b; 09238 } 09239 09240 static vector short __ATTRS_o_ai 09241 vec_vxor(vector short __a, vector short __b) 09242 { 09243 return __a ^ __b; 09244 } 09245 09246 static vector short __ATTRS_o_ai 09247 vec_vxor(vector bool short __a, vector short __b) 09248 { 09249 return (vector short)__a ^ __b; 09250 } 09251 09252 static vector short __ATTRS_o_ai 09253 vec_vxor(vector short __a, vector bool short __b) 09254 { 09255 return __a ^ (vector short)__b; 09256 } 09257 09258 static vector unsigned short __ATTRS_o_ai 09259 vec_vxor(vector unsigned short __a, vector unsigned short __b) 09260 { 09261 return __a ^ __b; 09262 } 09263 09264 static vector unsigned short __ATTRS_o_ai 09265 vec_vxor(vector bool short __a, vector unsigned short __b) 09266 { 09267 return (vector unsigned short)__a ^ __b; 09268 } 09269 09270 static vector unsigned short __ATTRS_o_ai 09271 vec_vxor(vector unsigned short __a, vector bool short __b) 09272 { 09273 return __a ^ (vector unsigned short)__b; 09274 } 09275 09276 static vector bool short __ATTRS_o_ai 09277 vec_vxor(vector bool short __a, vector bool short __b) 09278 { 09279 return __a ^ __b; 09280 } 09281 09282 static vector int __ATTRS_o_ai 09283 vec_vxor(vector int __a, vector int __b) 09284 { 09285 return __a ^ __b; 09286 } 09287 09288 static vector int __ATTRS_o_ai 09289 vec_vxor(vector bool int __a, vector int __b) 09290 { 09291 return (vector int)__a ^ __b; 09292 } 09293 09294 static vector int __ATTRS_o_ai 09295 vec_vxor(vector int __a, vector bool int __b) 09296 { 09297 return __a ^ (vector int)__b; 09298 } 09299 09300 static vector unsigned int __ATTRS_o_ai 09301 vec_vxor(vector unsigned int __a, vector unsigned int __b) 09302 { 09303 return __a ^ __b; 09304 } 09305 09306 static vector unsigned int __ATTRS_o_ai 09307 vec_vxor(vector bool int __a, vector unsigned int __b) 09308 { 09309 return (vector unsigned int)__a ^ __b; 09310 } 09311 09312 static vector unsigned int __ATTRS_o_ai 09313 vec_vxor(vector unsigned int __a, vector bool int __b) 09314 { 09315 return __a ^ (vector unsigned int)__b; 09316 } 09317 09318 static vector bool int __ATTRS_o_ai 09319 vec_vxor(vector bool int __a, vector bool int __b) 09320 { 09321 return __a ^ __b; 09322 } 09323 09324 static vector float __ATTRS_o_ai 09325 vec_vxor(vector float __a, vector float __b) 09326 { 09327 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; 09328 return (vector float)__res; 09329 } 09330 09331 static vector float __ATTRS_o_ai 09332 vec_vxor(vector bool int __a, vector float __b) 09333 { 09334 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; 09335 return (vector float)__res; 09336 } 09337 09338 static vector float __ATTRS_o_ai 09339 vec_vxor(vector float __a, vector bool int __b) 09340 { 09341 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b; 09342 return (vector float)__res; 09343 } 09344 09345 /* ------------------------ extensions for CBEA ----------------------------- */ 09346 09347 /* vec_extract */ 09348 09349 static signed char __ATTRS_o_ai 09350 vec_extract(vector signed char __a, int __b) 09351 { 09352 return __a[__b]; 09353 } 09354 09355 static unsigned char __ATTRS_o_ai 09356 vec_extract(vector unsigned char __a, int __b) 09357 { 09358 return __a[__b]; 09359 } 09360 09361 static short __ATTRS_o_ai 09362 vec_extract(vector short __a, int __b) 09363 { 09364 return __a[__b]; 09365 } 09366 09367 static unsigned short __ATTRS_o_ai 09368 vec_extract(vector unsigned short __a, int __b) 09369 { 09370 return __a[__b]; 09371 } 09372 09373 static int __ATTRS_o_ai 09374 vec_extract(vector int __a, int __b) 09375 { 09376 return __a[__b]; 09377 } 09378 09379 static unsigned int __ATTRS_o_ai 09380 vec_extract(vector unsigned int __a, int __b) 09381 { 09382 return __a[__b]; 09383 } 09384 09385 static float __ATTRS_o_ai 09386 vec_extract(vector float __a, int __b) 09387 { 09388 return __a[__b]; 09389 } 09390 09391 /* vec_insert */ 09392 09393 static vector signed char __ATTRS_o_ai 09394 vec_insert(signed char __a, vector signed char __b, int __c) 09395 { 09396 __b[__c] = __a; 09397 return __b; 09398 } 09399 09400 static vector unsigned char __ATTRS_o_ai 09401 vec_insert(unsigned char __a, vector unsigned char __b, int __c) 09402 { 09403 __b[__c] = __a; 09404 return __b; 09405 } 09406 09407 static vector short __ATTRS_o_ai 09408 vec_insert(short __a, vector short __b, int __c) 09409 { 09410 __b[__c] = __a; 09411 return __b; 09412 } 09413 09414 static vector unsigned short __ATTRS_o_ai 09415 vec_insert(unsigned short __a, vector unsigned short __b, int __c) 09416 { 09417 __b[__c] = __a; 09418 return __b; 09419 } 09420 09421 static vector int __ATTRS_o_ai 09422 vec_insert(int __a, vector int __b, int __c) 09423 { 09424 __b[__c] = __a; 09425 return __b; 09426 } 09427 09428 static vector unsigned int __ATTRS_o_ai 09429 vec_insert(unsigned int __a, vector unsigned int __b, int __c) 09430 { 09431 __b[__c] = __a; 09432 return __b; 09433 } 09434 09435 static vector float __ATTRS_o_ai 09436 vec_insert(float __a, vector float __b, int __c) 09437 { 09438 __b[__c] = __a; 09439 return __b; 09440 } 09441 09442 /* vec_lvlx */ 09443 09444 static vector signed char __ATTRS_o_ai 09445 vec_lvlx(int __a, const signed char *__b) 09446 { 09447 return vec_perm(vec_ld(__a, __b), 09448 (vector signed char)(0), 09449 vec_lvsl(__a, __b)); 09450 } 09451 09452 static vector signed char __ATTRS_o_ai 09453 vec_lvlx(int __a, const vector signed char *__b) 09454 { 09455 return vec_perm(vec_ld(__a, __b), 09456 (vector signed char)(0), 09457 vec_lvsl(__a, (unsigned char *)__b)); 09458 } 09459 09460 static vector unsigned char __ATTRS_o_ai 09461 vec_lvlx(int __a, const unsigned char *__b) 09462 { 09463 return vec_perm(vec_ld(__a, __b), 09464 (vector unsigned char)(0), 09465 vec_lvsl(__a, __b)); 09466 } 09467 09468 static vector unsigned char __ATTRS_o_ai 09469 vec_lvlx(int __a, const vector unsigned char *__b) 09470 { 09471 return vec_perm(vec_ld(__a, __b), 09472 (vector unsigned char)(0), 09473 vec_lvsl(__a, (unsigned char *)__b)); 09474 } 09475 09476 static vector bool char __ATTRS_o_ai 09477 vec_lvlx(int __a, const vector bool char *__b) 09478 { 09479 return vec_perm(vec_ld(__a, __b), 09480 (vector bool char)(0), 09481 vec_lvsl(__a, (unsigned char *)__b)); 09482 } 09483 09484 static vector short __ATTRS_o_ai 09485 vec_lvlx(int __a, const short *__b) 09486 { 09487 return vec_perm(vec_ld(__a, __b), 09488 (vector short)(0), 09489 vec_lvsl(__a, __b)); 09490 } 09491 09492 static vector short __ATTRS_o_ai 09493 vec_lvlx(int __a, const vector short *__b) 09494 { 09495 return vec_perm(vec_ld(__a, __b), 09496 (vector short)(0), 09497 vec_lvsl(__a, (unsigned char *)__b)); 09498 } 09499 09500 static vector unsigned short __ATTRS_o_ai 09501 vec_lvlx(int __a, const unsigned short *__b) 09502 { 09503 return vec_perm(vec_ld(__a, __b), 09504 (vector unsigned short)(0), 09505 vec_lvsl(__a, __b)); 09506 } 09507 09508 static vector unsigned short __ATTRS_o_ai 09509 vec_lvlx(int __a, const vector unsigned short *__b) 09510 { 09511 return vec_perm(vec_ld(__a, __b), 09512 (vector unsigned short)(0), 09513 vec_lvsl(__a, (unsigned char *)__b)); 09514 } 09515 09516 static vector bool short __ATTRS_o_ai 09517 vec_lvlx(int __a, const vector bool short *__b) 09518 { 09519 return vec_perm(vec_ld(__a, __b), 09520 (vector bool short)(0), 09521 vec_lvsl(__a, (unsigned char *)__b)); 09522 } 09523 09524 static vector pixel __ATTRS_o_ai 09525 vec_lvlx(int __a, const vector pixel *__b) 09526 { 09527 return vec_perm(vec_ld(__a, __b), 09528 (vector pixel)(0), 09529 vec_lvsl(__a, (unsigned char *)__b)); 09530 } 09531 09532 static vector int __ATTRS_o_ai 09533 vec_lvlx(int __a, const int *__b) 09534 { 09535 return vec_perm(vec_ld(__a, __b), 09536 (vector int)(0), 09537 vec_lvsl(__a, __b)); 09538 } 09539 09540 static vector int __ATTRS_o_ai 09541 vec_lvlx(int __a, const vector int *__b) 09542 { 09543 return vec_perm(vec_ld(__a, __b), 09544 (vector int)(0), 09545 vec_lvsl(__a, (unsigned char *)__b)); 09546 } 09547 09548 static vector unsigned int __ATTRS_o_ai 09549 vec_lvlx(int __a, const unsigned int *__b) 09550 { 09551 return vec_perm(vec_ld(__a, __b), 09552 (vector unsigned int)(0), 09553 vec_lvsl(__a, __b)); 09554 } 09555 09556 static vector unsigned int __ATTRS_o_ai 09557 vec_lvlx(int __a, const vector unsigned int *__b) 09558 { 09559 return vec_perm(vec_ld(__a, __b), 09560 (vector unsigned int)(0), 09561 vec_lvsl(__a, (unsigned char *)__b)); 09562 } 09563 09564 static vector bool int __ATTRS_o_ai 09565 vec_lvlx(int __a, const vector bool int *__b) 09566 { 09567 return vec_perm(vec_ld(__a, __b), 09568 (vector bool int)(0), 09569 vec_lvsl(__a, (unsigned char *)__b)); 09570 } 09571 09572 static vector float __ATTRS_o_ai 09573 vec_lvlx(int __a, const float *__b) 09574 { 09575 return vec_perm(vec_ld(__a, __b), 09576 (vector float)(0), 09577 vec_lvsl(__a, __b)); 09578 } 09579 09580 static vector float __ATTRS_o_ai 09581 vec_lvlx(int __a, const vector float *__b) 09582 { 09583 return vec_perm(vec_ld(__a, __b), 09584 (vector float)(0), 09585 vec_lvsl(__a, (unsigned char *)__b)); 09586 } 09587 09588 /* vec_lvlxl */ 09589 09590 static vector signed char __ATTRS_o_ai 09591 vec_lvlxl(int __a, const signed char *__b) 09592 { 09593 return vec_perm(vec_ldl(__a, __b), 09594 (vector signed char)(0), 09595 vec_lvsl(__a, __b)); 09596 } 09597 09598 static vector signed char __ATTRS_o_ai 09599 vec_lvlxl(int __a, const vector signed char *__b) 09600 { 09601 return vec_perm(vec_ldl(__a, __b), 09602 (vector signed char)(0), 09603 vec_lvsl(__a, (unsigned char *)__b)); 09604 } 09605 09606 static vector unsigned char __ATTRS_o_ai 09607 vec_lvlxl(int __a, const unsigned char *__b) 09608 { 09609 return vec_perm(vec_ldl(__a, __b), 09610 (vector unsigned char)(0), 09611 vec_lvsl(__a, __b)); 09612 } 09613 09614 static vector unsigned char __ATTRS_o_ai 09615 vec_lvlxl(int __a, const vector unsigned char *__b) 09616 { 09617 return vec_perm(vec_ldl(__a, __b), 09618 (vector unsigned char)(0), 09619 vec_lvsl(__a, (unsigned char *)__b)); 09620 } 09621 09622 static vector bool char __ATTRS_o_ai 09623 vec_lvlxl(int __a, const vector bool char *__b) 09624 { 09625 return vec_perm(vec_ldl(__a, __b), 09626 (vector bool char)(0), 09627 vec_lvsl(__a, (unsigned char *)__b)); 09628 } 09629 09630 static vector short __ATTRS_o_ai 09631 vec_lvlxl(int __a, const short *__b) 09632 { 09633 return vec_perm(vec_ldl(__a, __b), 09634 (vector short)(0), 09635 vec_lvsl(__a, __b)); 09636 } 09637 09638 static vector short __ATTRS_o_ai 09639 vec_lvlxl(int __a, const vector short *__b) 09640 { 09641 return vec_perm(vec_ldl(__a, __b), 09642 (vector short)(0), 09643 vec_lvsl(__a, (unsigned char *)__b)); 09644 } 09645 09646 static vector unsigned short __ATTRS_o_ai 09647 vec_lvlxl(int __a, const unsigned short *__b) 09648 { 09649 return vec_perm(vec_ldl(__a, __b), 09650 (vector unsigned short)(0), 09651 vec_lvsl(__a, __b)); 09652 } 09653 09654 static vector unsigned short __ATTRS_o_ai 09655 vec_lvlxl(int __a, const vector unsigned short *__b) 09656 { 09657 return vec_perm(vec_ldl(__a, __b), 09658 (vector unsigned short)(0), 09659 vec_lvsl(__a, (unsigned char *)__b)); 09660 } 09661 09662 static vector bool short __ATTRS_o_ai 09663 vec_lvlxl(int __a, const vector bool short *__b) 09664 { 09665 return vec_perm(vec_ldl(__a, __b), 09666 (vector bool short)(0), 09667 vec_lvsl(__a, (unsigned char *)__b)); 09668 } 09669 09670 static vector pixel __ATTRS_o_ai 09671 vec_lvlxl(int __a, const vector pixel *__b) 09672 { 09673 return vec_perm(vec_ldl(__a, __b), 09674 (vector pixel)(0), 09675 vec_lvsl(__a, (unsigned char *)__b)); 09676 } 09677 09678 static vector int __ATTRS_o_ai 09679 vec_lvlxl(int __a, const int *__b) 09680 { 09681 return vec_perm(vec_ldl(__a, __b), 09682 (vector int)(0), 09683 vec_lvsl(__a, __b)); 09684 } 09685 09686 static vector int __ATTRS_o_ai 09687 vec_lvlxl(int __a, const vector int *__b) 09688 { 09689 return vec_perm(vec_ldl(__a, __b), 09690 (vector int)(0), 09691 vec_lvsl(__a, (unsigned char *)__b)); 09692 } 09693 09694 static vector unsigned int __ATTRS_o_ai 09695 vec_lvlxl(int __a, const unsigned int *__b) 09696 { 09697 return vec_perm(vec_ldl(__a, __b), 09698 (vector unsigned int)(0), 09699 vec_lvsl(__a, __b)); 09700 } 09701 09702 static vector unsigned int __ATTRS_o_ai 09703 vec_lvlxl(int __a, const vector unsigned int *__b) 09704 { 09705 return vec_perm(vec_ldl(__a, __b), 09706 (vector unsigned int)(0), 09707 vec_lvsl(__a, (unsigned char *)__b)); 09708 } 09709 09710 static vector bool int __ATTRS_o_ai 09711 vec_lvlxl(int __a, const vector bool int *__b) 09712 { 09713 return vec_perm(vec_ldl(__a, __b), 09714 (vector bool int)(0), 09715 vec_lvsl(__a, (unsigned char *)__b)); 09716 } 09717 09718 static vector float __ATTRS_o_ai 09719 vec_lvlxl(int __a, const float *__b) 09720 { 09721 return vec_perm(vec_ldl(__a, __b), 09722 (vector float)(0), 09723 vec_lvsl(__a, __b)); 09724 } 09725 09726 static vector float __ATTRS_o_ai 09727 vec_lvlxl(int __a, vector float *__b) 09728 { 09729 return vec_perm(vec_ldl(__a, __b), 09730 (vector float)(0), 09731 vec_lvsl(__a, (unsigned char *)__b)); 09732 } 09733 09734 /* vec_lvrx */ 09735 09736 static vector signed char __ATTRS_o_ai 09737 vec_lvrx(int __a, const signed char *__b) 09738 { 09739 return vec_perm((vector signed char)(0), 09740 vec_ld(__a, __b), 09741 vec_lvsl(__a, __b)); 09742 } 09743 09744 static vector signed char __ATTRS_o_ai 09745 vec_lvrx(int __a, const vector signed char *__b) 09746 { 09747 return vec_perm((vector signed char)(0), 09748 vec_ld(__a, __b), 09749 vec_lvsl(__a, (unsigned char *)__b)); 09750 } 09751 09752 static vector unsigned char __ATTRS_o_ai 09753 vec_lvrx(int __a, const unsigned char *__b) 09754 { 09755 return vec_perm((vector unsigned char)(0), 09756 vec_ld(__a, __b), 09757 vec_lvsl(__a, __b)); 09758 } 09759 09760 static vector unsigned char __ATTRS_o_ai 09761 vec_lvrx(int __a, const vector unsigned char *__b) 09762 { 09763 return vec_perm((vector unsigned char)(0), 09764 vec_ld(__a, __b), 09765 vec_lvsl(__a, (unsigned char *)__b)); 09766 } 09767 09768 static vector bool char __ATTRS_o_ai 09769 vec_lvrx(int __a, const vector bool char *__b) 09770 { 09771 return vec_perm((vector bool char)(0), 09772 vec_ld(__a, __b), 09773 vec_lvsl(__a, (unsigned char *)__b)); 09774 } 09775 09776 static vector short __ATTRS_o_ai 09777 vec_lvrx(int __a, const short *__b) 09778 { 09779 return vec_perm((vector short)(0), 09780 vec_ld(__a, __b), 09781 vec_lvsl(__a, __b)); 09782 } 09783 09784 static vector short __ATTRS_o_ai 09785 vec_lvrx(int __a, const vector short *__b) 09786 { 09787 return vec_perm((vector short)(0), 09788 vec_ld(__a, __b), 09789 vec_lvsl(__a, (unsigned char *)__b)); 09790 } 09791 09792 static vector unsigned short __ATTRS_o_ai 09793 vec_lvrx(int __a, const unsigned short *__b) 09794 { 09795 return vec_perm((vector unsigned short)(0), 09796 vec_ld(__a, __b), 09797 vec_lvsl(__a, __b)); 09798 } 09799 09800 static vector unsigned short __ATTRS_o_ai 09801 vec_lvrx(int __a, const vector unsigned short *__b) 09802 { 09803 return vec_perm((vector unsigned short)(0), 09804 vec_ld(__a, __b), 09805 vec_lvsl(__a, (unsigned char *)__b)); 09806 } 09807 09808 static vector bool short __ATTRS_o_ai 09809 vec_lvrx(int __a, const vector bool short *__b) 09810 { 09811 return vec_perm((vector bool short)(0), 09812 vec_ld(__a, __b), 09813 vec_lvsl(__a, (unsigned char *)__b)); 09814 } 09815 09816 static vector pixel __ATTRS_o_ai 09817 vec_lvrx(int __a, const vector pixel *__b) 09818 { 09819 return vec_perm((vector pixel)(0), 09820 vec_ld(__a, __b), 09821 vec_lvsl(__a, (unsigned char *)__b)); 09822 } 09823 09824 static vector int __ATTRS_o_ai 09825 vec_lvrx(int __a, const int *__b) 09826 { 09827 return vec_perm((vector int)(0), 09828 vec_ld(__a, __b), 09829 vec_lvsl(__a, __b)); 09830 } 09831 09832 static vector int __ATTRS_o_ai 09833 vec_lvrx(int __a, const vector int *__b) 09834 { 09835 return vec_perm((vector int)(0), 09836 vec_ld(__a, __b), 09837 vec_lvsl(__a, (unsigned char *)__b)); 09838 } 09839 09840 static vector unsigned int __ATTRS_o_ai 09841 vec_lvrx(int __a, const unsigned int *__b) 09842 { 09843 return vec_perm((vector unsigned int)(0), 09844 vec_ld(__a, __b), 09845 vec_lvsl(__a, __b)); 09846 } 09847 09848 static vector unsigned int __ATTRS_o_ai 09849 vec_lvrx(int __a, const vector unsigned int *__b) 09850 { 09851 return vec_perm((vector unsigned int)(0), 09852 vec_ld(__a, __b), 09853 vec_lvsl(__a, (unsigned char *)__b)); 09854 } 09855 09856 static vector bool int __ATTRS_o_ai 09857 vec_lvrx(int __a, const vector bool int *__b) 09858 { 09859 return vec_perm((vector bool int)(0), 09860 vec_ld(__a, __b), 09861 vec_lvsl(__a, (unsigned char *)__b)); 09862 } 09863 09864 static vector float __ATTRS_o_ai 09865 vec_lvrx(int __a, const float *__b) 09866 { 09867 return vec_perm((vector float)(0), 09868 vec_ld(__a, __b), 09869 vec_lvsl(__a, __b)); 09870 } 09871 09872 static vector float __ATTRS_o_ai 09873 vec_lvrx(int __a, const vector float *__b) 09874 { 09875 return vec_perm((vector float)(0), 09876 vec_ld(__a, __b), 09877 vec_lvsl(__a, (unsigned char *)__b)); 09878 } 09879 09880 /* vec_lvrxl */ 09881 09882 static vector signed char __ATTRS_o_ai 09883 vec_lvrxl(int __a, const signed char *__b) 09884 { 09885 return vec_perm((vector signed char)(0), 09886 vec_ldl(__a, __b), 09887 vec_lvsl(__a, __b)); 09888 } 09889 09890 static vector signed char __ATTRS_o_ai 09891 vec_lvrxl(int __a, const vector signed char *__b) 09892 { 09893 return vec_perm((vector signed char)(0), 09894 vec_ldl(__a, __b), 09895 vec_lvsl(__a, (unsigned char *)__b)); 09896 } 09897 09898 static vector unsigned char __ATTRS_o_ai 09899 vec_lvrxl(int __a, const unsigned char *__b) 09900 { 09901 return vec_perm((vector unsigned char)(0), 09902 vec_ldl(__a, __b), 09903 vec_lvsl(__a, __b)); 09904 } 09905 09906 static vector unsigned char __ATTRS_o_ai 09907 vec_lvrxl(int __a, const vector unsigned char *__b) 09908 { 09909 return vec_perm((vector unsigned char)(0), 09910 vec_ldl(__a, __b), 09911 vec_lvsl(__a, (unsigned char *)__b)); 09912 } 09913 09914 static vector bool char __ATTRS_o_ai 09915 vec_lvrxl(int __a, const vector bool char *__b) 09916 { 09917 return vec_perm((vector bool char)(0), 09918 vec_ldl(__a, __b), 09919 vec_lvsl(__a, (unsigned char *)__b)); 09920 } 09921 09922 static vector short __ATTRS_o_ai 09923 vec_lvrxl(int __a, const short *__b) 09924 { 09925 return vec_perm((vector short)(0), 09926 vec_ldl(__a, __b), 09927 vec_lvsl(__a, __b)); 09928 } 09929 09930 static vector short __ATTRS_o_ai 09931 vec_lvrxl(int __a, const vector short *__b) 09932 { 09933 return vec_perm((vector short)(0), 09934 vec_ldl(__a, __b), 09935 vec_lvsl(__a, (unsigned char *)__b)); 09936 } 09937 09938 static vector unsigned short __ATTRS_o_ai 09939 vec_lvrxl(int __a, const unsigned short *__b) 09940 { 09941 return vec_perm((vector unsigned short)(0), 09942 vec_ldl(__a, __b), 09943 vec_lvsl(__a, __b)); 09944 } 09945 09946 static vector unsigned short __ATTRS_o_ai 09947 vec_lvrxl(int __a, const vector unsigned short *__b) 09948 { 09949 return vec_perm((vector unsigned short)(0), 09950 vec_ldl(__a, __b), 09951 vec_lvsl(__a, (unsigned char *)__b)); 09952 } 09953 09954 static vector bool short __ATTRS_o_ai 09955 vec_lvrxl(int __a, const vector bool short *__b) 09956 { 09957 return vec_perm((vector bool short)(0), 09958 vec_ldl(__a, __b), 09959 vec_lvsl(__a, (unsigned char *)__b)); 09960 } 09961 09962 static vector pixel __ATTRS_o_ai 09963 vec_lvrxl(int __a, const vector pixel *__b) 09964 { 09965 return vec_perm((vector pixel)(0), 09966 vec_ldl(__a, __b), 09967 vec_lvsl(__a, (unsigned char *)__b)); 09968 } 09969 09970 static vector int __ATTRS_o_ai 09971 vec_lvrxl(int __a, const int *__b) 09972 { 09973 return vec_perm((vector int)(0), 09974 vec_ldl(__a, __b), 09975 vec_lvsl(__a, __b)); 09976 } 09977 09978 static vector int __ATTRS_o_ai 09979 vec_lvrxl(int __a, const vector int *__b) 09980 { 09981 return vec_perm((vector int)(0), 09982 vec_ldl(__a, __b), 09983 vec_lvsl(__a, (unsigned char *)__b)); 09984 } 09985 09986 static vector unsigned int __ATTRS_o_ai 09987 vec_lvrxl(int __a, const unsigned int *__b) 09988 { 09989 return vec_perm((vector unsigned int)(0), 09990 vec_ldl(__a, __b), 09991 vec_lvsl(__a, __b)); 09992 } 09993 09994 static vector unsigned int __ATTRS_o_ai 09995 vec_lvrxl(int __a, const vector unsigned int *__b) 09996 { 09997 return vec_perm((vector unsigned int)(0), 09998 vec_ldl(__a, __b), 09999 vec_lvsl(__a, (unsigned char *)__b)); 10000 } 10001 10002 static vector bool int __ATTRS_o_ai 10003 vec_lvrxl(int __a, const vector bool int *__b) 10004 { 10005 return vec_perm((vector bool int)(0), 10006 vec_ldl(__a, __b), 10007 vec_lvsl(__a, (unsigned char *)__b)); 10008 } 10009 10010 static vector float __ATTRS_o_ai 10011 vec_lvrxl(int __a, const float *__b) 10012 { 10013 return vec_perm((vector float)(0), 10014 vec_ldl(__a, __b), 10015 vec_lvsl(__a, __b)); 10016 } 10017 10018 static vector float __ATTRS_o_ai 10019 vec_lvrxl(int __a, const vector float *__b) 10020 { 10021 return vec_perm((vector float)(0), 10022 vec_ldl(__a, __b), 10023 vec_lvsl(__a, (unsigned char *)__b)); 10024 } 10025 10026 /* vec_stvlx */ 10027 10028 static void __ATTRS_o_ai 10029 vec_stvlx(vector signed char __a, int __b, signed char *__c) 10030 { 10031 return vec_st(vec_perm(vec_lvrx(__b, __c), 10032 __a, 10033 vec_lvsr(__b, __c)), 10034 __b, __c); 10035 } 10036 10037 static void __ATTRS_o_ai 10038 vec_stvlx(vector signed char __a, int __b, vector signed char *__c) 10039 { 10040 return vec_st(vec_perm(vec_lvrx(__b, __c), 10041 __a, 10042 vec_lvsr(__b, (unsigned char *)__c)), 10043 __b, __c); 10044 } 10045 10046 static void __ATTRS_o_ai 10047 vec_stvlx(vector unsigned char __a, int __b, unsigned char *__c) 10048 { 10049 return vec_st(vec_perm(vec_lvrx(__b, __c), 10050 __a, 10051 vec_lvsr(__b, __c)), 10052 __b, __c); 10053 } 10054 10055 static void __ATTRS_o_ai 10056 vec_stvlx(vector unsigned char __a, int __b, vector unsigned char *__c) 10057 { 10058 return vec_st(vec_perm(vec_lvrx(__b, __c), 10059 __a, 10060 vec_lvsr(__b, (unsigned char *)__c)), 10061 __b, __c); 10062 } 10063 10064 static void __ATTRS_o_ai 10065 vec_stvlx(vector bool char __a, int __b, vector bool char *__c) 10066 { 10067 return vec_st(vec_perm(vec_lvrx(__b, __c), 10068 __a, 10069 vec_lvsr(__b, (unsigned char *)__c)), 10070 __b, __c); 10071 } 10072 10073 static void __ATTRS_o_ai 10074 vec_stvlx(vector short __a, int __b, short *__c) 10075 { 10076 return vec_st(vec_perm(vec_lvrx(__b, __c), 10077 __a, 10078 vec_lvsr(__b, __c)), 10079 __b, __c); 10080 } 10081 10082 static void __ATTRS_o_ai 10083 vec_stvlx(vector short __a, int __b, vector short *__c) 10084 { 10085 return vec_st(vec_perm(vec_lvrx(__b, __c), 10086 __a, 10087 vec_lvsr(__b, (unsigned char *)__c)), 10088 __b, __c); 10089 } 10090 10091 static void __ATTRS_o_ai 10092 vec_stvlx(vector unsigned short __a, int __b, unsigned short *__c) 10093 { 10094 return vec_st(vec_perm(vec_lvrx(__b, __c), 10095 __a, 10096 vec_lvsr(__b, __c)), 10097 __b, __c); 10098 } 10099 10100 static void __ATTRS_o_ai 10101 vec_stvlx(vector unsigned short __a, int __b, vector unsigned short *__c) 10102 { 10103 return vec_st(vec_perm(vec_lvrx(__b, __c), 10104 __a, 10105 vec_lvsr(__b, (unsigned char *)__c)), 10106 __b, __c); 10107 } 10108 10109 static void __ATTRS_o_ai 10110 vec_stvlx(vector bool short __a, int __b, vector bool short *__c) 10111 { 10112 return vec_st(vec_perm(vec_lvrx(__b, __c), 10113 __a, 10114 vec_lvsr(__b, (unsigned char *)__c)), 10115 __b, __c); 10116 } 10117 10118 static void __ATTRS_o_ai 10119 vec_stvlx(vector pixel __a, int __b, vector pixel *__c) 10120 { 10121 return vec_st(vec_perm(vec_lvrx(__b, __c), 10122 __a, 10123 vec_lvsr(__b, (unsigned char *)__c)), 10124 __b, __c); 10125 } 10126 10127 static void __ATTRS_o_ai 10128 vec_stvlx(vector int __a, int __b, int *__c) 10129 { 10130 return vec_st(vec_perm(vec_lvrx(__b, __c), 10131 __a, 10132 vec_lvsr(__b, __c)), 10133 __b, __c); 10134 } 10135 10136 static void __ATTRS_o_ai 10137 vec_stvlx(vector int __a, int __b, vector int *__c) 10138 { 10139 return vec_st(vec_perm(vec_lvrx(__b, __c), 10140 __a, 10141 vec_lvsr(__b, (unsigned char *)__c)), 10142 __b, __c); 10143 } 10144 10145 static void __ATTRS_o_ai 10146 vec_stvlx(vector unsigned int __a, int __b, unsigned int *__c) 10147 { 10148 return vec_st(vec_perm(vec_lvrx(__b, __c), 10149 __a, 10150 vec_lvsr(__b, __c)), 10151 __b, __c); 10152 } 10153 10154 static void __ATTRS_o_ai 10155 vec_stvlx(vector unsigned int __a, int __b, vector unsigned int *__c) 10156 { 10157 return vec_st(vec_perm(vec_lvrx(__b, __c), 10158 __a, 10159 vec_lvsr(__b, (unsigned char *)__c)), 10160 __b, __c); 10161 } 10162 10163 static void __ATTRS_o_ai 10164 vec_stvlx(vector bool int __a, int __b, vector bool int *__c) 10165 { 10166 return vec_st(vec_perm(vec_lvrx(__b, __c), 10167 __a, 10168 vec_lvsr(__b, (unsigned char *)__c)), 10169 __b, __c); 10170 } 10171 10172 static void __ATTRS_o_ai 10173 vec_stvlx(vector float __a, int __b, vector float *__c) 10174 { 10175 return vec_st(vec_perm(vec_lvrx(__b, __c), 10176 __a, 10177 vec_lvsr(__b, (unsigned char *)__c)), 10178 __b, __c); 10179 } 10180 10181 /* vec_stvlxl */ 10182 10183 static void __ATTRS_o_ai 10184 vec_stvlxl(vector signed char __a, int __b, signed char *__c) 10185 { 10186 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10187 __a, 10188 vec_lvsr(__b, __c)), 10189 __b, __c); 10190 } 10191 10192 static void __ATTRS_o_ai 10193 vec_stvlxl(vector signed char __a, int __b, vector signed char *__c) 10194 { 10195 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10196 __a, 10197 vec_lvsr(__b, (unsigned char *)__c)), 10198 __b, __c); 10199 } 10200 10201 static void __ATTRS_o_ai 10202 vec_stvlxl(vector unsigned char __a, int __b, unsigned char *__c) 10203 { 10204 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10205 __a, 10206 vec_lvsr(__b, __c)), 10207 __b, __c); 10208 } 10209 10210 static void __ATTRS_o_ai 10211 vec_stvlxl(vector unsigned char __a, int __b, vector unsigned char *__c) 10212 { 10213 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10214 __a, 10215 vec_lvsr(__b, (unsigned char *)__c)), 10216 __b, __c); 10217 } 10218 10219 static void __ATTRS_o_ai 10220 vec_stvlxl(vector bool char __a, int __b, vector bool char *__c) 10221 { 10222 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10223 __a, 10224 vec_lvsr(__b, (unsigned char *)__c)), 10225 __b, __c); 10226 } 10227 10228 static void __ATTRS_o_ai 10229 vec_stvlxl(vector short __a, int __b, short *__c) 10230 { 10231 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10232 __a, 10233 vec_lvsr(__b, __c)), 10234 __b, __c); 10235 } 10236 10237 static void __ATTRS_o_ai 10238 vec_stvlxl(vector short __a, int __b, vector short *__c) 10239 { 10240 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10241 __a, 10242 vec_lvsr(__b, (unsigned char *)__c)), 10243 __b, __c); 10244 } 10245 10246 static void __ATTRS_o_ai 10247 vec_stvlxl(vector unsigned short __a, int __b, unsigned short *__c) 10248 { 10249 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10250 __a, 10251 vec_lvsr(__b, __c)), 10252 __b, __c); 10253 } 10254 10255 static void __ATTRS_o_ai 10256 vec_stvlxl(vector unsigned short __a, int __b, vector unsigned short *__c) 10257 { 10258 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10259 __a, 10260 vec_lvsr(__b, (unsigned char *)__c)), 10261 __b, __c); 10262 } 10263 10264 static void __ATTRS_o_ai 10265 vec_stvlxl(vector bool short __a, int __b, vector bool short *__c) 10266 { 10267 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10268 __a, 10269 vec_lvsr(__b, (unsigned char *)__c)), 10270 __b, __c); 10271 } 10272 10273 static void __ATTRS_o_ai 10274 vec_stvlxl(vector pixel __a, int __b, vector pixel *__c) 10275 { 10276 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10277 __a, 10278 vec_lvsr(__b, (unsigned char *)__c)), 10279 __b, __c); 10280 } 10281 10282 static void __ATTRS_o_ai 10283 vec_stvlxl(vector int __a, int __b, int *__c) 10284 { 10285 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10286 __a, 10287 vec_lvsr(__b, __c)), 10288 __b, __c); 10289 } 10290 10291 static void __ATTRS_o_ai 10292 vec_stvlxl(vector int __a, int __b, vector int *__c) 10293 { 10294 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10295 __a, 10296 vec_lvsr(__b, (unsigned char *)__c)), 10297 __b, __c); 10298 } 10299 10300 static void __ATTRS_o_ai 10301 vec_stvlxl(vector unsigned int __a, int __b, unsigned int *__c) 10302 { 10303 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10304 __a, 10305 vec_lvsr(__b, __c)), 10306 __b, __c); 10307 } 10308 10309 static void __ATTRS_o_ai 10310 vec_stvlxl(vector unsigned int __a, int __b, vector unsigned int *__c) 10311 { 10312 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10313 __a, 10314 vec_lvsr(__b, (unsigned char *)__c)), 10315 __b, __c); 10316 } 10317 10318 static void __ATTRS_o_ai 10319 vec_stvlxl(vector bool int __a, int __b, vector bool int *__c) 10320 { 10321 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10322 __a, 10323 vec_lvsr(__b, (unsigned char *)__c)), 10324 __b, __c); 10325 } 10326 10327 static void __ATTRS_o_ai 10328 vec_stvlxl(vector float __a, int __b, vector float *__c) 10329 { 10330 return vec_stl(vec_perm(vec_lvrx(__b, __c), 10331 __a, 10332 vec_lvsr(__b, (unsigned char *)__c)), 10333 __b, __c); 10334 } 10335 10336 /* vec_stvrx */ 10337 10338 static void __ATTRS_o_ai 10339 vec_stvrx(vector signed char __a, int __b, signed char *__c) 10340 { 10341 return vec_st(vec_perm(__a, 10342 vec_lvlx(__b, __c), 10343 vec_lvsr(__b, __c)), 10344 __b, __c); 10345 } 10346 10347 static void __ATTRS_o_ai 10348 vec_stvrx(vector signed char __a, int __b, vector signed char *__c) 10349 { 10350 return vec_st(vec_perm(__a, 10351 vec_lvlx(__b, __c), 10352 vec_lvsr(__b, (unsigned char *)__c)), 10353 __b, __c); 10354 } 10355 10356 static void __ATTRS_o_ai 10357 vec_stvrx(vector unsigned char __a, int __b, unsigned char *__c) 10358 { 10359 return vec_st(vec_perm(__a, 10360 vec_lvlx(__b, __c), 10361 vec_lvsr(__b, __c)), 10362 __b, __c); 10363 } 10364 10365 static void __ATTRS_o_ai 10366 vec_stvrx(vector unsigned char __a, int __b, vector unsigned char *__c) 10367 { 10368 return vec_st(vec_perm(__a, 10369 vec_lvlx(__b, __c), 10370 vec_lvsr(__b, (unsigned char *)__c)), 10371 __b, __c); 10372 } 10373 10374 static void __ATTRS_o_ai 10375 vec_stvrx(vector bool char __a, int __b, vector bool char *__c) 10376 { 10377 return vec_st(vec_perm(__a, 10378 vec_lvlx(__b, __c), 10379 vec_lvsr(__b, (unsigned char *)__c)), 10380 __b, __c); 10381 } 10382 10383 static void __ATTRS_o_ai 10384 vec_stvrx(vector short __a, int __b, short *__c) 10385 { 10386 return vec_st(vec_perm(__a, 10387 vec_lvlx(__b, __c), 10388 vec_lvsr(__b, __c)), 10389 __b, __c); 10390 } 10391 10392 static void __ATTRS_o_ai 10393 vec_stvrx(vector short __a, int __b, vector short *__c) 10394 { 10395 return vec_st(vec_perm(__a, 10396 vec_lvlx(__b, __c), 10397 vec_lvsr(__b, (unsigned char *)__c)), 10398 __b, __c); 10399 } 10400 10401 static void __ATTRS_o_ai 10402 vec_stvrx(vector unsigned short __a, int __b, unsigned short *__c) 10403 { 10404 return vec_st(vec_perm(__a, 10405 vec_lvlx(__b, __c), 10406 vec_lvsr(__b, __c)), 10407 __b, __c); 10408 } 10409 10410 static void __ATTRS_o_ai 10411 vec_stvrx(vector unsigned short __a, int __b, vector unsigned short *__c) 10412 { 10413 return vec_st(vec_perm(__a, 10414 vec_lvlx(__b, __c), 10415 vec_lvsr(__b, (unsigned char *)__c)), 10416 __b, __c); 10417 } 10418 10419 static void __ATTRS_o_ai 10420 vec_stvrx(vector bool short __a, int __b, vector bool short *__c) 10421 { 10422 return vec_st(vec_perm(__a, 10423 vec_lvlx(__b, __c), 10424 vec_lvsr(__b, (unsigned char *)__c)), 10425 __b, __c); 10426 } 10427 10428 static void __ATTRS_o_ai 10429 vec_stvrx(vector pixel __a, int __b, vector pixel *__c) 10430 { 10431 return vec_st(vec_perm(__a, 10432 vec_lvlx(__b, __c), 10433 vec_lvsr(__b, (unsigned char *)__c)), 10434 __b, __c); 10435 } 10436 10437 static void __ATTRS_o_ai 10438 vec_stvrx(vector int __a, int __b, int *__c) 10439 { 10440 return vec_st(vec_perm(__a, 10441 vec_lvlx(__b, __c), 10442 vec_lvsr(__b, __c)), 10443 __b, __c); 10444 } 10445 10446 static void __ATTRS_o_ai 10447 vec_stvrx(vector int __a, int __b, vector int *__c) 10448 { 10449 return vec_st(vec_perm(__a, 10450 vec_lvlx(__b, __c), 10451 vec_lvsr(__b, (unsigned char *)__c)), 10452 __b, __c); 10453 } 10454 10455 static void __ATTRS_o_ai 10456 vec_stvrx(vector unsigned int __a, int __b, unsigned int *__c) 10457 { 10458 return vec_st(vec_perm(__a, 10459 vec_lvlx(__b, __c), 10460 vec_lvsr(__b, __c)), 10461 __b, __c); 10462 } 10463 10464 static void __ATTRS_o_ai 10465 vec_stvrx(vector unsigned int __a, int __b, vector unsigned int *__c) 10466 { 10467 return vec_st(vec_perm(__a, 10468 vec_lvlx(__b, __c), 10469 vec_lvsr(__b, (unsigned char *)__c)), 10470 __b, __c); 10471 } 10472 10473 static void __ATTRS_o_ai 10474 vec_stvrx(vector bool int __a, int __b, vector bool int *__c) 10475 { 10476 return vec_st(vec_perm(__a, 10477 vec_lvlx(__b, __c), 10478 vec_lvsr(__b, (unsigned char *)__c)), 10479 __b, __c); 10480 } 10481 10482 static void __ATTRS_o_ai 10483 vec_stvrx(vector float __a, int __b, vector float *__c) 10484 { 10485 return vec_st(vec_perm(__a, 10486 vec_lvlx(__b, __c), 10487 vec_lvsr(__b, (unsigned char *)__c)), 10488 __b, __c); 10489 } 10490 10491 /* vec_stvrxl */ 10492 10493 static void __ATTRS_o_ai 10494 vec_stvrxl(vector signed char __a, int __b, signed char *__c) 10495 { 10496 return vec_stl(vec_perm(__a, 10497 vec_lvlx(__b, __c), 10498 vec_lvsr(__b, __c)), 10499 __b, __c); 10500 } 10501 10502 static void __ATTRS_o_ai 10503 vec_stvrxl(vector signed char __a, int __b, vector signed char *__c) 10504 { 10505 return vec_stl(vec_perm(__a, 10506 vec_lvlx(__b, __c), 10507 vec_lvsr(__b, (unsigned char *)__c)), 10508 __b, __c); 10509 } 10510 10511 static void __ATTRS_o_ai 10512 vec_stvrxl(vector unsigned char __a, int __b, unsigned char *__c) 10513 { 10514 return vec_stl(vec_perm(__a, 10515 vec_lvlx(__b, __c), 10516 vec_lvsr(__b, __c)), 10517 __b, __c); 10518 } 10519 10520 static void __ATTRS_o_ai 10521 vec_stvrxl(vector unsigned char __a, int __b, vector unsigned char *__c) 10522 { 10523 return vec_stl(vec_perm(__a, 10524 vec_lvlx(__b, __c), 10525 vec_lvsr(__b, (unsigned char *)__c)), 10526 __b, __c); 10527 } 10528 10529 static void __ATTRS_o_ai 10530 vec_stvrxl(vector bool char __a, int __b, vector bool char *__c) 10531 { 10532 return vec_stl(vec_perm(__a, 10533 vec_lvlx(__b, __c), 10534 vec_lvsr(__b, (unsigned char *)__c)), 10535 __b, __c); 10536 } 10537 10538 static void __ATTRS_o_ai 10539 vec_stvrxl(vector short __a, int __b, short *__c) 10540 { 10541 return vec_stl(vec_perm(__a, 10542 vec_lvlx(__b, __c), 10543 vec_lvsr(__b, __c)), 10544 __b, __c); 10545 } 10546 10547 static void __ATTRS_o_ai 10548 vec_stvrxl(vector short __a, int __b, vector short *__c) 10549 { 10550 return vec_stl(vec_perm(__a, 10551 vec_lvlx(__b, __c), 10552 vec_lvsr(__b, (unsigned char *)__c)), 10553 __b, __c); 10554 } 10555 10556 static void __ATTRS_o_ai 10557 vec_stvrxl(vector unsigned short __a, int __b, unsigned short *__c) 10558 { 10559 return vec_stl(vec_perm(__a, 10560 vec_lvlx(__b, __c), 10561 vec_lvsr(__b, __c)), 10562 __b, __c); 10563 } 10564 10565 static void __ATTRS_o_ai 10566 vec_stvrxl(vector unsigned short __a, int __b, vector unsigned short *__c) 10567 { 10568 return vec_stl(vec_perm(__a, 10569 vec_lvlx(__b, __c), 10570 vec_lvsr(__b, (unsigned char *)__c)), 10571 __b, __c); 10572 } 10573 10574 static void __ATTRS_o_ai 10575 vec_stvrxl(vector bool short __a, int __b, vector bool short *__c) 10576 { 10577 return vec_stl(vec_perm(__a, 10578 vec_lvlx(__b, __c), 10579 vec_lvsr(__b, (unsigned char *)__c)), 10580 __b, __c); 10581 } 10582 10583 static void __ATTRS_o_ai 10584 vec_stvrxl(vector pixel __a, int __b, vector pixel *__c) 10585 { 10586 return vec_stl(vec_perm(__a, 10587 vec_lvlx(__b, __c), 10588 vec_lvsr(__b, (unsigned char *)__c)), 10589 __b, __c); 10590 } 10591 10592 static void __ATTRS_o_ai 10593 vec_stvrxl(vector int __a, int __b, int *__c) 10594 { 10595 return vec_stl(vec_perm(__a, 10596 vec_lvlx(__b, __c), 10597 vec_lvsr(__b, __c)), 10598 __b, __c); 10599 } 10600 10601 static void __ATTRS_o_ai 10602 vec_stvrxl(vector int __a, int __b, vector int *__c) 10603 { 10604 return vec_stl(vec_perm(__a, 10605 vec_lvlx(__b, __c), 10606 vec_lvsr(__b, (unsigned char *)__c)), 10607 __b, __c); 10608 } 10609 10610 static void __ATTRS_o_ai 10611 vec_stvrxl(vector unsigned int __a, int __b, unsigned int *__c) 10612 { 10613 return vec_stl(vec_perm(__a, 10614 vec_lvlx(__b, __c), 10615 vec_lvsr(__b, __c)), 10616 __b, __c); 10617 } 10618 10619 static void __ATTRS_o_ai 10620 vec_stvrxl(vector unsigned int __a, int __b, vector unsigned int *__c) 10621 { 10622 return vec_stl(vec_perm(__a, 10623 vec_lvlx(__b, __c), 10624 vec_lvsr(__b, (unsigned char *)__c)), 10625 __b, __c); 10626 } 10627 10628 static void __ATTRS_o_ai 10629 vec_stvrxl(vector bool int __a, int __b, vector bool int *__c) 10630 { 10631 return vec_stl(vec_perm(__a, 10632 vec_lvlx(__b, __c), 10633 vec_lvsr(__b, (unsigned char *)__c)), 10634 __b, __c); 10635 } 10636 10637 static void __ATTRS_o_ai 10638 vec_stvrxl(vector float __a, int __b, vector float *__c) 10639 { 10640 return vec_stl(vec_perm(__a, 10641 vec_lvlx(__b, __c), 10642 vec_lvsr(__b, (unsigned char *)__c)), 10643 __b, __c); 10644 } 10645 10646 /* vec_promote */ 10647 10648 static vector signed char __ATTRS_o_ai 10649 vec_promote(signed char __a, int __b) 10650 { 10651 vector signed char __res = (vector signed char)(0); 10652 __res[__b] = __a; 10653 return __res; 10654 } 10655 10656 static vector unsigned char __ATTRS_o_ai 10657 vec_promote(unsigned char __a, int __b) 10658 { 10659 vector unsigned char __res = (vector unsigned char)(0); 10660 __res[__b] = __a; 10661 return __res; 10662 } 10663 10664 static vector short __ATTRS_o_ai 10665 vec_promote(short __a, int __b) 10666 { 10667 vector short __res = (vector short)(0); 10668 __res[__b] = __a; 10669 return __res; 10670 } 10671 10672 static vector unsigned short __ATTRS_o_ai 10673 vec_promote(unsigned short __a, int __b) 10674 { 10675 vector unsigned short __res = (vector unsigned short)(0); 10676 __res[__b] = __a; 10677 return __res; 10678 } 10679 10680 static vector int __ATTRS_o_ai 10681 vec_promote(int __a, int __b) 10682 { 10683 vector int __res = (vector int)(0); 10684 __res[__b] = __a; 10685 return __res; 10686 } 10687 10688 static vector unsigned int __ATTRS_o_ai 10689 vec_promote(unsigned int __a, int __b) 10690 { 10691 vector unsigned int __res = (vector unsigned int)(0); 10692 __res[__b] = __a; 10693 return __res; 10694 } 10695 10696 static vector float __ATTRS_o_ai 10697 vec_promote(float __a, int __b) 10698 { 10699 vector float __res = (vector float)(0); 10700 __res[__b] = __a; 10701 return __res; 10702 } 10703 10704 /* vec_splats */ 10705 10706 static vector signed char __ATTRS_o_ai 10707 vec_splats(signed char __a) 10708 { 10709 return (vector signed char)(__a); 10710 } 10711 10712 static vector unsigned char __ATTRS_o_ai 10713 vec_splats(unsigned char __a) 10714 { 10715 return (vector unsigned char)(__a); 10716 } 10717 10718 static vector short __ATTRS_o_ai 10719 vec_splats(short __a) 10720 { 10721 return (vector short)(__a); 10722 } 10723 10724 static vector unsigned short __ATTRS_o_ai 10725 vec_splats(unsigned short __a) 10726 { 10727 return (vector unsigned short)(__a); 10728 } 10729 10730 static vector int __ATTRS_o_ai 10731 vec_splats(int __a) 10732 { 10733 return (vector int)(__a); 10734 } 10735 10736 static vector unsigned int __ATTRS_o_ai 10737 vec_splats(unsigned int __a) 10738 { 10739 return (vector unsigned int)(__a); 10740 } 10741 10742 static vector float __ATTRS_o_ai 10743 vec_splats(float __a) 10744 { 10745 return (vector float)(__a); 10746 } 10747 10748 /* ----------------------------- predicates --------------------------------- */ 10749 10750 /* vec_all_eq */ 10751 10752 static int __ATTRS_o_ai 10753 vec_all_eq(vector signed char __a, vector signed char __b) 10754 { 10755 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10756 } 10757 10758 static int __ATTRS_o_ai 10759 vec_all_eq(vector signed char __a, vector bool char __b) 10760 { 10761 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10762 } 10763 10764 static int __ATTRS_o_ai 10765 vec_all_eq(vector unsigned char __a, vector unsigned char __b) 10766 { 10767 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10768 } 10769 10770 static int __ATTRS_o_ai 10771 vec_all_eq(vector unsigned char __a, vector bool char __b) 10772 { 10773 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10774 } 10775 10776 static int __ATTRS_o_ai 10777 vec_all_eq(vector bool char __a, vector signed char __b) 10778 { 10779 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10780 } 10781 10782 static int __ATTRS_o_ai 10783 vec_all_eq(vector bool char __a, vector unsigned char __b) 10784 { 10785 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10786 } 10787 10788 static int __ATTRS_o_ai 10789 vec_all_eq(vector bool char __a, vector bool char __b) 10790 { 10791 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b); 10792 } 10793 10794 static int __ATTRS_o_ai 10795 vec_all_eq(vector short __a, vector short __b) 10796 { 10797 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b); 10798 } 10799 10800 static int __ATTRS_o_ai 10801 vec_all_eq(vector short __a, vector bool short __b) 10802 { 10803 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b); 10804 } 10805 10806 static int __ATTRS_o_ai 10807 vec_all_eq(vector unsigned short __a, vector unsigned short __b) 10808 { 10809 return 10810 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); 10811 } 10812 10813 static int __ATTRS_o_ai 10814 vec_all_eq(vector unsigned short __a, vector bool short __b) 10815 { 10816 return 10817 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); 10818 } 10819 10820 static int __ATTRS_o_ai 10821 vec_all_eq(vector bool short __a, vector short __b) 10822 { 10823 return 10824 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); 10825 } 10826 10827 static int __ATTRS_o_ai 10828 vec_all_eq(vector bool short __a, vector unsigned short __b) 10829 { 10830 return 10831 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); 10832 } 10833 10834 static int __ATTRS_o_ai 10835 vec_all_eq(vector bool short __a, vector bool short __b) 10836 { 10837 return 10838 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); 10839 } 10840 10841 static int __ATTRS_o_ai 10842 vec_all_eq(vector pixel __a, vector pixel __b) 10843 { 10844 return 10845 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b); 10846 } 10847 10848 static int __ATTRS_o_ai 10849 vec_all_eq(vector int __a, vector int __b) 10850 { 10851 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b); 10852 } 10853 10854 static int __ATTRS_o_ai 10855 vec_all_eq(vector int __a, vector bool int __b) 10856 { 10857 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b); 10858 } 10859 10860 static int __ATTRS_o_ai 10861 vec_all_eq(vector unsigned int __a, vector unsigned int __b) 10862 { 10863 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); 10864 } 10865 10866 static int __ATTRS_o_ai 10867 vec_all_eq(vector unsigned int __a, vector bool int __b) 10868 { 10869 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); 10870 } 10871 10872 static int __ATTRS_o_ai 10873 vec_all_eq(vector bool int __a, vector int __b) 10874 { 10875 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); 10876 } 10877 10878 static int __ATTRS_o_ai 10879 vec_all_eq(vector bool int __a, vector unsigned int __b) 10880 { 10881 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); 10882 } 10883 10884 static int __ATTRS_o_ai 10885 vec_all_eq(vector bool int __a, vector bool int __b) 10886 { 10887 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b); 10888 } 10889 10890 static int __ATTRS_o_ai 10891 vec_all_eq(vector float __a, vector float __b) 10892 { 10893 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b); 10894 } 10895 10896 /* vec_all_ge */ 10897 10898 static int __ATTRS_o_ai 10899 vec_all_ge(vector signed char __a, vector signed char __b) 10900 { 10901 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a); 10902 } 10903 10904 static int __ATTRS_o_ai 10905 vec_all_ge(vector signed char __a, vector bool char __b) 10906 { 10907 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a); 10908 } 10909 10910 static int __ATTRS_o_ai 10911 vec_all_ge(vector unsigned char __a, vector unsigned char __b) 10912 { 10913 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a); 10914 } 10915 10916 static int __ATTRS_o_ai 10917 vec_all_ge(vector unsigned char __a, vector bool char __b) 10918 { 10919 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a); 10920 } 10921 10922 static int __ATTRS_o_ai 10923 vec_all_ge(vector bool char __a, vector signed char __b) 10924 { 10925 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 10926 (vector unsigned char)__b, 10927 (vector unsigned char)__a); 10928 } 10929 10930 static int __ATTRS_o_ai 10931 vec_all_ge(vector bool char __a, vector unsigned char __b) 10932 { 10933 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a); 10934 } 10935 10936 static int __ATTRS_o_ai 10937 vec_all_ge(vector bool char __a, vector bool char __b) 10938 { 10939 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 10940 (vector unsigned char)__b, 10941 (vector unsigned char)__a); 10942 } 10943 10944 static int __ATTRS_o_ai 10945 vec_all_ge(vector short __a, vector short __b) 10946 { 10947 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a); 10948 } 10949 10950 static int __ATTRS_o_ai 10951 vec_all_ge(vector short __a, vector bool short __b) 10952 { 10953 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a); 10954 } 10955 10956 static int __ATTRS_o_ai 10957 vec_all_ge(vector unsigned short __a, vector unsigned short __b) 10958 { 10959 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a); 10960 } 10961 10962 static int __ATTRS_o_ai 10963 vec_all_ge(vector unsigned short __a, vector bool short __b) 10964 { 10965 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b, __a); 10966 } 10967 10968 static int __ATTRS_o_ai 10969 vec_all_ge(vector bool short __a, vector short __b) 10970 { 10971 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 10972 (vector unsigned short)__b, 10973 (vector unsigned short)__a); 10974 } 10975 10976 static int __ATTRS_o_ai 10977 vec_all_ge(vector bool short __a, vector unsigned short __b) 10978 { 10979 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, (vector unsigned short)__a); 10980 } 10981 10982 static int __ATTRS_o_ai 10983 vec_all_ge(vector bool short __a, vector bool short __b) 10984 { 10985 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 10986 (vector unsigned short)__b, 10987 (vector unsigned short)__a); 10988 } 10989 10990 static int __ATTRS_o_ai 10991 vec_all_ge(vector int __a, vector int __b) 10992 { 10993 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a); 10994 } 10995 10996 static int __ATTRS_o_ai 10997 vec_all_ge(vector int __a, vector bool int __b) 10998 { 10999 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a); 11000 } 11001 11002 static int __ATTRS_o_ai 11003 vec_all_ge(vector unsigned int __a, vector unsigned int __b) 11004 { 11005 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a); 11006 } 11007 11008 static int __ATTRS_o_ai 11009 vec_all_ge(vector unsigned int __a, vector bool int __b) 11010 { 11011 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a); 11012 } 11013 11014 static int __ATTRS_o_ai 11015 vec_all_ge(vector bool int __a, vector int __b) 11016 { 11017 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 11018 (vector unsigned int)__b, 11019 (vector unsigned int)__a); 11020 } 11021 11022 static int __ATTRS_o_ai 11023 vec_all_ge(vector bool int __a, vector unsigned int __b) 11024 { 11025 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a); 11026 } 11027 11028 static int __ATTRS_o_ai 11029 vec_all_ge(vector bool int __a, vector bool int __b) 11030 { 11031 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 11032 (vector unsigned int)__b, 11033 (vector unsigned int)__a); 11034 } 11035 11036 static int __ATTRS_o_ai 11037 vec_all_ge(vector float __a, vector float __b) 11038 { 11039 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b); 11040 } 11041 11042 /* vec_all_gt */ 11043 11044 static int __ATTRS_o_ai 11045 vec_all_gt(vector signed char __a, vector signed char __b) 11046 { 11047 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b); 11048 } 11049 11050 static int __ATTRS_o_ai 11051 vec_all_gt(vector signed char __a, vector bool char __b) 11052 { 11053 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b); 11054 } 11055 11056 static int __ATTRS_o_ai 11057 vec_all_gt(vector unsigned char __a, vector unsigned char __b) 11058 { 11059 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b); 11060 } 11061 11062 static int __ATTRS_o_ai 11063 vec_all_gt(vector unsigned char __a, vector bool char __b) 11064 { 11065 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b); 11066 } 11067 11068 static int __ATTRS_o_ai 11069 vec_all_gt(vector bool char __a, vector signed char __b) 11070 { 11071 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 11072 (vector unsigned char)__a, 11073 (vector unsigned char)__b); 11074 } 11075 11076 static int __ATTRS_o_ai 11077 vec_all_gt(vector bool char __a, vector unsigned char __b) 11078 { 11079 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b); 11080 } 11081 11082 static int __ATTRS_o_ai 11083 vec_all_gt(vector bool char __a, vector bool char __b) 11084 { 11085 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 11086 (vector unsigned char)__a, 11087 (vector unsigned char)__b); 11088 } 11089 11090 static int __ATTRS_o_ai 11091 vec_all_gt(vector short __a, vector short __b) 11092 { 11093 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b); 11094 } 11095 11096 static int __ATTRS_o_ai 11097 vec_all_gt(vector short __a, vector bool short __b) 11098 { 11099 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b); 11100 } 11101 11102 static int __ATTRS_o_ai 11103 vec_all_gt(vector unsigned short __a, vector unsigned short __b) 11104 { 11105 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b); 11106 } 11107 11108 static int __ATTRS_o_ai 11109 vec_all_gt(vector unsigned short __a, vector bool short __b) 11110 { 11111 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, (vector unsigned short)__b); 11112 } 11113 11114 static int __ATTRS_o_ai 11115 vec_all_gt(vector bool short __a, vector short __b) 11116 { 11117 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 11118 (vector unsigned short)__a, 11119 (vector unsigned short)__b); 11120 } 11121 11122 static int __ATTRS_o_ai 11123 vec_all_gt(vector bool short __a, vector unsigned short __b) 11124 { 11125 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a, __b); 11126 } 11127 11128 static int __ATTRS_o_ai 11129 vec_all_gt(vector bool short __a, vector bool short __b) 11130 { 11131 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 11132 (vector unsigned short)__a, 11133 (vector unsigned short)__b); 11134 } 11135 11136 static int __ATTRS_o_ai 11137 vec_all_gt(vector int __a, vector int __b) 11138 { 11139 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b); 11140 } 11141 11142 static int __ATTRS_o_ai 11143 vec_all_gt(vector int __a, vector bool int __b) 11144 { 11145 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b); 11146 } 11147 11148 static int __ATTRS_o_ai 11149 vec_all_gt(vector unsigned int __a, vector unsigned int __b) 11150 { 11151 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b); 11152 } 11153 11154 static int __ATTRS_o_ai 11155 vec_all_gt(vector unsigned int __a, vector bool int __b) 11156 { 11157 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b); 11158 } 11159 11160 static int __ATTRS_o_ai 11161 vec_all_gt(vector bool int __a, vector int __b) 11162 { 11163 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 11164 (vector unsigned int)__a, 11165 (vector unsigned int)__b); 11166 } 11167 11168 static int __ATTRS_o_ai 11169 vec_all_gt(vector bool int __a, vector unsigned int __b) 11170 { 11171 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b); 11172 } 11173 11174 static int __ATTRS_o_ai 11175 vec_all_gt(vector bool int __a, vector bool int __b) 11176 { 11177 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 11178 (vector unsigned int)__a, 11179 (vector unsigned int)__b); 11180 } 11181 11182 static int __ATTRS_o_ai 11183 vec_all_gt(vector float __a, vector float __b) 11184 { 11185 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b); 11186 } 11187 11188 /* vec_all_in */ 11189 11190 static int __attribute__((__always_inline__)) 11191 vec_all_in(vector float __a, vector float __b) 11192 { 11193 return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b); 11194 } 11195 11196 /* vec_all_le */ 11197 11198 static int __ATTRS_o_ai 11199 vec_all_le(vector signed char __a, vector signed char __b) 11200 { 11201 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b); 11202 } 11203 11204 static int __ATTRS_o_ai 11205 vec_all_le(vector signed char __a, vector bool char __b) 11206 { 11207 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b); 11208 } 11209 11210 static int __ATTRS_o_ai 11211 vec_all_le(vector unsigned char __a, vector unsigned char __b) 11212 { 11213 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b); 11214 } 11215 11216 static int __ATTRS_o_ai 11217 vec_all_le(vector unsigned char __a, vector bool char __b) 11218 { 11219 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b); 11220 } 11221 11222 static int __ATTRS_o_ai 11223 vec_all_le(vector bool char __a, vector signed char __b) 11224 { 11225 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 11226 (vector unsigned char)__a, 11227 (vector unsigned char)__b); 11228 } 11229 11230 static int __ATTRS_o_ai 11231 vec_all_le(vector bool char __a, vector unsigned char __b) 11232 { 11233 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b); 11234 } 11235 11236 static int __ATTRS_o_ai 11237 vec_all_le(vector bool char __a, vector bool char __b) 11238 { 11239 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 11240 (vector unsigned char)__a, 11241 (vector unsigned char)__b); 11242 } 11243 11244 static int __ATTRS_o_ai 11245 vec_all_le(vector short __a, vector short __b) 11246 { 11247 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b); 11248 } 11249 11250 static int __ATTRS_o_ai 11251 vec_all_le(vector short __a, vector bool short __b) 11252 { 11253 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b); 11254 } 11255 11256 static int __ATTRS_o_ai 11257 vec_all_le(vector unsigned short __a, vector unsigned short __b) 11258 { 11259 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b); 11260 } 11261 11262 static int __ATTRS_o_ai 11263 vec_all_le(vector unsigned short __a, vector bool short __b) 11264 { 11265 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, (vector unsigned short)__b); 11266 } 11267 11268 static int __ATTRS_o_ai 11269 vec_all_le(vector bool short __a, vector short __b) 11270 { 11271 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 11272 (vector unsigned short)__a, 11273 (vector unsigned short)__b); 11274 } 11275 11276 static int __ATTRS_o_ai 11277 vec_all_le(vector bool short __a, vector unsigned short __b) 11278 { 11279 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a, __b); 11280 } 11281 11282 static int __ATTRS_o_ai 11283 vec_all_le(vector bool short __a, vector bool short __b) 11284 { 11285 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 11286 (vector unsigned short)__a, 11287 (vector unsigned short)__b); 11288 } 11289 11290 static int __ATTRS_o_ai 11291 vec_all_le(vector int __a, vector int __b) 11292 { 11293 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b); 11294 } 11295 11296 static int __ATTRS_o_ai 11297 vec_all_le(vector int __a, vector bool int __b) 11298 { 11299 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b); 11300 } 11301 11302 static int __ATTRS_o_ai 11303 vec_all_le(vector unsigned int __a, vector unsigned int __b) 11304 { 11305 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b); 11306 } 11307 11308 static int __ATTRS_o_ai 11309 vec_all_le(vector unsigned int __a, vector bool int __b) 11310 { 11311 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b); 11312 } 11313 11314 static int __ATTRS_o_ai 11315 vec_all_le(vector bool int __a, vector int __b) 11316 { 11317 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 11318 (vector unsigned int)__a, 11319 (vector unsigned int)__b); 11320 } 11321 11322 static int __ATTRS_o_ai 11323 vec_all_le(vector bool int __a, vector unsigned int __b) 11324 { 11325 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b); 11326 } 11327 11328 static int __ATTRS_o_ai 11329 vec_all_le(vector bool int __a, vector bool int __b) 11330 { 11331 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 11332 (vector unsigned int)__a, 11333 (vector unsigned int)__b); 11334 } 11335 11336 static int __ATTRS_o_ai 11337 vec_all_le(vector float __a, vector float __b) 11338 { 11339 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a); 11340 } 11341 11342 /* vec_all_lt */ 11343 11344 static int __ATTRS_o_ai 11345 vec_all_lt(vector signed char __a, vector signed char __b) 11346 { 11347 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a); 11348 } 11349 11350 static int __ATTRS_o_ai 11351 vec_all_lt(vector signed char __a, vector bool char __b) 11352 { 11353 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a); 11354 } 11355 11356 static int __ATTRS_o_ai 11357 vec_all_lt(vector unsigned char __a, vector unsigned char __b) 11358 { 11359 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a); 11360 } 11361 11362 static int __ATTRS_o_ai 11363 vec_all_lt(vector unsigned char __a, vector bool char __b) 11364 { 11365 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a); 11366 } 11367 11368 static int __ATTRS_o_ai 11369 vec_all_lt(vector bool char __a, vector signed char __b) 11370 { 11371 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 11372 (vector unsigned char)__b, 11373 (vector unsigned char)__a); 11374 } 11375 11376 static int __ATTRS_o_ai 11377 vec_all_lt(vector bool char __a, vector unsigned char __b) 11378 { 11379 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a); 11380 } 11381 11382 static int __ATTRS_o_ai 11383 vec_all_lt(vector bool char __a, vector bool char __b) 11384 { 11385 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 11386 (vector unsigned char)__b, 11387 (vector unsigned char)__a); 11388 } 11389 11390 static int __ATTRS_o_ai 11391 vec_all_lt(vector short __a, vector short __b) 11392 { 11393 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a); 11394 } 11395 11396 static int __ATTRS_o_ai 11397 vec_all_lt(vector short __a, vector bool short __b) 11398 { 11399 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a); 11400 } 11401 11402 static int __ATTRS_o_ai 11403 vec_all_lt(vector unsigned short __a, vector unsigned short __b) 11404 { 11405 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a); 11406 } 11407 11408 static int __ATTRS_o_ai 11409 vec_all_lt(vector unsigned short __a, vector bool short __b) 11410 { 11411 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b, __a); 11412 } 11413 11414 static int __ATTRS_o_ai 11415 vec_all_lt(vector bool short __a, vector short __b) 11416 { 11417 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 11418 (vector unsigned short)__b, 11419 (vector unsigned short)__a); 11420 } 11421 11422 static int __ATTRS_o_ai 11423 vec_all_lt(vector bool short __a, vector unsigned short __b) 11424 { 11425 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, (vector unsigned short)__a); 11426 } 11427 11428 static int __ATTRS_o_ai 11429 vec_all_lt(vector bool short __a, vector bool short __b) 11430 { 11431 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 11432 (vector unsigned short)__b, 11433 (vector unsigned short)__a); 11434 } 11435 11436 static int __ATTRS_o_ai 11437 vec_all_lt(vector int __a, vector int __b) 11438 { 11439 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a); 11440 } 11441 11442 static int __ATTRS_o_ai 11443 vec_all_lt(vector int __a, vector bool int __b) 11444 { 11445 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a); 11446 } 11447 11448 static int __ATTRS_o_ai 11449 vec_all_lt(vector unsigned int __a, vector unsigned int __b) 11450 { 11451 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a); 11452 } 11453 11454 static int __ATTRS_o_ai 11455 vec_all_lt(vector unsigned int __a, vector bool int __b) 11456 { 11457 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a); 11458 } 11459 11460 static int __ATTRS_o_ai 11461 vec_all_lt(vector bool int __a, vector int __b) 11462 { 11463 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 11464 (vector unsigned int)__b, 11465 (vector unsigned int)__a); 11466 } 11467 11468 static int __ATTRS_o_ai 11469 vec_all_lt(vector bool int __a, vector unsigned int __b) 11470 { 11471 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a); 11472 } 11473 11474 static int __ATTRS_o_ai 11475 vec_all_lt(vector bool int __a, vector bool int __b) 11476 { 11477 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 11478 (vector unsigned int)__b, 11479 (vector unsigned int)__a); 11480 } 11481 11482 static int __ATTRS_o_ai 11483 vec_all_lt(vector float __a, vector float __b) 11484 { 11485 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a); 11486 } 11487 11488 /* vec_all_nan */ 11489 11490 static int __attribute__((__always_inline__)) 11491 vec_all_nan(vector float __a) 11492 { 11493 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a); 11494 } 11495 11496 /* vec_all_ne */ 11497 11498 static int __ATTRS_o_ai 11499 vec_all_ne(vector signed char __a, vector signed char __b) 11500 { 11501 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11502 } 11503 11504 static int __ATTRS_o_ai 11505 vec_all_ne(vector signed char __a, vector bool char __b) 11506 { 11507 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11508 } 11509 11510 static int __ATTRS_o_ai 11511 vec_all_ne(vector unsigned char __a, vector unsigned char __b) 11512 { 11513 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11514 } 11515 11516 static int __ATTRS_o_ai 11517 vec_all_ne(vector unsigned char __a, vector bool char __b) 11518 { 11519 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11520 } 11521 11522 static int __ATTRS_o_ai 11523 vec_all_ne(vector bool char __a, vector signed char __b) 11524 { 11525 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11526 } 11527 11528 static int __ATTRS_o_ai 11529 vec_all_ne(vector bool char __a, vector unsigned char __b) 11530 { 11531 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11532 } 11533 11534 static int __ATTRS_o_ai 11535 vec_all_ne(vector bool char __a, vector bool char __b) 11536 { 11537 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b); 11538 } 11539 11540 static int __ATTRS_o_ai 11541 vec_all_ne(vector short __a, vector short __b) 11542 { 11543 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b); 11544 } 11545 11546 static int __ATTRS_o_ai 11547 vec_all_ne(vector short __a, vector bool short __b) 11548 { 11549 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b); 11550 } 11551 11552 static int __ATTRS_o_ai 11553 vec_all_ne(vector unsigned short __a, vector unsigned short __b) 11554 { 11555 return 11556 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); 11557 } 11558 11559 static int __ATTRS_o_ai 11560 vec_all_ne(vector unsigned short __a, vector bool short __b) 11561 { 11562 return 11563 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); 11564 } 11565 11566 static int __ATTRS_o_ai 11567 vec_all_ne(vector bool short __a, vector short __b) 11568 { 11569 return 11570 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); 11571 } 11572 11573 static int __ATTRS_o_ai 11574 vec_all_ne(vector bool short __a, vector unsigned short __b) 11575 { 11576 return 11577 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); 11578 } 11579 11580 static int __ATTRS_o_ai 11581 vec_all_ne(vector bool short __a, vector bool short __b) 11582 { 11583 return 11584 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); 11585 } 11586 11587 static int __ATTRS_o_ai 11588 vec_all_ne(vector pixel __a, vector pixel __b) 11589 { 11590 return 11591 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b); 11592 } 11593 11594 static int __ATTRS_o_ai 11595 vec_all_ne(vector int __a, vector int __b) 11596 { 11597 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b); 11598 } 11599 11600 static int __ATTRS_o_ai 11601 vec_all_ne(vector int __a, vector bool int __b) 11602 { 11603 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b); 11604 } 11605 11606 static int __ATTRS_o_ai 11607 vec_all_ne(vector unsigned int __a, vector unsigned int __b) 11608 { 11609 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); 11610 } 11611 11612 static int __ATTRS_o_ai 11613 vec_all_ne(vector unsigned int __a, vector bool int __b) 11614 { 11615 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); 11616 } 11617 11618 static int __ATTRS_o_ai 11619 vec_all_ne(vector bool int __a, vector int __b) 11620 { 11621 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); 11622 } 11623 11624 static int __ATTRS_o_ai 11625 vec_all_ne(vector bool int __a, vector unsigned int __b) 11626 { 11627 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); 11628 } 11629 11630 static int __ATTRS_o_ai 11631 vec_all_ne(vector bool int __a, vector bool int __b) 11632 { 11633 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b); 11634 } 11635 11636 static int __ATTRS_o_ai 11637 vec_all_ne(vector float __a, vector float __b) 11638 { 11639 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b); 11640 } 11641 11642 /* vec_all_nge */ 11643 11644 static int __attribute__((__always_inline__)) 11645 vec_all_nge(vector float __a, vector float __b) 11646 { 11647 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b); 11648 } 11649 11650 /* vec_all_ngt */ 11651 11652 static int __attribute__((__always_inline__)) 11653 vec_all_ngt(vector float __a, vector float __b) 11654 { 11655 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b); 11656 } 11657 11658 /* vec_all_nle */ 11659 11660 static int __attribute__((__always_inline__)) 11661 vec_all_nle(vector float __a, vector float __b) 11662 { 11663 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a); 11664 } 11665 11666 /* vec_all_nlt */ 11667 11668 static int __attribute__((__always_inline__)) 11669 vec_all_nlt(vector float __a, vector float __b) 11670 { 11671 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a); 11672 } 11673 11674 /* vec_all_numeric */ 11675 11676 static int __attribute__((__always_inline__)) 11677 vec_all_numeric(vector float __a) 11678 { 11679 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a); 11680 } 11681 11682 /* vec_any_eq */ 11683 11684 static int __ATTRS_o_ai 11685 vec_any_eq(vector signed char __a, vector signed char __b) 11686 { 11687 return 11688 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11689 } 11690 11691 static int __ATTRS_o_ai 11692 vec_any_eq(vector signed char __a, vector bool char __b) 11693 { 11694 return 11695 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11696 } 11697 11698 static int __ATTRS_o_ai 11699 vec_any_eq(vector unsigned char __a, vector unsigned char __b) 11700 { 11701 return 11702 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11703 } 11704 11705 static int __ATTRS_o_ai 11706 vec_any_eq(vector unsigned char __a, vector bool char __b) 11707 { 11708 return 11709 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11710 } 11711 11712 static int __ATTRS_o_ai 11713 vec_any_eq(vector bool char __a, vector signed char __b) 11714 { 11715 return 11716 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11717 } 11718 11719 static int __ATTRS_o_ai 11720 vec_any_eq(vector bool char __a, vector unsigned char __b) 11721 { 11722 return 11723 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11724 } 11725 11726 static int __ATTRS_o_ai 11727 vec_any_eq(vector bool char __a, vector bool char __b) 11728 { 11729 return 11730 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b); 11731 } 11732 11733 static int __ATTRS_o_ai 11734 vec_any_eq(vector short __a, vector short __b) 11735 { 11736 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b); 11737 } 11738 11739 static int __ATTRS_o_ai 11740 vec_any_eq(vector short __a, vector bool short __b) 11741 { 11742 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b); 11743 } 11744 11745 static int __ATTRS_o_ai 11746 vec_any_eq(vector unsigned short __a, vector unsigned short __b) 11747 { 11748 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 11749 (vector short)__a, 11750 (vector short)__b); 11751 } 11752 11753 static int __ATTRS_o_ai 11754 vec_any_eq(vector unsigned short __a, vector bool short __b) 11755 { 11756 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 11757 (vector short)__a, 11758 (vector short)__b); 11759 } 11760 11761 static int __ATTRS_o_ai 11762 vec_any_eq(vector bool short __a, vector short __b) 11763 { 11764 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 11765 (vector short)__a, 11766 (vector short)__b); 11767 } 11768 11769 static int __ATTRS_o_ai 11770 vec_any_eq(vector bool short __a, vector unsigned short __b) 11771 { 11772 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 11773 (vector short)__a, 11774 (vector short)__b); 11775 } 11776 11777 static int __ATTRS_o_ai 11778 vec_any_eq(vector bool short __a, vector bool short __b) 11779 { 11780 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 11781 (vector short)__a, 11782 (vector short)__b); 11783 } 11784 11785 static int __ATTRS_o_ai 11786 vec_any_eq(vector pixel __a, vector pixel __b) 11787 { 11788 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 11789 (vector short)__a, 11790 (vector short)__b); 11791 } 11792 11793 static int __ATTRS_o_ai 11794 vec_any_eq(vector int __a, vector int __b) 11795 { 11796 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b); 11797 } 11798 11799 static int __ATTRS_o_ai 11800 vec_any_eq(vector int __a, vector bool int __b) 11801 { 11802 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b); 11803 } 11804 11805 static int __ATTRS_o_ai 11806 vec_any_eq(vector unsigned int __a, vector unsigned int __b) 11807 { 11808 return 11809 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); 11810 } 11811 11812 static int __ATTRS_o_ai 11813 vec_any_eq(vector unsigned int __a, vector bool int __b) 11814 { 11815 return 11816 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); 11817 } 11818 11819 static int __ATTRS_o_ai 11820 vec_any_eq(vector bool int __a, vector int __b) 11821 { 11822 return 11823 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); 11824 } 11825 11826 static int __ATTRS_o_ai 11827 vec_any_eq(vector bool int __a, vector unsigned int __b) 11828 { 11829 return 11830 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); 11831 } 11832 11833 static int __ATTRS_o_ai 11834 vec_any_eq(vector bool int __a, vector bool int __b) 11835 { 11836 return 11837 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b); 11838 } 11839 11840 static int __ATTRS_o_ai 11841 vec_any_eq(vector float __a, vector float __b) 11842 { 11843 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b); 11844 } 11845 11846 /* vec_any_ge */ 11847 11848 static int __ATTRS_o_ai 11849 vec_any_ge(vector signed char __a, vector signed char __b) 11850 { 11851 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a); 11852 } 11853 11854 static int __ATTRS_o_ai 11855 vec_any_ge(vector signed char __a, vector bool char __b) 11856 { 11857 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b, __a); 11858 } 11859 11860 static int __ATTRS_o_ai 11861 vec_any_ge(vector unsigned char __a, vector unsigned char __b) 11862 { 11863 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a); 11864 } 11865 11866 static int __ATTRS_o_ai 11867 vec_any_ge(vector unsigned char __a, vector bool char __b) 11868 { 11869 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b, __a); 11870 } 11871 11872 static int __ATTRS_o_ai 11873 vec_any_ge(vector bool char __a, vector signed char __b) 11874 { 11875 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 11876 (vector unsigned char)__b, 11877 (vector unsigned char)__a); 11878 } 11879 11880 static int __ATTRS_o_ai 11881 vec_any_ge(vector bool char __a, vector unsigned char __b) 11882 { 11883 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, (vector unsigned char)__a); 11884 } 11885 11886 static int __ATTRS_o_ai 11887 vec_any_ge(vector bool char __a, vector bool char __b) 11888 { 11889 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 11890 (vector unsigned char)__b, 11891 (vector unsigned char)__a); 11892 } 11893 11894 static int __ATTRS_o_ai 11895 vec_any_ge(vector short __a, vector short __b) 11896 { 11897 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a); 11898 } 11899 11900 static int __ATTRS_o_ai 11901 vec_any_ge(vector short __a, vector bool short __b) 11902 { 11903 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a); 11904 } 11905 11906 static int __ATTRS_o_ai 11907 vec_any_ge(vector unsigned short __a, vector unsigned short __b) 11908 { 11909 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a); 11910 } 11911 11912 static int __ATTRS_o_ai 11913 vec_any_ge(vector unsigned short __a, vector bool short __b) 11914 { 11915 return 11916 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b, __a); 11917 } 11918 11919 static int __ATTRS_o_ai 11920 vec_any_ge(vector bool short __a, vector short __b) 11921 { 11922 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 11923 (vector unsigned short)__b, 11924 (vector unsigned short)__a); 11925 } 11926 11927 static int __ATTRS_o_ai 11928 vec_any_ge(vector bool short __a, vector unsigned short __b) 11929 { 11930 return 11931 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, (vector unsigned short)__a); 11932 } 11933 11934 static int __ATTRS_o_ai 11935 vec_any_ge(vector bool short __a, vector bool short __b) 11936 { 11937 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 11938 (vector unsigned short)__b, 11939 (vector unsigned short)__a); 11940 } 11941 11942 static int __ATTRS_o_ai 11943 vec_any_ge(vector int __a, vector int __b) 11944 { 11945 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a); 11946 } 11947 11948 static int __ATTRS_o_ai 11949 vec_any_ge(vector int __a, vector bool int __b) 11950 { 11951 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a); 11952 } 11953 11954 static int __ATTRS_o_ai 11955 vec_any_ge(vector unsigned int __a, vector unsigned int __b) 11956 { 11957 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a); 11958 } 11959 11960 static int __ATTRS_o_ai 11961 vec_any_ge(vector unsigned int __a, vector bool int __b) 11962 { 11963 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b, __a); 11964 } 11965 11966 static int __ATTRS_o_ai 11967 vec_any_ge(vector bool int __a, vector int __b) 11968 { 11969 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 11970 (vector unsigned int)__b, 11971 (vector unsigned int)__a); 11972 } 11973 11974 static int __ATTRS_o_ai 11975 vec_any_ge(vector bool int __a, vector unsigned int __b) 11976 { 11977 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, (vector unsigned int)__a); 11978 } 11979 11980 static int __ATTRS_o_ai 11981 vec_any_ge(vector bool int __a, vector bool int __b) 11982 { 11983 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 11984 (vector unsigned int)__b, 11985 (vector unsigned int)__a); 11986 } 11987 11988 static int __ATTRS_o_ai 11989 vec_any_ge(vector float __a, vector float __b) 11990 { 11991 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b); 11992 } 11993 11994 /* vec_any_gt */ 11995 11996 static int __ATTRS_o_ai 11997 vec_any_gt(vector signed char __a, vector signed char __b) 11998 { 11999 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b); 12000 } 12001 12002 static int __ATTRS_o_ai 12003 vec_any_gt(vector signed char __a, vector bool char __b) 12004 { 12005 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, (vector signed char)__b); 12006 } 12007 12008 static int __ATTRS_o_ai 12009 vec_any_gt(vector unsigned char __a, vector unsigned char __b) 12010 { 12011 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b); 12012 } 12013 12014 static int __ATTRS_o_ai 12015 vec_any_gt(vector unsigned char __a, vector bool char __b) 12016 { 12017 return 12018 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, (vector unsigned char)__b); 12019 } 12020 12021 static int __ATTRS_o_ai 12022 vec_any_gt(vector bool char __a, vector signed char __b) 12023 { 12024 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 12025 (vector unsigned char)__a, 12026 (vector unsigned char)__b); 12027 } 12028 12029 static int __ATTRS_o_ai 12030 vec_any_gt(vector bool char __a, vector unsigned char __b) 12031 { 12032 return 12033 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a, __b); 12034 } 12035 12036 static int __ATTRS_o_ai 12037 vec_any_gt(vector bool char __a, vector bool char __b) 12038 { 12039 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 12040 (vector unsigned char)__a, 12041 (vector unsigned char)__b); 12042 } 12043 12044 static int __ATTRS_o_ai 12045 vec_any_gt(vector short __a, vector short __b) 12046 { 12047 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b); 12048 } 12049 12050 static int __ATTRS_o_ai 12051 vec_any_gt(vector short __a, vector bool short __b) 12052 { 12053 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b); 12054 } 12055 12056 static int __ATTRS_o_ai 12057 vec_any_gt(vector unsigned short __a, vector unsigned short __b) 12058 { 12059 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b); 12060 } 12061 12062 static int __ATTRS_o_ai 12063 vec_any_gt(vector unsigned short __a, vector bool short __b) 12064 { 12065 return 12066 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, (vector unsigned short)__b); 12067 } 12068 12069 static int __ATTRS_o_ai 12070 vec_any_gt(vector bool short __a, vector short __b) 12071 { 12072 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 12073 (vector unsigned short)__a, 12074 (vector unsigned short)__b); 12075 } 12076 12077 static int __ATTRS_o_ai 12078 vec_any_gt(vector bool short __a, vector unsigned short __b) 12079 { 12080 return 12081 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a, __b); 12082 } 12083 12084 static int __ATTRS_o_ai 12085 vec_any_gt(vector bool short __a, vector bool short __b) 12086 { 12087 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 12088 (vector unsigned short)__a, 12089 (vector unsigned short)__b); 12090 } 12091 12092 static int __ATTRS_o_ai 12093 vec_any_gt(vector int __a, vector int __b) 12094 { 12095 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b); 12096 } 12097 12098 static int __ATTRS_o_ai 12099 vec_any_gt(vector int __a, vector bool int __b) 12100 { 12101 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b); 12102 } 12103 12104 static int __ATTRS_o_ai 12105 vec_any_gt(vector unsigned int __a, vector unsigned int __b) 12106 { 12107 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b); 12108 } 12109 12110 static int __ATTRS_o_ai 12111 vec_any_gt(vector unsigned int __a, vector bool int __b) 12112 { 12113 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, (vector unsigned int)__b); 12114 } 12115 12116 static int __ATTRS_o_ai 12117 vec_any_gt(vector bool int __a, vector int __b) 12118 { 12119 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 12120 (vector unsigned int)__a, 12121 (vector unsigned int)__b); 12122 } 12123 12124 static int __ATTRS_o_ai 12125 vec_any_gt(vector bool int __a, vector unsigned int __b) 12126 { 12127 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a, __b); 12128 } 12129 12130 static int __ATTRS_o_ai 12131 vec_any_gt(vector bool int __a, vector bool int __b) 12132 { 12133 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 12134 (vector unsigned int)__a, 12135 (vector unsigned int)__b); 12136 } 12137 12138 static int __ATTRS_o_ai 12139 vec_any_gt(vector float __a, vector float __b) 12140 { 12141 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b); 12142 } 12143 12144 /* vec_any_le */ 12145 12146 static int __ATTRS_o_ai 12147 vec_any_le(vector signed char __a, vector signed char __b) 12148 { 12149 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b); 12150 } 12151 12152 static int __ATTRS_o_ai 12153 vec_any_le(vector signed char __a, vector bool char __b) 12154 { 12155 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, (vector signed char)__b); 12156 } 12157 12158 static int __ATTRS_o_ai 12159 vec_any_le(vector unsigned char __a, vector unsigned char __b) 12160 { 12161 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b); 12162 } 12163 12164 static int __ATTRS_o_ai 12165 vec_any_le(vector unsigned char __a, vector bool char __b) 12166 { 12167 return 12168 __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, (vector unsigned char)__b); 12169 } 12170 12171 static int __ATTRS_o_ai 12172 vec_any_le(vector bool char __a, vector signed char __b) 12173 { 12174 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 12175 (vector unsigned char)__a, 12176 (vector unsigned char)__b); 12177 } 12178 12179 static int __ATTRS_o_ai 12180 vec_any_le(vector bool char __a, vector unsigned char __b) 12181 { 12182 return 12183 __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a, __b); 12184 } 12185 12186 static int __ATTRS_o_ai 12187 vec_any_le(vector bool char __a, vector bool char __b) 12188 { 12189 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 12190 (vector unsigned char)__a, 12191 (vector unsigned char)__b); 12192 } 12193 12194 static int __ATTRS_o_ai 12195 vec_any_le(vector short __a, vector short __b) 12196 { 12197 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b); 12198 } 12199 12200 static int __ATTRS_o_ai 12201 vec_any_le(vector short __a, vector bool short __b) 12202 { 12203 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b); 12204 } 12205 12206 static int __ATTRS_o_ai 12207 vec_any_le(vector unsigned short __a, vector unsigned short __b) 12208 { 12209 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b); 12210 } 12211 12212 static int __ATTRS_o_ai 12213 vec_any_le(vector unsigned short __a, vector bool short __b) 12214 { 12215 return 12216 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, (vector unsigned short)__b); 12217 } 12218 12219 static int __ATTRS_o_ai 12220 vec_any_le(vector bool short __a, vector short __b) 12221 { 12222 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 12223 (vector unsigned short)__a, 12224 (vector unsigned short)__b); 12225 } 12226 12227 static int __ATTRS_o_ai 12228 vec_any_le(vector bool short __a, vector unsigned short __b) 12229 { 12230 return 12231 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a, __b); 12232 } 12233 12234 static int __ATTRS_o_ai 12235 vec_any_le(vector bool short __a, vector bool short __b) 12236 { 12237 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 12238 (vector unsigned short)__a, 12239 (vector unsigned short)__b); 12240 } 12241 12242 static int __ATTRS_o_ai 12243 vec_any_le(vector int __a, vector int __b) 12244 { 12245 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b); 12246 } 12247 12248 static int __ATTRS_o_ai 12249 vec_any_le(vector int __a, vector bool int __b) 12250 { 12251 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b); 12252 } 12253 12254 static int __ATTRS_o_ai 12255 vec_any_le(vector unsigned int __a, vector unsigned int __b) 12256 { 12257 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b); 12258 } 12259 12260 static int __ATTRS_o_ai 12261 vec_any_le(vector unsigned int __a, vector bool int __b) 12262 { 12263 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, (vector unsigned int)__b); 12264 } 12265 12266 static int __ATTRS_o_ai 12267 vec_any_le(vector bool int __a, vector int __b) 12268 { 12269 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 12270 (vector unsigned int)__a, 12271 (vector unsigned int)__b); 12272 } 12273 12274 static int __ATTRS_o_ai 12275 vec_any_le(vector bool int __a, vector unsigned int __b) 12276 { 12277 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a, __b); 12278 } 12279 12280 static int __ATTRS_o_ai 12281 vec_any_le(vector bool int __a, vector bool int __b) 12282 { 12283 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 12284 (vector unsigned int)__a, 12285 (vector unsigned int)__b); 12286 } 12287 12288 static int __ATTRS_o_ai 12289 vec_any_le(vector float __a, vector float __b) 12290 { 12291 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a); 12292 } 12293 12294 /* vec_any_lt */ 12295 12296 static int __ATTRS_o_ai 12297 vec_any_lt(vector signed char __a, vector signed char __b) 12298 { 12299 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a); 12300 } 12301 12302 static int __ATTRS_o_ai 12303 vec_any_lt(vector signed char __a, vector bool char __b) 12304 { 12305 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b, __a); 12306 } 12307 12308 static int __ATTRS_o_ai 12309 vec_any_lt(vector unsigned char __a, vector unsigned char __b) 12310 { 12311 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a); 12312 } 12313 12314 static int __ATTRS_o_ai 12315 vec_any_lt(vector unsigned char __a, vector bool char __b) 12316 { 12317 return 12318 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b, __a); 12319 } 12320 12321 static int __ATTRS_o_ai 12322 vec_any_lt(vector bool char __a, vector signed char __b) 12323 { 12324 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 12325 (vector unsigned char)__b, 12326 (vector unsigned char)__a); 12327 } 12328 12329 static int __ATTRS_o_ai 12330 vec_any_lt(vector bool char __a, vector unsigned char __b) 12331 { 12332 return 12333 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, (vector unsigned char)__a); 12334 } 12335 12336 static int __ATTRS_o_ai 12337 vec_any_lt(vector bool char __a, vector bool char __b) 12338 { 12339 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 12340 (vector unsigned char)__b, 12341 (vector unsigned char)__a); 12342 } 12343 12344 static int __ATTRS_o_ai 12345 vec_any_lt(vector short __a, vector short __b) 12346 { 12347 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a); 12348 } 12349 12350 static int __ATTRS_o_ai 12351 vec_any_lt(vector short __a, vector bool short __b) 12352 { 12353 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a); 12354 } 12355 12356 static int __ATTRS_o_ai 12357 vec_any_lt(vector unsigned short __a, vector unsigned short __b) 12358 { 12359 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a); 12360 } 12361 12362 static int __ATTRS_o_ai 12363 vec_any_lt(vector unsigned short __a, vector bool short __b) 12364 { 12365 return 12366 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b, __a); 12367 } 12368 12369 static int __ATTRS_o_ai 12370 vec_any_lt(vector bool short __a, vector short __b) 12371 { 12372 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 12373 (vector unsigned short)__b, 12374 (vector unsigned short)__a); 12375 } 12376 12377 static int __ATTRS_o_ai 12378 vec_any_lt(vector bool short __a, vector unsigned short __b) 12379 { 12380 return 12381 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, (vector unsigned short)__a); 12382 } 12383 12384 static int __ATTRS_o_ai 12385 vec_any_lt(vector bool short __a, vector bool short __b) 12386 { 12387 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 12388 (vector unsigned short)__b, 12389 (vector unsigned short)__a); 12390 } 12391 12392 static int __ATTRS_o_ai 12393 vec_any_lt(vector int __a, vector int __b) 12394 { 12395 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a); 12396 } 12397 12398 static int __ATTRS_o_ai 12399 vec_any_lt(vector int __a, vector bool int __b) 12400 { 12401 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a); 12402 } 12403 12404 static int __ATTRS_o_ai 12405 vec_any_lt(vector unsigned int __a, vector unsigned int __b) 12406 { 12407 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a); 12408 } 12409 12410 static int __ATTRS_o_ai 12411 vec_any_lt(vector unsigned int __a, vector bool int __b) 12412 { 12413 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b, __a); 12414 } 12415 12416 static int __ATTRS_o_ai 12417 vec_any_lt(vector bool int __a, vector int __b) 12418 { 12419 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 12420 (vector unsigned int)__b, 12421 (vector unsigned int)__a); 12422 } 12423 12424 static int __ATTRS_o_ai 12425 vec_any_lt(vector bool int __a, vector unsigned int __b) 12426 { 12427 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, (vector unsigned int)__a); 12428 } 12429 12430 static int __ATTRS_o_ai 12431 vec_any_lt(vector bool int __a, vector bool int __b) 12432 { 12433 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 12434 (vector unsigned int)__b, 12435 (vector unsigned int)__a); 12436 } 12437 12438 static int __ATTRS_o_ai 12439 vec_any_lt(vector float __a, vector float __b) 12440 { 12441 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a); 12442 } 12443 12444 /* vec_any_nan */ 12445 12446 static int __attribute__((__always_inline__)) 12447 vec_any_nan(vector float __a) 12448 { 12449 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a); 12450 } 12451 12452 /* vec_any_ne */ 12453 12454 static int __ATTRS_o_ai 12455 vec_any_ne(vector signed char __a, vector signed char __b) 12456 { 12457 return 12458 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12459 } 12460 12461 static int __ATTRS_o_ai 12462 vec_any_ne(vector signed char __a, vector bool char __b) 12463 { 12464 return 12465 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12466 } 12467 12468 static int __ATTRS_o_ai 12469 vec_any_ne(vector unsigned char __a, vector unsigned char __b) 12470 { 12471 return 12472 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12473 } 12474 12475 static int __ATTRS_o_ai 12476 vec_any_ne(vector unsigned char __a, vector bool char __b) 12477 { 12478 return 12479 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12480 } 12481 12482 static int __ATTRS_o_ai 12483 vec_any_ne(vector bool char __a, vector signed char __b) 12484 { 12485 return 12486 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12487 } 12488 12489 static int __ATTRS_o_ai 12490 vec_any_ne(vector bool char __a, vector unsigned char __b) 12491 { 12492 return 12493 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12494 } 12495 12496 static int __ATTRS_o_ai 12497 vec_any_ne(vector bool char __a, vector bool char __b) 12498 { 12499 return 12500 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b); 12501 } 12502 12503 static int __ATTRS_o_ai 12504 vec_any_ne(vector short __a, vector short __b) 12505 { 12506 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b); 12507 } 12508 12509 static int __ATTRS_o_ai 12510 vec_any_ne(vector short __a, vector bool short __b) 12511 { 12512 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b); 12513 } 12514 12515 static int __ATTRS_o_ai 12516 vec_any_ne(vector unsigned short __a, vector unsigned short __b) 12517 { 12518 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 12519 (vector short)__a, 12520 (vector short)__b); 12521 } 12522 12523 static int __ATTRS_o_ai 12524 vec_any_ne(vector unsigned short __a, vector bool short __b) 12525 { 12526 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 12527 (vector short)__a, 12528 (vector short)__b); 12529 } 12530 12531 static int __ATTRS_o_ai 12532 vec_any_ne(vector bool short __a, vector short __b) 12533 { 12534 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 12535 (vector short)__a, 12536 (vector short)__b); 12537 } 12538 12539 static int __ATTRS_o_ai 12540 vec_any_ne(vector bool short __a, vector unsigned short __b) 12541 { 12542 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 12543 (vector short)__a, 12544 (vector short)__b); 12545 } 12546 12547 static int __ATTRS_o_ai 12548 vec_any_ne(vector bool short __a, vector bool short __b) 12549 { 12550 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 12551 (vector short)__a, 12552 (vector short)__b); 12553 } 12554 12555 static int __ATTRS_o_ai 12556 vec_any_ne(vector pixel __a, vector pixel __b) 12557 { 12558 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 12559 (vector short)__a, 12560 (vector short)__b); 12561 } 12562 12563 static int __ATTRS_o_ai 12564 vec_any_ne(vector int __a, vector int __b) 12565 { 12566 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b); 12567 } 12568 12569 static int __ATTRS_o_ai 12570 vec_any_ne(vector int __a, vector bool int __b) 12571 { 12572 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b); 12573 } 12574 12575 static int __ATTRS_o_ai 12576 vec_any_ne(vector unsigned int __a, vector unsigned int __b) 12577 { 12578 return 12579 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); 12580 } 12581 12582 static int __ATTRS_o_ai 12583 vec_any_ne(vector unsigned int __a, vector bool int __b) 12584 { 12585 return 12586 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); 12587 } 12588 12589 static int __ATTRS_o_ai 12590 vec_any_ne(vector bool int __a, vector int __b) 12591 { 12592 return 12593 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); 12594 } 12595 12596 static int __ATTRS_o_ai 12597 vec_any_ne(vector bool int __a, vector unsigned int __b) 12598 { 12599 return 12600 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); 12601 } 12602 12603 static int __ATTRS_o_ai 12604 vec_any_ne(vector bool int __a, vector bool int __b) 12605 { 12606 return 12607 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b); 12608 } 12609 12610 static int __ATTRS_o_ai 12611 vec_any_ne(vector float __a, vector float __b) 12612 { 12613 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b); 12614 } 12615 12616 /* vec_any_nge */ 12617 12618 static int __attribute__((__always_inline__)) 12619 vec_any_nge(vector float __a, vector float __b) 12620 { 12621 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b); 12622 } 12623 12624 /* vec_any_ngt */ 12625 12626 static int __attribute__((__always_inline__)) 12627 vec_any_ngt(vector float __a, vector float __b) 12628 { 12629 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b); 12630 } 12631 12632 /* vec_any_nle */ 12633 12634 static int __attribute__((__always_inline__)) 12635 vec_any_nle(vector float __a, vector float __b) 12636 { 12637 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a); 12638 } 12639 12640 /* vec_any_nlt */ 12641 12642 static int __attribute__((__always_inline__)) 12643 vec_any_nlt(vector float __a, vector float __b) 12644 { 12645 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a); 12646 } 12647 12648 /* vec_any_numeric */ 12649 12650 static int __attribute__((__always_inline__)) 12651 vec_any_numeric(vector float __a) 12652 { 12653 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a); 12654 } 12655 12656 /* vec_any_out */ 12657 12658 static int __attribute__((__always_inline__)) 12659 vec_any_out(vector float __a, vector float __b) 12660 { 12661 return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b); 12662 } 12663 12664 #undef __ATTRS_o_ai 12665 12666 #endif /* __ALTIVEC_H */