1 /* APPLE LOCAL file mainline 2005-06-30 Radar 4131077 */ 2 /* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 3 Free Software Foundation, Inc. 4 5 This file is part of GCC. 6 7 GCC is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 2, or (at your option) 10 any later version. 11 12 GCC is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GCC; see the file COPYING. If not, write to 19 the Free Software Foundation, 51 Franklin Street, Fifth Floor, 20 Boston, MA 02110-1301, USA. */ 21 22 /* As a special exception, if you include this header file into source 23 files compiled by GCC, this header file does not by itself cause 24 the resulting executable to be covered by the GNU General Public 25 License. This exception does not however invalidate any other 26 reasons why the executable file might be covered by the GNU General 27 Public License. */ 28 29 /* Implemented from the specification included in the Intel C++ Compiler 30 User Guide and Reference, version 9.0. */ 31 32 #ifndef _MMINTRIN_H_INCLUDED 33 #define _MMINTRIN_H_INCLUDED 34 35 #ifndef __MMX__ 36 # error "MMX instruction set not enabled" 37 #else 38 /* The Intel API is flexible enough that we must allow aliasing with other 39 vector types, and their scalar components. */ 40 /* APPLE LOCAL 4505813 */ 41 typedef long long __m64 __attribute__ ((__vector_size__ (8), __may_alias__)); 42 43 /* Internal data types for implementing the intrinsics. */ 44 typedef int __v2si __attribute__ ((__vector_size__ (8))); 45 typedef short __v4hi __attribute__ ((__vector_size__ (8))); 46 typedef char __v8qi __attribute__ ((__vector_size__ (8))); 47 48 /* APPLE LOCAL begin nodebug inline 4152603 */ 49 #define __always_inline__ __always_inline__, __nodebug__ 50 /* APPLE LOCAL end nodebug inline 4152603 */ 51 52 /* APPLE LOCAL begin radar 5618945 */ 53 #undef __STATIC_INLINE 54 #ifdef __GNUC_STDC_INLINE__ 55 #define __STATIC_INLINE __inline 56 #else 57 #define __STATIC_INLINE static __inline 58 #endif 59 /* APPLE LOCAL end radar 5618945 */ 60 61 /* Empty the multimedia state. */ 62 /* APPLE LOCAL begin radar 4152603 */ 63 /* APPLE LOCAL begin radar 5618945 */ 64 __STATIC_INLINE void __attribute__((__always_inline__)) 65 /* APPLE LOCAL end radar 5618945 */ 66 _mm_empty (void) 67 { 68 __builtin_ia32_emms (); 69 } 70 71 /* APPLE LOCAL begin radar 5618945 */ 72 __STATIC_INLINE void __attribute__((__always_inline__)) 73 /* APPLE LOCAL end radar 5618945 */ 74 _m_empty (void) 75 { 76 _mm_empty (); 77 } 78 79 /* Convert I to a __m64 object. The integer is zero-extended to 64-bits. */ 80 /* APPLE LOCAL begin radar 5618945 */ 81 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 82 /* APPLE LOCAL end radar 5618945 */ 83 _mm_cvtsi32_si64 (int __i) 84 { 85 return (__m64) __builtin_ia32_vec_init_v2si (__i, 0); 86 } 87 88 /* APPLE LOCAL begin radar 5618945 */ 89 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 90 /* APPLE LOCAL end radar 5618945 */ 91 _m_from_int (int __i) 92 { 93 return _mm_cvtsi32_si64 (__i); 94 } 95 96 #ifdef __x86_64__ 97 /* Convert I to a __m64 object. */ 98 99 /* Intel intrinsic. */ 100 /* APPLE LOCAL begin radar 5618945 */ 101 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 102 /* APPLE LOCAL end radar 5618945 */ 103 _m_from_int64 (long long __i) 104 { 105 return (__m64) __i; 106 } 107 108 /* APPLE LOCAL begin radar 5618945 */ 109 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 110 /* APPLE LOCAL end radar 5618945 */ 111 _mm_cvtsi64_m64 (long long __i) 112 { 113 return (__m64) __i; 114 } 115 116 /* Microsoft intrinsic. */ 117 /* APPLE LOCAL begin radar 5618945 */ 118 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 119 /* APPLE LOCAL end radar 5618945 */ 120 _mm_cvtsi64x_si64 (long long __i) 121 { 122 return (__m64) __i; 123 } 124 125 /* APPLE LOCAL begin radar 5618945 */ 126 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 127 /* APPLE LOCAL end radar 5618945 */ 128 _mm_set_pi64x (long long __i) 129 { 130 return (__m64) __i; 131 } 132 #endif 133 134 /* Convert the lower 32 bits of the __m64 object into an integer. */ 135 /* APPLE LOCAL begin radar 5618945 */ 136 __STATIC_INLINE int __attribute__((__always_inline__)) 137 /* APPLE LOCAL end radar 5618945 */ 138 _mm_cvtsi64_si32 (__m64 __i) 139 { 140 return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0); 141 } 142 143 /* APPLE LOCAL begin radar 5618945 */ 144 __STATIC_INLINE int __attribute__((__always_inline__)) 145 /* APPLE LOCAL end radar 5618945 */ 146 _m_to_int (__m64 __i) 147 { 148 return _mm_cvtsi64_si32 (__i); 149 } 150 151 #ifdef __x86_64__ 152 /* Convert the __m64 object to a 64bit integer. */ 153 154 /* Intel intrinsic. */ 155 /* APPLE LOCAL begin radar 5618945 */ 156 __STATIC_INLINE long long __attribute__((__always_inline__)) 157 /* APPLE LOCAL end radar 5618945 */ 158 _m_to_int64 (__m64 __i) 159 { 160 return (long long)__i; 161 } 162 163 /* APPLE LOCAL begin radar 5618945 */ 164 __STATIC_INLINE long long __attribute__((__always_inline__)) 165 /* APPLE LOCAL end radar 5618945 */ 166 _mm_cvtm64_si64 (__m64 __i) 167 { 168 return (long long)__i; 169 } 170 171 /* Microsoft intrinsic. */ 172 /* APPLE LOCAL begin radar 5618945 */ 173 __STATIC_INLINE long long __attribute__((__always_inline__)) 174 /* APPLE LOCAL end radar 5618945 */ 175 _mm_cvtsi64_si64x (__m64 __i) 176 { 177 return (long long)__i; 178 } 179 #endif 180 181 /* Pack the four 16-bit values from M1 into the lower four 8-bit values of 182 the result, and the four 16-bit values from M2 into the upper four 8-bit 183 values of the result, all with signed saturation. */ 184 /* APPLE LOCAL begin radar 5618945 */ 185 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 186 /* APPLE LOCAL end radar 5618945 */ 187 _mm_packs_pi16 (__m64 __m1, __m64 __m2) 188 { 189 return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2); 190 } 191 192 /* APPLE LOCAL begin radar 5618945 */ 193 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 194 /* APPLE LOCAL end radar 5618945 */ 195 _m_packsswb (__m64 __m1, __m64 __m2) 196 { 197 return _mm_packs_pi16 (__m1, __m2); 198 } 199 200 /* Pack the two 32-bit values from M1 in to the lower two 16-bit values of 201 the result, and the two 32-bit values from M2 into the upper two 16-bit 202 values of the result, all with signed saturation. */ 203 /* APPLE LOCAL begin radar 5618945 */ 204 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 205 /* APPLE LOCAL end radar 5618945 */ 206 _mm_packs_pi32 (__m64 __m1, __m64 __m2) 207 { 208 return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2); 209 } 210 211 /* APPLE LOCAL begin radar 5618945 */ 212 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 213 /* APPLE LOCAL end radar 5618945 */ 214 _m_packssdw (__m64 __m1, __m64 __m2) 215 { 216 return _mm_packs_pi32 (__m1, __m2); 217 } 218 219 /* Pack the four 16-bit values from M1 into the lower four 8-bit values of 220 the result, and the four 16-bit values from M2 into the upper four 8-bit 221 values of the result, all with unsigned saturation. */ 222 /* APPLE LOCAL begin radar 5618945 */ 223 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 224 /* APPLE LOCAL end radar 5618945 */ 225 _mm_packs_pu16 (__m64 __m1, __m64 __m2) 226 { 227 return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2); 228 } 229 230 /* APPLE LOCAL begin radar 5618945 */ 231 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 232 /* APPLE LOCAL end radar 5618945 */ 233 _m_packuswb (__m64 __m1, __m64 __m2) 234 { 235 return _mm_packs_pu16 (__m1, __m2); 236 } 237 238 /* Interleave the four 8-bit values from the high half of M1 with the four 239 8-bit values from the high half of M2. */ 240 /* APPLE LOCAL begin radar 5618945 */ 241 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 242 /* APPLE LOCAL end radar 5618945 */ 243 _mm_unpackhi_pi8 (__m64 __m1, __m64 __m2) 244 { 245 return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2); 246 } 247 248 /* APPLE LOCAL begin radar 5618945 */ 249 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 250 /* APPLE LOCAL end radar 5618945 */ 251 _m_punpckhbw (__m64 __m1, __m64 __m2) 252 { 253 return _mm_unpackhi_pi8 (__m1, __m2); 254 } 255 256 /* Interleave the two 16-bit values from the high half of M1 with the two 257 16-bit values from the high half of M2. */ 258 /* APPLE LOCAL begin radar 5618945 */ 259 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 260 /* APPLE LOCAL end radar 5618945 */ 261 _mm_unpackhi_pi16 (__m64 __m1, __m64 __m2) 262 { 263 return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2); 264 } 265 266 /* APPLE LOCAL begin radar 5618945 */ 267 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 268 /* APPLE LOCAL end radar 5618945 */ 269 _m_punpckhwd (__m64 __m1, __m64 __m2) 270 { 271 return _mm_unpackhi_pi16 (__m1, __m2); 272 } 273 274 /* Interleave the 32-bit value from the high half of M1 with the 32-bit 275 value from the high half of M2. */ 276 /* APPLE LOCAL begin radar 5618945 */ 277 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 278 /* APPLE LOCAL end radar 5618945 */ 279 _mm_unpackhi_pi32 (__m64 __m1, __m64 __m2) 280 { 281 return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2); 282 } 283 284 /* APPLE LOCAL begin radar 5618945 */ 285 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 286 /* APPLE LOCAL end radar 5618945 */ 287 _m_punpckhdq (__m64 __m1, __m64 __m2) 288 { 289 return _mm_unpackhi_pi32 (__m1, __m2); 290 } 291 292 /* Interleave the four 8-bit values from the low half of M1 with the four 293 8-bit values from the low half of M2. */ 294 /* APPLE LOCAL begin radar 5618945 */ 295 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 296 /* APPLE LOCAL end radar 5618945 */ 297 _mm_unpacklo_pi8 (__m64 __m1, __m64 __m2) 298 { 299 return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2); 300 } 301 302 /* APPLE LOCAL begin radar 5618945 */ 303 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 304 /* APPLE LOCAL end radar 5618945 */ 305 _m_punpcklbw (__m64 __m1, __m64 __m2) 306 { 307 return _mm_unpacklo_pi8 (__m1, __m2); 308 } 309 310 /* Interleave the two 16-bit values from the low half of M1 with the two 311 16-bit values from the low half of M2. */ 312 /* APPLE LOCAL begin radar 5618945 */ 313 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 314 /* APPLE LOCAL end radar 5618945 */ 315 _mm_unpacklo_pi16 (__m64 __m1, __m64 __m2) 316 { 317 return (__m64) __builtin_ia32_punpcklwd ((__v4hi)__m1, (__v4hi)__m2); 318 } 319 320 /* APPLE LOCAL begin radar 5618945 */ 321 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 322 /* APPLE LOCAL end radar 5618945 */ 323 _m_punpcklwd (__m64 __m1, __m64 __m2) 324 { 325 return _mm_unpacklo_pi16 (__m1, __m2); 326 } 327 328 /* Interleave the 32-bit value from the low half of M1 with the 32-bit 329 value from the low half of M2. */ 330 /* APPLE LOCAL begin radar 5618945 */ 331 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 332 /* APPLE LOCAL end radar 5618945 */ 333 _mm_unpacklo_pi32 (__m64 __m1, __m64 __m2) 334 { 335 return (__m64) __builtin_ia32_punpckldq ((__v2si)__m1, (__v2si)__m2); 336 } 337 338 /* APPLE LOCAL begin radar 5618945 */ 339 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 340 /* APPLE LOCAL end radar 5618945 */ 341 _m_punpckldq (__m64 __m1, __m64 __m2) 342 { 343 return _mm_unpacklo_pi32 (__m1, __m2); 344 } 345 346 /* Add the 8-bit values in M1 to the 8-bit values in M2. */ 347 /* APPLE LOCAL begin radar 5618945 */ 348 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 349 /* APPLE LOCAL end radar 5618945 */ 350 _mm_add_pi8 (__m64 __m1, __m64 __m2) 351 { 352 return (__m64) __builtin_ia32_paddb ((__v8qi)__m1, (__v8qi)__m2); 353 } 354 355 /* APPLE LOCAL begin radar 5618945 */ 356 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 357 /* APPLE LOCAL end radar 5618945 */ 358 _m_paddb (__m64 __m1, __m64 __m2) 359 { 360 return _mm_add_pi8 (__m1, __m2); 361 } 362 363 /* Add the 16-bit values in M1 to the 16-bit values in M2. */ 364 /* APPLE LOCAL begin radar 5618945 */ 365 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 366 /* APPLE LOCAL end radar 5618945 */ 367 _mm_add_pi16 (__m64 __m1, __m64 __m2) 368 { 369 return (__m64) __builtin_ia32_paddw ((__v4hi)__m1, (__v4hi)__m2); 370 } 371 372 /* APPLE LOCAL begin radar 5618945 */ 373 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 374 /* APPLE LOCAL end radar 5618945 */ 375 _m_paddw (__m64 __m1, __m64 __m2) 376 { 377 return _mm_add_pi16 (__m1, __m2); 378 } 379 380 /* Add the 32-bit values in M1 to the 32-bit values in M2. */ 381 /* APPLE LOCAL begin radar 5618945 */ 382 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 383 /* APPLE LOCAL end radar 5618945 */ 384 _mm_add_pi32 (__m64 __m1, __m64 __m2) 385 { 386 return (__m64) __builtin_ia32_paddd ((__v2si)__m1, (__v2si)__m2); 387 } 388 389 /* APPLE LOCAL begin radar 5618945 */ 390 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 391 /* APPLE LOCAL end radar 5618945 */ 392 _m_paddd (__m64 __m1, __m64 __m2) 393 { 394 return _mm_add_pi32 (__m1, __m2); 395 } 396 397 /* Add the 64-bit values in M1 to the 64-bit values in M2. */ 398 #ifdef __SSE2__ 399 /* APPLE LOCAL begin radar 5618945 */ 400 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 401 /* APPLE LOCAL end radar 5618945 */ 402 _mm_add_si64 (__m64 __m1, __m64 __m2) 403 { 404 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 405 return (__m64) __builtin_ia32_paddq (__m1, __m2); 406 } 407 #endif 408 409 /* Add the 8-bit values in M1 to the 8-bit values in M2 using signed 410 saturated arithmetic. */ 411 /* APPLE LOCAL begin radar 5618945 */ 412 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 413 /* APPLE LOCAL end radar 5618945 */ 414 _mm_adds_pi8 (__m64 __m1, __m64 __m2) 415 { 416 return (__m64) __builtin_ia32_paddsb ((__v8qi)__m1, (__v8qi)__m2); 417 } 418 419 /* APPLE LOCAL begin radar 5618945 */ 420 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 421 /* APPLE LOCAL end radar 5618945 */ 422 _m_paddsb (__m64 __m1, __m64 __m2) 423 { 424 return _mm_adds_pi8 (__m1, __m2); 425 } 426 427 /* Add the 16-bit values in M1 to the 16-bit values in M2 using signed 428 saturated arithmetic. */ 429 /* APPLE LOCAL begin radar 5618945 */ 430 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 431 /* APPLE LOCAL end radar 5618945 */ 432 _mm_adds_pi16 (__m64 __m1, __m64 __m2) 433 { 434 return (__m64) __builtin_ia32_paddsw ((__v4hi)__m1, (__v4hi)__m2); 435 } 436 437 /* APPLE LOCAL begin radar 5618945 */ 438 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 439 /* APPLE LOCAL end radar 5618945 */ 440 _m_paddsw (__m64 __m1, __m64 __m2) 441 { 442 return _mm_adds_pi16 (__m1, __m2); 443 } 444 445 /* Add the 8-bit values in M1 to the 8-bit values in M2 using unsigned 446 saturated arithmetic. */ 447 /* APPLE LOCAL begin radar 5618945 */ 448 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 449 /* APPLE LOCAL end radar 5618945 */ 450 _mm_adds_pu8 (__m64 __m1, __m64 __m2) 451 { 452 return (__m64) __builtin_ia32_paddusb ((__v8qi)__m1, (__v8qi)__m2); 453 } 454 455 /* APPLE LOCAL begin radar 5618945 */ 456 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 457 /* APPLE LOCAL end radar 5618945 */ 458 _m_paddusb (__m64 __m1, __m64 __m2) 459 { 460 return _mm_adds_pu8 (__m1, __m2); 461 } 462 463 /* Add the 16-bit values in M1 to the 16-bit values in M2 using unsigned 464 saturated arithmetic. */ 465 /* APPLE LOCAL begin radar 5618945 */ 466 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 467 /* APPLE LOCAL end radar 5618945 */ 468 _mm_adds_pu16 (__m64 __m1, __m64 __m2) 469 { 470 return (__m64) __builtin_ia32_paddusw ((__v4hi)__m1, (__v4hi)__m2); 471 } 472 473 /* APPLE LOCAL begin radar 5618945 */ 474 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 475 /* APPLE LOCAL end radar 5618945 */ 476 _m_paddusw (__m64 __m1, __m64 __m2) 477 { 478 return _mm_adds_pu16 (__m1, __m2); 479 } 480 481 /* Subtract the 8-bit values in M2 from the 8-bit values in M1. */ 482 /* APPLE LOCAL begin radar 5618945 */ 483 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 484 /* APPLE LOCAL end radar 5618945 */ 485 _mm_sub_pi8 (__m64 __m1, __m64 __m2) 486 { 487 return (__m64) __builtin_ia32_psubb ((__v8qi)__m1, (__v8qi)__m2); 488 } 489 490 /* APPLE LOCAL begin radar 5618945 */ 491 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 492 /* APPLE LOCAL end radar 5618945 */ 493 _m_psubb (__m64 __m1, __m64 __m2) 494 { 495 return _mm_sub_pi8 (__m1, __m2); 496 } 497 498 /* Subtract the 16-bit values in M2 from the 16-bit values in M1. */ 499 /* APPLE LOCAL begin radar 5618945 */ 500 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 501 /* APPLE LOCAL end radar 5618945 */ 502 _mm_sub_pi16 (__m64 __m1, __m64 __m2) 503 { 504 return (__m64) __builtin_ia32_psubw ((__v4hi)__m1, (__v4hi)__m2); 505 } 506 507 /* APPLE LOCAL begin radar 5618945 */ 508 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 509 /* APPLE LOCAL end radar 5618945 */ 510 _m_psubw (__m64 __m1, __m64 __m2) 511 { 512 return _mm_sub_pi16 (__m1, __m2); 513 } 514 515 /* Subtract the 32-bit values in M2 from the 32-bit values in M1. */ 516 /* APPLE LOCAL begin radar 5618945 */ 517 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 518 /* APPLE LOCAL end radar 5618945 */ 519 _mm_sub_pi32 (__m64 __m1, __m64 __m2) 520 { 521 return (__m64) __builtin_ia32_psubd ((__v2si)__m1, (__v2si)__m2); 522 } 523 524 /* APPLE LOCAL begin radar 5618945 */ 525 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 526 /* APPLE LOCAL end radar 5618945 */ 527 _m_psubd (__m64 __m1, __m64 __m2) 528 { 529 return _mm_sub_pi32 (__m1, __m2); 530 } 531 532 /* Add the 64-bit values in M1 to the 64-bit values in M2. */ 533 #ifdef __SSE2__ 534 /* APPLE LOCAL begin radar 5618945 */ 535 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 536 /* APPLE LOCAL end radar 5618945 */ 537 _mm_sub_si64 (__m64 __m1, __m64 __m2) 538 { 539 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 540 return (__m64) __builtin_ia32_psubq (__m1, __m2); 541 } 542 #endif 543 544 /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using signed 545 saturating arithmetic. */ 546 /* APPLE LOCAL begin radar 5618945 */ 547 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 548 /* APPLE LOCAL end radar 5618945 */ 549 _mm_subs_pi8 (__m64 __m1, __m64 __m2) 550 { 551 return (__m64) __builtin_ia32_psubsb ((__v8qi)__m1, (__v8qi)__m2); 552 } 553 554 /* APPLE LOCAL begin radar 5618945 */ 555 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 556 /* APPLE LOCAL end radar 5618945 */ 557 _m_psubsb (__m64 __m1, __m64 __m2) 558 { 559 return _mm_subs_pi8 (__m1, __m2); 560 } 561 562 /* Subtract the 16-bit values in M2 from the 16-bit values in M1 using 563 signed saturating arithmetic. */ 564 /* APPLE LOCAL begin radar 5618945 */ 565 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 566 /* APPLE LOCAL end radar 5618945 */ 567 _mm_subs_pi16 (__m64 __m1, __m64 __m2) 568 { 569 return (__m64) __builtin_ia32_psubsw ((__v4hi)__m1, (__v4hi)__m2); 570 } 571 572 /* APPLE LOCAL begin radar 5618945 */ 573 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 574 /* APPLE LOCAL end radar 5618945 */ 575 _m_psubsw (__m64 __m1, __m64 __m2) 576 { 577 return _mm_subs_pi16 (__m1, __m2); 578 } 579 580 /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using 581 unsigned saturating arithmetic. */ 582 /* APPLE LOCAL begin radar 5618945 */ 583 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 584 /* APPLE LOCAL end radar 5618945 */ 585 _mm_subs_pu8 (__m64 __m1, __m64 __m2) 586 { 587 return (__m64) __builtin_ia32_psubusb ((__v8qi)__m1, (__v8qi)__m2); 588 } 589 590 /* APPLE LOCAL begin radar 5618945 */ 591 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 592 /* APPLE LOCAL end radar 5618945 */ 593 _m_psubusb (__m64 __m1, __m64 __m2) 594 { 595 return _mm_subs_pu8 (__m1, __m2); 596 } 597 598 /* Subtract the 16-bit values in M2 from the 16-bit values in M1 using 599 unsigned saturating arithmetic. */ 600 /* APPLE LOCAL begin radar 5618945 */ 601 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 602 /* APPLE LOCAL end radar 5618945 */ 603 _mm_subs_pu16 (__m64 __m1, __m64 __m2) 604 { 605 return (__m64) __builtin_ia32_psubusw ((__v4hi)__m1, (__v4hi)__m2); 606 } 607 608 /* APPLE LOCAL begin radar 5618945 */ 609 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 610 /* APPLE LOCAL end radar 5618945 */ 611 _m_psubusw (__m64 __m1, __m64 __m2) 612 { 613 return _mm_subs_pu16 (__m1, __m2); 614 } 615 616 /* Multiply four 16-bit values in M1 by four 16-bit values in M2 producing 617 four 32-bit intermediate results, which are then summed by pairs to 618 produce two 32-bit results. */ 619 /* APPLE LOCAL begin radar 5618945 */ 620 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 621 /* APPLE LOCAL end radar 5618945 */ 622 _mm_madd_pi16 (__m64 __m1, __m64 __m2) 623 { 624 return (__m64) __builtin_ia32_pmaddwd ((__v4hi)__m1, (__v4hi)__m2); 625 } 626 627 /* APPLE LOCAL begin radar 5618945 */ 628 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 629 /* APPLE LOCAL end radar 5618945 */ 630 _m_pmaddwd (__m64 __m1, __m64 __m2) 631 { 632 return _mm_madd_pi16 (__m1, __m2); 633 } 634 635 /* Multiply four signed 16-bit values in M1 by four signed 16-bit values in 636 M2 and produce the high 16 bits of the 32-bit results. */ 637 /* APPLE LOCAL begin radar 5618945 */ 638 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 639 /* APPLE LOCAL end radar 5618945 */ 640 _mm_mulhi_pi16 (__m64 __m1, __m64 __m2) 641 { 642 return (__m64) __builtin_ia32_pmulhw ((__v4hi)__m1, (__v4hi)__m2); 643 } 644 645 /* APPLE LOCAL begin radar 5618945 */ 646 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 647 /* APPLE LOCAL end radar 5618945 */ 648 _m_pmulhw (__m64 __m1, __m64 __m2) 649 { 650 return _mm_mulhi_pi16 (__m1, __m2); 651 } 652 653 /* Multiply four 16-bit values in M1 by four 16-bit values in M2 and produce 654 the low 16 bits of the results. */ 655 /* APPLE LOCAL begin radar 5618945 */ 656 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 657 /* APPLE LOCAL end radar 5618945 */ 658 _mm_mullo_pi16 (__m64 __m1, __m64 __m2) 659 { 660 return (__m64) __builtin_ia32_pmullw ((__v4hi)__m1, (__v4hi)__m2); 661 } 662 663 /* APPLE LOCAL begin radar 5618945 */ 664 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 665 /* APPLE LOCAL end radar 5618945 */ 666 _m_pmullw (__m64 __m1, __m64 __m2) 667 { 668 return _mm_mullo_pi16 (__m1, __m2); 669 } 670 671 /* Shift four 16-bit values in M left by COUNT. */ 672 /* APPLE LOCAL begin radar 5618945 */ 673 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 674 /* APPLE LOCAL end radar 5618945 */ 675 _mm_sll_pi16 (__m64 __m, __m64 __count) 676 { 677 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 678 return (__m64) __builtin_ia32_psllw ((__v4hi)__m, __count); 679 } 680 681 /* APPLE LOCAL begin radar 5618945 */ 682 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 683 /* APPLE LOCAL end radar 5618945 */ 684 _m_psllw (__m64 __m, __m64 __count) 685 { 686 return _mm_sll_pi16 (__m, __count); 687 } 688 689 /* APPLE LOCAL begin radar 5618945 */ 690 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 691 /* APPLE LOCAL end radar 5618945 */ 692 _mm_slli_pi16 (__m64 __m, int __count) 693 { 694 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 695 return (__m64) __builtin_ia32_psllwi ((__v4hi)__m, __count); 696 } 697 698 /* APPLE LOCAL begin radar 5618945 */ 699 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 700 /* APPLE LOCAL end radar 5618945 */ 701 _m_psllwi (__m64 __m, int __count) 702 { 703 return _mm_slli_pi16 (__m, __count); 704 } 705 706 /* Shift two 32-bit values in M left by COUNT. */ 707 /* APPLE LOCAL begin radar 5618945 */ 708 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 709 /* APPLE LOCAL end radar 5618945 */ 710 _mm_sll_pi32 (__m64 __m, __m64 __count) 711 { 712 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 713 return (__m64) __builtin_ia32_pslld ((__v2si)__m, __count); 714 } 715 716 /* APPLE LOCAL begin radar 5618945 */ 717 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 718 /* APPLE LOCAL end radar 5618945 */ 719 _m_pslld (__m64 __m, __m64 __count) 720 { 721 return _mm_sll_pi32 (__m, __count); 722 } 723 724 /* APPLE LOCAL begin radar 5618945 */ 725 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 726 /* APPLE LOCAL end radar 5618945 */ 727 _mm_slli_pi32 (__m64 __m, int __count) 728 { 729 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 730 return (__m64) __builtin_ia32_pslldi ((__v2si)__m, __count); 731 } 732 733 /* APPLE LOCAL begin radar 5618945 */ 734 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 735 /* APPLE LOCAL end radar 5618945 */ 736 _m_pslldi (__m64 __m, int __count) 737 { 738 return _mm_slli_pi32 (__m, __count); 739 } 740 741 /* Shift the 64-bit value in M left by COUNT. */ 742 /* APPLE LOCAL begin radar 5618945 */ 743 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 744 /* APPLE LOCAL end radar 5618945 */ 745 _mm_sll_si64 (__m64 __m, __m64 __count) 746 { 747 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 748 return (__m64) __builtin_ia32_psllq (__m, __count); 749 } 750 751 /* APPLE LOCAL begin radar 5618945 */ 752 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 753 /* APPLE LOCAL end radar 5618945 */ 754 _m_psllq (__m64 __m, __m64 __count) 755 { 756 return _mm_sll_si64 (__m, __count); 757 } 758 759 /* APPLE LOCAL begin radar 5618945 */ 760 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 761 /* APPLE LOCAL end radar 5618945 */ 762 _mm_slli_si64 (__m64 __m, int __count) 763 { 764 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 765 return (__m64) __builtin_ia32_psllqi (__m, __count); 766 } 767 768 /* APPLE LOCAL begin radar 5618945 */ 769 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 770 /* APPLE LOCAL end radar 5618945 */ 771 _m_psllqi (__m64 __m, int __count) 772 { 773 return _mm_slli_si64 (__m, __count); 774 } 775 776 /* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */ 777 /* APPLE LOCAL begin radar 5618945 */ 778 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 779 /* APPLE LOCAL end radar 5618945 */ 780 _mm_sra_pi16 (__m64 __m, __m64 __count) 781 { 782 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 783 return (__m64) __builtin_ia32_psraw ((__v4hi)__m, __count); 784 } 785 786 /* APPLE LOCAL begin radar 5618945 */ 787 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 788 /* APPLE LOCAL end radar 5618945 */ 789 _m_psraw (__m64 __m, __m64 __count) 790 { 791 return _mm_sra_pi16 (__m, __count); 792 } 793 794 /* APPLE LOCAL begin radar 5618945 */ 795 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 796 /* APPLE LOCAL end radar 5618945 */ 797 _mm_srai_pi16 (__m64 __m, int __count) 798 { 799 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 800 return (__m64) __builtin_ia32_psrawi ((__v4hi)__m, __count); 801 } 802 803 /* APPLE LOCAL begin radar 5618945 */ 804 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 805 /* APPLE LOCAL end radar 5618945 */ 806 _m_psrawi (__m64 __m, int __count) 807 { 808 return _mm_srai_pi16 (__m, __count); 809 } 810 811 /* Shift two 32-bit values in M right by COUNT; shift in the sign bit. */ 812 /* APPLE LOCAL begin radar 5618945 */ 813 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 814 /* APPLE LOCAL end radar 5618945 */ 815 _mm_sra_pi32 (__m64 __m, __m64 __count) 816 { 817 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 818 return (__m64) __builtin_ia32_psrad ((__v2si)__m, __count); 819 } 820 821 /* APPLE LOCAL begin radar 5618945 */ 822 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 823 /* APPLE LOCAL end radar 5618945 */ 824 _m_psrad (__m64 __m, __m64 __count) 825 { 826 return _mm_sra_pi32 (__m, __count); 827 } 828 829 /* APPLE LOCAL begin radar 5618945 */ 830 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 831 /* APPLE LOCAL end radar 5618945 */ 832 _mm_srai_pi32 (__m64 __m, int __count) 833 { 834 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 835 return (__m64) __builtin_ia32_psradi ((__v2si)__m, __count); 836 } 837 838 /* APPLE LOCAL begin radar 5618945 */ 839 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 840 /* APPLE LOCAL end radar 5618945 */ 841 _m_psradi (__m64 __m, int __count) 842 { 843 return _mm_srai_pi32 (__m, __count); 844 } 845 846 /* Shift four 16-bit values in M right by COUNT; shift in zeros. */ 847 /* APPLE LOCAL begin radar 5618945 */ 848 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 849 /* APPLE LOCAL end radar 5618945 */ 850 _mm_srl_pi16 (__m64 __m, __m64 __count) 851 { 852 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 853 return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, __count); 854 } 855 856 /* APPLE LOCAL begin radar 5618945 */ 857 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 858 /* APPLE LOCAL end radar 5618945 */ 859 _m_psrlw (__m64 __m, __m64 __count) 860 { 861 return _mm_srl_pi16 (__m, __count); 862 } 863 864 /* APPLE LOCAL begin radar 5618945 */ 865 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 866 /* APPLE LOCAL end radar 5618945 */ 867 _mm_srli_pi16 (__m64 __m, int __count) 868 { 869 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 870 return (__m64) __builtin_ia32_psrlwi ((__v4hi)__m, __count); 871 } 872 873 /* APPLE LOCAL begin radar 5618945 */ 874 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 875 /* APPLE LOCAL end radar 5618945 */ 876 _m_psrlwi (__m64 __m, int __count) 877 { 878 return _mm_srli_pi16 (__m, __count); 879 } 880 881 /* Shift two 32-bit values in M right by COUNT; shift in zeros. */ 882 /* APPLE LOCAL begin radar 5618945 */ 883 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 884 /* APPLE LOCAL end radar 5618945 */ 885 _mm_srl_pi32 (__m64 __m, __m64 __count) 886 { 887 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 888 return (__m64) __builtin_ia32_psrld ((__v2si)__m, __count); 889 } 890 891 /* APPLE LOCAL begin radar 5618945 */ 892 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 893 /* APPLE LOCAL end radar 5618945 */ 894 _m_psrld (__m64 __m, __m64 __count) 895 { 896 return _mm_srl_pi32 (__m, __count); 897 } 898 899 /* APPLE LOCAL begin radar 5618945 */ 900 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 901 /* APPLE LOCAL end radar 5618945 */ 902 _mm_srli_pi32 (__m64 __m, int __count) 903 { 904 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 905 return (__m64) __builtin_ia32_psrldi ((__v2si)__m, __count); 906 } 907 908 /* APPLE LOCAL begin radar 5618945 */ 909 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 910 /* APPLE LOCAL end radar 5618945 */ 911 _m_psrldi (__m64 __m, int __count) 912 { 913 return _mm_srli_pi32 (__m, __count); 914 } 915 916 /* Shift the 64-bit value in M left by COUNT; shift in zeros. */ 917 /* APPLE LOCAL begin radar 5618945 */ 918 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 919 /* APPLE LOCAL end radar 5618945 */ 920 _mm_srl_si64 (__m64 __m, __m64 __count) 921 { 922 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 923 return (__m64) __builtin_ia32_psrlq (__m, __count); 924 } 925 926 /* APPLE LOCAL begin radar 5618945 */ 927 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 928 /* APPLE LOCAL end radar 5618945 */ 929 _m_psrlq (__m64 __m, __m64 __count) 930 { 931 return _mm_srl_si64 (__m, __count); 932 } 933 934 /* APPLE LOCAL begin radar 5618945 */ 935 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 936 /* APPLE LOCAL end radar 5618945 */ 937 _mm_srli_si64 (__m64 __m, int __count) 938 { 939 /* APPLE LOCAL 4656532 use V1DImode for _m64 */ 940 return (__m64) __builtin_ia32_psrlqi (__m, __count); 941 } 942 943 /* APPLE LOCAL begin radar 5618945 */ 944 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 945 /* APPLE LOCAL end radar 5618945 */ 946 _m_psrlqi (__m64 __m, int __count) 947 { 948 return _mm_srli_si64 (__m, __count); 949 } 950 951 /* Bit-wise AND the 64-bit values in M1 and M2. */ 952 /* APPLE LOCAL begin radar 5618945 */ 953 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 954 /* APPLE LOCAL end radar 5618945 */ 955 _mm_and_si64 (__m64 __m1, __m64 __m2) 956 { 957 return __builtin_ia32_pand (__m1, __m2); 958 } 959 960 /* APPLE LOCAL begin radar 5618945 */ 961 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 962 /* APPLE LOCAL end radar 5618945 */ 963 _m_pand (__m64 __m1, __m64 __m2) 964 { 965 return _mm_and_si64 (__m1, __m2); 966 } 967 968 /* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the 969 64-bit value in M2. */ 970 /* APPLE LOCAL begin radar 5618945 */ 971 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 972 /* APPLE LOCAL end radar 5618945 */ 973 _mm_andnot_si64 (__m64 __m1, __m64 __m2) 974 { 975 return __builtin_ia32_pandn (__m1, __m2); 976 } 977 978 /* APPLE LOCAL begin radar 5618945 */ 979 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 980 /* APPLE LOCAL end radar 5618945 */ 981 _m_pandn (__m64 __m1, __m64 __m2) 982 { 983 return _mm_andnot_si64 (__m1, __m2); 984 } 985 986 /* Bit-wise inclusive OR the 64-bit values in M1 and M2. */ 987 /* APPLE LOCAL begin radar 5618945 */ 988 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 989 /* APPLE LOCAL end radar 5618945 */ 990 _mm_or_si64 (__m64 __m1, __m64 __m2) 991 { 992 return __builtin_ia32_por (__m1, __m2); 993 } 994 995 /* APPLE LOCAL begin radar 5618945 */ 996 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 997 /* APPLE LOCAL end radar 5618945 */ 998 _m_por (__m64 __m1, __m64 __m2) 999 { 1000 return _mm_or_si64 (__m1, __m2); 1001 } 1002 1003 /* Bit-wise exclusive OR the 64-bit values in M1 and M2. */ 1004 /* APPLE LOCAL begin radar 5618945 */ 1005 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1006 /* APPLE LOCAL end radar 5618945 */ 1007 _mm_xor_si64 (__m64 __m1, __m64 __m2) 1008 { 1009 return __builtin_ia32_pxor (__m1, __m2); 1010 } 1011 1012 /* APPLE LOCAL begin radar 5618945 */ 1013 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1014 /* APPLE LOCAL end radar 5618945 */ 1015 _m_pxor (__m64 __m1, __m64 __m2) 1016 { 1017 return _mm_xor_si64 (__m1, __m2); 1018 } 1019 1020 /* Compare eight 8-bit values. The result of the comparison is 0xFF if the 1021 test is true and zero if false. */ 1022 /* APPLE LOCAL begin radar 5618945 */ 1023 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1024 /* APPLE LOCAL end radar 5618945 */ 1025 _mm_cmpeq_pi8 (__m64 __m1, __m64 __m2) 1026 { 1027 return (__m64) __builtin_ia32_pcmpeqb ((__v8qi)__m1, (__v8qi)__m2); 1028 } 1029 1030 /* APPLE LOCAL begin radar 5618945 */ 1031 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1032 /* APPLE LOCAL end radar 5618945 */ 1033 _m_pcmpeqb (__m64 __m1, __m64 __m2) 1034 { 1035 return _mm_cmpeq_pi8 (__m1, __m2); 1036 } 1037 1038 /* APPLE LOCAL begin radar 5618945 */ 1039 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1040 /* APPLE LOCAL end radar 5618945 */ 1041 _mm_cmpgt_pi8 (__m64 __m1, __m64 __m2) 1042 { 1043 return (__m64) __builtin_ia32_pcmpgtb ((__v8qi)__m1, (__v8qi)__m2); 1044 } 1045 1046 /* APPLE LOCAL begin radar 5618945 */ 1047 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1048 /* APPLE LOCAL end radar 5618945 */ 1049 _m_pcmpgtb (__m64 __m1, __m64 __m2) 1050 { 1051 return _mm_cmpgt_pi8 (__m1, __m2); 1052 } 1053 1054 /* Compare four 16-bit values. The result of the comparison is 0xFFFF if 1055 the test is true and zero if false. */ 1056 /* APPLE LOCAL begin radar 5618945 */ 1057 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1058 /* APPLE LOCAL end radar 5618945 */ 1059 _mm_cmpeq_pi16 (__m64 __m1, __m64 __m2) 1060 { 1061 return (__m64) __builtin_ia32_pcmpeqw ((__v4hi)__m1, (__v4hi)__m2); 1062 } 1063 1064 /* APPLE LOCAL begin radar 5618945 */ 1065 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1066 /* APPLE LOCAL end radar 5618945 */ 1067 _m_pcmpeqw (__m64 __m1, __m64 __m2) 1068 { 1069 return _mm_cmpeq_pi16 (__m1, __m2); 1070 } 1071 1072 /* APPLE LOCAL begin radar 5618945 */ 1073 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1074 /* APPLE LOCAL end radar 5618945 */ 1075 _mm_cmpgt_pi16 (__m64 __m1, __m64 __m2) 1076 { 1077 return (__m64) __builtin_ia32_pcmpgtw ((__v4hi)__m1, (__v4hi)__m2); 1078 } 1079 1080 /* APPLE LOCAL begin radar 5618945 */ 1081 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1082 /* APPLE LOCAL end radar 5618945 */ 1083 _m_pcmpgtw (__m64 __m1, __m64 __m2) 1084 { 1085 return _mm_cmpgt_pi16 (__m1, __m2); 1086 } 1087 1088 /* Compare two 32-bit values. The result of the comparison is 0xFFFFFFFF if 1089 the test is true and zero if false. */ 1090 /* APPLE LOCAL begin radar 5618945 */ 1091 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1092 /* APPLE LOCAL end radar 5618945 */ 1093 _mm_cmpeq_pi32 (__m64 __m1, __m64 __m2) 1094 { 1095 return (__m64) __builtin_ia32_pcmpeqd ((__v2si)__m1, (__v2si)__m2); 1096 } 1097 1098 /* APPLE LOCAL begin radar 5618945 */ 1099 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1100 /* APPLE LOCAL end radar 5618945 */ 1101 _m_pcmpeqd (__m64 __m1, __m64 __m2) 1102 { 1103 return _mm_cmpeq_pi32 (__m1, __m2); 1104 } 1105 1106 /* APPLE LOCAL begin radar 5618945 */ 1107 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1108 /* APPLE LOCAL end radar 5618945 */ 1109 _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2) 1110 { 1111 return (__m64) __builtin_ia32_pcmpgtd ((__v2si)__m1, (__v2si)__m2); 1112 } 1113 1114 /* APPLE LOCAL begin radar 5618945 */ 1115 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1116 /* APPLE LOCAL end radar 5618945 */ 1117 _m_pcmpgtd (__m64 __m1, __m64 __m2) 1118 { 1119 return _mm_cmpgt_pi32 (__m1, __m2); 1120 } 1121 1122 /* Creates a 64-bit zero. */ 1123 /* APPLE LOCAL begin radar 5618945 */ 1124 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1125 /* APPLE LOCAL end radar 5618945 */ 1126 _mm_setzero_si64 (void) 1127 { 1128 return (__m64)0LL; 1129 } 1130 1131 /* Creates a vector of two 32-bit values; I0 is least significant. */ 1132 /* APPLE LOCAL begin radar 5618945 */ 1133 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1134 /* APPLE LOCAL end radar 5618945 */ 1135 _mm_set_pi32 (int __i1, int __i0) 1136 { 1137 return (__m64) __builtin_ia32_vec_init_v2si (__i0, __i1); 1138 } 1139 1140 /* Creates a vector of four 16-bit values; W0 is least significant. */ 1141 /* APPLE LOCAL begin radar 5618945 */ 1142 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1143 /* APPLE LOCAL end radar 5618945 */ 1144 _mm_set_pi16 (short __w3, short __w2, short __w1, short __w0) 1145 { 1146 return (__m64) __builtin_ia32_vec_init_v4hi (__w0, __w1, __w2, __w3); 1147 } 1148 1149 /* Creates a vector of eight 8-bit values; B0 is least significant. */ 1150 /* APPLE LOCAL begin radar 5618945 */ 1151 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1152 /* APPLE LOCAL end radar 5618945 */ 1153 _mm_set_pi8 (char __b7, char __b6, char __b5, char __b4, 1154 char __b3, char __b2, char __b1, char __b0) 1155 { 1156 return (__m64) __builtin_ia32_vec_init_v8qi (__b0, __b1, __b2, __b3, 1157 __b4, __b5, __b6, __b7); 1158 } 1159 1160 /* Similar, but with the arguments in reverse order. */ 1161 /* APPLE LOCAL begin radar 5618945 */ 1162 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1163 /* APPLE LOCAL end radar 5618945 */ 1164 _mm_setr_pi32 (int __i0, int __i1) 1165 { 1166 return _mm_set_pi32 (__i1, __i0); 1167 } 1168 1169 /* APPLE LOCAL begin radar 5618945 */ 1170 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1171 /* APPLE LOCAL end radar 5618945 */ 1172 _mm_setr_pi16 (short __w0, short __w1, short __w2, short __w3) 1173 { 1174 return _mm_set_pi16 (__w3, __w2, __w1, __w0); 1175 } 1176 1177 /* APPLE LOCAL begin radar 5618945 */ 1178 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1179 /* APPLE LOCAL end radar 5618945 */ 1180 _mm_setr_pi8 (char __b0, char __b1, char __b2, char __b3, 1181 char __b4, char __b5, char __b6, char __b7) 1182 { 1183 return _mm_set_pi8 (__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0); 1184 } 1185 1186 /* Creates a vector of two 32-bit values, both elements containing I. */ 1187 /* APPLE LOCAL begin radar 5618945 */ 1188 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1189 /* APPLE LOCAL end radar 5618945 */ 1190 _mm_set1_pi32 (int __i) 1191 { 1192 return _mm_set_pi32 (__i, __i); 1193 } 1194 1195 /* Creates a vector of four 16-bit values, all elements containing W. */ 1196 /* APPLE LOCAL begin radar 5618945 */ 1197 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1198 /* APPLE LOCAL end radar 5618945 */ 1199 _mm_set1_pi16 (short __w) 1200 { 1201 return _mm_set_pi16 (__w, __w, __w, __w); 1202 } 1203 1204 /* Creates a vector of eight 8-bit values, all elements containing B. */ 1205 /* APPLE LOCAL begin radar 5618945 */ 1206 __STATIC_INLINE __m64 __attribute__((__always_inline__)) 1207 /* APPLE LOCAL end radar 5618945 */ 1208 _mm_set1_pi8 (char __b) 1209 { 1210 return _mm_set_pi8 (__b, __b, __b, __b, __b, __b, __b, __b); 1211 } 1212 /* APPLE LOCAL end radar 4152603 */ 1213 1214 /* APPLE LOCAL begin nodebug inline 4152603 */ 1215 #undef __always_inline__ 1216 /* APPLE LOCAL end nodebug inline 4152603 */ 1217 1218 #endif /* __MMX__ */ 1219 #endif /* _MMINTRIN_H_INCLUDED */ 1220