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