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 */ 41typedef long long __m64 __attribute__ ((__vector_size__ (8), __may_alias__)); 42 43/* Internal data types for implementing the intrinsics. */ 44typedef int __v2si __attribute__ ((__vector_size__ (8))); 45typedef short __v4hi __attribute__ ((__vector_size__ (8))); 46typedef 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