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