00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _SPE_H
00030 #define _SPE_H
00031
00032 #define __vector __attribute__((vector_size(8)))
00033
00034 typedef int int32_t;
00035 typedef unsigned uint32_t;
00036 typedef short int16_t;
00037 typedef unsigned short uint16_t;
00038 typedef long long int64_t;
00039 typedef unsigned long long uint64_t;
00040
00041 typedef short __vector __ev64_s16__;
00042 typedef unsigned short __vector __ev64_u16__;
00043 typedef int __vector __ev64_s32__;
00044 typedef unsigned __vector __ev64_u32__;
00045 typedef long long __vector __ev64_s64__;
00046 typedef unsigned long long __vector __ev64_u64__;
00047 typedef float __vector __ev64_fs__;
00048
00049 #define __v2si __ev64_opaque__
00050 #define __v2sf __ev64_fs__
00051
00052 #define __ev_addw __builtin_spe_evaddw
00053 #define __ev_addiw __builtin_spe_evaddiw
00054 #define __ev_subfw(a,b) __builtin_spe_evsubfw ((b), (a))
00055 #define __ev_subw __builtin_spe_evsubfw
00056 #define __ev_subifw(a,b) __builtin_spe_evsubifw ((b), (a))
00057 #define __ev_subiw __builtin_spe_evsubifw
00058 #define __ev_abs __builtin_spe_evabs
00059 #define __ev_neg __builtin_spe_evneg
00060 #define __ev_extsb __builtin_spe_evextsb
00061 #define __ev_extsh __builtin_spe_evextsh
00062 #define __ev_and __builtin_spe_evand
00063 #define __ev_or __builtin_spe_evor
00064 #define __ev_xor __builtin_spe_evxor
00065 #define __ev_nand __builtin_spe_evnand
00066 #define __ev_nor __builtin_spe_evnor
00067 #define __ev_eqv __builtin_spe_eveqv
00068 #define __ev_andc __builtin_spe_evandc
00069 #define __ev_orc __builtin_spe_evorc
00070 #define __ev_rlw __builtin_spe_evrlw
00071 #define __ev_rlwi __builtin_spe_evrlwi
00072 #define __ev_slw __builtin_spe_evslw
00073 #define __ev_slwi __builtin_spe_evslwi
00074 #define __ev_srws __builtin_spe_evsrws
00075 #define __ev_srwu __builtin_spe_evsrwu
00076 #define __ev_srwis __builtin_spe_evsrwis
00077 #define __ev_srwiu __builtin_spe_evsrwiu
00078 #define __ev_cntlzw __builtin_spe_evcntlzw
00079 #define __ev_cntlsw __builtin_spe_evcntlsw
00080 #define __ev_rndw __builtin_spe_evrndw
00081 #define __ev_mergehi __builtin_spe_evmergehi
00082 #define __ev_mergelo __builtin_spe_evmergelo
00083 #define __ev_mergelohi __builtin_spe_evmergelohi
00084 #define __ev_mergehilo __builtin_spe_evmergehilo
00085 #define __ev_splati __builtin_spe_evsplati
00086 #define __ev_splatfi __builtin_spe_evsplatfi
00087 #define __ev_divws __builtin_spe_evdivws
00088 #define __ev_divwu __builtin_spe_evdivwu
00089 #define __ev_mra __builtin_spe_evmra
00090
00091 #define __brinc __builtin_spe_brinc
00092
00093
00094
00095 #define __ev_lddx __builtin_spe_evlddx
00096 #define __ev_ldwx __builtin_spe_evldwx
00097 #define __ev_ldhx __builtin_spe_evldhx
00098 #define __ev_lwhex __builtin_spe_evlwhex
00099 #define __ev_lwhoux __builtin_spe_evlwhoux
00100 #define __ev_lwhosx __builtin_spe_evlwhosx
00101 #define __ev_lwwsplatx __builtin_spe_evlwwsplatx
00102 #define __ev_lwhsplatx __builtin_spe_evlwhsplatx
00103 #define __ev_lhhesplatx __builtin_spe_evlhhesplatx
00104 #define __ev_lhhousplatx __builtin_spe_evlhhousplatx
00105 #define __ev_lhhossplatx __builtin_spe_evlhhossplatx
00106 #define __ev_ldd __builtin_spe_evldd
00107 #define __ev_ldw __builtin_spe_evldw
00108 #define __ev_ldh __builtin_spe_evldh
00109 #define __ev_lwhe __builtin_spe_evlwhe
00110 #define __ev_lwhou __builtin_spe_evlwhou
00111 #define __ev_lwhos __builtin_spe_evlwhos
00112 #define __ev_lwwsplat __builtin_spe_evlwwsplat
00113 #define __ev_lwhsplat __builtin_spe_evlwhsplat
00114 #define __ev_lhhesplat __builtin_spe_evlhhesplat
00115 #define __ev_lhhousplat __builtin_spe_evlhhousplat
00116 #define __ev_lhhossplat __builtin_spe_evlhhossplat
00117
00118
00119
00120 #define __ev_stddx __builtin_spe_evstddx
00121 #define __ev_stdwx __builtin_spe_evstdwx
00122 #define __ev_stdhx __builtin_spe_evstdhx
00123 #define __ev_stwwex __builtin_spe_evstwwex
00124 #define __ev_stwwox __builtin_spe_evstwwox
00125 #define __ev_stwhex __builtin_spe_evstwhex
00126 #define __ev_stwhox __builtin_spe_evstwhox
00127 #define __ev_stdd __builtin_spe_evstdd
00128 #define __ev_stdw __builtin_spe_evstdw
00129 #define __ev_stdh __builtin_spe_evstdh
00130 #define __ev_stwwe __builtin_spe_evstwwe
00131 #define __ev_stwwo __builtin_spe_evstwwo
00132 #define __ev_stwhe __builtin_spe_evstwhe
00133 #define __ev_stwho __builtin_spe_evstwho
00134
00135
00136
00137 #define __ev_mhossf __builtin_spe_evmhossf
00138 #define __ev_mhosmf __builtin_spe_evmhosmf
00139 #define __ev_mhosmi __builtin_spe_evmhosmi
00140 #define __ev_mhoumi __builtin_spe_evmhoumi
00141 #define __ev_mhessf __builtin_spe_evmhessf
00142 #define __ev_mhesmf __builtin_spe_evmhesmf
00143 #define __ev_mhesmi __builtin_spe_evmhesmi
00144 #define __ev_mheumi __builtin_spe_evmheumi
00145 #define __ev_mhossfa __builtin_spe_evmhossfa
00146 #define __ev_mhosmfa __builtin_spe_evmhosmfa
00147 #define __ev_mhosmia __builtin_spe_evmhosmia
00148 #define __ev_mhoumia __builtin_spe_evmhoumia
00149 #define __ev_mhessfa __builtin_spe_evmhessfa
00150 #define __ev_mhesmfa __builtin_spe_evmhesmfa
00151 #define __ev_mhesmia __builtin_spe_evmhesmia
00152 #define __ev_mheumia __builtin_spe_evmheumia
00153
00154 #define __ev_mhoumf __ev_mhoumi
00155 #define __ev_mheumf __ev_mheumi
00156 #define __ev_mhoumfa __ev_mhoumia
00157 #define __ev_mheumfa __ev_mheumia
00158
00159 #define __ev_mhossfaaw __builtin_spe_evmhossfaaw
00160 #define __ev_mhossiaaw __builtin_spe_evmhossiaaw
00161 #define __ev_mhosmfaaw __builtin_spe_evmhosmfaaw
00162 #define __ev_mhosmiaaw __builtin_spe_evmhosmiaaw
00163 #define __ev_mhousiaaw __builtin_spe_evmhousiaaw
00164 #define __ev_mhoumiaaw __builtin_spe_evmhoumiaaw
00165 #define __ev_mhessfaaw __builtin_spe_evmhessfaaw
00166 #define __ev_mhessiaaw __builtin_spe_evmhessiaaw
00167 #define __ev_mhesmfaaw __builtin_spe_evmhesmfaaw
00168 #define __ev_mhesmiaaw __builtin_spe_evmhesmiaaw
00169 #define __ev_mheusiaaw __builtin_spe_evmheusiaaw
00170 #define __ev_mheumiaaw __builtin_spe_evmheumiaaw
00171
00172 #define __ev_mhousfaaw __ev_mhousiaaw
00173 #define __ev_mhoumfaaw __ev_mhoumiaaw
00174 #define __ev_mheusfaaw __ev_mheusiaaw
00175 #define __ev_mheumfaaw __ev_mheumiaaw
00176
00177 #define __ev_mhossfanw __builtin_spe_evmhossfanw
00178 #define __ev_mhossianw __builtin_spe_evmhossianw
00179 #define __ev_mhosmfanw __builtin_spe_evmhosmfanw
00180 #define __ev_mhosmianw __builtin_spe_evmhosmianw
00181 #define __ev_mhousianw __builtin_spe_evmhousianw
00182 #define __ev_mhoumianw __builtin_spe_evmhoumianw
00183 #define __ev_mhessfanw __builtin_spe_evmhessfanw
00184 #define __ev_mhessianw __builtin_spe_evmhessianw
00185 #define __ev_mhesmfanw __builtin_spe_evmhesmfanw
00186 #define __ev_mhesmianw __builtin_spe_evmhesmianw
00187 #define __ev_mheusianw __builtin_spe_evmheusianw
00188 #define __ev_mheumianw __builtin_spe_evmheumianw
00189
00190 #define __ev_mhousfanw __ev_mhousianw
00191 #define __ev_mhoumfanw __ev_mhoumianw
00192 #define __ev_mheusfanw __ev_mheusianw
00193 #define __ev_mheumfanw __ev_mheumianw
00194
00195 #define __ev_mhogsmfaa __builtin_spe_evmhogsmfaa
00196 #define __ev_mhogsmiaa __builtin_spe_evmhogsmiaa
00197 #define __ev_mhogumiaa __builtin_spe_evmhogumiaa
00198 #define __ev_mhegsmfaa __builtin_spe_evmhegsmfaa
00199 #define __ev_mhegsmiaa __builtin_spe_evmhegsmiaa
00200 #define __ev_mhegumiaa __builtin_spe_evmhegumiaa
00201
00202 #define __ev_mhogumfaa __ev_mhogumiaa
00203 #define __ev_mhegumfaa __ev_mhegumiaa
00204
00205 #define __ev_mhogsmfan __builtin_spe_evmhogsmfan
00206 #define __ev_mhogsmian __builtin_spe_evmhogsmian
00207 #define __ev_mhogumian __builtin_spe_evmhogumian
00208 #define __ev_mhegsmfan __builtin_spe_evmhegsmfan
00209 #define __ev_mhegsmian __builtin_spe_evmhegsmian
00210 #define __ev_mhegumian __builtin_spe_evmhegumian
00211
00212 #define __ev_mhogumfan __ev_mhogumian
00213 #define __ev_mhegumfan __ev_mhegumian
00214
00215 #define __ev_mwhssf __builtin_spe_evmwhssf
00216 #define __ev_mwhsmf __builtin_spe_evmwhsmf
00217 #define __ev_mwhsmi __builtin_spe_evmwhsmi
00218 #define __ev_mwhumi __builtin_spe_evmwhumi
00219 #define __ev_mwhssfa __builtin_spe_evmwhssfa
00220 #define __ev_mwhsmfa __builtin_spe_evmwhsmfa
00221 #define __ev_mwhsmia __builtin_spe_evmwhsmia
00222 #define __ev_mwhumia __builtin_spe_evmwhumia
00223
00224 #define __ev_mwhumf __ev_mwhumi
00225 #define __ev_mwhumfa __ev_mwhumia
00226
00227 #define __ev_mwlumi __builtin_spe_evmwlumi
00228 #define __ev_mwlumia __builtin_spe_evmwlumia
00229 #define __ev_mwlumiaaw __builtin_spe_evmwlumiaaw
00230
00231 #define __ev_mwlssiaaw __builtin_spe_evmwlssiaaw
00232 #define __ev_mwlsmiaaw __builtin_spe_evmwlsmiaaw
00233 #define __ev_mwlusiaaw __builtin_spe_evmwlusiaaw
00234 #define __ev_mwlusiaaw __builtin_spe_evmwlusiaaw
00235
00236 #define __ev_mwlssianw __builtin_spe_evmwlssianw
00237 #define __ev_mwlsmianw __builtin_spe_evmwlsmianw
00238 #define __ev_mwlusianw __builtin_spe_evmwlusianw
00239 #define __ev_mwlumianw __builtin_spe_evmwlumianw
00240
00241 #define __ev_mwssf __builtin_spe_evmwssf
00242 #define __ev_mwsmf __builtin_spe_evmwsmf
00243 #define __ev_mwsmi __builtin_spe_evmwsmi
00244 #define __ev_mwumi __builtin_spe_evmwumi
00245 #define __ev_mwssfa __builtin_spe_evmwssfa
00246 #define __ev_mwsmfa __builtin_spe_evmwsmfa
00247 #define __ev_mwsmia __builtin_spe_evmwsmia
00248 #define __ev_mwumia __builtin_spe_evmwumia
00249
00250 #define __ev_mwumf __ev_mwumi
00251 #define __ev_mwumfa __ev_mwumia
00252
00253 #define __ev_mwssfaa __builtin_spe_evmwssfaa
00254 #define __ev_mwsmfaa __builtin_spe_evmwsmfaa
00255 #define __ev_mwsmiaa __builtin_spe_evmwsmiaa
00256 #define __ev_mwumiaa __builtin_spe_evmwumiaa
00257
00258 #define __ev_mwumfaa __ev_mwumiaa
00259
00260 #define __ev_mwssfan __builtin_spe_evmwssfan
00261 #define __ev_mwsmfan __builtin_spe_evmwsmfan
00262 #define __ev_mwsmian __builtin_spe_evmwsmian
00263 #define __ev_mwumian __builtin_spe_evmwumian
00264
00265 #define __ev_mwumfan __ev_mwumian
00266
00267 #define __ev_addssiaaw __builtin_spe_evaddssiaaw
00268 #define __ev_addsmiaaw __builtin_spe_evaddsmiaaw
00269 #define __ev_addusiaaw __builtin_spe_evaddusiaaw
00270 #define __ev_addumiaaw __builtin_spe_evaddumiaaw
00271
00272 #define __ev_addusfaaw __ev_addusiaaw
00273 #define __ev_addumfaaw __ev_addumiaaw
00274 #define __ev_addsmfaaw __ev_addsmiaaw
00275 #define __ev_addssfaaw __ev_addssiaaw
00276
00277 #define __ev_subfssiaaw __builtin_spe_evsubfssiaaw
00278 #define __ev_subfsmiaaw __builtin_spe_evsubfsmiaaw
00279 #define __ev_subfusiaaw __builtin_spe_evsubfusiaaw
00280 #define __ev_subfumiaaw __builtin_spe_evsubfumiaaw
00281
00282 #define __ev_subfusfaaw __ev_subfusiaaw
00283 #define __ev_subfumfaaw __ev_subfumiaaw
00284 #define __ev_subfsmfaaw __ev_subfsmiaaw
00285 #define __ev_subfssfaaw __ev_subfssiaaw
00286
00287
00288
00289 #define __ev_fsabs __builtin_spe_evfsabs
00290 #define __ev_fsnabs __builtin_spe_evfsnabs
00291 #define __ev_fsneg __builtin_spe_evfsneg
00292 #define __ev_fsadd __builtin_spe_evfsadd
00293 #define __ev_fssub __builtin_spe_evfssub
00294 #define __ev_fsmul __builtin_spe_evfsmul
00295 #define __ev_fsdiv __builtin_spe_evfsdiv
00296 #define __ev_fscfui __builtin_spe_evfscfui
00297 #define __ev_fscfsi __builtin_spe_evfscfsi
00298 #define __ev_fscfuf __builtin_spe_evfscfuf
00299 #define __ev_fscfsf __builtin_spe_evfscfsf
00300 #define __ev_fsctui __builtin_spe_evfsctui
00301 #define __ev_fsctsi __builtin_spe_evfsctsi
00302 #define __ev_fsctuf __builtin_spe_evfsctuf
00303 #define __ev_fsctsf __builtin_spe_evfsctsf
00304 #define __ev_fsctuiz __builtin_spe_evfsctuiz
00305 #define __ev_fsctsiz __builtin_spe_evfsctsiz
00306
00307
00308
00309 #define __ev_mwhusfaaw __ev_mwhusiaaw
00310 #define __ev_mwhumfaaw __ev_mwhumiaaw
00311 #define __ev_mwhusfanw __ev_mwhusianw
00312 #define __ev_mwhumfanw __ev_mwhumianw
00313 #define __ev_mwhgumfaa __ev_mwhgumiaa
00314 #define __ev_mwhgumfan __ev_mwhgumian
00315
00316 #define __ev_mwhgssfaa __internal_ev_mwhgssfaa
00317 #define __ev_mwhgsmfaa __internal_ev_mwhgsmfaa
00318 #define __ev_mwhgsmiaa __internal_ev_mwhgsmiaa
00319 #define __ev_mwhgumiaa __internal_ev_mwhgumiaa
00320 #define __ev_mwhgssfan __internal_ev_mwhgssfan
00321 #define __ev_mwhgsmfan __internal_ev_mwhgsmfan
00322 #define __ev_mwhgsmian __internal_ev_mwhgsmian
00323 #define __ev_mwhgumian __internal_ev_mwhgumian
00324 #define __ev_mwhssiaaw __internal_ev_mwhssiaaw
00325 #define __ev_mwhssfaaw __internal_ev_mwhssfaaw
00326 #define __ev_mwhsmfaaw __internal_ev_mwhsmfaaw
00327 #define __ev_mwhsmiaaw __internal_ev_mwhsmiaaw
00328 #define __ev_mwhusiaaw __internal_ev_mwhusiaaw
00329 #define __ev_mwhumiaaw __internal_ev_mwhumiaaw
00330 #define __ev_mwhssfanw __internal_ev_mwhssfanw
00331 #define __ev_mwhssianw __internal_ev_mwhssianw
00332 #define __ev_mwhsmfanw __internal_ev_mwhsmfanw
00333 #define __ev_mwhsmianw __internal_ev_mwhsmianw
00334 #define __ev_mwhusianw __internal_ev_mwhusianw
00335 #define __ev_mwhumianw __internal_ev_mwhumianw
00336
00337 static inline __ev64_opaque__
00338 __internal_ev_mwhssfaaw (__ev64_opaque__ a, __ev64_opaque__ b)
00339 {
00340 __ev64_opaque__ t;
00341
00342 t = __ev_mwhssf (a, b);
00343 return __ev_addssiaaw (t);
00344 }
00345
00346 static inline __ev64_opaque__
00347 __internal_ev_mwhssiaaw (__ev64_opaque__ a, __ev64_opaque__ b)
00348 {
00349 __ev64_opaque__ t;
00350
00351 t = __ev_mwhsmi (a, b);
00352 return __ev_addssiaaw (t);
00353 }
00354
00355 static inline __ev64_opaque__
00356 __internal_ev_mwhsmfaaw (__ev64_opaque__ a, __ev64_opaque__ b)
00357 {
00358 __ev64_opaque__ t;
00359
00360 t = __ev_mwhsmf (a, b);
00361 return __ev_addsmiaaw (t);
00362 }
00363
00364 static inline __ev64_opaque__
00365 __internal_ev_mwhsmiaaw (__ev64_opaque__ a, __ev64_opaque__ b)
00366 {
00367 __ev64_opaque__ t;
00368
00369 t = __ev_mwhsmi (a, b);
00370 return __ev_addsmiaaw (t);
00371 }
00372
00373 static inline __ev64_opaque__
00374 __internal_ev_mwhusiaaw (__ev64_opaque__ a, __ev64_opaque__ b)
00375 {
00376 __ev64_opaque__ t;
00377
00378 t = __ev_mwhumi (a, b);
00379 return __ev_addusiaaw (t);
00380 }
00381
00382 static inline __ev64_opaque__
00383 __internal_ev_mwhumiaaw (__ev64_opaque__ a, __ev64_opaque__ b)
00384 {
00385 __ev64_opaque__ t;
00386
00387 t = __ev_mwhumi (a, b);
00388 return __ev_addumiaaw (t);
00389 }
00390
00391 static inline __ev64_opaque__
00392 __internal_ev_mwhssfanw (__ev64_opaque__ a, __ev64_opaque__ b)
00393 {
00394 __ev64_opaque__ t;
00395
00396 t = __ev_mwhssf (a, b);
00397 return __ev_subfssiaaw (t);
00398 }
00399
00400 static inline __ev64_opaque__
00401 __internal_ev_mwhssianw (__ev64_opaque__ a, __ev64_opaque__ b)
00402 {
00403 __ev64_opaque__ t;
00404
00405 t = __ev_mwhsmi (a, b);
00406 return __ev_subfssiaaw (t);
00407 }
00408
00409 static inline __ev64_opaque__
00410 __internal_ev_mwhsmfanw (__ev64_opaque__ a, __ev64_opaque__ b)
00411 {
00412 __ev64_opaque__ t;
00413
00414 t = __ev_mwhsmf (a, b);
00415 return __ev_subfsmiaaw (t);
00416 }
00417
00418 static inline __ev64_opaque__
00419 __internal_ev_mwhsmianw (__ev64_opaque__ a, __ev64_opaque__ b)
00420 {
00421 __ev64_opaque__ t;
00422
00423 t = __ev_mwhsmi (a, b);
00424 return __ev_subfsmiaaw (t);
00425 }
00426
00427 static inline __ev64_opaque__
00428 __internal_ev_mwhusianw (__ev64_opaque__ a, __ev64_opaque__ b)
00429 {
00430 __ev64_opaque__ t;
00431
00432 t = __ev_mwhumi (a, b);
00433 return __ev_subfusiaaw (t);
00434 }
00435
00436 static inline __ev64_opaque__
00437 __internal_ev_mwhumianw (__ev64_opaque__ a, __ev64_opaque__ b)
00438 {
00439 __ev64_opaque__ t;
00440
00441 t = __ev_mwhumi (a, b);
00442 return __ev_subfumiaaw (t);
00443 }
00444
00445 static inline __ev64_opaque__
00446 __internal_ev_mwhgssfaa (__ev64_opaque__ a, __ev64_opaque__ b)
00447 {
00448 __ev64_opaque__ t;
00449
00450 t = __ev_mwhssf (a, b);
00451 return __ev_mwsmiaa (t, ((__ev64_s32__){1, 1}));
00452 }
00453
00454 static inline __ev64_opaque__
00455 __internal_ev_mwhgsmfaa (__ev64_opaque__ a, __ev64_opaque__ b)
00456 {
00457 __ev64_opaque__ t;
00458
00459 t = __ev_mwhsmf (a, b);
00460 return __ev_mwsmiaa (t, ((__ev64_s32__){1, 1}));
00461 }
00462
00463 static inline __ev64_opaque__
00464 __internal_ev_mwhgsmiaa (__ev64_opaque__ a, __ev64_opaque__ b)
00465 {
00466 __ev64_opaque__ t;
00467
00468 t = __ev_mwhsmi (a, b);
00469 return __ev_mwsmiaa (t, ((__ev64_s32__){1, 1}));
00470 }
00471
00472 static inline __ev64_opaque__
00473 __internal_ev_mwhgumiaa (__ev64_opaque__ a, __ev64_opaque__ b)
00474 {
00475 __ev64_opaque__ t;
00476
00477 t = __ev_mwhumi (a, b);
00478 return __ev_mwumiaa (t, ((__ev64_s32__){1, 1}));
00479 }
00480
00481 static inline __ev64_opaque__
00482 __internal_ev_mwhgssfan (__ev64_opaque__ a, __ev64_opaque__ b)
00483 {
00484 __ev64_opaque__ t;
00485
00486 t = __ev_mwhssf (a, b);
00487 return __ev_mwsmian (t, ((__ev64_s32__){1, 1}));
00488 }
00489
00490 static inline __ev64_opaque__
00491 __internal_ev_mwhgsmfan (__ev64_opaque__ a, __ev64_opaque__ b)
00492 {
00493 __ev64_opaque__ t;
00494
00495 t = __ev_mwhsmf (a, b);
00496 return __ev_mwsmian (t, ((__ev64_s32__){1, 1}));
00497 }
00498
00499 static inline __ev64_opaque__
00500 __internal_ev_mwhgsmian (__ev64_opaque__ a, __ev64_opaque__ b)
00501 {
00502 __ev64_opaque__ t;
00503
00504 t = __ev_mwhsmi (a, b);
00505 return __ev_mwsmian (t, ((__ev64_s32__){1, 1}));
00506 }
00507
00508 static inline __ev64_opaque__
00509 __internal_ev_mwhgumian (__ev64_opaque__ a, __ev64_opaque__ b)
00510 {
00511 __ev64_opaque__ t;
00512
00513 t = __ev_mwhumi (a, b);
00514 return __ev_mwumian (t, ((__ev64_s32__){1, 1}));
00515 }
00516
00517
00518
00519
00520
00521 #define __ev_create_ufix32_u32 __ev_create_u32
00522 #define __ev_create_sfix32_s32 __ev_create_s32
00523
00524 static inline __ev64_opaque__
00525 __ev_create_s16 (int16_t a, int16_t b, int16_t c, int16_t d)
00526 {
00527 union
00528 {
00529 __ev64_opaque__ v;
00530 int16_t i[4];
00531 } u;
00532
00533 u.i[0] = a;
00534 u.i[1] = b;
00535 u.i[2] = c;
00536 u.i[3] = d;
00537
00538 return u.v;
00539 }
00540
00541 static inline __ev64_opaque__
00542 __ev_create_u16 (uint16_t a, uint16_t b, uint16_t c, uint16_t d)
00543
00544 {
00545 union
00546 {
00547 __ev64_opaque__ v;
00548 uint16_t i[4];
00549 } u;
00550
00551 u.i[0] = a;
00552 u.i[1] = b;
00553 u.i[2] = c;
00554 u.i[3] = d;
00555
00556 return u.v;
00557 }
00558
00559 static inline __ev64_opaque__
00560 __ev_create_s32 (int32_t a, int32_t b)
00561 {
00562 union
00563 {
00564 __ev64_opaque__ v;
00565 int32_t i[2];
00566 } u;
00567
00568 u.i[0] = a;
00569 u.i[1] = b;
00570
00571 return u.v;
00572 }
00573
00574 static inline __ev64_opaque__
00575 __ev_create_u32 (uint32_t a, uint32_t b)
00576 {
00577 union
00578 {
00579 __ev64_opaque__ v;
00580 uint32_t i[2];
00581 } u;
00582
00583 u.i[0] = a;
00584 u.i[1] = b;
00585
00586 return u.v;
00587 }
00588
00589 static inline __ev64_opaque__
00590 __ev_create_fs (float a, float b)
00591 {
00592 union
00593 {
00594 __ev64_opaque__ v;
00595 float f[2];
00596 } u;
00597
00598 u.f[0] = a;
00599 u.f[1] = b;
00600
00601 return u.v;
00602 }
00603
00604 static inline __ev64_opaque__
00605 __ev_create_sfix32_fs (float a, float b)
00606 {
00607 __ev64_opaque__ ev;
00608
00609 ev = (__ev64_opaque__) __ev_create_fs (a, b);
00610 return (__ev64_opaque__) __builtin_spe_evfsctsf ((__v2sf) ev);
00611 }
00612
00613 static inline __ev64_opaque__
00614 __ev_create_ufix32_fs (float a, float b)
00615 {
00616 __ev64_opaque__ ev;
00617
00618 ev = (__ev64_opaque__) __ev_create_fs (a, b);
00619 return (__ev64_opaque__) __builtin_spe_evfsctuf ((__v2sf) ev);
00620 }
00621
00622 static inline __ev64_opaque__
00623 __ev_create_s64 (int64_t a)
00624 {
00625 union
00626 {
00627 __ev64_opaque__ v;
00628 int64_t i;
00629 } u;
00630
00631 u.i = a;
00632 return u.v;
00633 }
00634
00635 static inline __ev64_opaque__
00636 __ev_create_u64 (uint64_t a)
00637 {
00638 union
00639 {
00640 __ev64_opaque__ v;
00641 uint64_t i;
00642 } u;
00643
00644 u.i = a;
00645 return u.v;
00646 }
00647
00648 static inline uint64_t
00649 __ev_convert_u64 (__ev64_opaque__ a)
00650 {
00651 return (uint64_t) a;
00652 }
00653
00654 static inline int64_t
00655 __ev_convert_s64 (__ev64_opaque__ a)
00656 {
00657 return (int64_t) a;
00658 }
00659
00660
00661
00662 #define __ev_get_upper_u32(a) __ev_get_u32_internal ((a), 0)
00663 #define __ev_get_lower_u32(a) __ev_get_u32_internal ((a), 1)
00664 #define __ev_get_upper_s32(a) __ev_get_s32_internal ((a), 0)
00665 #define __ev_get_lower_s32(a) __ev_get_s32_internal ((a), 1)
00666 #define __ev_get_upper_fs(a) __ev_get_fs_internal ((a), 0)
00667 #define __ev_get_lower_fs(a) __ev_get_fs_internal ((a), 1)
00668 #define __ev_get_upper_ufix32_u32 __ev_get_upper_u32
00669 #define __ev_get_lower_ufix32_u32 __ev_get_lower_u32
00670 #define __ev_get_upper_sfix32_s32 __ev_get_upper_s32
00671 #define __ev_get_lower_sfix32_s32 __ev_get_lower_s32
00672 #define __ev_get_upper_sfix32_fs(a) __ev_get_sfix32_fs ((a), 0)
00673 #define __ev_get_lower_sfix32_fs(a) __ev_get_sfix32_fs ((a), 1)
00674 #define __ev_get_upper_ufix32_fs(a) __ev_get_ufix32_fs ((a), 0)
00675 #define __ev_get_lower_ufix32_fs(a) __ev_get_ufix32_fs ((a), 1)
00676
00677 #define __ev_get_u32 __ev_get_u32_internal
00678 #define __ev_get_s32 __ev_get_s32_internal
00679 #define __ev_get_fs __ev_get_fs_internal
00680 #define __ev_get_u16 __ev_get_u16_internal
00681 #define __ev_get_s16 __ev_get_s16_internal
00682
00683 #define __ev_get_ufix32_u32 __ev_get_u32
00684 #define __ev_get_sfix32_s32 __ev_get_s32
00685 #define __ev_get_ufix32_fs __ev_get_ufix32_fs_internal
00686 #define __ev_get_sfix32_fs __ev_get_sfix32_fs_internal
00687
00688 static inline uint32_t
00689 __ev_get_u32_internal (__ev64_opaque__ a, uint32_t pos)
00690 {
00691 union
00692 {
00693 __ev64_opaque__ v;
00694 uint32_t i[2];
00695 } u;
00696
00697 u.v = a;
00698 return u.i[pos];
00699 }
00700
00701 static inline int32_t
00702 __ev_get_s32_internal (__ev64_opaque__ a, uint32_t pos)
00703 {
00704 union
00705 {
00706 __ev64_opaque__ v;
00707 int32_t i[2];
00708 } u;
00709
00710 u.v = a;
00711 return u.i[pos];
00712 }
00713
00714 static inline float
00715 __ev_get_fs_internal (__ev64_opaque__ a, uint32_t pos)
00716 {
00717 union
00718 {
00719 __ev64_opaque__ v;
00720 float f[2];
00721 } u;
00722
00723 u.v = a;
00724 return u.f[pos];
00725 }
00726
00727 static inline float
00728 __ev_get_sfix32_fs_internal (__ev64_opaque__ a, uint32_t pos)
00729 {
00730 __ev64_fs__ v;
00731
00732 v = __builtin_spe_evfscfsf ((__v2sf) a);
00733 return __ev_get_fs_internal ((__ev64_opaque__) v, pos);
00734 }
00735
00736 static inline float
00737 __ev_get_ufix32_fs_internal (__ev64_opaque__ a, uint32_t pos)
00738 {
00739 __ev64_fs__ v;
00740
00741 v = __builtin_spe_evfscfuf ((__v2sf) a);
00742 return __ev_get_fs_internal ((__ev64_opaque__) v, pos);
00743 }
00744
00745 static inline uint16_t
00746 __ev_get_u16_internal (__ev64_opaque__ a, uint32_t pos)
00747 {
00748 union
00749 {
00750 __ev64_opaque__ v;
00751 uint16_t i[4];
00752 } u;
00753
00754 u.v = a;
00755 return u.i[pos];
00756 }
00757
00758 static inline int16_t
00759 __ev_get_s16_internal (__ev64_opaque__ a, uint32_t pos)
00760 {
00761 union
00762 {
00763 __ev64_opaque__ v;
00764 int16_t i[4];
00765 } u;
00766
00767 u.v = a;
00768 return u.i[pos];
00769 }
00770
00771
00772
00773 #define __ev_set_u32 __ev_set_u32_internal
00774 #define __ev_set_s32 __ev_set_s32_internal
00775 #define __ev_set_fs __ev_set_fs_internal
00776 #define __ev_set_u16 __ev_set_u16_internal
00777 #define __ev_set_s16 __ev_set_s16_internal
00778
00779 #define __ev_set_ufix32_u32 __ev_set_u32
00780 #define __ev_set_sfix32_s32 __ev_set_s32
00781
00782 #define __ev_set_sfix32_fs __ev_set_sfix32_fs_internal
00783 #define __ev_set_ufix32_fs __ev_set_ufix32_fs_internal
00784
00785 #define __ev_set_upper_u32(a, b) __ev_set_u32 (a, b, 0)
00786 #define __ev_set_lower_u32(a, b) __ev_set_u32 (a, b, 1)
00787 #define __ev_set_upper_s32(a, b) __ev_set_s32 (a, b, 0)
00788 #define __ev_set_lower_s32(a, b) __ev_set_s32 (a, b, 1)
00789 #define __ev_set_upper_fs(a, b) __ev_set_fs (a, b, 0)
00790 #define __ev_set_lower_fs(a, b) __ev_set_fs (a, b, 1)
00791 #define __ev_set_upper_ufix32_u32 __ev_set_upper_u32
00792 #define __ev_set_lower_ufix32_u32 __ev_set_lower_u32
00793 #define __ev_set_upper_sfix32_s32 __ev_set_upper_s32
00794 #define __ev_set_lower_sfix32_s32 __ev_set_lower_s32
00795 #define __ev_set_upper_sfix32_fs(a, b) __ev_set_sfix32_fs (a, b, 0)
00796 #define __ev_set_lower_sfix32_fs(a, b) __ev_set_sfix32_fs (a, b, 1)
00797 #define __ev_set_upper_ufix32_fs(a, b) __ev_set_ufix32_fs (a, b, 0)
00798 #define __ev_set_lower_ufix32_fs(a, b) __ev_set_ufix32_fs (a, b, 1)
00799
00800 #define __ev_set_acc_vec64 __builtin_spe_evmra
00801
00802 static inline __ev64_opaque__
00803 __ev_set_acc_u64 (uint64_t a)
00804 {
00805 __ev64_opaque__ ev32;
00806 ev32 = __ev_create_u64 (a);
00807 __ev_mra (ev32);
00808 return ev32;
00809 }
00810
00811 static inline __ev64_opaque__
00812 __ev_set_acc_s64 (int64_t a)
00813 {
00814 __ev64_opaque__ ev32;
00815 ev32 = __ev_create_s64 (a);
00816 __ev_mra (ev32);
00817 return ev32;
00818 }
00819
00820 static inline __ev64_opaque__
00821 __ev_set_u32_internal (__ev64_opaque__ a, uint32_t b, uint32_t pos)
00822 {
00823 union
00824 {
00825 __ev64_opaque__ v;
00826 uint32_t i[2];
00827 } u;
00828
00829 u.v = a;
00830 u.i[pos] = b;
00831 return u.v;
00832 }
00833
00834 static inline __ev64_opaque__
00835 __ev_set_s32_internal (__ev64_opaque__ a, int32_t b, uint32_t pos)
00836 {
00837 union
00838 {
00839 __ev64_opaque__ v;
00840 int32_t i[2];
00841 } u;
00842
00843 u.v = a;
00844 u.i[pos] = b;
00845 return u.v;
00846 }
00847
00848 static inline __ev64_opaque__
00849 __ev_set_fs_internal (__ev64_opaque__ a, float b, uint32_t pos)
00850 {
00851 union
00852 {
00853 __ev64_opaque__ v;
00854 float f[2];
00855 } u;
00856
00857 u.v = a;
00858 u.f[pos] = b;
00859 return u.v;
00860 }
00861
00862 static inline __ev64_opaque__
00863 __ev_set_sfix32_fs_internal (__ev64_opaque__ a, float b, uint32_t pos)
00864 {
00865 __ev64_opaque__ v;
00866 float other;
00867
00868
00869 other = __ev_get_fs_internal (a, pos ^ 1);
00870
00871
00872 v = __ev_create_sfix32_fs (b, b);
00873
00874
00875 return __ev_set_fs_internal (v, other, pos ^ 1);
00876 }
00877
00878 static inline __ev64_opaque__
00879 __ev_set_ufix32_fs_internal (__ev64_opaque__ a, float b, uint32_t pos)
00880 {
00881 __ev64_opaque__ v;
00882 float other;
00883
00884
00885 other = __ev_get_fs_internal (a, pos ^ 1);
00886
00887
00888 v = __ev_create_ufix32_fs (b, b);
00889
00890
00891 return __ev_set_fs_internal (v, other, pos ^ 1);
00892 }
00893
00894 static inline __ev64_opaque__
00895 __ev_set_u16_internal (__ev64_opaque__ a, uint16_t b, uint32_t pos)
00896 {
00897 union
00898 {
00899 __ev64_opaque__ v;
00900 uint16_t i[4];
00901 } u;
00902
00903 u.v = a;
00904 u.i[pos] = b;
00905 return u.v;
00906 }
00907
00908 static inline __ev64_opaque__
00909 __ev_set_s16_internal (__ev64_opaque__ a, int16_t b, uint32_t pos)
00910 {
00911 union
00912 {
00913 __ev64_opaque__ v;
00914 int16_t i[4];
00915 } u;
00916
00917 u.v = a;
00918 u.i[pos] = b;
00919 return u.v;
00920 }
00921
00922
00923
00924 #define __pred_all 0
00925 #define __pred_any 1
00926 #define __pred_upper 2
00927 #define __pred_lower 3
00928
00929 #define __ev_any_gts(a, b) __builtin_spe_evcmpgts (__pred_any, (a), (b))
00930 #define __ev_all_gts(a, b) __builtin_spe_evcmpgts (__pred_all, (a), (b))
00931 #define __ev_upper_gts(a, b) __builtin_spe_evcmpgts (__pred_upper, (a), (b))
00932 #define __ev_lower_gts(a, b) __builtin_spe_evcmpgts (__pred_lower, (a), (b))
00933 #define __ev_select_gts __builtin_spe_evsel_gts
00934
00935 #define __ev_any_gtu(a, b) __builtin_spe_evcmpgtu (__pred_any, (a), (b))
00936 #define __ev_all_gtu(a, b) __builtin_spe_evcmpgtu (__pred_all, (a), (b))
00937 #define __ev_upper_gtu(a, b) __builtin_spe_evcmpgtu (__pred_upper, (a), (b))
00938 #define __ev_lower_gtu(a, b) __builtin_spe_evcmpgtu (__pred_lower, (a), (b))
00939 #define __ev_select_gtu __builtin_spe_evsel_gtu
00940
00941 #define __ev_any_lts(a, b) __builtin_spe_evcmplts (__pred_any, (a), (b))
00942 #define __ev_all_lts(a, b) __builtin_spe_evcmplts (__pred_all, (a), (b))
00943 #define __ev_upper_lts(a, b) __builtin_spe_evcmplts (__pred_upper, (a), (b))
00944 #define __ev_lower_lts(a, b) __builtin_spe_evcmplts (__pred_lower, (a), (b))
00945 #define __ev_select_lts(a, b, c, d) ((__v2si) __builtin_spe_evsel_lts ((a), (b), (c), (d)))
00946
00947 #define __ev_any_ltu(a, b) __builtin_spe_evcmpltu (__pred_any, (a), (b))
00948 #define __ev_all_ltu(a, b) __builtin_spe_evcmpltu (__pred_all, (a), (b))
00949 #define __ev_upper_ltu(a, b) __builtin_spe_evcmpltu (__pred_upper, (a), (b))
00950 #define __ev_lower_ltu(a, b) __builtin_spe_evcmpltu (__pred_lower, (a), (b))
00951 #define __ev_select_ltu __builtin_spe_evsel_ltu
00952 #define __ev_any_eq(a, b) __builtin_spe_evcmpeq (__pred_any, (a), (b))
00953 #define __ev_all_eq(a, b) __builtin_spe_evcmpeq (__pred_all, (a), (b))
00954 #define __ev_upper_eq(a, b) __builtin_spe_evcmpeq (__pred_upper, (a), (b))
00955 #define __ev_lower_eq(a, b) __builtin_spe_evcmpeq (__pred_lower, (a), (b))
00956 #define __ev_select_eq __builtin_spe_evsel_eq
00957
00958 #define __ev_any_fs_gt(a, b) __builtin_spe_evfscmpgt (__pred_any, (a), (b))
00959 #define __ev_all_fs_gt(a, b) __builtin_spe_evfscmpgt (__pred_all, (a), (b))
00960 #define __ev_upper_fs_gt(a, b) __builtin_spe_evfscmpgt (__pred_upper, (a), (b))
00961 #define __ev_lower_fs_gt(a, b) __builtin_spe_evfscmpgt (__pred_lower, (a), (b))
00962 #define __ev_select_fs_gt __builtin_spe_evsel_fsgt
00963
00964 #define __ev_any_fs_lt(a, b) __builtin_spe_evfscmplt (__pred_any, (a), (b))
00965 #define __ev_all_fs_lt(a, b) __builtin_spe_evfscmplt (__pred_all, (a), (b))
00966 #define __ev_upper_fs_lt(a, b) __builtin_spe_evfscmplt (__pred_upper, (a), (b))
00967 #define __ev_lower_fs_lt(a, b) __builtin_spe_evfscmplt (__pred_lower, (a), (b))
00968 #define __ev_select_fs_lt __builtin_spe_evsel_fslt
00969
00970 #define __ev_any_fs_eq(a, b) __builtin_spe_evfscmpeq (__pred_any, (a), (b))
00971 #define __ev_all_fs_eq(a, b) __builtin_spe_evfscmpeq (__pred_all, (a), (b))
00972 #define __ev_upper_fs_eq(a, b) __builtin_spe_evfscmpeq (__pred_upper, (a), (b))
00973 #define __ev_lower_fs_eq(a, b) __builtin_spe_evfscmpeq (__pred_lower, (a), (b))
00974 #define __ev_select_fs_eq __builtin_spe_evsel_fseq
00975
00976 #define __ev_any_fs_tst_gt(a, b) __builtin_spe_evfststgt (__pred_any, (a), (b))
00977 #define __ev_all_fs_tst_gt(a, b) __builtin_spe_evfststgt (__pred_all, (a), (b))
00978 #define __ev_upper_fs_tst_gt(a, b) __builtin_spe_evfststgt (__pred_upper, (a), (b))
00979 #define __ev_lower_fs_tst_gt(a, b) __builtin_spe_evfststgt (__pred_lower, (a), (b))
00980 #define __ev_select_fs_tst_gt __builtin_spe_evsel_fststgt
00981
00982 #define __ev_any_fs_tst_lt(a, b) __builtin_spe_evfststlt (__pred_any, (a), (b))
00983 #define __ev_all_fs_tst_lt(a, b) __builtin_spe_evfststlt (__pred_all, (a), (b))
00984 #define __ev_upper_fs_tst_lt(a, b) __builtin_spe_evfststlt (__pred_upper, (a), (b))
00985 #define __ev_lower_fs_tst_lt(a, b) __builtin_spe_evfststlt (__pred_lower, (a), (b))
00986 #define __ev_select_fs_tst_lt __builtin_spe_evsel_fststlt
00987
00988 #define __ev_any_fs_tst_eq(a, b) __builtin_spe_evfststeq (__pred_any, (a), (b))
00989 #define __ev_all_fs_tst_eq(a, b) __builtin_spe_evfststeq (__pred_all, (a), (b))
00990 #define __ev_upper_fs_tst_eq(a, b) __builtin_spe_evfststeq (__pred_upper, (a), (b))
00991 #define __ev_lower_fs_tst_eq(a, b) __builtin_spe_evfststeq (__pred_lower, (a), (b))
00992 #define __ev_select_fs_tst_eq __builtin_spe_evsel_fststeq
00993
00994
00995
00996 #define __SPEFSCR_SOVH 0x80000000
00997 #define __SPEFSCR_OVH 0x40000000
00998 #define __SPEFSCR_FGH 0x20000000
00999 #define __SPEFSCR_FXH 0x10000000
01000 #define __SPEFSCR_FINVH 0x08000000
01001 #define __SPEFSCR_FDBZH 0x04000000
01002 #define __SPEFSCR_FUNFH 0x02000000
01003 #define __SPEFSCR_FOVFH 0x01000000
01004
01005 #define __SPEFSCR_FINXS 0x00200000
01006 #define __SPEFSCR_FINVS 0x00100000
01007 #define __SPEFSCR_FDBZS 0x00080000
01008 #define __SPEFSCR_FUNFS 0x00040000
01009 #define __SPEFSCR_FOVFS 0x00020000
01010 #define __SPEFSCR_MODE 0x00010000
01011 #define __SPEFSCR_SOV 0x00008000
01012 #define __SPEFSCR_OV 0x00004000
01013 #define __SPEFSCR_FG 0x00002000
01014 #define __SPEFSCR_FX 0x00001000
01015 #define __SPEFSCR_FINV 0x00000800
01016 #define __SPEFSCR_FDBZ 0x00000400
01017 #define __SPEFSCR_FUNF 0x00000200
01018 #define __SPEFSCR_FOVF 0x00000100
01019
01020 #define __SPEFSCR_FINXE 0x00000040
01021 #define __SPEFSCR_FINVE 0x00000020
01022 #define __SPEFSCR_FDBZE 0x00000010
01023 #define __SPEFSCR_FUNFE 0x00000008
01024 #define __SPEFSCR_FOVFE 0x00000004
01025 #define __SPEFSCR_FRMC 0x00000003
01026
01027 #define __ev_get_spefscr_sovh() (__builtin_spe_mfspefscr () & __SPEFSCR_SOVH)
01028 #define __ev_get_spefscr_ovh() (__builtin_spe_mfspefscr () & __SPEFSCR_OVH)
01029 #define __ev_get_spefscr_fgh() (__builtin_spe_mfspefscr () & __SPEFSCR_FGH)
01030 #define __ev_get_spefscr_fxh() (__builtin_spe_mfspefscr () & __SPEFSCR_FXH)
01031 #define __ev_get_spefscr_finvh() (__builtin_spe_mfspefscr () & __SPEFSCR_FINVH)
01032 #define __ev_get_spefscr_fdbzh() (__builtin_spe_mfspefscr () & __SPEFSCR_FDBZH)
01033 #define __ev_get_spefscr_funfh() (__builtin_spe_mfspefscr () & __SPEFSCR_FUNFH)
01034 #define __ev_get_spefscr_fovfh() (__builtin_spe_mfspefscr () & __SPEFSCR_FOVFH)
01035 #define __ev_get_spefscr_finxs() (__builtin_spe_mfspefscr () & __SPEFSCR_FINXS)
01036 #define __ev_get_spefscr_finvs() (__builtin_spe_mfspefscr () & __SPEFSCR_FINVS)
01037 #define __ev_get_spefscr_fdbzs() (__builtin_spe_mfspefscr () & __SPEFSCR_FDBZS)
01038 #define __ev_get_spefscr_funfs() (__builtin_spe_mfspefscr () & __SPEFSCR_FUNFS)
01039 #define __ev_get_spefscr_fovfs() (__builtin_spe_mfspefscr () & __SPEFSCR_FOVFS)
01040 #define __ev_get_spefscr_mode() (__builtin_spe_mfspefscr () & __SPEFSCR_MODE)
01041 #define __ev_get_spefscr_sov() (__builtin_spe_mfspefscr () & __SPEFSCR_SOV)
01042 #define __ev_get_spefscr_ov() (__builtin_spe_mfspefscr () & __SPEFSCR_OV)
01043 #define __ev_get_spefscr_fg() (__builtin_spe_mfspefscr () & __SPEFSCR_FG)
01044 #define __ev_get_spefscr_fx() (__builtin_spe_mfspefscr () & __SPEFSCR_FX)
01045 #define __ev_get_spefscr_finv() (__builtin_spe_mfspefscr () & __SPEFSCR_FINV)
01046 #define __ev_get_spefscr_fdbz() (__builtin_spe_mfspefscr () & __SPEFSCR_FDBZ)
01047 #define __ev_get_spefscr_funf() (__builtin_spe_mfspefscr () & __SPEFSCR_FUNF)
01048 #define __ev_get_spefscr_fovf() (__builtin_spe_mfspefscr () & __SPEFSCR_FOVF)
01049 #define __ev_get_spefscr_finxe() (__builtin_spe_mfspefscr () & __SPEFSCR_FINXE)
01050 #define __ev_get_spefscr_finve() (__builtin_spe_mfspefscr () & __SPEFSCR_FINVE)
01051 #define __ev_get_spefscr_fdbze() (__builtin_spe_mfspefscr () & __SPEFSCR_FDBZE)
01052 #define __ev_get_spefscr_funfe() (__builtin_spe_mfspefscr () & __SPEFSCR_FUNFE)
01053 #define __ev_get_spefscr_fovfe() (__builtin_spe_mfspefscr () & __SPEFSCR_FOVFE)
01054 #define __ev_get_spefscr_frmc() (__builtin_spe_mfspefscr () & __SPEFSCR_FRMC)
01055
01056 static inline void
01057 __ev_clr_spefscr_field (int mask)
01058 {
01059 int i;
01060
01061 i = __builtin_spe_mfspefscr ();
01062 i &= ~mask;
01063 __builtin_spe_mtspefscr (i);
01064 }
01065
01066 #define __ev_clr_spefscr_sovh() __ev_clr_spefscr_field (__SPEFSCR_SOVH)
01067 #define __ev_clr_spefscr_sov() __ev_clr_spefscr_field (__SPEFSCR_SOV)
01068 #define __ev_clr_spefscr_finxs() __ev_clr_spefscr_field (__SPEFSCR_FINXS)
01069 #define __ev_clr_spefscr_finvs() __ev_clr_spefscr_field (__SPEFSCR_FINVS)
01070 #define __ev_clr_spefscr_fdbzs() __ev_clr_spefscr_field (__SPEFSCR_FDBZS)
01071 #define __ev_clr_spefscr_funfs() __ev_clr_spefscr_field (__SPEFSCR_FUNFS)
01072 #define __ev_clr_spefscr_fovfs() __ev_clr_spefscr_field (__SPEFSCR_FOVFS)
01073
01074
01075
01076
01077
01078
01079
01080 static inline void
01081 __ev_set_spefscr_frmc (int rnd)
01082 {
01083 int i;
01084
01085 i = __builtin_spe_mfspefscr ();
01086 i &= ~__SPEFSCR_FRMC;
01087 i |= rnd;
01088 __builtin_spe_mtspefscr (i);
01089 }
01090
01091
01092
01093
01094 extern short int atosfix16 (const char *);
01095 extern int atosfix32 (const char *);
01096 extern long long atosfix64 (const char *);
01097
01098 extern unsigned short atoufix16 (const char *);
01099 extern unsigned int atoufix32 (const char *);
01100 extern unsigned long long atoufix64 (const char *);
01101
01102 extern short int strtosfix16 (const char *, char **);
01103 extern int strtosfix32 (const char *, char **);
01104 extern long long strtosfix64 (const char *, char **);
01105
01106 extern unsigned short int strtoufix16 (const char *, char **);
01107 extern unsigned int strtoufix32 (const char *, char **);
01108 extern unsigned long long strtoufix64 (const char *, char **);
01109
01110 #endif