1c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao/*===---- mmintrin.h - MMX intrinsics --------------------------------------=== 2c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * 3c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * Permission is hereby granted, free of charge, to any person obtaining a copy 4c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * of this software and associated documentation files (the "Software"), to deal 5c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * in the Software without restriction, including without limitation the rights 6c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * copies of the Software, and to permit persons to whom the Software is 8c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * furnished to do so, subject to the following conditions: 9c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * 10c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * The above copyright notice and this permission notice shall be included in 11c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * all copies or substantial portions of the Software. 12c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * 13c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * THE SOFTWARE. 20c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao * 21c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao *===-----------------------------------------------------------------------=== 22c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao */ 23c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 24c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#ifndef __MMINTRIN_H 25c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define __MMINTRIN_H 26c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 27c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#ifndef __MMX__ 28c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#error "MMX instruction set not enabled" 29c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#else 30c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 31c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaotypedef long long __m64 __attribute__((__vector_size__(8))); 32c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 33c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaotypedef int __v2si __attribute__((__vector_size__(8))); 34c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaotypedef short __v4hi __attribute__((__vector_size__(8))); 35c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaotypedef char __v8qi __attribute__((__vector_size__(8))); 36c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 37c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ void __attribute__((__always_inline__, __nodebug__)) 38c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_empty(void) 39c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 40c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao __builtin_ia32_emms(); 41c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 42c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 43c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 44c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cvtsi32_si64(int __i) 45c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 46c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); 47c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 48c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 49c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ int __attribute__((__always_inline__, __nodebug__)) 50c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cvtsi64_si32(__m64 __m) 51c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 52c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); 53c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 54c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 55c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 56c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cvtsi64_m64(long long __i) 57c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 58c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__i; 59c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 60c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 61c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ long long __attribute__((__always_inline__, __nodebug__)) 62c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cvtm64_si64(__m64 __m) 63c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 64c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (long long)__m; 65c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 66c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 67c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 68c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_packs_pi16(__m64 __m1, __m64 __m2) 69c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 70c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2); 71c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 72c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 73c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 74c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_packs_pi32(__m64 __m1, __m64 __m2) 75c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 76c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2); 77c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 78c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 79c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 80c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_packs_pu16(__m64 __m1, __m64 __m2) 81c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 82c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2); 83c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 84c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 85c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 86c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_unpackhi_pi8(__m64 __m1, __m64 __m2) 87c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 88c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2); 89c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 90c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 91c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 92c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_unpackhi_pi16(__m64 __m1, __m64 __m2) 93c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 94c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2); 95c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 96c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 97c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 98c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_unpackhi_pi32(__m64 __m1, __m64 __m2) 99c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 100c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2); 101c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 102c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 103c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 104c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_unpacklo_pi8(__m64 __m1, __m64 __m2) 105c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 106c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2); 107c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 108c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 109c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 110c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_unpacklo_pi16(__m64 __m1, __m64 __m2) 111c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 112c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2); 113c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 114c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 115c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 116c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_unpacklo_pi32(__m64 __m1, __m64 __m2) 117c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 118c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2); 119c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 120c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 121c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 122c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_add_pi8(__m64 __m1, __m64 __m2) 123c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 124c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2); 125c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 126c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 127c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 128c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_add_pi16(__m64 __m1, __m64 __m2) 129c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 130c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2); 131c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 132c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 133c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 134c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_add_pi32(__m64 __m1, __m64 __m2) 135c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 136c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2); 137c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 138c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 139c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 140c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_adds_pi8(__m64 __m1, __m64 __m2) 141c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 142c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2); 143c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 144c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 145c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 146c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_adds_pi16(__m64 __m1, __m64 __m2) 147c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 148c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2); 149c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 150c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 151c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 152c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_adds_pu8(__m64 __m1, __m64 __m2) 153c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 154c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2); 155c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 156c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 157c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 158c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_adds_pu16(__m64 __m1, __m64 __m2) 159c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 160c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2); 161c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 162c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 163c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 164c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sub_pi8(__m64 __m1, __m64 __m2) 165c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 166c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2); 167c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 168c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 169c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 170c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sub_pi16(__m64 __m1, __m64 __m2) 171c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 172c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2); 173c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 174c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 175c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 176c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sub_pi32(__m64 __m1, __m64 __m2) 177c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 178c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2); 179c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 180c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 181c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 182c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_subs_pi8(__m64 __m1, __m64 __m2) 183c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 184c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2); 185c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 186c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 187c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 188c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_subs_pi16(__m64 __m1, __m64 __m2) 189c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 190c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2); 191c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 192c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 193c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 194c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_subs_pu8(__m64 __m1, __m64 __m2) 195c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 196c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2); 197c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 198c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 199c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 200c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_subs_pu16(__m64 __m1, __m64 __m2) 201c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 202c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2); 203c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 204c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 205c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 206c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_madd_pi16(__m64 __m1, __m64 __m2) 207c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 208c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2); 209c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 210c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 211c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 212c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_mulhi_pi16(__m64 __m1, __m64 __m2) 213c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 214c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2); 215c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 216c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 217c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 218c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_mullo_pi16(__m64 __m1, __m64 __m2) 219c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 220c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2); 221c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 222c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 223c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 224c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sll_pi16(__m64 __m, __m64 __count) 225c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 226c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count); 227c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 228c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 229c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 230c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_slli_pi16(__m64 __m, int __count) 231c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 232c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count); 233c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 234c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 235c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 236c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sll_pi32(__m64 __m, __m64 __count) 237c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 238c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pslld((__v2si)__m, __count); 239c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 240c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 241c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 242c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_slli_pi32(__m64 __m, int __count) 243c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 244c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count); 245c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 246c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 247c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 248c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sll_si64(__m64 __m, __m64 __count) 249c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 250c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psllq(__m, __count); 251c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 252c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 253c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 254c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_slli_si64(__m64 __m, int __count) 255c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 256c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psllqi(__m, __count); 257c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 258c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 259c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 260c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sra_pi16(__m64 __m, __m64 __count) 261c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 262c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psraw((__v4hi)__m, __count); 263c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 264c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 265c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 266c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srai_pi16(__m64 __m, int __count) 267c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 268c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count); 269c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 270c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 271c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 272c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_sra_pi32(__m64 __m, __m64 __count) 273c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 274c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrad((__v2si)__m, __count); 275c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 276c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 277c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 278c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srai_pi32(__m64 __m, int __count) 279c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 280c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psradi((__v2si)__m, __count); 281c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 282c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 283c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 284c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srl_pi16(__m64 __m, __m64 __count) 285c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 286c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrlw((__v4hi)__m, __count); 287c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 288c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 289c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 290c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srli_pi16(__m64 __m, int __count) 291c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 292c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count); 293c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 294c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 295c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 296c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srl_pi32(__m64 __m, __m64 __count) 297c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 298c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrld((__v2si)__m, __count); 299c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 300c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 301c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 302c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srli_pi32(__m64 __m, int __count) 303c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 304c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count); 305c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 306c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 307c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 308c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srl_si64(__m64 __m, __m64 __count) 309c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 310c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrlq(__m, __count); 311c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 312c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 313c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 314c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_srli_si64(__m64 __m, int __count) 315c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 316c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_psrlqi(__m, __count); 317c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 318c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 319c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 320c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_and_si64(__m64 __m1, __m64 __m2) 321c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 322c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return __builtin_ia32_pand(__m1, __m2); 323c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 324c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 325c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 326c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_andnot_si64(__m64 __m1, __m64 __m2) 327c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 328c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return __builtin_ia32_pandn(__m1, __m2); 329c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 330c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 331c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 332c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_or_si64(__m64 __m1, __m64 __m2) 333c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 334c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return __builtin_ia32_por(__m1, __m2); 335c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 336c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 337c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 338c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_xor_si64(__m64 __m1, __m64 __m2) 339c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 340c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return __builtin_ia32_pxor(__m1, __m2); 341c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 342c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 343c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 344c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cmpeq_pi8(__m64 __m1, __m64 __m2) 345c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 346c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2); 347c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 348c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 349c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 350c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cmpeq_pi16(__m64 __m1, __m64 __m2) 351c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 352c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2); 353c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 354c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 355c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 356c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cmpeq_pi32(__m64 __m1, __m64 __m2) 357c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 358c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2); 359c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 360c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 361c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 362c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cmpgt_pi8(__m64 __m1, __m64 __m2) 363c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 364c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2); 365c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 366c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 367c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 368c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cmpgt_pi16(__m64 __m1, __m64 __m2) 369c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 370c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2); 371c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 372c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 373c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 374c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_cmpgt_pi32(__m64 __m1, __m64 __m2) 375c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 376c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2); 377c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 378c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 379c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 380c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_setzero_si64(void) 381c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 382c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64){ 0LL }; 383c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 384c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 385c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 386c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_set_pi32(int __i1, int __i0) 387c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 388c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1); 389c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 390c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 391c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 392c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_set_pi16(short __s3, short __s2, short __s1, short __s0) 393c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 394c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3); 395c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 396c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 397c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 398c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, 399c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao char __b1, char __b0) 400c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 401c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return (__m64)__builtin_ia32_vec_init_v8qi(__b0, __b1, __b2, __b3, 402c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao __b4, __b5, __b6, __b7); 403c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 404c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 405c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 406c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_set1_pi32(int __i) 407c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 408c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return _mm_set_pi32(__i, __i); 409c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 410c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 411c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 412c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_set1_pi16(short __w) 413c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 414c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return _mm_set_pi16(__w, __w, __w, __w); 415c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 416c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 417c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 418c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_set1_pi8(char __b) 419c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 420c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b); 421c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 422c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 423c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 424c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_setr_pi32(int __i0, int __i1) 425c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 426c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return _mm_set_pi32(__i1, __i0); 427c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 428c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 429c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 430c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_setr_pi16(short __w0, short __w1, short __w2, short __w3) 431c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 432c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return _mm_set_pi16(__w3, __w2, __w1, __w0); 433c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 434c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 435c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhaostatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__)) 436c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao_mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, 437c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao char __b6, char __b7) 438c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao{ 439c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0); 440c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao} 441c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 442c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 443c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao/* Aliases for compatibility. */ 444c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_empty _mm_empty 445c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_from_int _mm_cvtsi32_si64 446c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_to_int _mm_cvtsi64_si32 447c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_packsswb _mm_packs_pi16 448c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_packssdw _mm_packs_pi32 449c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_packuswb _mm_packs_pu16 450c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_punpckhbw _mm_unpackhi_pi8 451c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_punpckhwd _mm_unpackhi_pi16 452c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_punpckhdq _mm_unpackhi_pi32 453c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_punpcklbw _mm_unpacklo_pi8 454c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_punpcklwd _mm_unpacklo_pi16 455c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_punpckldq _mm_unpacklo_pi32 456c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddb _mm_add_pi8 457c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddw _mm_add_pi16 458c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddd _mm_add_pi32 459c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddsb _mm_adds_pi8 460c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddsw _mm_adds_pi16 461c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddusb _mm_adds_pu8 462c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_paddusw _mm_adds_pu16 463c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubb _mm_sub_pi8 464c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubw _mm_sub_pi16 465c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubd _mm_sub_pi32 466c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubsb _mm_subs_pi8 467c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubsw _mm_subs_pi16 468c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubusb _mm_subs_pu8 469c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psubusw _mm_subs_pu16 470c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pmaddwd _mm_madd_pi16 471c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pmulhw _mm_mulhi_pi16 472c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pmullw _mm_mullo_pi16 473c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psllw _mm_sll_pi16 474c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psllwi _mm_slli_pi16 475c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pslld _mm_sll_pi32 476c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pslldi _mm_slli_pi32 477c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psllq _mm_sll_si64 478c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psllqi _mm_slli_si64 479c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psraw _mm_sra_pi16 480c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrawi _mm_srai_pi16 481c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrad _mm_sra_pi32 482c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psradi _mm_srai_pi32 483c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrlw _mm_srl_pi16 484c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrlwi _mm_srli_pi16 485c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrld _mm_srl_pi32 486c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrldi _mm_srli_pi32 487c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrlq _mm_srl_si64 488c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_psrlqi _mm_srli_si64 489c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pand _mm_and_si64 490c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pandn _mm_andnot_si64 491c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_por _mm_or_si64 492c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pxor _mm_xor_si64 493c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pcmpeqb _mm_cmpeq_pi8 494c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pcmpeqw _mm_cmpeq_pi16 495c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pcmpeqd _mm_cmpeq_pi32 496c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pcmpgtb _mm_cmpgt_pi8 497c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pcmpgtw _mm_cmpgt_pi16 498c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#define _m_pcmpgtd _mm_cmpgt_pi32 499c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 500c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#endif /* __MMX__ */ 501c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 502c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao#endif /* __MMINTRIN_H */ 503c26fdd1c7de95ebc5d823d56ef4e6e7b52231633Qiwen Zhao 504