00001
00002
00003
00004
00005 #ifndef __SSEPLUS_NATIVE_SSE5_H__
00006 #define __SSEPLUS_NATIVE_SSE5_H__
00007
00008 #include "../SSEPlus_base.h"
00009
00010 #include SSP_INCLUDE_FILE_SSE5
00011 #include SSP_INCLUDE_FILE_SSE4_1_SSE5
00012
00018
00019
00020
00021
00023 SSP_FORCEINLINE __m128i ssp_cmov_si128_SSE5(__m128i a, __m128i b, __m128i c)
00024 {
00025 return _mm_cmov_si128 (a, b, c);
00026 }
00027
00029 SSP_FORCEINLINE __m128 ssp_comeq_ps_SSE5(__m128 a, __m128 b)
00030 {
00031 return _mm_comeq_ps (a, b);
00032 }
00034 SSP_FORCEINLINE __m128 ssp_comlt_ps_SSE5(__m128 a, __m128 b)
00035 {
00036 return _mm_comlt_ps (a, b);
00037 }
00039 SSP_FORCEINLINE __m128 ssp_comle_ps_SSE5(__m128 a, __m128 b)
00040 {
00041 return _mm_comle_ps (a, b);
00042 }
00044 SSP_FORCEINLINE __m128 ssp_comunord_ps_SSE5(__m128 a, __m128 b)
00045 {
00046 return _mm_comunord_ps (a, b);
00047 }
00049 SSP_FORCEINLINE __m128 ssp_comneq_ps_SSE5(__m128 a, __m128 b)
00050 {
00051 return _mm_comneq_ps (a, b);
00052 }
00054 SSP_FORCEINLINE __m128 ssp_comnlt_ps_SSE5(__m128 a, __m128 b)
00055 {
00056 return _mm_comnlt_ps (a, b);
00057 }
00059 SSP_FORCEINLINE __m128 ssp_comnle_ps_SSE5(__m128 a, __m128 b)
00060 {
00061 return _mm_comnle_ps (a, b);
00062 }
00064 SSP_FORCEINLINE __m128 ssp_comord_ps_SSE5(__m128 a, __m128 b)
00065 {
00066 return _mm_comord_ps (a, b);
00067 }
00069 SSP_FORCEINLINE __m128 ssp_comueq_ps_SSE5(__m128 a, __m128 b)
00070 {
00071 return _mm_comueq_ps (a, b);
00072 }
00074 SSP_FORCEINLINE __m128 ssp_comnge_ps_SSE5(__m128 a, __m128 b)
00075 {
00076 return _mm_comnge_ps (a, b);
00077 }
00079 SSP_FORCEINLINE __m128 ssp_comngt_ps_SSE5(__m128 a, __m128 b)
00080 {
00081 return _mm_comngt_ps (a, b);
00082 }
00084 SSP_FORCEINLINE __m128 ssp_comfalse_ps_SSE5(__m128 a, __m128 b)
00085 {
00086 return _mm_comfalse_ps (a, b);
00087 }
00089 SSP_FORCEINLINE __m128 ssp_comoneq_ps_SSE5(__m128 a, __m128 b)
00090 {
00091 return _mm_comoneq_ps (a, b);
00092 }
00094 SSP_FORCEINLINE __m128 ssp_comge_ps_SSE5(__m128 a, __m128 b)
00095 {
00096 return _mm_comge_ps (a, b);
00097 }
00099 SSP_FORCEINLINE __m128 ssp_comgt_ps_SSE5(__m128 a, __m128 b)
00100 {
00101 return _mm_comgt_ps (a, b);
00102 }
00104 SSP_FORCEINLINE __m128 ssp_comtrue_ps_SSE5(__m128 a, __m128 b)
00105 {
00106 return _mm_comtrue_ps (a, b);
00107 }
00108
00110 SSP_FORCEINLINE __m128d ssp_comeq_pd_SSE5(__m128d a, __m128d b)
00111 {
00112 return _mm_comeq_pd (a, b);
00113 }
00115 SSP_FORCEINLINE __m128d ssp_comlt_pd_SSE5(__m128d a, __m128d b)
00116 {
00117 return _mm_comlt_pd (a, b);
00118 }
00120 SSP_FORCEINLINE __m128d ssp_comle_pd_SSE5(__m128d a, __m128d b)
00121 {
00122 return _mm_comle_pd (a, b);
00123 }
00125 SSP_FORCEINLINE __m128d ssp_comunord_pd_SSE5(__m128d a, __m128d b)
00126 {
00127 return _mm_comunord_pd (a, b);
00128 }
00130 SSP_FORCEINLINE __m128d ssp_comneq_pd_SSE5(__m128d a, __m128d b)
00131 {
00132 return _mm_comneq_pd (a, b);
00133 }
00135 SSP_FORCEINLINE __m128d ssp_comnlt_pd_SSE5(__m128d a, __m128d b)
00136 {
00137 return _mm_comnlt_pd (a, b);
00138 }
00140 SSP_FORCEINLINE __m128d ssp_comnle_pd_SSE5(__m128d a, __m128d b)
00141 {
00142 return _mm_comnle_pd (a, b);
00143 }
00145 SSP_FORCEINLINE __m128d ssp_comord_pd_SSE5(__m128d a, __m128d b)
00146 {
00147 return _mm_comord_pd (a, b);
00148 }
00150 SSP_FORCEINLINE __m128d ssp_comueq_pd_SSE5(__m128d a, __m128d b)
00151 {
00152 return _mm_comueq_pd (a, b);
00153 }
00155 SSP_FORCEINLINE __m128d ssp_comnge_pd_SSE5(__m128d a, __m128d b)
00156 {
00157 return _mm_comnge_pd (a, b);
00158 }
00160 SSP_FORCEINLINE __m128d ssp_comngt_pd_SSE5(__m128d a, __m128d b)
00161 {
00162 return _mm_comngt_pd (a, b);
00163 }
00165 SSP_FORCEINLINE __m128d ssp_comfalse_pd_SSE5(__m128d a, __m128d b)
00166 {
00167 return _mm_comfalse_pd (a, b);
00168 }
00170 SSP_FORCEINLINE __m128d ssp_comoneq_pd_SSE5(__m128d a, __m128d b)
00171 {
00172 return _mm_comoneq_pd (a, b);
00173 }
00175 SSP_FORCEINLINE __m128d ssp_comge_pd_SSE5(__m128d a, __m128d b)
00176 {
00177 return _mm_comge_pd (a, b);
00178 }
00180 SSP_FORCEINLINE __m128d ssp_comgt_pd_SSE5(__m128d a, __m128d b)
00181 {
00182 return _mm_comgt_pd (a, b);
00183 }
00185 SSP_FORCEINLINE __m128d ssp_comtrue_pd_SSE5(__m128d a, __m128d b)
00186 {
00187 return _mm_comtrue_pd (a, b);
00188 }
00190 SSP_FORCEINLINE __m128 ssp_comeq_ss_SSE5(__m128 a, __m128 b)
00191 {
00192 return _mm_comeq_ss (a, b);
00193 }
00195 SSP_FORCEINLINE __m128 ssp_comlt_ss_SSE5(__m128 a, __m128 b)
00196 {
00197 return _mm_comlt_ss (a, b);
00198 }
00200 SSP_FORCEINLINE __m128 ssp_comle_ss_SSE5(__m128 a, __m128 b)
00201 {
00202 return _mm_comle_ss (a, b);
00203 }
00205 SSP_FORCEINLINE __m128 ssp_comunord_ss_SSE5(__m128 a, __m128 b)
00206 {
00207 return _mm_comunord_ss (a, b);
00208 }
00210 SSP_FORCEINLINE __m128 ssp_comneq_ss_SSE5(__m128 a, __m128 b)
00211 {
00212 return _mm_comneq_ss (a, b);
00213 }
00215 SSP_FORCEINLINE __m128 ssp_comnlt_ss_SSE5(__m128 a, __m128 b)
00216 {
00217 return _mm_comnlt_ss (a, b);
00218 }
00220 SSP_FORCEINLINE __m128 ssp_comnle_ss_SSE5(__m128 a, __m128 b)
00221 {
00222 return _mm_comnle_ss (a, b);
00223 }
00225 SSP_FORCEINLINE __m128 ssp_comord_ss_SSE5(__m128 a, __m128 b)
00226 {
00227 return _mm_comord_ss (a, b);
00228 }
00230 SSP_FORCEINLINE __m128 ssp_comueq_ss_SSE5(__m128 a, __m128 b)
00231 {
00232 return _mm_comueq_ss (a, b);
00233 }
00235 SSP_FORCEINLINE __m128 ssp_comnge_ss_SSE5(__m128 a, __m128 b)
00236 {
00237 return _mm_comnge_ss (a, b);
00238 }
00240 SSP_FORCEINLINE __m128 ssp_comngt_ss_SSE5(__m128 a, __m128 b)
00241 {
00242 return _mm_comngt_ss (a, b);
00243 }
00245 SSP_FORCEINLINE __m128 ssp_comfalse_ss_SSE5(__m128 a, __m128 b)
00246 {
00247 return _mm_comfalse_ss (a, b);
00248 }
00250 SSP_FORCEINLINE __m128 ssp_comoneq_ss_SSE5(__m128 a, __m128 b)
00251 {
00252 return _mm_comoneq_ss (a, b);
00253 }
00255 SSP_FORCEINLINE __m128 ssp_comge_ss_SSE5(__m128 a, __m128 b)
00256 {
00257 return _mm_comge_ss (a, b);
00258 }
00260 SSP_FORCEINLINE __m128 ssp_comgt_ss_SSE5(__m128 a, __m128 b)
00261 {
00262 return _mm_comgt_ss (a, b);
00263 }
00265 SSP_FORCEINLINE __m128 ssp_comtrue_ss_SSE5(__m128 a, __m128 b)
00266 {
00267 return _mm_comtrue_ss (a, b);
00268 }
00270 SSP_FORCEINLINE __m128d ssp_comeq_sd_SSE5(__m128d a, __m128d b)
00271 {
00272 return _mm_comeq_sd (a, b);
00273 }
00275 SSP_FORCEINLINE __m128d ssp_comlt_sd_SSE5(__m128d a, __m128d b)
00276 {
00277 return _mm_comlt_sd (a, b);
00278 }
00280 SSP_FORCEINLINE __m128d ssp_comle_sd_SSE5(__m128d a, __m128d b)
00281 {
00282 return _mm_comle_sd (a, b);
00283 }
00285 SSP_FORCEINLINE __m128d ssp_comunord_sd_SSE5(__m128d a, __m128d b)
00286 {
00287 return _mm_comunord_sd (a, b);
00288 }
00290 SSP_FORCEINLINE __m128d ssp_comneq_sd_SSE5(__m128d a, __m128d b)
00291 {
00292 return _mm_comneq_sd (a, b);
00293 }
00295 SSP_FORCEINLINE __m128d ssp_comnlt_sd_SSE5(__m128d a, __m128d b)
00296 {
00297 return _mm_comnlt_sd (a, b);
00298 }
00300 SSP_FORCEINLINE __m128d ssp_comnle_sd_SSE5(__m128d a, __m128d b)
00301 {
00302 return _mm_comnle_sd (a, b);
00303 }
00305 SSP_FORCEINLINE __m128d ssp_comord_sd_SSE5(__m128d a, __m128d b)
00306 {
00307 return _mm_comord_sd (a, b);
00308 }
00310 SSP_FORCEINLINE __m128d ssp_comueq_sd_SSE5(__m128d a, __m128d b)
00311 {
00312 return _mm_comueq_sd (a, b);
00313 }
00315 SSP_FORCEINLINE __m128d ssp_comnge_sd_SSE5(__m128d a, __m128d b)
00316 {
00317 return _mm_comnge_sd (a, b);
00318 }
00320 SSP_FORCEINLINE __m128d ssp_comngt_sd_SSE5(__m128d a, __m128d b)
00321 {
00322 return _mm_comngt_sd (a, b);
00323 }
00325 SSP_FORCEINLINE __m128d ssp_comfalse_sd_SSE5(__m128d a, __m128d b)
00326 {
00327 return _mm_comfalse_sd (a, b);
00328 }
00330 SSP_FORCEINLINE __m128d ssp_comoneq_sd_SSE5(__m128d a, __m128d b)
00331 {
00332 return _mm_comoneq_sd (a, b);
00333 }
00335 SSP_FORCEINLINE __m128d ssp_comge_sd_SSE5(__m128d a, __m128d b)
00336 {
00337 return _mm_comge_sd (a, b);
00338 }
00340 SSP_FORCEINLINE __m128d ssp_comgt_sd_SSE5(__m128d a, __m128d b)
00341 {
00342 return _mm_comgt_sd (a, b);
00343 }
00345 SSP_FORCEINLINE __m128d ssp_comtrue_sd_SSE5(__m128d a, __m128d b)
00346 {
00347 return _mm_comtrue_sd (a, b);
00348 }
00350 SSP_FORCEINLINE __m128i ssp_comlt_epu8_SSE5(__m128i a, __m128i b)
00351 {
00352 return _mm_comlt_epu8 (a, b);
00353 }
00355 SSP_FORCEINLINE __m128i ssp_comle_epu8_SSE5(__m128i a, __m128i b)
00356 {
00357 return _mm_comle_epu8 (a, b);
00358 }
00360 SSP_FORCEINLINE __m128i ssp_comgt_epu8_SSE5(__m128i a, __m128i b)
00361 {
00362 return _mm_comgt_epu8 (a, b);
00363 }
00365 SSP_FORCEINLINE __m128i ssp_comge_epu8_SSE5(__m128i a, __m128i b)
00366 {
00367 return _mm_comge_epu8 (a, b);
00368 }
00370 SSP_FORCEINLINE __m128i ssp_comeq_epu8_SSE5(__m128i a, __m128i b)
00371 {
00372 return _mm_comeq_epu8 (a, b);
00373 }
00375 SSP_FORCEINLINE __m128i ssp_comneq_epu8_SSE5(__m128i a, __m128i b)
00376 {
00377 return _mm_comneq_epu8 (a, b);
00378 }
00380 SSP_FORCEINLINE __m128i ssp_comfalse_epu8_SSE5(__m128i a, __m128i b)
00381 {
00382 return _mm_comfalse_epu8 (a, b);
00383 }
00385 SSP_FORCEINLINE __m128i ssp_comtrue_epu8_SSE5(__m128i a, __m128i b)
00386 {
00387 return _mm_comtrue_epu8 (a, b);
00388 }
00390 SSP_FORCEINLINE __m128i ssp_comlt_epu16_SSE5(__m128i a, __m128i b)
00391 {
00392 return _mm_comlt_epu16 (a, b);
00393 }
00395 SSP_FORCEINLINE __m128i ssp_comle_epu16_SSE5(__m128i a, __m128i b)
00396 {
00397 return _mm_comle_epu16 (a, b);
00398 }
00400 SSP_FORCEINLINE __m128i ssp_comgt_epu16_SSE5(__m128i a, __m128i b)
00401 {
00402 return _mm_comgt_epu16 (a, b);
00403 }
00405 SSP_FORCEINLINE __m128i ssp_comge_epu16_SSE5(__m128i a, __m128i b)
00406 {
00407 return _mm_comge_epu16 (a, b);
00408 }
00410 SSP_FORCEINLINE __m128i ssp_comeq_epu16_SSE5(__m128i a, __m128i b)
00411 {
00412 return _mm_comeq_epu16 (a, b);
00413 }
00415 SSP_FORCEINLINE __m128i ssp_comneq_epu16_SSE5(__m128i a, __m128i b)
00416 {
00417 return _mm_comneq_epu16 (a, b);
00418 }
00420 SSP_FORCEINLINE __m128i ssp_comfalse_epu16_SSE5(__m128i a, __m128i b)
00421 {
00422 return _mm_comfalse_epu16 (a, b);
00423 }
00425 SSP_FORCEINLINE __m128i ssp_comtrue_epu16_SSE5(__m128i a, __m128i b)
00426 {
00427 return _mm_comtrue_epu16 (a, b);
00428 }
00430 SSP_FORCEINLINE __m128i ssp_comlt_epu32_SSE5(__m128i a, __m128i b)
00431 {
00432 return _mm_comlt_epu32 (a, b);
00433 }
00435 SSP_FORCEINLINE __m128i ssp_comle_epu32_SSE5(__m128i a, __m128i b)
00436 {
00437 return _mm_comle_epu32 (a, b);
00438 }
00440 SSP_FORCEINLINE __m128i ssp_comgt_epu32_SSE5(__m128i a, __m128i b)
00441 {
00442 return _mm_comgt_epu32 (a, b);
00443 }
00445 SSP_FORCEINLINE __m128i ssp_comge_epu32_SSE5(__m128i a, __m128i b)
00446 {
00447 return _mm_comge_epu32 (a, b);
00448 }
00450 SSP_FORCEINLINE __m128i ssp_comeq_epu32_SSE5(__m128i a, __m128i b)
00451 {
00452 return _mm_comeq_epu32 (a, b);
00453 }
00455 SSP_FORCEINLINE __m128i ssp_comneq_epu32_SSE5(__m128i a, __m128i b)
00456 {
00457 return _mm_comneq_epu32 (a, b);
00458 }
00460 SSP_FORCEINLINE __m128i ssp_comfalse_epu32_SSE5(__m128i a, __m128i b)
00461 {
00462 return _mm_comfalse_epu32 (a, b);
00463 }
00465 SSP_FORCEINLINE __m128i ssp_comtrue_epu32_SSE5(__m128i a, __m128i b)
00466 {
00467 return _mm_comtrue_epu32 (a, b);
00468 }
00470 SSP_FORCEINLINE __m128i ssp_comlt_epu64_SSE5(__m128i a, __m128i b)
00471 {
00472 return _mm_comlt_epu64 (a, b);
00473 }
00475 SSP_FORCEINLINE __m128i ssp_comle_epu64_SSE5(__m128i a, __m128i b)
00476 {
00477 return _mm_comle_epu64 (a, b);
00478 }
00480 SSP_FORCEINLINE __m128i ssp_comgt_epu64_SSE5(__m128i a, __m128i b)
00481 {
00482 return _mm_comgt_epu64 (a, b);
00483 }
00485 SSP_FORCEINLINE __m128i ssp_comge_epu64_SSE5(__m128i a, __m128i b)
00486 {
00487 return _mm_comge_epu64 (a, b);
00488 }
00490 SSP_FORCEINLINE __m128i ssp_comeq_epu64_SSE5(__m128i a, __m128i b)
00491 {
00492 return _mm_comeq_epu64 (a, b);
00493 }
00495 SSP_FORCEINLINE __m128i ssp_comneq_epu64_SSE5(__m128i a, __m128i b)
00496 {
00497 return _mm_comneq_epu64 (a, b);
00498 }
00500 SSP_FORCEINLINE __m128i ssp_comfalse_epu64_SSE5(__m128i a, __m128i b)
00501 {
00502 return _mm_comfalse_epu64 (a, b);
00503 }
00505 SSP_FORCEINLINE __m128i ssp_comtrue_epu64_SSE5(__m128i a, __m128i b)
00506 {
00507 return _mm_comtrue_epu64 (a, b);
00508 }
00510 SSP_FORCEINLINE __m128i ssp_comlt_epi8_SSE5(__m128i a, __m128i b)
00511 {
00512 return _mm_comlt_epi8 (a, b);
00513 }
00515 SSP_FORCEINLINE __m128i ssp_comle_epi8_SSE5(__m128i a, __m128i b)
00516 {
00517 return _mm_comle_epi8 (a, b);
00518 }
00520 SSP_FORCEINLINE __m128i ssp_comgt_epi8_SSE5(__m128i a, __m128i b)
00521 {
00522 return _mm_comgt_epi8 (a, b);
00523 }
00525 SSP_FORCEINLINE __m128i ssp_comge_epi8_SSE5(__m128i a, __m128i b)
00526 {
00527 return _mm_comge_epi8 (a, b);
00528 }
00530 SSP_FORCEINLINE __m128i ssp_comeq_epi8_SSE5(__m128i a, __m128i b)
00531 {
00532 return _mm_comeq_epi8 (a, b);
00533 }
00535 SSP_FORCEINLINE __m128i ssp_comneq_epi8_SSE5(__m128i a, __m128i b)
00536 {
00537 return _mm_comneq_epi8 (a, b);
00538 }
00540 SSP_FORCEINLINE __m128i ssp_comfalse_epi8_SSE5(__m128i a, __m128i b)
00541 {
00542 return _mm_comfalse_epi8 (a, b);
00543 }
00545 SSP_FORCEINLINE __m128i ssp_comtrue_epi8_SSE5(__m128i a, __m128i b)
00546 {
00547 return _mm_comtrue_epi8 (a, b);
00548 }
00550 SSP_FORCEINLINE __m128i ssp_comlt_epi16_SSE5(__m128i a, __m128i b)
00551 {
00552 return _mm_comlt_epi16 (a, b);
00553 }
00555 SSP_FORCEINLINE __m128i ssp_comle_epi16_SSE5(__m128i a, __m128i b)
00556 {
00557 return _mm_comle_epi16 (a, b);
00558 }
00560 SSP_FORCEINLINE __m128i ssp_comgt_epi16_SSE5(__m128i a, __m128i b)
00561 {
00562 return _mm_comgt_epi16 (a, b);
00563 }
00565 SSP_FORCEINLINE __m128i ssp_comge_epi16_SSE5(__m128i a, __m128i b)
00566 {
00567 return _mm_comge_epi16 (a, b);
00568 }
00570 SSP_FORCEINLINE __m128i ssp_comeq_epi16_SSE5(__m128i a, __m128i b)
00571 {
00572 return _mm_comeq_epi16 (a, b);
00573 }
00575 SSP_FORCEINLINE __m128i ssp_comneq_epi16_SSE5(__m128i a, __m128i b)
00576 {
00577 return _mm_comneq_epi16 (a, b);
00578 }
00580 SSP_FORCEINLINE __m128i ssp_comfalse_epi16_SSE5(__m128i a, __m128i b)
00581 {
00582 return _mm_comfalse_epi16 (a, b);
00583 }
00585 SSP_FORCEINLINE __m128i ssp_comtrue_epi16_SSE5(__m128i a, __m128i b)
00586 {
00587 return _mm_comtrue_epi16 (a, b);
00588 }
00590 SSP_FORCEINLINE __m128i ssp_comlt_epi32_SSE5(__m128i a, __m128i b)
00591 {
00592 return _mm_comlt_epi32 (a, b);
00593 }
00595 SSP_FORCEINLINE __m128i ssp_comle_epi32_SSE5(__m128i a, __m128i b)
00596 {
00597 return _mm_comle_epi32 (a, b);
00598 }
00600 SSP_FORCEINLINE __m128i ssp_comgt_epi32_SSE5(__m128i a, __m128i b)
00601 {
00602 return _mm_comgt_epi32 (a, b);
00603 }
00605 SSP_FORCEINLINE __m128i ssp_comge_epi32_SSE5(__m128i a, __m128i b)
00606 {
00607 return _mm_comge_epi32 (a, b);
00608 }
00610 SSP_FORCEINLINE __m128i ssp_comeq_epi32_SSE5(__m128i a, __m128i b)
00611 {
00612 return _mm_comeq_epi32 (a, b);
00613 }
00615 SSP_FORCEINLINE __m128i ssp_comneq_epi32_SSE5(__m128i a, __m128i b)
00616 {
00617 return _mm_comneq_epi32 (a, b);
00618 }
00620 SSP_FORCEINLINE __m128i ssp_comfalse_epi32_SSE5(__m128i a, __m128i b)
00621 {
00622 return _mm_comfalse_epi32 (a, b);
00623 }
00625 SSP_FORCEINLINE __m128i ssp_comtrue_epi32_SSE5(__m128i a, __m128i b)
00626 {
00627 return _mm_comtrue_epi32 (a, b);
00628 }
00630 SSP_FORCEINLINE __m128i ssp_comlt_epi64_SSE5(__m128i a, __m128i b)
00631 {
00632 return _mm_comlt_epi64 (a, b);
00633 }
00635 SSP_FORCEINLINE __m128i ssp_comle_epi64_SSE5(__m128i a, __m128i b)
00636 {
00637 return _mm_comle_epi64 (a, b);
00638 }
00640 SSP_FORCEINLINE __m128i ssp_comgt_epi64_SSE5(__m128i a, __m128i b)
00641 {
00642 return _mm_comgt_epi64 (a, b);
00643 }
00645 SSP_FORCEINLINE __m128i ssp_comge_epi64_SSE5(__m128i a, __m128i b)
00646 {
00647 return _mm_comge_epi64 (a, b);
00648 }
00650 SSP_FORCEINLINE __m128i ssp_comeq_epi64_SSE5(__m128i a, __m128i b)
00651 {
00652 return _mm_comeq_epi64 (a, b);
00653 }
00655 SSP_FORCEINLINE __m128i ssp_comneq_epi64_SSE5(__m128i a, __m128i b)
00656 {
00657 return _mm_comneq_epi64 (a, b);
00658 }
00660 SSP_FORCEINLINE __m128i ssp_comfalse_epi64_SSE5(__m128i a, __m128i b)
00661 {
00662 return _mm_comfalse_epi64 (a, b);
00663 }
00665 SSP_FORCEINLINE __m128i ssp_comtrue_epi64_SSE5(__m128i a, __m128i b)
00666 {
00667 return _mm_comtrue_epi64 (a, b);
00668 }
00669
00671 SSP_FORCEINLINE __m128 ssp_frcz_ps_SSE5(__m128 a)
00672 {
00673 return _mm_frcz_ps (a);
00674 }
00676 SSP_FORCEINLINE __m128d ssp_frcz_pd_SSE5(__m128d a)
00677 {
00678 return _mm_frcz_pd (a);
00679 }
00680
00682 SSP_FORCEINLINE __m128 ssp_frcz_ss_SSE5(__m128 a, __m128 b)
00683 {
00684 return _mm_frcz_ss (a, b);
00685 }
00686
00688 SSP_FORCEINLINE __m128d ssp_frcz_sd_SSE5(__m128d a, __m128d b)
00689 {
00690 return _mm_frcz_sd (a, b);
00691 }
00693 SSP_FORCEINLINE __m128i ssp_haddw_epi8_SSE5(__m128i a)
00694 {
00695 return _mm_haddw_epi8 (a);
00696 }
00698 SSP_FORCEINLINE __m128i ssp_haddd_epi8_SSE5(__m128i a)
00699 {
00700 return _mm_haddd_epi8 (a);
00701 }
00703 SSP_FORCEINLINE __m128i ssp_haddq_epi8_SSE5(__m128i a)
00704 {
00705 return _mm_haddq_epi8 (a);
00706 }
00708 SSP_FORCEINLINE __m128i ssp_haddd_epi16_SSE5(__m128i a)
00709 {
00710 return _mm_haddd_epi16 (a);
00711 }
00713 SSP_FORCEINLINE __m128i ssp_haddq_epi16_SSE5(__m128i a)
00714 {
00715 return _mm_haddq_epi16 (a);
00716 }
00718 SSP_FORCEINLINE __m128i ssp_haddq_epi32_SSE5(__m128i a)
00719 {
00720 return _mm_haddq_epi32 (a);
00721 }
00723 SSP_FORCEINLINE __m128i ssp_haddw_epu8_SSE5(__m128i a)
00724 {
00725 return _mm_haddw_epu8 (a);
00726 }
00728 SSP_FORCEINLINE __m128i ssp_haddd_epu8_SSE5(__m128i a)
00729 {
00730 return _mm_haddd_epu8 (a);
00731 }
00733 SSP_FORCEINLINE __m128i ssp_haddq_epu8_SSE5(__m128i a)
00734 {
00735 return _mm_haddq_epu8 (a);
00736 }
00738 SSP_FORCEINLINE __m128i ssp_haddd_epu16_SSE5(__m128i a)
00739 {
00740 return _mm_haddd_epu16 (a);
00741 }
00743 SSP_FORCEINLINE __m128i ssp_haddq_epu16_SSE5(__m128i a)
00744 {
00745 return _mm_haddq_epu16 (a);
00746 }
00748 SSP_FORCEINLINE __m128i ssp_haddq_epu32_SSE5(__m128i a)
00749 {
00750 return _mm_haddq_epu32 (a);
00751 }
00753 SSP_FORCEINLINE __m128i ssp_hsubw_epi8_SSE5(__m128i a)
00754 {
00755 return _mm_hsubw_epi8 (a);
00756 }
00758 SSP_FORCEINLINE __m128i ssp_hsubd_epi16_SSE5(__m128i a)
00759 {
00760 return _mm_hsubd_epi16 (a);
00761 }
00763 SSP_FORCEINLINE __m128i ssp_hsubq_epi32_SSE5(__m128i a)
00764 {
00765 return _mm_hsubq_epi32 (a);
00766 }
00767
00769 SSP_FORCEINLINE __m128i ssp_macc_epi16_SSE5(__m128i a, __m128i b, __m128i c)
00770 {
00771 return _mm_macc_epi16 (a, b, c);
00772 }
00774 SSP_FORCEINLINE __m128i ssp_macc_epi32_SSE5(__m128i a, __m128i b, __m128i c)
00775 {
00776 return _mm_macc_epi32 (a, b, c);
00777 }
00779 SSP_FORCEINLINE __m128d ssp_macc_pd_SSE5(__m128d a, __m128d b, __m128d c)
00780 {
00781 return _mm_macc_pd(a, b, c);
00782 }
00784 SSP_FORCEINLINE __m128 ssp_macc_ps_SSE5(__m128 a, __m128 b, __m128 c)
00785 {
00786 return _mm_macc_ps( a, b, c);
00787 }
00789 SSP_FORCEINLINE __m128d ssp_macc_sd_SSE5(__m128d a, __m128d b, __m128d c)
00790 {
00791 return _mm_macc_sd (a, b, c);
00792 }
00794 SSP_FORCEINLINE __m128 ssp_macc_ss_SSE5(__m128 a, __m128 b, __m128 c)
00795 {
00796 return _mm_macc_ss(a, b, c);
00797 }
00798
00800 SSP_FORCEINLINE __m128i ssp_maccd_epi16_SSE5(__m128i a, __m128i b, __m128i c)
00801 {
00802 return _mm_maccd_epi16 (a, b, c);
00803 }
00804
00806 SSP_FORCEINLINE __m128i ssp_maccs_epi16_SSE5(__m128i a, __m128i b, __m128i c)
00807 {
00808 return _mm_maccs_epi16 (a,b, c);
00809 }
00811 SSP_FORCEINLINE __m128i ssp_maccs_epi32_SSE5(__m128i a, __m128i b, __m128i c)
00812 {
00813 return _mm_maccs_epi32 (a, b, c);
00814 }
00816 SSP_FORCEINLINE __m128i ssp_maccsd_epi16_SSE5(__m128i a, __m128i b, __m128i c)
00817 {
00818 return _mm_maccsd_epi16 (a, b, c);
00819 }
00821 SSP_FORCEINLINE __m128i ssp_maccslo_epi32_SSE5(__m128i a, __m128i b, __m128i c)
00822 {
00823 return _mm_maccslo_epi32 (a, b, c);
00824 }
00826 SSP_FORCEINLINE __m128i ssp_macclo_epi32_SSE5(__m128i a, __m128i b, __m128i c)
00827 {
00828 return _mm_macclo_epi32 (a, b, c);
00829 }
00831 SSP_FORCEINLINE __m128i ssp_maccshi_epi32_SSE5(__m128i a, __m128i b, __m128i c)
00832 {
00833 return _mm_maccshi_epi32 (a, b, c);
00834 }
00836 SSP_FORCEINLINE __m128i ssp_macchi_epi32_SSE5(__m128i a, __m128i b, __m128i c)
00837 {
00838 return _mm_macchi_epi32 (a, b, c);
00839 }
00840
00842 SSP_FORCEINLINE __m128i ssp_maddsd_epi16_SSE5(__m128i a, __m128i b, __m128i c)
00843 {
00844 return _mm_maddsd_epi16 (a,b,c);
00845 }
00847 SSP_FORCEINLINE __m128i ssp_maddd_epi16_SSE5(__m128i a, __m128i b, __m128i c)
00848 {
00849 return _mm_maddd_epi16 (a,b,c);
00850 }
00851
00853 SSP_FORCEINLINE __m128d ssp_msub_pd_SSE5 (__m128d a, __m128d b, __m128d c)
00854 {
00855 return _mm_msub_pd (a, b, c);
00856 }
00858 SSP_FORCEINLINE __m128 ssp_msub_ps_SSE5 (__m128 a, __m128 b, __m128 c)
00859 {
00860 return _mm_msub_ps (a, b, c);
00861 }
00863 SSP_FORCEINLINE __m128d ssp_msub_sd_SSE5 (__m128d a, __m128d b, __m128d c)
00864 {
00865 return _mm_msub_sd (a, b, c);
00866 }
00868 SSP_FORCEINLINE __m128 ssp_msub_ss_SSE5 (__m128 a, __m128 b, __m128 c)
00869 {
00870 return _mm_msub_ss (a, b, c);
00871 }
00872
00874 SSP_FORCEINLINE __m128d ssp_nmacc_pd_SSE5(__m128d a, __m128d b, __m128d c)
00875 {
00876 return _mm_nmacc_pd (a, b, c);
00877 }
00879 SSP_FORCEINLINE __m128 ssp_nmacc_ps_SSE5(__m128 a, __m128 b, __m128 c)
00880 {
00881 return _mm_nmacc_ps (a, b, c);
00882 }
00884 SSP_FORCEINLINE __m128d ssp_nmacc_sd_SSE5(__m128d a, __m128d b, __m128d c)
00885 {
00886 return _mm_nmacc_sd (a, b, c);
00887 }
00889 SSP_FORCEINLINE __m128 ssp_nmacc_ss_SSE5(__m128 a, __m128 b, __m128 c)
00890 {
00891 return _mm_nmacc_ss (a, b, c);
00892 }
00894 SSP_FORCEINLINE __m128d ssp_nmsub_pd_SSE5(__m128d a, __m128d b, __m128d c)
00895 {
00896 return _mm_nmsub_pd (a, b, c);
00897 }
00899 SSP_FORCEINLINE __m128 ssp_nmsub_ps_SSE5(__m128 a, __m128 b, __m128 c)
00900 {
00901 return _mm_nmsub_ps (a, b, c);
00902 }
00904 SSP_FORCEINLINE __m128d ssp_nmsub_sd_SSE5(__m128d a, __m128d b, __m128d c)
00905 {
00906 return _mm_nmsub_sd (a, b, c);
00907 }
00909 SSP_FORCEINLINE __m128 ssp_nmsub_ss_SSE5(__m128 a, __m128 b, __m128 c)
00910 {
00911 return _mm_nmsub_ss (a, b, c);
00912 }
00913
00915 SSP_FORCEINLINE __m128i ssp_perm_epi8_SSE5(__m128i a, __m128i b, __m128i c)
00916 {
00917 return _mm_perm_epi8 (a, b, c);
00918 }
00920 SSP_FORCEINLINE __m128 ssp_perm_ps_SSE5(__m128 a, __m128 b, __m128i c)
00921 {
00922 return _mm_perm_ps (a, b, c);
00923 }
00925 SSP_FORCEINLINE __m128d ssp_perm_pd_SSE5(__m128d a, __m128d b, __m128i c)
00926 {
00927 return _mm_perm_pd (a, b, c);
00928 }
00929
00931 SSP_FORCEINLINE __m128i ssp_rot_epi8_SSE5(__m128i a, __m128i b )
00932 {
00933 return _mm_rot_epi8 (a, b);
00934 }
00936 SSP_FORCEINLINE __m128i ssp_rot_epi16_SSE5(__m128i a, __m128i b )
00937 {
00938 return _mm_rot_epi16 (a, b);
00939 }
00941 SSP_FORCEINLINE __m128i ssp_rot_epi32_SSE5(__m128i a, __m128i b )
00942 {
00943 return _mm_rot_epi32 (a, b);
00944 }
00946 SSP_FORCEINLINE __m128i ssp_rot_epi64_SSE5(__m128i a, __m128i b )
00947 {
00948 return _mm_rot_epi64 (a, b);
00949 }
00951 SSP_FORCEINLINE __m128i ssp_roti_epi8_SSE5(__m128i a, const int b)
00952 {
00953 return _mm_roti_epi8 (a, b);
00954 }
00956 SSP_FORCEINLINE __m128i ssp_roti_epi16_SSE5(__m128i a, const int b)
00957 {
00958 return _mm_roti_epi16 (a, b);
00959 }
00961 SSP_FORCEINLINE __m128i ssp_roti_epi32_SSE5(__m128i a, const int b)
00962 {
00963 return _mm_roti_epi32 (a, b);
00964 }
00966 SSP_FORCEINLINE __m128i ssp_roti_epi64_SSE5(__m128i a, const int b)
00967 {
00968 return _mm_roti_epi64 (a, b);
00969 }
00970
00972 SSP_FORCEINLINE __m128i ssp_shl_epi8_SSE5(__m128i a, __m128i b)
00973 {
00974 return _mm_shl_epi8 (a, b);
00975 }
00977 SSP_FORCEINLINE __m128i ssp_shl_epi16_SSE5(__m128i a, __m128i b)
00978 {
00979 return _mm_shl_epi16 (a, b);
00980 }
00982 SSP_FORCEINLINE __m128i ssp_shl_epi32_SSE5(__m128i a, __m128i b)
00983 {
00984 return _mm_shl_epi32 (a, b);
00985 }
00987 SSP_FORCEINLINE __m128i ssp_shl_epi64_SSE5(__m128i a, __m128i b)
00988 {
00989 return _mm_shl_epi64 (a, b);
00990 }
00992 SSP_FORCEINLINE __m128i ssp_sha_epi8_SSE5(__m128i a, __m128i b)
00993 {
00994 return _mm_sha_epi8 (a, b);
00995 }
00997 SSP_FORCEINLINE __m128i ssp_sha_epi16_SSE5(__m128i a, __m128i b)
00998 {
00999 return _mm_sha_epi16 (a, b);
01000 }
01002 SSP_FORCEINLINE __m128i ssp_sha_epi32_SSE5(__m128i a, __m128i b)
01003 {
01004 return _mm_sha_epi32 (a, b);
01005 }
01007 SSP_FORCEINLINE __m128i ssp_sha_epi64_SSE5(__m128i a, __m128i b)
01008 {
01009 return _mm_sha_epi64 (a, b);
01010 }
01011
01012
01013
01014
01015
01017 SSP_FORCEINLINE int ssp_testz_si128_SSE5(__m128i mask, __m128i a)
01018 {
01019 return _mm_testz_si128( mask, a);
01020 }
01022 SSP_FORCEINLINE int ssp_testc_si128_SSE5(__m128i mask, __m128i a)
01023 {
01024 return _mm_testc_si128( mask, a);
01025 }
01027 SSP_FORCEINLINE int ssp_testnzc_si128_SSE5(__m128i mask, __m128i b)
01028 {
01029 return _mm_testnzc_si128( mask, b);
01030 }
01032 SSP_FORCEINLINE __m128d ssp_round_pd_SSE5(__m128d a, int iRoundMode)
01033 { switch( iRoundMode & 0xF )
01034 {
01035 CASE_16( _mm_round_pd, a );
01036 }
01037 }
01039 SSP_FORCEINLINE __m128d ssp_round_sd_SSE5(__m128d dst, __m128d a, int iRoundMode)
01040 {
01041 switch( iRoundMode & 0xF )
01042 {
01043 CASE_16( _mm_round_sd, dst, a );
01044 }
01045 }
01047 SSP_FORCEINLINE __m128 ssp_round_ps_SSE5(__m128 a, int iRoundMode)
01048 {
01049 switch( iRoundMode & 0xF )
01050 {
01051 CASE_16( _mm_round_ps, a );
01052 }
01053 }
01055 SSP_FORCEINLINE __m128 ssp_round_ss_SSE5(__m128 dst, __m128 a, int iRoundMode)
01056 {
01057 switch( iRoundMode & 0xF )
01058 {
01059 CASE_16( _mm_round_ss, dst, a );
01060 }
01061 }
01062
01064
01065
01066 #endif // __SSEPLUS_NATIVE_SSE5_H__