xref: /aosp_15_r20/prebuilts/clang-tools/linux-x86/clang-headers/mmintrin.h (revision bed243d3d9cd544cfb038bfa7be843dedc6e6bf7)
1*bed243d3SAndroid Build Coastguard Worker /*===---- mmintrin.h - MMX intrinsics --------------------------------------===
2*bed243d3SAndroid Build Coastguard Worker  *
3*bed243d3SAndroid Build Coastguard Worker  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*bed243d3SAndroid Build Coastguard Worker  * See https://llvm.org/LICENSE.txt for license information.
5*bed243d3SAndroid Build Coastguard Worker  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*bed243d3SAndroid Build Coastguard Worker  *
7*bed243d3SAndroid Build Coastguard Worker  *===-----------------------------------------------------------------------===
8*bed243d3SAndroid Build Coastguard Worker  */
9*bed243d3SAndroid Build Coastguard Worker 
10*bed243d3SAndroid Build Coastguard Worker #ifndef __MMINTRIN_H
11*bed243d3SAndroid Build Coastguard Worker #define __MMINTRIN_H
12*bed243d3SAndroid Build Coastguard Worker 
13*bed243d3SAndroid Build Coastguard Worker #if !defined(__i386__) && !defined(__x86_64__)
14*bed243d3SAndroid Build Coastguard Worker #error "This header is only meant to be used on x86 and x64 architecture"
15*bed243d3SAndroid Build Coastguard Worker #endif
16*bed243d3SAndroid Build Coastguard Worker 
17*bed243d3SAndroid Build Coastguard Worker typedef long long __m64 __attribute__((__vector_size__(8), __aligned__(8)));
18*bed243d3SAndroid Build Coastguard Worker 
19*bed243d3SAndroid Build Coastguard Worker typedef long long __v1di __attribute__((__vector_size__(8)));
20*bed243d3SAndroid Build Coastguard Worker typedef int __v2si __attribute__((__vector_size__(8)));
21*bed243d3SAndroid Build Coastguard Worker typedef short __v4hi __attribute__((__vector_size__(8)));
22*bed243d3SAndroid Build Coastguard Worker typedef char __v8qi __attribute__((__vector_size__(8)));
23*bed243d3SAndroid Build Coastguard Worker 
24*bed243d3SAndroid Build Coastguard Worker /* Define the default attributes for the functions in this file. */
25*bed243d3SAndroid Build Coastguard Worker #define __DEFAULT_FN_ATTRS                                                     \
26*bed243d3SAndroid Build Coastguard Worker   __attribute__((__always_inline__, __nodebug__, __target__("mmx,no-evex512"), \
27*bed243d3SAndroid Build Coastguard Worker                  __min_vector_width__(64)))
28*bed243d3SAndroid Build Coastguard Worker 
29*bed243d3SAndroid Build Coastguard Worker /// Clears the MMX state by setting the state of the x87 stack registers
30*bed243d3SAndroid Build Coastguard Worker ///    to empty.
31*bed243d3SAndroid Build Coastguard Worker ///
32*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
33*bed243d3SAndroid Build Coastguard Worker ///
34*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> EMMS </c> instruction.
35*bed243d3SAndroid Build Coastguard Worker ///
36*bed243d3SAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__, __nodebug__,
37*bed243d3SAndroid Build Coastguard Worker                                       __target__("mmx,no-evex512")))
_mm_empty(void)38*bed243d3SAndroid Build Coastguard Worker _mm_empty(void) {
39*bed243d3SAndroid Build Coastguard Worker   __builtin_ia32_emms();
40*bed243d3SAndroid Build Coastguard Worker }
41*bed243d3SAndroid Build Coastguard Worker 
42*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector, setting the lower 32 bits to the
43*bed243d3SAndroid Build Coastguard Worker ///    value of the 32-bit integer parameter and setting the upper 32 bits to 0.
44*bed243d3SAndroid Build Coastguard Worker ///
45*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
46*bed243d3SAndroid Build Coastguard Worker ///
47*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> MOVD </c> instruction.
48*bed243d3SAndroid Build Coastguard Worker ///
49*bed243d3SAndroid Build Coastguard Worker /// \param __i
50*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
51*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector. The lower 32 bits contain the value of the
52*bed243d3SAndroid Build Coastguard Worker ///    parameter. The upper 32 bits are set to 0.
53*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cvtsi32_si64(int __i)54*bed243d3SAndroid Build Coastguard Worker _mm_cvtsi32_si64(int __i)
55*bed243d3SAndroid Build Coastguard Worker {
56*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
57*bed243d3SAndroid Build Coastguard Worker }
58*bed243d3SAndroid Build Coastguard Worker 
59*bed243d3SAndroid Build Coastguard Worker /// Returns the lower 32 bits of a 64-bit integer vector as a 32-bit
60*bed243d3SAndroid Build Coastguard Worker ///    signed integer.
61*bed243d3SAndroid Build Coastguard Worker ///
62*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
63*bed243d3SAndroid Build Coastguard Worker ///
64*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> MOVD </c> instruction.
65*bed243d3SAndroid Build Coastguard Worker ///
66*bed243d3SAndroid Build Coastguard Worker /// \param __m
67*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
68*bed243d3SAndroid Build Coastguard Worker /// \returns A 32-bit signed integer value containing the lower 32 bits of the
69*bed243d3SAndroid Build Coastguard Worker ///    parameter.
70*bed243d3SAndroid Build Coastguard Worker static __inline__ int __DEFAULT_FN_ATTRS
_mm_cvtsi64_si32(__m64 __m)71*bed243d3SAndroid Build Coastguard Worker _mm_cvtsi64_si32(__m64 __m)
72*bed243d3SAndroid Build Coastguard Worker {
73*bed243d3SAndroid Build Coastguard Worker     return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
74*bed243d3SAndroid Build Coastguard Worker }
75*bed243d3SAndroid Build Coastguard Worker 
76*bed243d3SAndroid Build Coastguard Worker /// Casts a 64-bit signed integer value into a 64-bit integer vector.
77*bed243d3SAndroid Build Coastguard Worker ///
78*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
79*bed243d3SAndroid Build Coastguard Worker ///
80*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> MOVQ </c> instruction.
81*bed243d3SAndroid Build Coastguard Worker ///
82*bed243d3SAndroid Build Coastguard Worker /// \param __i
83*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit signed integer.
84*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the same bitwise pattern as the
85*bed243d3SAndroid Build Coastguard Worker ///    parameter.
86*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cvtsi64_m64(long long __i)87*bed243d3SAndroid Build Coastguard Worker _mm_cvtsi64_m64(long long __i)
88*bed243d3SAndroid Build Coastguard Worker {
89*bed243d3SAndroid Build Coastguard Worker     return (__m64)__i;
90*bed243d3SAndroid Build Coastguard Worker }
91*bed243d3SAndroid Build Coastguard Worker 
92*bed243d3SAndroid Build Coastguard Worker /// Casts a 64-bit integer vector into a 64-bit signed integer value.
93*bed243d3SAndroid Build Coastguard Worker ///
94*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
95*bed243d3SAndroid Build Coastguard Worker ///
96*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> MOVQ </c> instruction.
97*bed243d3SAndroid Build Coastguard Worker ///
98*bed243d3SAndroid Build Coastguard Worker /// \param __m
99*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
100*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit signed integer containing the same bitwise pattern as the
101*bed243d3SAndroid Build Coastguard Worker ///    parameter.
102*bed243d3SAndroid Build Coastguard Worker static __inline__ long long __DEFAULT_FN_ATTRS
_mm_cvtm64_si64(__m64 __m)103*bed243d3SAndroid Build Coastguard Worker _mm_cvtm64_si64(__m64 __m)
104*bed243d3SAndroid Build Coastguard Worker {
105*bed243d3SAndroid Build Coastguard Worker     return (long long)__m;
106*bed243d3SAndroid Build Coastguard Worker }
107*bed243d3SAndroid Build Coastguard Worker 
108*bed243d3SAndroid Build Coastguard Worker /// Converts, with saturation, 16-bit signed integers from both 64-bit integer
109*bed243d3SAndroid Build Coastguard Worker ///    vector parameters of [4 x i16] into 8-bit signed integer values, and
110*bed243d3SAndroid Build Coastguard Worker ///    constructs a 64-bit integer vector of [8 x i8] as the result.
111*bed243d3SAndroid Build Coastguard Worker ///
112*bed243d3SAndroid Build Coastguard Worker ///    Positive values greater than 0x7F are saturated to 0x7F. Negative values
113*bed243d3SAndroid Build Coastguard Worker ///    less than 0x80 are saturated to 0x80.
114*bed243d3SAndroid Build Coastguard Worker ///
115*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
116*bed243d3SAndroid Build Coastguard Worker ///
117*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PACKSSWB </c> instruction.
118*bed243d3SAndroid Build Coastguard Worker ///
119*bed243d3SAndroid Build Coastguard Worker /// \param __m1
120*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16]. The converted [4 x i8] values are
121*bed243d3SAndroid Build Coastguard Worker ///    written to the lower 32 bits of the result.
122*bed243d3SAndroid Build Coastguard Worker /// \param __m2
123*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16]. The converted [4 x i8] values are
124*bed243d3SAndroid Build Coastguard Worker ///    written to the upper 32 bits of the result.
125*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the converted
126*bed243d3SAndroid Build Coastguard Worker ///    values.
127*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_packs_pi16(__m64 __m1,__m64 __m2)128*bed243d3SAndroid Build Coastguard Worker _mm_packs_pi16(__m64 __m1, __m64 __m2)
129*bed243d3SAndroid Build Coastguard Worker {
130*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
131*bed243d3SAndroid Build Coastguard Worker }
132*bed243d3SAndroid Build Coastguard Worker 
133*bed243d3SAndroid Build Coastguard Worker /// Converts, with saturation, 32-bit signed integers from both 64-bit integer
134*bed243d3SAndroid Build Coastguard Worker ///    vector parameters of [2 x i32] into 16-bit signed integer values, and
135*bed243d3SAndroid Build Coastguard Worker ///    constructs a 64-bit integer vector of [4 x i16] as the result.
136*bed243d3SAndroid Build Coastguard Worker ///
137*bed243d3SAndroid Build Coastguard Worker ///    Positive values greater than 0x7FFF are saturated to 0x7FFF. Negative
138*bed243d3SAndroid Build Coastguard Worker ///    values less than 0x8000 are saturated to 0x8000.
139*bed243d3SAndroid Build Coastguard Worker ///
140*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
141*bed243d3SAndroid Build Coastguard Worker ///
142*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PACKSSDW </c> instruction.
143*bed243d3SAndroid Build Coastguard Worker ///
144*bed243d3SAndroid Build Coastguard Worker /// \param __m1
145*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32]. The converted [2 x i16] values are
146*bed243d3SAndroid Build Coastguard Worker ///    written to the lower 32 bits of the result.
147*bed243d3SAndroid Build Coastguard Worker /// \param __m2
148*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32]. The converted [2 x i16] values are
149*bed243d3SAndroid Build Coastguard Worker ///    written to the upper 32 bits of the result.
150*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the converted
151*bed243d3SAndroid Build Coastguard Worker ///    values.
152*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_packs_pi32(__m64 __m1,__m64 __m2)153*bed243d3SAndroid Build Coastguard Worker _mm_packs_pi32(__m64 __m1, __m64 __m2)
154*bed243d3SAndroid Build Coastguard Worker {
155*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
156*bed243d3SAndroid Build Coastguard Worker }
157*bed243d3SAndroid Build Coastguard Worker 
158*bed243d3SAndroid Build Coastguard Worker /// Converts, with saturation, 16-bit signed integers from both 64-bit integer
159*bed243d3SAndroid Build Coastguard Worker ///    vector parameters of [4 x i16] into 8-bit unsigned integer values, and
160*bed243d3SAndroid Build Coastguard Worker ///    constructs a 64-bit integer vector of [8 x i8] as the result.
161*bed243d3SAndroid Build Coastguard Worker ///
162*bed243d3SAndroid Build Coastguard Worker ///    Values greater than 0xFF are saturated to 0xFF. Values less than 0 are
163*bed243d3SAndroid Build Coastguard Worker ///    saturated to 0.
164*bed243d3SAndroid Build Coastguard Worker ///
165*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
166*bed243d3SAndroid Build Coastguard Worker ///
167*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PACKUSWB </c> instruction.
168*bed243d3SAndroid Build Coastguard Worker ///
169*bed243d3SAndroid Build Coastguard Worker /// \param __m1
170*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16]. The converted [4 x i8] values are
171*bed243d3SAndroid Build Coastguard Worker ///    written to the lower 32 bits of the result.
172*bed243d3SAndroid Build Coastguard Worker /// \param __m2
173*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16]. The converted [4 x i8] values are
174*bed243d3SAndroid Build Coastguard Worker ///    written to the upper 32 bits of the result.
175*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the converted
176*bed243d3SAndroid Build Coastguard Worker ///    values.
177*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_packs_pu16(__m64 __m1,__m64 __m2)178*bed243d3SAndroid Build Coastguard Worker _mm_packs_pu16(__m64 __m1, __m64 __m2)
179*bed243d3SAndroid Build Coastguard Worker {
180*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
181*bed243d3SAndroid Build Coastguard Worker }
182*bed243d3SAndroid Build Coastguard Worker 
183*bed243d3SAndroid Build Coastguard Worker /// Unpacks the upper 32 bits from two 64-bit integer vectors of [8 x i8]
184*bed243d3SAndroid Build Coastguard Worker ///    and interleaves them into a 64-bit integer vector of [8 x i8].
185*bed243d3SAndroid Build Coastguard Worker ///
186*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
187*bed243d3SAndroid Build Coastguard Worker ///
188*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PUNPCKHBW </c> instruction.
189*bed243d3SAndroid Build Coastguard Worker ///
190*bed243d3SAndroid Build Coastguard Worker /// \param __m1
191*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8]. \n
192*bed243d3SAndroid Build Coastguard Worker ///    Bits [39:32] are written to bits [7:0] of the result. \n
193*bed243d3SAndroid Build Coastguard Worker ///    Bits [47:40] are written to bits [23:16] of the result. \n
194*bed243d3SAndroid Build Coastguard Worker ///    Bits [55:48] are written to bits [39:32] of the result. \n
195*bed243d3SAndroid Build Coastguard Worker ///    Bits [63:56] are written to bits [55:48] of the result.
196*bed243d3SAndroid Build Coastguard Worker /// \param __m2
197*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
198*bed243d3SAndroid Build Coastguard Worker ///    Bits [39:32] are written to bits [15:8] of the result. \n
199*bed243d3SAndroid Build Coastguard Worker ///    Bits [47:40] are written to bits [31:24] of the result. \n
200*bed243d3SAndroid Build Coastguard Worker ///    Bits [55:48] are written to bits [47:40] of the result. \n
201*bed243d3SAndroid Build Coastguard Worker ///    Bits [63:56] are written to bits [63:56] of the result.
202*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the interleaved
203*bed243d3SAndroid Build Coastguard Worker ///    values.
204*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_unpackhi_pi8(__m64 __m1,__m64 __m2)205*bed243d3SAndroid Build Coastguard Worker _mm_unpackhi_pi8(__m64 __m1, __m64 __m2)
206*bed243d3SAndroid Build Coastguard Worker {
207*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
208*bed243d3SAndroid Build Coastguard Worker }
209*bed243d3SAndroid Build Coastguard Worker 
210*bed243d3SAndroid Build Coastguard Worker /// Unpacks the upper 32 bits from two 64-bit integer vectors of
211*bed243d3SAndroid Build Coastguard Worker ///    [4 x i16] and interleaves them into a 64-bit integer vector of [4 x i16].
212*bed243d3SAndroid Build Coastguard Worker ///
213*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
214*bed243d3SAndroid Build Coastguard Worker ///
215*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PUNPCKHWD </c> instruction.
216*bed243d3SAndroid Build Coastguard Worker ///
217*bed243d3SAndroid Build Coastguard Worker /// \param __m1
218*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
219*bed243d3SAndroid Build Coastguard Worker ///    Bits [47:32] are written to bits [15:0] of the result. \n
220*bed243d3SAndroid Build Coastguard Worker ///    Bits [63:48] are written to bits [47:32] of the result.
221*bed243d3SAndroid Build Coastguard Worker /// \param __m2
222*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
223*bed243d3SAndroid Build Coastguard Worker ///    Bits [47:32] are written to bits [31:16] of the result. \n
224*bed243d3SAndroid Build Coastguard Worker ///    Bits [63:48] are written to bits [63:48] of the result.
225*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the interleaved
226*bed243d3SAndroid Build Coastguard Worker ///    values.
227*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_unpackhi_pi16(__m64 __m1,__m64 __m2)228*bed243d3SAndroid Build Coastguard Worker _mm_unpackhi_pi16(__m64 __m1, __m64 __m2)
229*bed243d3SAndroid Build Coastguard Worker {
230*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
231*bed243d3SAndroid Build Coastguard Worker }
232*bed243d3SAndroid Build Coastguard Worker 
233*bed243d3SAndroid Build Coastguard Worker /// Unpacks the upper 32 bits from two 64-bit integer vectors of
234*bed243d3SAndroid Build Coastguard Worker ///    [2 x i32] and interleaves them into a 64-bit integer vector of [2 x i32].
235*bed243d3SAndroid Build Coastguard Worker ///
236*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
237*bed243d3SAndroid Build Coastguard Worker ///
238*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PUNPCKHDQ </c> instruction.
239*bed243d3SAndroid Build Coastguard Worker ///
240*bed243d3SAndroid Build Coastguard Worker /// \param __m1
241*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32]. The upper 32 bits are written to
242*bed243d3SAndroid Build Coastguard Worker ///    the lower 32 bits of the result.
243*bed243d3SAndroid Build Coastguard Worker /// \param __m2
244*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32]. The upper 32 bits are written to
245*bed243d3SAndroid Build Coastguard Worker ///    the upper 32 bits of the result.
246*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the interleaved
247*bed243d3SAndroid Build Coastguard Worker ///    values.
248*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_unpackhi_pi32(__m64 __m1,__m64 __m2)249*bed243d3SAndroid Build Coastguard Worker _mm_unpackhi_pi32(__m64 __m1, __m64 __m2)
250*bed243d3SAndroid Build Coastguard Worker {
251*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
252*bed243d3SAndroid Build Coastguard Worker }
253*bed243d3SAndroid Build Coastguard Worker 
254*bed243d3SAndroid Build Coastguard Worker /// Unpacks the lower 32 bits from two 64-bit integer vectors of [8 x i8]
255*bed243d3SAndroid Build Coastguard Worker ///    and interleaves them into a 64-bit integer vector of [8 x i8].
256*bed243d3SAndroid Build Coastguard Worker ///
257*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
258*bed243d3SAndroid Build Coastguard Worker ///
259*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PUNPCKLBW </c> instruction.
260*bed243d3SAndroid Build Coastguard Worker ///
261*bed243d3SAndroid Build Coastguard Worker /// \param __m1
262*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
263*bed243d3SAndroid Build Coastguard Worker ///    Bits [7:0] are written to bits [7:0] of the result. \n
264*bed243d3SAndroid Build Coastguard Worker ///    Bits [15:8] are written to bits [23:16] of the result. \n
265*bed243d3SAndroid Build Coastguard Worker ///    Bits [23:16] are written to bits [39:32] of the result. \n
266*bed243d3SAndroid Build Coastguard Worker ///    Bits [31:24] are written to bits [55:48] of the result.
267*bed243d3SAndroid Build Coastguard Worker /// \param __m2
268*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
269*bed243d3SAndroid Build Coastguard Worker ///    Bits [7:0] are written to bits [15:8] of the result. \n
270*bed243d3SAndroid Build Coastguard Worker ///    Bits [15:8] are written to bits [31:24] of the result. \n
271*bed243d3SAndroid Build Coastguard Worker ///    Bits [23:16] are written to bits [47:40] of the result. \n
272*bed243d3SAndroid Build Coastguard Worker ///    Bits [31:24] are written to bits [63:56] of the result.
273*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the interleaved
274*bed243d3SAndroid Build Coastguard Worker ///    values.
275*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_unpacklo_pi8(__m64 __m1,__m64 __m2)276*bed243d3SAndroid Build Coastguard Worker _mm_unpacklo_pi8(__m64 __m1, __m64 __m2)
277*bed243d3SAndroid Build Coastguard Worker {
278*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
279*bed243d3SAndroid Build Coastguard Worker }
280*bed243d3SAndroid Build Coastguard Worker 
281*bed243d3SAndroid Build Coastguard Worker /// Unpacks the lower 32 bits from two 64-bit integer vectors of
282*bed243d3SAndroid Build Coastguard Worker ///    [4 x i16] and interleaves them into a 64-bit integer vector of [4 x i16].
283*bed243d3SAndroid Build Coastguard Worker ///
284*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
285*bed243d3SAndroid Build Coastguard Worker ///
286*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PUNPCKLWD </c> instruction.
287*bed243d3SAndroid Build Coastguard Worker ///
288*bed243d3SAndroid Build Coastguard Worker /// \param __m1
289*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
290*bed243d3SAndroid Build Coastguard Worker ///    Bits [15:0] are written to bits [15:0] of the result. \n
291*bed243d3SAndroid Build Coastguard Worker ///    Bits [31:16] are written to bits [47:32] of the result.
292*bed243d3SAndroid Build Coastguard Worker /// \param __m2
293*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
294*bed243d3SAndroid Build Coastguard Worker ///    Bits [15:0] are written to bits [31:16] of the result. \n
295*bed243d3SAndroid Build Coastguard Worker ///    Bits [31:16] are written to bits [63:48] of the result.
296*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the interleaved
297*bed243d3SAndroid Build Coastguard Worker ///    values.
298*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_unpacklo_pi16(__m64 __m1,__m64 __m2)299*bed243d3SAndroid Build Coastguard Worker _mm_unpacklo_pi16(__m64 __m1, __m64 __m2)
300*bed243d3SAndroid Build Coastguard Worker {
301*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
302*bed243d3SAndroid Build Coastguard Worker }
303*bed243d3SAndroid Build Coastguard Worker 
304*bed243d3SAndroid Build Coastguard Worker /// Unpacks the lower 32 bits from two 64-bit integer vectors of
305*bed243d3SAndroid Build Coastguard Worker ///    [2 x i32] and interleaves them into a 64-bit integer vector of [2 x i32].
306*bed243d3SAndroid Build Coastguard Worker ///
307*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
308*bed243d3SAndroid Build Coastguard Worker ///
309*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PUNPCKLDQ </c> instruction.
310*bed243d3SAndroid Build Coastguard Worker ///
311*bed243d3SAndroid Build Coastguard Worker /// \param __m1
312*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32]. The lower 32 bits are written to
313*bed243d3SAndroid Build Coastguard Worker ///    the lower 32 bits of the result.
314*bed243d3SAndroid Build Coastguard Worker /// \param __m2
315*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32]. The lower 32 bits are written to
316*bed243d3SAndroid Build Coastguard Worker ///    the upper 32 bits of the result.
317*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the interleaved
318*bed243d3SAndroid Build Coastguard Worker ///    values.
319*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_unpacklo_pi32(__m64 __m1,__m64 __m2)320*bed243d3SAndroid Build Coastguard Worker _mm_unpacklo_pi32(__m64 __m1, __m64 __m2)
321*bed243d3SAndroid Build Coastguard Worker {
322*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
323*bed243d3SAndroid Build Coastguard Worker }
324*bed243d3SAndroid Build Coastguard Worker 
325*bed243d3SAndroid Build Coastguard Worker /// Adds each 8-bit integer element of the first 64-bit integer vector
326*bed243d3SAndroid Build Coastguard Worker ///    of [8 x i8] to the corresponding 8-bit integer element of the second
327*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [8 x i8]. The lower 8 bits of the results are
328*bed243d3SAndroid Build Coastguard Worker ///    packed into a 64-bit integer vector of [8 x i8].
329*bed243d3SAndroid Build Coastguard Worker ///
330*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
331*bed243d3SAndroid Build Coastguard Worker ///
332*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDB </c> instruction.
333*bed243d3SAndroid Build Coastguard Worker ///
334*bed243d3SAndroid Build Coastguard Worker /// \param __m1
335*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
336*bed243d3SAndroid Build Coastguard Worker /// \param __m2
337*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
338*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the sums of both
339*bed243d3SAndroid Build Coastguard Worker ///    parameters.
340*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_add_pi8(__m64 __m1,__m64 __m2)341*bed243d3SAndroid Build Coastguard Worker _mm_add_pi8(__m64 __m1, __m64 __m2)
342*bed243d3SAndroid Build Coastguard Worker {
343*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
344*bed243d3SAndroid Build Coastguard Worker }
345*bed243d3SAndroid Build Coastguard Worker 
346*bed243d3SAndroid Build Coastguard Worker /// Adds each 16-bit integer element of the first 64-bit integer vector
347*bed243d3SAndroid Build Coastguard Worker ///    of [4 x i16] to the corresponding 16-bit integer element of the second
348*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [4 x i16]. The lower 16 bits of the results are
349*bed243d3SAndroid Build Coastguard Worker ///    packed into a 64-bit integer vector of [4 x i16].
350*bed243d3SAndroid Build Coastguard Worker ///
351*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
352*bed243d3SAndroid Build Coastguard Worker ///
353*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDW </c> instruction.
354*bed243d3SAndroid Build Coastguard Worker ///
355*bed243d3SAndroid Build Coastguard Worker /// \param __m1
356*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
357*bed243d3SAndroid Build Coastguard Worker /// \param __m2
358*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
359*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the sums of both
360*bed243d3SAndroid Build Coastguard Worker ///    parameters.
361*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_add_pi16(__m64 __m1,__m64 __m2)362*bed243d3SAndroid Build Coastguard Worker _mm_add_pi16(__m64 __m1, __m64 __m2)
363*bed243d3SAndroid Build Coastguard Worker {
364*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
365*bed243d3SAndroid Build Coastguard Worker }
366*bed243d3SAndroid Build Coastguard Worker 
367*bed243d3SAndroid Build Coastguard Worker /// Adds each 32-bit integer element of the first 64-bit integer vector
368*bed243d3SAndroid Build Coastguard Worker ///    of [2 x i32] to the corresponding 32-bit integer element of the second
369*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [2 x i32]. The lower 32 bits of the results are
370*bed243d3SAndroid Build Coastguard Worker ///    packed into a 64-bit integer vector of [2 x i32].
371*bed243d3SAndroid Build Coastguard Worker ///
372*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
373*bed243d3SAndroid Build Coastguard Worker ///
374*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDD </c> instruction.
375*bed243d3SAndroid Build Coastguard Worker ///
376*bed243d3SAndroid Build Coastguard Worker /// \param __m1
377*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
378*bed243d3SAndroid Build Coastguard Worker /// \param __m2
379*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
380*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the sums of both
381*bed243d3SAndroid Build Coastguard Worker ///    parameters.
382*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_add_pi32(__m64 __m1,__m64 __m2)383*bed243d3SAndroid Build Coastguard Worker _mm_add_pi32(__m64 __m1, __m64 __m2)
384*bed243d3SAndroid Build Coastguard Worker {
385*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
386*bed243d3SAndroid Build Coastguard Worker }
387*bed243d3SAndroid Build Coastguard Worker 
388*bed243d3SAndroid Build Coastguard Worker /// Adds, with saturation, each 8-bit signed integer element of the first
389*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [8 x i8] to the corresponding 8-bit signed
390*bed243d3SAndroid Build Coastguard Worker ///    integer element of the second 64-bit integer vector of [8 x i8].
391*bed243d3SAndroid Build Coastguard Worker ///
392*bed243d3SAndroid Build Coastguard Worker ///    Positive sums greater than 0x7F are saturated to 0x7F. Negative sums
393*bed243d3SAndroid Build Coastguard Worker ///    less than 0x80 are saturated to 0x80. The results are packed into a
394*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [8 x i8].
395*bed243d3SAndroid Build Coastguard Worker ///
396*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
397*bed243d3SAndroid Build Coastguard Worker ///
398*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDSB </c> instruction.
399*bed243d3SAndroid Build Coastguard Worker ///
400*bed243d3SAndroid Build Coastguard Worker /// \param __m1
401*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
402*bed243d3SAndroid Build Coastguard Worker /// \param __m2
403*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
404*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the saturated sums
405*bed243d3SAndroid Build Coastguard Worker ///    of both parameters.
406*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_adds_pi8(__m64 __m1,__m64 __m2)407*bed243d3SAndroid Build Coastguard Worker _mm_adds_pi8(__m64 __m1, __m64 __m2)
408*bed243d3SAndroid Build Coastguard Worker {
409*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2);
410*bed243d3SAndroid Build Coastguard Worker }
411*bed243d3SAndroid Build Coastguard Worker 
412*bed243d3SAndroid Build Coastguard Worker /// Adds, with saturation, each 16-bit signed integer element of the first
413*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [4 x i16] to the corresponding 16-bit signed
414*bed243d3SAndroid Build Coastguard Worker ///    integer element of the second 64-bit integer vector of [4 x i16].
415*bed243d3SAndroid Build Coastguard Worker ///
416*bed243d3SAndroid Build Coastguard Worker ///    Positive sums greater than 0x7FFF are saturated to 0x7FFF. Negative sums
417*bed243d3SAndroid Build Coastguard Worker ///    less than 0x8000 are saturated to 0x8000. The results are packed into a
418*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [4 x i16].
419*bed243d3SAndroid Build Coastguard Worker ///
420*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
421*bed243d3SAndroid Build Coastguard Worker ///
422*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDSW </c> instruction.
423*bed243d3SAndroid Build Coastguard Worker ///
424*bed243d3SAndroid Build Coastguard Worker /// \param __m1
425*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
426*bed243d3SAndroid Build Coastguard Worker /// \param __m2
427*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
428*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the saturated sums
429*bed243d3SAndroid Build Coastguard Worker ///    of both parameters.
430*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_adds_pi16(__m64 __m1,__m64 __m2)431*bed243d3SAndroid Build Coastguard Worker _mm_adds_pi16(__m64 __m1, __m64 __m2)
432*bed243d3SAndroid Build Coastguard Worker {
433*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2);
434*bed243d3SAndroid Build Coastguard Worker }
435*bed243d3SAndroid Build Coastguard Worker 
436*bed243d3SAndroid Build Coastguard Worker /// Adds, with saturation, each 8-bit unsigned integer element of the first
437*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [8 x i8] to the corresponding 8-bit unsigned
438*bed243d3SAndroid Build Coastguard Worker ///    integer element of the second 64-bit integer vector of [8 x i8].
439*bed243d3SAndroid Build Coastguard Worker ///
440*bed243d3SAndroid Build Coastguard Worker ///    Sums greater than 0xFF are saturated to 0xFF. The results are packed
441*bed243d3SAndroid Build Coastguard Worker ///    into a 64-bit integer vector of [8 x i8].
442*bed243d3SAndroid Build Coastguard Worker ///
443*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
444*bed243d3SAndroid Build Coastguard Worker ///
445*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDUSB </c> instruction.
446*bed243d3SAndroid Build Coastguard Worker ///
447*bed243d3SAndroid Build Coastguard Worker /// \param __m1
448*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
449*bed243d3SAndroid Build Coastguard Worker /// \param __m2
450*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
451*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the saturated
452*bed243d3SAndroid Build Coastguard Worker ///    unsigned sums of both parameters.
453*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_adds_pu8(__m64 __m1,__m64 __m2)454*bed243d3SAndroid Build Coastguard Worker _mm_adds_pu8(__m64 __m1, __m64 __m2)
455*bed243d3SAndroid Build Coastguard Worker {
456*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2);
457*bed243d3SAndroid Build Coastguard Worker }
458*bed243d3SAndroid Build Coastguard Worker 
459*bed243d3SAndroid Build Coastguard Worker /// Adds, with saturation, each 16-bit unsigned integer element of the first
460*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [4 x i16] to the corresponding 16-bit unsigned
461*bed243d3SAndroid Build Coastguard Worker ///    integer element of the second 64-bit integer vector of [4 x i16].
462*bed243d3SAndroid Build Coastguard Worker ///
463*bed243d3SAndroid Build Coastguard Worker ///    Sums greater than 0xFFFF are saturated to 0xFFFF. The results are packed
464*bed243d3SAndroid Build Coastguard Worker ///    into a 64-bit integer vector of [4 x i16].
465*bed243d3SAndroid Build Coastguard Worker ///
466*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
467*bed243d3SAndroid Build Coastguard Worker ///
468*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PADDUSW </c> instruction.
469*bed243d3SAndroid Build Coastguard Worker ///
470*bed243d3SAndroid Build Coastguard Worker /// \param __m1
471*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
472*bed243d3SAndroid Build Coastguard Worker /// \param __m2
473*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
474*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the saturated
475*bed243d3SAndroid Build Coastguard Worker ///    unsigned sums of both parameters.
476*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_adds_pu16(__m64 __m1,__m64 __m2)477*bed243d3SAndroid Build Coastguard Worker _mm_adds_pu16(__m64 __m1, __m64 __m2)
478*bed243d3SAndroid Build Coastguard Worker {
479*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2);
480*bed243d3SAndroid Build Coastguard Worker }
481*bed243d3SAndroid Build Coastguard Worker 
482*bed243d3SAndroid Build Coastguard Worker /// Subtracts each 8-bit integer element of the second 64-bit integer
483*bed243d3SAndroid Build Coastguard Worker ///    vector of [8 x i8] from the corresponding 8-bit integer element of the
484*bed243d3SAndroid Build Coastguard Worker ///    first 64-bit integer vector of [8 x i8]. The lower 8 bits of the results
485*bed243d3SAndroid Build Coastguard Worker ///    are packed into a 64-bit integer vector of [8 x i8].
486*bed243d3SAndroid Build Coastguard Worker ///
487*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
488*bed243d3SAndroid Build Coastguard Worker ///
489*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBB </c> instruction.
490*bed243d3SAndroid Build Coastguard Worker ///
491*bed243d3SAndroid Build Coastguard Worker /// \param __m1
492*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8] containing the minuends.
493*bed243d3SAndroid Build Coastguard Worker /// \param __m2
494*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8] containing the subtrahends.
495*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the differences of
496*bed243d3SAndroid Build Coastguard Worker ///    both parameters.
497*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sub_pi8(__m64 __m1,__m64 __m2)498*bed243d3SAndroid Build Coastguard Worker _mm_sub_pi8(__m64 __m1, __m64 __m2)
499*bed243d3SAndroid Build Coastguard Worker {
500*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2);
501*bed243d3SAndroid Build Coastguard Worker }
502*bed243d3SAndroid Build Coastguard Worker 
503*bed243d3SAndroid Build Coastguard Worker /// Subtracts each 16-bit integer element of the second 64-bit integer
504*bed243d3SAndroid Build Coastguard Worker ///    vector of [4 x i16] from the corresponding 16-bit integer element of the
505*bed243d3SAndroid Build Coastguard Worker ///    first 64-bit integer vector of [4 x i16]. The lower 16 bits of the
506*bed243d3SAndroid Build Coastguard Worker ///    results are packed into a 64-bit integer vector of [4 x i16].
507*bed243d3SAndroid Build Coastguard Worker ///
508*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
509*bed243d3SAndroid Build Coastguard Worker ///
510*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBW </c> instruction.
511*bed243d3SAndroid Build Coastguard Worker ///
512*bed243d3SAndroid Build Coastguard Worker /// \param __m1
513*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16] containing the minuends.
514*bed243d3SAndroid Build Coastguard Worker /// \param __m2
515*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16] containing the subtrahends.
516*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the differences of
517*bed243d3SAndroid Build Coastguard Worker ///    both parameters.
518*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sub_pi16(__m64 __m1,__m64 __m2)519*bed243d3SAndroid Build Coastguard Worker _mm_sub_pi16(__m64 __m1, __m64 __m2)
520*bed243d3SAndroid Build Coastguard Worker {
521*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2);
522*bed243d3SAndroid Build Coastguard Worker }
523*bed243d3SAndroid Build Coastguard Worker 
524*bed243d3SAndroid Build Coastguard Worker /// Subtracts each 32-bit integer element of the second 64-bit integer
525*bed243d3SAndroid Build Coastguard Worker ///    vector of [2 x i32] from the corresponding 32-bit integer element of the
526*bed243d3SAndroid Build Coastguard Worker ///    first 64-bit integer vector of [2 x i32]. The lower 32 bits of the
527*bed243d3SAndroid Build Coastguard Worker ///    results are packed into a 64-bit integer vector of [2 x i32].
528*bed243d3SAndroid Build Coastguard Worker ///
529*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
530*bed243d3SAndroid Build Coastguard Worker ///
531*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBD </c> instruction.
532*bed243d3SAndroid Build Coastguard Worker ///
533*bed243d3SAndroid Build Coastguard Worker /// \param __m1
534*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32] containing the minuends.
535*bed243d3SAndroid Build Coastguard Worker /// \param __m2
536*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32] containing the subtrahends.
537*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the differences of
538*bed243d3SAndroid Build Coastguard Worker ///    both parameters.
539*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sub_pi32(__m64 __m1,__m64 __m2)540*bed243d3SAndroid Build Coastguard Worker _mm_sub_pi32(__m64 __m1, __m64 __m2)
541*bed243d3SAndroid Build Coastguard Worker {
542*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2);
543*bed243d3SAndroid Build Coastguard Worker }
544*bed243d3SAndroid Build Coastguard Worker 
545*bed243d3SAndroid Build Coastguard Worker /// Subtracts, with saturation, each 8-bit signed integer element of the second
546*bed243d3SAndroid Build Coastguard Worker ///    64-bit integer vector of [8 x i8] from the corresponding 8-bit signed
547*bed243d3SAndroid Build Coastguard Worker ///    integer element of the first 64-bit integer vector of [8 x i8].
548*bed243d3SAndroid Build Coastguard Worker ///
549*bed243d3SAndroid Build Coastguard Worker ///    Positive results greater than 0x7F are saturated to 0x7F. Negative
550*bed243d3SAndroid Build Coastguard Worker ///    results less than 0x80 are saturated to 0x80. The results are packed
551*bed243d3SAndroid Build Coastguard Worker ///    into a 64-bit integer vector of [8 x i8].
552*bed243d3SAndroid Build Coastguard Worker ///
553*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
554*bed243d3SAndroid Build Coastguard Worker ///
555*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBSB </c> instruction.
556*bed243d3SAndroid Build Coastguard Worker ///
557*bed243d3SAndroid Build Coastguard Worker /// \param __m1
558*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8] containing the minuends.
559*bed243d3SAndroid Build Coastguard Worker /// \param __m2
560*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8] containing the subtrahends.
561*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the saturated
562*bed243d3SAndroid Build Coastguard Worker ///    differences of both parameters.
563*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_subs_pi8(__m64 __m1,__m64 __m2)564*bed243d3SAndroid Build Coastguard Worker _mm_subs_pi8(__m64 __m1, __m64 __m2)
565*bed243d3SAndroid Build Coastguard Worker {
566*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2);
567*bed243d3SAndroid Build Coastguard Worker }
568*bed243d3SAndroid Build Coastguard Worker 
569*bed243d3SAndroid Build Coastguard Worker /// Subtracts, with saturation, each 16-bit signed integer element of the
570*bed243d3SAndroid Build Coastguard Worker ///    second 64-bit integer vector of [4 x i16] from the corresponding 16-bit
571*bed243d3SAndroid Build Coastguard Worker ///    signed integer element of the first 64-bit integer vector of [4 x i16].
572*bed243d3SAndroid Build Coastguard Worker ///
573*bed243d3SAndroid Build Coastguard Worker ///    Positive results greater than 0x7FFF are saturated to 0x7FFF. Negative
574*bed243d3SAndroid Build Coastguard Worker ///    results less than 0x8000 are saturated to 0x8000. The results are packed
575*bed243d3SAndroid Build Coastguard Worker ///    into a 64-bit integer vector of [4 x i16].
576*bed243d3SAndroid Build Coastguard Worker ///
577*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
578*bed243d3SAndroid Build Coastguard Worker ///
579*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBSW </c> instruction.
580*bed243d3SAndroid Build Coastguard Worker ///
581*bed243d3SAndroid Build Coastguard Worker /// \param __m1
582*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16] containing the minuends.
583*bed243d3SAndroid Build Coastguard Worker /// \param __m2
584*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16] containing the subtrahends.
585*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the saturated
586*bed243d3SAndroid Build Coastguard Worker ///    differences of both parameters.
587*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_subs_pi16(__m64 __m1,__m64 __m2)588*bed243d3SAndroid Build Coastguard Worker _mm_subs_pi16(__m64 __m1, __m64 __m2)
589*bed243d3SAndroid Build Coastguard Worker {
590*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2);
591*bed243d3SAndroid Build Coastguard Worker }
592*bed243d3SAndroid Build Coastguard Worker 
593*bed243d3SAndroid Build Coastguard Worker /// Subtracts each 8-bit unsigned integer element of the second 64-bit
594*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [8 x i8] from the corresponding 8-bit unsigned integer
595*bed243d3SAndroid Build Coastguard Worker ///    element of the first 64-bit integer vector of [8 x i8].
596*bed243d3SAndroid Build Coastguard Worker ///
597*bed243d3SAndroid Build Coastguard Worker ///    If an element of the first vector is less than the corresponding element
598*bed243d3SAndroid Build Coastguard Worker ///    of the second vector, the result is saturated to 0. The results are
599*bed243d3SAndroid Build Coastguard Worker ///    packed into a 64-bit integer vector of [8 x i8].
600*bed243d3SAndroid Build Coastguard Worker ///
601*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
602*bed243d3SAndroid Build Coastguard Worker ///
603*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBUSB </c> instruction.
604*bed243d3SAndroid Build Coastguard Worker ///
605*bed243d3SAndroid Build Coastguard Worker /// \param __m1
606*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8] containing the minuends.
607*bed243d3SAndroid Build Coastguard Worker /// \param __m2
608*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8] containing the subtrahends.
609*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the saturated
610*bed243d3SAndroid Build Coastguard Worker ///    differences of both parameters.
611*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_subs_pu8(__m64 __m1,__m64 __m2)612*bed243d3SAndroid Build Coastguard Worker _mm_subs_pu8(__m64 __m1, __m64 __m2)
613*bed243d3SAndroid Build Coastguard Worker {
614*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2);
615*bed243d3SAndroid Build Coastguard Worker }
616*bed243d3SAndroid Build Coastguard Worker 
617*bed243d3SAndroid Build Coastguard Worker /// Subtracts each 16-bit unsigned integer element of the second 64-bit
618*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [4 x i16] from the corresponding 16-bit unsigned
619*bed243d3SAndroid Build Coastguard Worker ///    integer element of the first 64-bit integer vector of [4 x i16].
620*bed243d3SAndroid Build Coastguard Worker ///
621*bed243d3SAndroid Build Coastguard Worker ///    If an element of the first vector is less than the corresponding element
622*bed243d3SAndroid Build Coastguard Worker ///    of the second vector, the result is saturated to 0. The results are
623*bed243d3SAndroid Build Coastguard Worker ///    packed into a 64-bit integer vector of [4 x i16].
624*bed243d3SAndroid Build Coastguard Worker ///
625*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
626*bed243d3SAndroid Build Coastguard Worker ///
627*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSUBUSW </c> instruction.
628*bed243d3SAndroid Build Coastguard Worker ///
629*bed243d3SAndroid Build Coastguard Worker /// \param __m1
630*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16] containing the minuends.
631*bed243d3SAndroid Build Coastguard Worker /// \param __m2
632*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16] containing the subtrahends.
633*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the saturated
634*bed243d3SAndroid Build Coastguard Worker ///    differences of both parameters.
635*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_subs_pu16(__m64 __m1,__m64 __m2)636*bed243d3SAndroid Build Coastguard Worker _mm_subs_pu16(__m64 __m1, __m64 __m2)
637*bed243d3SAndroid Build Coastguard Worker {
638*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2);
639*bed243d3SAndroid Build Coastguard Worker }
640*bed243d3SAndroid Build Coastguard Worker 
641*bed243d3SAndroid Build Coastguard Worker /// Multiplies each 16-bit signed integer element of the first 64-bit
642*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
643*bed243d3SAndroid Build Coastguard Worker ///    element of the second 64-bit integer vector of [4 x i16] and get four
644*bed243d3SAndroid Build Coastguard Worker ///    32-bit products. Adds adjacent pairs of products to get two 32-bit sums.
645*bed243d3SAndroid Build Coastguard Worker ///    The lower 32 bits of these two sums are packed into a 64-bit integer
646*bed243d3SAndroid Build Coastguard Worker ///    vector of [2 x i32].
647*bed243d3SAndroid Build Coastguard Worker ///
648*bed243d3SAndroid Build Coastguard Worker ///    For example, bits [15:0] of both parameters are multiplied, bits [31:16]
649*bed243d3SAndroid Build Coastguard Worker ///    of both parameters are multiplied, and the sum of both results is written
650*bed243d3SAndroid Build Coastguard Worker ///    to bits [31:0] of the result.
651*bed243d3SAndroid Build Coastguard Worker ///
652*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
653*bed243d3SAndroid Build Coastguard Worker ///
654*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PMADDWD </c> instruction.
655*bed243d3SAndroid Build Coastguard Worker ///
656*bed243d3SAndroid Build Coastguard Worker /// \param __m1
657*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
658*bed243d3SAndroid Build Coastguard Worker /// \param __m2
659*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
660*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the sums of
661*bed243d3SAndroid Build Coastguard Worker ///    products of both parameters.
662*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_madd_pi16(__m64 __m1,__m64 __m2)663*bed243d3SAndroid Build Coastguard Worker _mm_madd_pi16(__m64 __m1, __m64 __m2)
664*bed243d3SAndroid Build Coastguard Worker {
665*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2);
666*bed243d3SAndroid Build Coastguard Worker }
667*bed243d3SAndroid Build Coastguard Worker 
668*bed243d3SAndroid Build Coastguard Worker /// Multiplies each 16-bit signed integer element of the first 64-bit
669*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
670*bed243d3SAndroid Build Coastguard Worker ///    element of the second 64-bit integer vector of [4 x i16]. Packs the upper
671*bed243d3SAndroid Build Coastguard Worker ///    16 bits of the 32-bit products into a 64-bit integer vector of [4 x i16].
672*bed243d3SAndroid Build Coastguard Worker ///
673*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
674*bed243d3SAndroid Build Coastguard Worker ///
675*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PMULHW </c> instruction.
676*bed243d3SAndroid Build Coastguard Worker ///
677*bed243d3SAndroid Build Coastguard Worker /// \param __m1
678*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
679*bed243d3SAndroid Build Coastguard Worker /// \param __m2
680*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
681*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the upper 16 bits
682*bed243d3SAndroid Build Coastguard Worker ///    of the products of both parameters.
683*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_mulhi_pi16(__m64 __m1,__m64 __m2)684*bed243d3SAndroid Build Coastguard Worker _mm_mulhi_pi16(__m64 __m1, __m64 __m2)
685*bed243d3SAndroid Build Coastguard Worker {
686*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2);
687*bed243d3SAndroid Build Coastguard Worker }
688*bed243d3SAndroid Build Coastguard Worker 
689*bed243d3SAndroid Build Coastguard Worker /// Multiplies each 16-bit signed integer element of the first 64-bit
690*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
691*bed243d3SAndroid Build Coastguard Worker ///    element of the second 64-bit integer vector of [4 x i16]. Packs the lower
692*bed243d3SAndroid Build Coastguard Worker ///    16 bits of the 32-bit products into a 64-bit integer vector of [4 x i16].
693*bed243d3SAndroid Build Coastguard Worker ///
694*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
695*bed243d3SAndroid Build Coastguard Worker ///
696*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PMULLW </c> instruction.
697*bed243d3SAndroid Build Coastguard Worker ///
698*bed243d3SAndroid Build Coastguard Worker /// \param __m1
699*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
700*bed243d3SAndroid Build Coastguard Worker /// \param __m2
701*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
702*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the lower 16 bits
703*bed243d3SAndroid Build Coastguard Worker ///    of the products of both parameters.
704*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_mullo_pi16(__m64 __m1,__m64 __m2)705*bed243d3SAndroid Build Coastguard Worker _mm_mullo_pi16(__m64 __m1, __m64 __m2)
706*bed243d3SAndroid Build Coastguard Worker {
707*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2);
708*bed243d3SAndroid Build Coastguard Worker }
709*bed243d3SAndroid Build Coastguard Worker 
710*bed243d3SAndroid Build Coastguard Worker /// Left-shifts each 16-bit signed integer element of the first
711*bed243d3SAndroid Build Coastguard Worker ///    parameter, which is a 64-bit integer vector of [4 x i16], by the number
712*bed243d3SAndroid Build Coastguard Worker ///    of bits specified by the second parameter, which is a 64-bit integer. The
713*bed243d3SAndroid Build Coastguard Worker ///    lower 16 bits of the results are packed into a 64-bit integer vector of
714*bed243d3SAndroid Build Coastguard Worker ///    [4 x i16].
715*bed243d3SAndroid Build Coastguard Worker ///
716*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
717*bed243d3SAndroid Build Coastguard Worker ///
718*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSLLW </c> instruction.
719*bed243d3SAndroid Build Coastguard Worker ///
720*bed243d3SAndroid Build Coastguard Worker /// \param __m
721*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
722*bed243d3SAndroid Build Coastguard Worker /// \param __count
723*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
724*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted
725*bed243d3SAndroid Build Coastguard Worker ///    values. If \a __count is greater or equal to 16, the result is set to all
726*bed243d3SAndroid Build Coastguard Worker ///    0.
727*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sll_pi16(__m64 __m,__m64 __count)728*bed243d3SAndroid Build Coastguard Worker _mm_sll_pi16(__m64 __m, __m64 __count)
729*bed243d3SAndroid Build Coastguard Worker {
730*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count);
731*bed243d3SAndroid Build Coastguard Worker }
732*bed243d3SAndroid Build Coastguard Worker 
733*bed243d3SAndroid Build Coastguard Worker /// Left-shifts each 16-bit signed integer element of a 64-bit integer
734*bed243d3SAndroid Build Coastguard Worker ///    vector of [4 x i16] by the number of bits specified by a 32-bit integer.
735*bed243d3SAndroid Build Coastguard Worker ///    The lower 16 bits of the results are packed into a 64-bit integer vector
736*bed243d3SAndroid Build Coastguard Worker ///    of [4 x i16].
737*bed243d3SAndroid Build Coastguard Worker ///
738*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
739*bed243d3SAndroid Build Coastguard Worker ///
740*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSLLW </c> instruction.
741*bed243d3SAndroid Build Coastguard Worker ///
742*bed243d3SAndroid Build Coastguard Worker /// \param __m
743*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
744*bed243d3SAndroid Build Coastguard Worker /// \param __count
745*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
746*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted
747*bed243d3SAndroid Build Coastguard Worker ///    values. If \a __count is greater or equal to 16, the result is set to all
748*bed243d3SAndroid Build Coastguard Worker ///    0.
749*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_slli_pi16(__m64 __m,int __count)750*bed243d3SAndroid Build Coastguard Worker _mm_slli_pi16(__m64 __m, int __count)
751*bed243d3SAndroid Build Coastguard Worker {
752*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count);
753*bed243d3SAndroid Build Coastguard Worker }
754*bed243d3SAndroid Build Coastguard Worker 
755*bed243d3SAndroid Build Coastguard Worker /// Left-shifts each 32-bit signed integer element of the first
756*bed243d3SAndroid Build Coastguard Worker ///    parameter, which is a 64-bit integer vector of [2 x i32], by the number
757*bed243d3SAndroid Build Coastguard Worker ///    of bits specified by the second parameter, which is a 64-bit integer. The
758*bed243d3SAndroid Build Coastguard Worker ///    lower 32 bits of the results are packed into a 64-bit integer vector of
759*bed243d3SAndroid Build Coastguard Worker ///    [2 x i32].
760*bed243d3SAndroid Build Coastguard Worker ///
761*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
762*bed243d3SAndroid Build Coastguard Worker ///
763*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSLLD </c> instruction.
764*bed243d3SAndroid Build Coastguard Worker ///
765*bed243d3SAndroid Build Coastguard Worker /// \param __m
766*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
767*bed243d3SAndroid Build Coastguard Worker /// \param __count
768*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
769*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted
770*bed243d3SAndroid Build Coastguard Worker ///    values. If \a __count is greater or equal to 32, the result is set to all
771*bed243d3SAndroid Build Coastguard Worker ///    0.
772*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sll_pi32(__m64 __m,__m64 __count)773*bed243d3SAndroid Build Coastguard Worker _mm_sll_pi32(__m64 __m, __m64 __count)
774*bed243d3SAndroid Build Coastguard Worker {
775*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pslld((__v2si)__m, __count);
776*bed243d3SAndroid Build Coastguard Worker }
777*bed243d3SAndroid Build Coastguard Worker 
778*bed243d3SAndroid Build Coastguard Worker /// Left-shifts each 32-bit signed integer element of a 64-bit integer
779*bed243d3SAndroid Build Coastguard Worker ///    vector of [2 x i32] by the number of bits specified by a 32-bit integer.
780*bed243d3SAndroid Build Coastguard Worker ///    The lower 32 bits of the results are packed into a 64-bit integer vector
781*bed243d3SAndroid Build Coastguard Worker ///    of [2 x i32].
782*bed243d3SAndroid Build Coastguard Worker ///
783*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
784*bed243d3SAndroid Build Coastguard Worker ///
785*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSLLD </c> instruction.
786*bed243d3SAndroid Build Coastguard Worker ///
787*bed243d3SAndroid Build Coastguard Worker /// \param __m
788*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
789*bed243d3SAndroid Build Coastguard Worker /// \param __count
790*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
791*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted
792*bed243d3SAndroid Build Coastguard Worker ///    values. If \a __count is greater or equal to 32, the result is set to all
793*bed243d3SAndroid Build Coastguard Worker ///    0.
794*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_slli_pi32(__m64 __m,int __count)795*bed243d3SAndroid Build Coastguard Worker _mm_slli_pi32(__m64 __m, int __count)
796*bed243d3SAndroid Build Coastguard Worker {
797*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count);
798*bed243d3SAndroid Build Coastguard Worker }
799*bed243d3SAndroid Build Coastguard Worker 
800*bed243d3SAndroid Build Coastguard Worker /// Left-shifts the first 64-bit integer parameter by the number of bits
801*bed243d3SAndroid Build Coastguard Worker ///    specified by the second 64-bit integer parameter. The lower 64 bits of
802*bed243d3SAndroid Build Coastguard Worker ///    result are returned.
803*bed243d3SAndroid Build Coastguard Worker ///
804*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
805*bed243d3SAndroid Build Coastguard Worker ///
806*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSLLQ </c> instruction.
807*bed243d3SAndroid Build Coastguard Worker ///
808*bed243d3SAndroid Build Coastguard Worker /// \param __m
809*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
810*bed243d3SAndroid Build Coastguard Worker /// \param __count
811*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
812*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the left-shifted value. If
813*bed243d3SAndroid Build Coastguard Worker ///     \a __count is greater or equal to 64, the result is set to 0.
814*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sll_si64(__m64 __m,__m64 __count)815*bed243d3SAndroid Build Coastguard Worker _mm_sll_si64(__m64 __m, __m64 __count)
816*bed243d3SAndroid Build Coastguard Worker {
817*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psllq((__v1di)__m, __count);
818*bed243d3SAndroid Build Coastguard Worker }
819*bed243d3SAndroid Build Coastguard Worker 
820*bed243d3SAndroid Build Coastguard Worker /// Left-shifts the first parameter, which is a 64-bit integer, by the
821*bed243d3SAndroid Build Coastguard Worker ///    number of bits specified by the second parameter, which is a 32-bit
822*bed243d3SAndroid Build Coastguard Worker ///    integer. The lower 64 bits of result are returned.
823*bed243d3SAndroid Build Coastguard Worker ///
824*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
825*bed243d3SAndroid Build Coastguard Worker ///
826*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSLLQ </c> instruction.
827*bed243d3SAndroid Build Coastguard Worker ///
828*bed243d3SAndroid Build Coastguard Worker /// \param __m
829*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
830*bed243d3SAndroid Build Coastguard Worker /// \param __count
831*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
832*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the left-shifted value. If
833*bed243d3SAndroid Build Coastguard Worker ///     \a __count is greater or equal to 64, the result is set to 0.
834*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_slli_si64(__m64 __m,int __count)835*bed243d3SAndroid Build Coastguard Worker _mm_slli_si64(__m64 __m, int __count)
836*bed243d3SAndroid Build Coastguard Worker {
837*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psllqi((__v1di)__m, __count);
838*bed243d3SAndroid Build Coastguard Worker }
839*bed243d3SAndroid Build Coastguard Worker 
840*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 16-bit integer element of the first parameter,
841*bed243d3SAndroid Build Coastguard Worker ///    which is a 64-bit integer vector of [4 x i16], by the number of bits
842*bed243d3SAndroid Build Coastguard Worker ///    specified by the second parameter, which is a 64-bit integer.
843*bed243d3SAndroid Build Coastguard Worker ///
844*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are filled with the sign bit of the initial value of each
845*bed243d3SAndroid Build Coastguard Worker ///    16-bit element. The 16-bit results are packed into a 64-bit integer
846*bed243d3SAndroid Build Coastguard Worker ///    vector of [4 x i16].
847*bed243d3SAndroid Build Coastguard Worker ///
848*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
849*bed243d3SAndroid Build Coastguard Worker ///
850*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRAW </c> instruction.
851*bed243d3SAndroid Build Coastguard Worker ///
852*bed243d3SAndroid Build Coastguard Worker /// \param __m
853*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
854*bed243d3SAndroid Build Coastguard Worker /// \param __count
855*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
856*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
857*bed243d3SAndroid Build Coastguard Worker ///    values.
858*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sra_pi16(__m64 __m,__m64 __count)859*bed243d3SAndroid Build Coastguard Worker _mm_sra_pi16(__m64 __m, __m64 __count)
860*bed243d3SAndroid Build Coastguard Worker {
861*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psraw((__v4hi)__m, __count);
862*bed243d3SAndroid Build Coastguard Worker }
863*bed243d3SAndroid Build Coastguard Worker 
864*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 16-bit integer element of a 64-bit integer vector
865*bed243d3SAndroid Build Coastguard Worker ///    of [4 x i16] by the number of bits specified by a 32-bit integer.
866*bed243d3SAndroid Build Coastguard Worker ///
867*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are filled with the sign bit of the initial value of each
868*bed243d3SAndroid Build Coastguard Worker ///    16-bit element. The 16-bit results are packed into a 64-bit integer
869*bed243d3SAndroid Build Coastguard Worker ///    vector of [4 x i16].
870*bed243d3SAndroid Build Coastguard Worker ///
871*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
872*bed243d3SAndroid Build Coastguard Worker ///
873*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRAW </c> instruction.
874*bed243d3SAndroid Build Coastguard Worker ///
875*bed243d3SAndroid Build Coastguard Worker /// \param __m
876*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
877*bed243d3SAndroid Build Coastguard Worker /// \param __count
878*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
879*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
880*bed243d3SAndroid Build Coastguard Worker ///    values.
881*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srai_pi16(__m64 __m,int __count)882*bed243d3SAndroid Build Coastguard Worker _mm_srai_pi16(__m64 __m, int __count)
883*bed243d3SAndroid Build Coastguard Worker {
884*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count);
885*bed243d3SAndroid Build Coastguard Worker }
886*bed243d3SAndroid Build Coastguard Worker 
887*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 32-bit integer element of the first parameter,
888*bed243d3SAndroid Build Coastguard Worker ///    which is a 64-bit integer vector of [2 x i32], by the number of bits
889*bed243d3SAndroid Build Coastguard Worker ///    specified by the second parameter, which is a 64-bit integer.
890*bed243d3SAndroid Build Coastguard Worker ///
891*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are filled with the sign bit of the initial value of each
892*bed243d3SAndroid Build Coastguard Worker ///    32-bit element. The 32-bit results are packed into a 64-bit integer
893*bed243d3SAndroid Build Coastguard Worker ///    vector of [2 x i32].
894*bed243d3SAndroid Build Coastguard Worker ///
895*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
896*bed243d3SAndroid Build Coastguard Worker ///
897*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRAD </c> instruction.
898*bed243d3SAndroid Build Coastguard Worker ///
899*bed243d3SAndroid Build Coastguard Worker /// \param __m
900*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
901*bed243d3SAndroid Build Coastguard Worker /// \param __count
902*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
903*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
904*bed243d3SAndroid Build Coastguard Worker ///    values.
905*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_sra_pi32(__m64 __m,__m64 __count)906*bed243d3SAndroid Build Coastguard Worker _mm_sra_pi32(__m64 __m, __m64 __count)
907*bed243d3SAndroid Build Coastguard Worker {
908*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrad((__v2si)__m, __count);
909*bed243d3SAndroid Build Coastguard Worker }
910*bed243d3SAndroid Build Coastguard Worker 
911*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 32-bit integer element of a 64-bit integer vector
912*bed243d3SAndroid Build Coastguard Worker ///    of [2 x i32] by the number of bits specified by a 32-bit integer.
913*bed243d3SAndroid Build Coastguard Worker ///
914*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are filled with the sign bit of the initial value of each
915*bed243d3SAndroid Build Coastguard Worker ///    32-bit element. The 32-bit results are packed into a 64-bit integer
916*bed243d3SAndroid Build Coastguard Worker ///    vector of [2 x i32].
917*bed243d3SAndroid Build Coastguard Worker ///
918*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
919*bed243d3SAndroid Build Coastguard Worker ///
920*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRAD </c> instruction.
921*bed243d3SAndroid Build Coastguard Worker ///
922*bed243d3SAndroid Build Coastguard Worker /// \param __m
923*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
924*bed243d3SAndroid Build Coastguard Worker /// \param __count
925*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
926*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
927*bed243d3SAndroid Build Coastguard Worker ///    values.
928*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srai_pi32(__m64 __m,int __count)929*bed243d3SAndroid Build Coastguard Worker _mm_srai_pi32(__m64 __m, int __count)
930*bed243d3SAndroid Build Coastguard Worker {
931*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psradi((__v2si)__m, __count);
932*bed243d3SAndroid Build Coastguard Worker }
933*bed243d3SAndroid Build Coastguard Worker 
934*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 16-bit integer element of the first parameter,
935*bed243d3SAndroid Build Coastguard Worker ///    which is a 64-bit integer vector of [4 x i16], by the number of bits
936*bed243d3SAndroid Build Coastguard Worker ///    specified by the second parameter, which is a 64-bit integer.
937*bed243d3SAndroid Build Coastguard Worker ///
938*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are cleared. The 16-bit results are packed into a 64-bit
939*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [4 x i16].
940*bed243d3SAndroid Build Coastguard Worker ///
941*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
942*bed243d3SAndroid Build Coastguard Worker ///
943*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRLW </c> instruction.
944*bed243d3SAndroid Build Coastguard Worker ///
945*bed243d3SAndroid Build Coastguard Worker /// \param __m
946*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
947*bed243d3SAndroid Build Coastguard Worker /// \param __count
948*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
949*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
950*bed243d3SAndroid Build Coastguard Worker ///    values.
951*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srl_pi16(__m64 __m,__m64 __count)952*bed243d3SAndroid Build Coastguard Worker _mm_srl_pi16(__m64 __m, __m64 __count)
953*bed243d3SAndroid Build Coastguard Worker {
954*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrlw((__v4hi)__m, __count);
955*bed243d3SAndroid Build Coastguard Worker }
956*bed243d3SAndroid Build Coastguard Worker 
957*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 16-bit integer element of a 64-bit integer vector
958*bed243d3SAndroid Build Coastguard Worker ///    of [4 x i16] by the number of bits specified by a 32-bit integer.
959*bed243d3SAndroid Build Coastguard Worker ///
960*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are cleared. The 16-bit results are packed into a 64-bit
961*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [4 x i16].
962*bed243d3SAndroid Build Coastguard Worker ///
963*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
964*bed243d3SAndroid Build Coastguard Worker ///
965*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRLW </c> instruction.
966*bed243d3SAndroid Build Coastguard Worker ///
967*bed243d3SAndroid Build Coastguard Worker /// \param __m
968*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
969*bed243d3SAndroid Build Coastguard Worker /// \param __count
970*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
971*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
972*bed243d3SAndroid Build Coastguard Worker ///    values.
973*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srli_pi16(__m64 __m,int __count)974*bed243d3SAndroid Build Coastguard Worker _mm_srli_pi16(__m64 __m, int __count)
975*bed243d3SAndroid Build Coastguard Worker {
976*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count);
977*bed243d3SAndroid Build Coastguard Worker }
978*bed243d3SAndroid Build Coastguard Worker 
979*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 32-bit integer element of the first parameter,
980*bed243d3SAndroid Build Coastguard Worker ///    which is a 64-bit integer vector of [2 x i32], by the number of bits
981*bed243d3SAndroid Build Coastguard Worker ///    specified by the second parameter, which is a 64-bit integer.
982*bed243d3SAndroid Build Coastguard Worker ///
983*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are cleared. The 32-bit results are packed into a 64-bit
984*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [2 x i32].
985*bed243d3SAndroid Build Coastguard Worker ///
986*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
987*bed243d3SAndroid Build Coastguard Worker ///
988*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRLD </c> instruction.
989*bed243d3SAndroid Build Coastguard Worker ///
990*bed243d3SAndroid Build Coastguard Worker /// \param __m
991*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
992*bed243d3SAndroid Build Coastguard Worker /// \param __count
993*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
994*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
995*bed243d3SAndroid Build Coastguard Worker ///    values.
996*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srl_pi32(__m64 __m,__m64 __count)997*bed243d3SAndroid Build Coastguard Worker _mm_srl_pi32(__m64 __m, __m64 __count)
998*bed243d3SAndroid Build Coastguard Worker {
999*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrld((__v2si)__m, __count);
1000*bed243d3SAndroid Build Coastguard Worker }
1001*bed243d3SAndroid Build Coastguard Worker 
1002*bed243d3SAndroid Build Coastguard Worker /// Right-shifts each 32-bit integer element of a 64-bit integer vector
1003*bed243d3SAndroid Build Coastguard Worker ///    of [2 x i32] by the number of bits specified by a 32-bit integer.
1004*bed243d3SAndroid Build Coastguard Worker ///
1005*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are cleared. The 32-bit results are packed into a 64-bit
1006*bed243d3SAndroid Build Coastguard Worker ///    integer vector of [2 x i32].
1007*bed243d3SAndroid Build Coastguard Worker ///
1008*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1009*bed243d3SAndroid Build Coastguard Worker ///
1010*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRLD </c> instruction.
1011*bed243d3SAndroid Build Coastguard Worker ///
1012*bed243d3SAndroid Build Coastguard Worker /// \param __m
1013*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
1014*bed243d3SAndroid Build Coastguard Worker /// \param __count
1015*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
1016*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
1017*bed243d3SAndroid Build Coastguard Worker ///    values.
1018*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srli_pi32(__m64 __m,int __count)1019*bed243d3SAndroid Build Coastguard Worker _mm_srli_pi32(__m64 __m, int __count)
1020*bed243d3SAndroid Build Coastguard Worker {
1021*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count);
1022*bed243d3SAndroid Build Coastguard Worker }
1023*bed243d3SAndroid Build Coastguard Worker 
1024*bed243d3SAndroid Build Coastguard Worker /// Right-shifts the first 64-bit integer parameter by the number of bits
1025*bed243d3SAndroid Build Coastguard Worker ///    specified by the second 64-bit integer parameter.
1026*bed243d3SAndroid Build Coastguard Worker ///
1027*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are cleared.
1028*bed243d3SAndroid Build Coastguard Worker ///
1029*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1030*bed243d3SAndroid Build Coastguard Worker ///
1031*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRLQ </c> instruction.
1032*bed243d3SAndroid Build Coastguard Worker ///
1033*bed243d3SAndroid Build Coastguard Worker /// \param __m
1034*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
1035*bed243d3SAndroid Build Coastguard Worker /// \param __count
1036*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
1037*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the right-shifted value.
1038*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srl_si64(__m64 __m,__m64 __count)1039*bed243d3SAndroid Build Coastguard Worker _mm_srl_si64(__m64 __m, __m64 __count)
1040*bed243d3SAndroid Build Coastguard Worker {
1041*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrlq((__v1di)__m, __count);
1042*bed243d3SAndroid Build Coastguard Worker }
1043*bed243d3SAndroid Build Coastguard Worker 
1044*bed243d3SAndroid Build Coastguard Worker /// Right-shifts the first parameter, which is a 64-bit integer, by the
1045*bed243d3SAndroid Build Coastguard Worker ///    number of bits specified by the second parameter, which is a 32-bit
1046*bed243d3SAndroid Build Coastguard Worker ///    integer.
1047*bed243d3SAndroid Build Coastguard Worker ///
1048*bed243d3SAndroid Build Coastguard Worker ///    High-order bits are cleared.
1049*bed243d3SAndroid Build Coastguard Worker ///
1050*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1051*bed243d3SAndroid Build Coastguard Worker ///
1052*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PSRLQ </c> instruction.
1053*bed243d3SAndroid Build Coastguard Worker ///
1054*bed243d3SAndroid Build Coastguard Worker /// \param __m
1055*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector interpreted as a single 64-bit integer.
1056*bed243d3SAndroid Build Coastguard Worker /// \param __count
1057*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value.
1058*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the right-shifted value.
1059*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_srli_si64(__m64 __m,int __count)1060*bed243d3SAndroid Build Coastguard Worker _mm_srli_si64(__m64 __m, int __count)
1061*bed243d3SAndroid Build Coastguard Worker {
1062*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_psrlqi((__v1di)__m, __count);
1063*bed243d3SAndroid Build Coastguard Worker }
1064*bed243d3SAndroid Build Coastguard Worker 
1065*bed243d3SAndroid Build Coastguard Worker /// Performs a bitwise AND of two 64-bit integer vectors.
1066*bed243d3SAndroid Build Coastguard Worker ///
1067*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1068*bed243d3SAndroid Build Coastguard Worker ///
1069*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PAND </c> instruction.
1070*bed243d3SAndroid Build Coastguard Worker ///
1071*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1072*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1073*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1074*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1075*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the bitwise AND of both
1076*bed243d3SAndroid Build Coastguard Worker ///    parameters.
1077*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_and_si64(__m64 __m1,__m64 __m2)1078*bed243d3SAndroid Build Coastguard Worker _mm_and_si64(__m64 __m1, __m64 __m2)
1079*bed243d3SAndroid Build Coastguard Worker {
1080*bed243d3SAndroid Build Coastguard Worker     return __builtin_ia32_pand((__v1di)__m1, (__v1di)__m2);
1081*bed243d3SAndroid Build Coastguard Worker }
1082*bed243d3SAndroid Build Coastguard Worker 
1083*bed243d3SAndroid Build Coastguard Worker /// Performs a bitwise NOT of the first 64-bit integer vector, and then
1084*bed243d3SAndroid Build Coastguard Worker ///    performs a bitwise AND of the intermediate result and the second 64-bit
1085*bed243d3SAndroid Build Coastguard Worker ///    integer vector.
1086*bed243d3SAndroid Build Coastguard Worker ///
1087*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1088*bed243d3SAndroid Build Coastguard Worker ///
1089*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PANDN </c> instruction.
1090*bed243d3SAndroid Build Coastguard Worker ///
1091*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1092*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector. The one's complement of this parameter is used
1093*bed243d3SAndroid Build Coastguard Worker ///    in the bitwise AND.
1094*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1095*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1096*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the bitwise AND of the second
1097*bed243d3SAndroid Build Coastguard Worker ///    parameter and the one's complement of the first parameter.
1098*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_andnot_si64(__m64 __m1,__m64 __m2)1099*bed243d3SAndroid Build Coastguard Worker _mm_andnot_si64(__m64 __m1, __m64 __m2)
1100*bed243d3SAndroid Build Coastguard Worker {
1101*bed243d3SAndroid Build Coastguard Worker     return __builtin_ia32_pandn((__v1di)__m1, (__v1di)__m2);
1102*bed243d3SAndroid Build Coastguard Worker }
1103*bed243d3SAndroid Build Coastguard Worker 
1104*bed243d3SAndroid Build Coastguard Worker /// Performs a bitwise OR of two 64-bit integer vectors.
1105*bed243d3SAndroid Build Coastguard Worker ///
1106*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1107*bed243d3SAndroid Build Coastguard Worker ///
1108*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> POR </c> instruction.
1109*bed243d3SAndroid Build Coastguard Worker ///
1110*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1111*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1112*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1113*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1114*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the bitwise OR of both
1115*bed243d3SAndroid Build Coastguard Worker ///    parameters.
1116*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_or_si64(__m64 __m1,__m64 __m2)1117*bed243d3SAndroid Build Coastguard Worker _mm_or_si64(__m64 __m1, __m64 __m2)
1118*bed243d3SAndroid Build Coastguard Worker {
1119*bed243d3SAndroid Build Coastguard Worker     return __builtin_ia32_por((__v1di)__m1, (__v1di)__m2);
1120*bed243d3SAndroid Build Coastguard Worker }
1121*bed243d3SAndroid Build Coastguard Worker 
1122*bed243d3SAndroid Build Coastguard Worker /// Performs a bitwise exclusive OR of two 64-bit integer vectors.
1123*bed243d3SAndroid Build Coastguard Worker ///
1124*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1125*bed243d3SAndroid Build Coastguard Worker ///
1126*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PXOR </c> instruction.
1127*bed243d3SAndroid Build Coastguard Worker ///
1128*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1129*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1130*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1131*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector.
1132*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector containing the bitwise exclusive OR of both
1133*bed243d3SAndroid Build Coastguard Worker ///    parameters.
1134*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_xor_si64(__m64 __m1,__m64 __m2)1135*bed243d3SAndroid Build Coastguard Worker _mm_xor_si64(__m64 __m1, __m64 __m2)
1136*bed243d3SAndroid Build Coastguard Worker {
1137*bed243d3SAndroid Build Coastguard Worker     return __builtin_ia32_pxor((__v1di)__m1, (__v1di)__m2);
1138*bed243d3SAndroid Build Coastguard Worker }
1139*bed243d3SAndroid Build Coastguard Worker 
1140*bed243d3SAndroid Build Coastguard Worker /// Compares the 8-bit integer elements of two 64-bit integer vectors of
1141*bed243d3SAndroid Build Coastguard Worker ///    [8 x i8] to determine if the element of the first vector is equal to the
1142*bed243d3SAndroid Build Coastguard Worker ///    corresponding element of the second vector.
1143*bed243d3SAndroid Build Coastguard Worker ///
1144*bed243d3SAndroid Build Coastguard Worker ///    The comparison yields 0 for false, 0xFF for true.
1145*bed243d3SAndroid Build Coastguard Worker ///
1146*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1147*bed243d3SAndroid Build Coastguard Worker ///
1148*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PCMPEQB </c> instruction.
1149*bed243d3SAndroid Build Coastguard Worker ///
1150*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1151*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
1152*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1153*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
1154*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the comparison
1155*bed243d3SAndroid Build Coastguard Worker ///    results.
1156*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cmpeq_pi8(__m64 __m1,__m64 __m2)1157*bed243d3SAndroid Build Coastguard Worker _mm_cmpeq_pi8(__m64 __m1, __m64 __m2)
1158*bed243d3SAndroid Build Coastguard Worker {
1159*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2);
1160*bed243d3SAndroid Build Coastguard Worker }
1161*bed243d3SAndroid Build Coastguard Worker 
1162*bed243d3SAndroid Build Coastguard Worker /// Compares the 16-bit integer elements of two 64-bit integer vectors of
1163*bed243d3SAndroid Build Coastguard Worker ///    [4 x i16] to determine if the element of the first vector is equal to the
1164*bed243d3SAndroid Build Coastguard Worker ///    corresponding element of the second vector.
1165*bed243d3SAndroid Build Coastguard Worker ///
1166*bed243d3SAndroid Build Coastguard Worker ///    The comparison yields 0 for false, 0xFFFF for true.
1167*bed243d3SAndroid Build Coastguard Worker ///
1168*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1169*bed243d3SAndroid Build Coastguard Worker ///
1170*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PCMPEQW </c> instruction.
1171*bed243d3SAndroid Build Coastguard Worker ///
1172*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1173*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
1174*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1175*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
1176*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the comparison
1177*bed243d3SAndroid Build Coastguard Worker ///    results.
1178*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cmpeq_pi16(__m64 __m1,__m64 __m2)1179*bed243d3SAndroid Build Coastguard Worker _mm_cmpeq_pi16(__m64 __m1, __m64 __m2)
1180*bed243d3SAndroid Build Coastguard Worker {
1181*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2);
1182*bed243d3SAndroid Build Coastguard Worker }
1183*bed243d3SAndroid Build Coastguard Worker 
1184*bed243d3SAndroid Build Coastguard Worker /// Compares the 32-bit integer elements of two 64-bit integer vectors of
1185*bed243d3SAndroid Build Coastguard Worker ///    [2 x i32] to determine if the element of the first vector is equal to the
1186*bed243d3SAndroid Build Coastguard Worker ///    corresponding element of the second vector.
1187*bed243d3SAndroid Build Coastguard Worker ///
1188*bed243d3SAndroid Build Coastguard Worker ///    The comparison yields 0 for false, 0xFFFFFFFF for true.
1189*bed243d3SAndroid Build Coastguard Worker ///
1190*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1191*bed243d3SAndroid Build Coastguard Worker ///
1192*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PCMPEQD </c> instruction.
1193*bed243d3SAndroid Build Coastguard Worker ///
1194*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1195*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
1196*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1197*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
1198*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the comparison
1199*bed243d3SAndroid Build Coastguard Worker ///    results.
1200*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cmpeq_pi32(__m64 __m1,__m64 __m2)1201*bed243d3SAndroid Build Coastguard Worker _mm_cmpeq_pi32(__m64 __m1, __m64 __m2)
1202*bed243d3SAndroid Build Coastguard Worker {
1203*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2);
1204*bed243d3SAndroid Build Coastguard Worker }
1205*bed243d3SAndroid Build Coastguard Worker 
1206*bed243d3SAndroid Build Coastguard Worker /// Compares the 8-bit integer elements of two 64-bit integer vectors of
1207*bed243d3SAndroid Build Coastguard Worker ///    [8 x i8] to determine if the element of the first vector is greater than
1208*bed243d3SAndroid Build Coastguard Worker ///    the corresponding element of the second vector.
1209*bed243d3SAndroid Build Coastguard Worker ///
1210*bed243d3SAndroid Build Coastguard Worker ///    The comparison yields 0 for false, 0xFF for true.
1211*bed243d3SAndroid Build Coastguard Worker ///
1212*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1213*bed243d3SAndroid Build Coastguard Worker ///
1214*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PCMPGTB </c> instruction.
1215*bed243d3SAndroid Build Coastguard Worker ///
1216*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1217*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
1218*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1219*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [8 x i8].
1220*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [8 x i8] containing the comparison
1221*bed243d3SAndroid Build Coastguard Worker ///    results.
1222*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cmpgt_pi8(__m64 __m1,__m64 __m2)1223*bed243d3SAndroid Build Coastguard Worker _mm_cmpgt_pi8(__m64 __m1, __m64 __m2)
1224*bed243d3SAndroid Build Coastguard Worker {
1225*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2);
1226*bed243d3SAndroid Build Coastguard Worker }
1227*bed243d3SAndroid Build Coastguard Worker 
1228*bed243d3SAndroid Build Coastguard Worker /// Compares the 16-bit integer elements of two 64-bit integer vectors of
1229*bed243d3SAndroid Build Coastguard Worker ///    [4 x i16] to determine if the element of the first vector is greater than
1230*bed243d3SAndroid Build Coastguard Worker ///    the corresponding element of the second vector.
1231*bed243d3SAndroid Build Coastguard Worker ///
1232*bed243d3SAndroid Build Coastguard Worker ///    The comparison yields 0 for false, 0xFFFF for true.
1233*bed243d3SAndroid Build Coastguard Worker ///
1234*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1235*bed243d3SAndroid Build Coastguard Worker ///
1236*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PCMPGTW </c> instruction.
1237*bed243d3SAndroid Build Coastguard Worker ///
1238*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1239*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
1240*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1241*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [4 x i16].
1242*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [4 x i16] containing the comparison
1243*bed243d3SAndroid Build Coastguard Worker ///    results.
1244*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cmpgt_pi16(__m64 __m1,__m64 __m2)1245*bed243d3SAndroid Build Coastguard Worker _mm_cmpgt_pi16(__m64 __m1, __m64 __m2)
1246*bed243d3SAndroid Build Coastguard Worker {
1247*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2);
1248*bed243d3SAndroid Build Coastguard Worker }
1249*bed243d3SAndroid Build Coastguard Worker 
1250*bed243d3SAndroid Build Coastguard Worker /// Compares the 32-bit integer elements of two 64-bit integer vectors of
1251*bed243d3SAndroid Build Coastguard Worker ///    [2 x i32] to determine if the element of the first vector is greater than
1252*bed243d3SAndroid Build Coastguard Worker ///    the corresponding element of the second vector.
1253*bed243d3SAndroid Build Coastguard Worker ///
1254*bed243d3SAndroid Build Coastguard Worker ///    The comparison yields 0 for false, 0xFFFFFFFF for true.
1255*bed243d3SAndroid Build Coastguard Worker ///
1256*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1257*bed243d3SAndroid Build Coastguard Worker ///
1258*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PCMPGTD </c> instruction.
1259*bed243d3SAndroid Build Coastguard Worker ///
1260*bed243d3SAndroid Build Coastguard Worker /// \param __m1
1261*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
1262*bed243d3SAndroid Build Coastguard Worker /// \param __m2
1263*bed243d3SAndroid Build Coastguard Worker ///    A 64-bit integer vector of [2 x i32].
1264*bed243d3SAndroid Build Coastguard Worker /// \returns A 64-bit integer vector of [2 x i32] containing the comparison
1265*bed243d3SAndroid Build Coastguard Worker ///    results.
1266*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_cmpgt_pi32(__m64 __m1,__m64 __m2)1267*bed243d3SAndroid Build Coastguard Worker _mm_cmpgt_pi32(__m64 __m1, __m64 __m2)
1268*bed243d3SAndroid Build Coastguard Worker {
1269*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2);
1270*bed243d3SAndroid Build Coastguard Worker }
1271*bed243d3SAndroid Build Coastguard Worker 
1272*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector initialized to zero.
1273*bed243d3SAndroid Build Coastguard Worker ///
1274*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1275*bed243d3SAndroid Build Coastguard Worker ///
1276*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> PXOR </c> instruction.
1277*bed243d3SAndroid Build Coastguard Worker ///
1278*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector with all elements set to zero.
1279*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_setzero_si64(void)1280*bed243d3SAndroid Build Coastguard Worker _mm_setzero_si64(void)
1281*bed243d3SAndroid Build Coastguard Worker {
1282*bed243d3SAndroid Build Coastguard Worker     return __extension__ (__m64){ 0LL };
1283*bed243d3SAndroid Build Coastguard Worker }
1284*bed243d3SAndroid Build Coastguard Worker 
1285*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector initialized with the specified
1286*bed243d3SAndroid Build Coastguard Worker ///    32-bit integer values.
1287*bed243d3SAndroid Build Coastguard Worker ///
1288*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1289*bed243d3SAndroid Build Coastguard Worker ///
1290*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1291*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1292*bed243d3SAndroid Build Coastguard Worker ///
1293*bed243d3SAndroid Build Coastguard Worker /// \param __i1
1294*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value used to initialize the upper 32 bits of the
1295*bed243d3SAndroid Build Coastguard Worker ///    result.
1296*bed243d3SAndroid Build Coastguard Worker /// \param __i0
1297*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value used to initialize the lower 32 bits of the
1298*bed243d3SAndroid Build Coastguard Worker ///    result.
1299*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector.
1300*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_set_pi32(int __i1,int __i0)1301*bed243d3SAndroid Build Coastguard Worker _mm_set_pi32(int __i1, int __i0)
1302*bed243d3SAndroid Build Coastguard Worker {
1303*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1);
1304*bed243d3SAndroid Build Coastguard Worker }
1305*bed243d3SAndroid Build Coastguard Worker 
1306*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector initialized with the specified
1307*bed243d3SAndroid Build Coastguard Worker ///    16-bit integer values.
1308*bed243d3SAndroid Build Coastguard Worker ///
1309*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1310*bed243d3SAndroid Build Coastguard Worker ///
1311*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1312*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1313*bed243d3SAndroid Build Coastguard Worker ///
1314*bed243d3SAndroid Build Coastguard Worker /// \param __s3
1315*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [63:48] of the result.
1316*bed243d3SAndroid Build Coastguard Worker /// \param __s2
1317*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [47:32] of the result.
1318*bed243d3SAndroid Build Coastguard Worker /// \param __s1
1319*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [31:16] of the result.
1320*bed243d3SAndroid Build Coastguard Worker /// \param __s0
1321*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [15:0] of the result.
1322*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector.
1323*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_set_pi16(short __s3,short __s2,short __s1,short __s0)1324*bed243d3SAndroid Build Coastguard Worker _mm_set_pi16(short __s3, short __s2, short __s1, short __s0)
1325*bed243d3SAndroid Build Coastguard Worker {
1326*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3);
1327*bed243d3SAndroid Build Coastguard Worker }
1328*bed243d3SAndroid Build Coastguard Worker 
1329*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector initialized with the specified
1330*bed243d3SAndroid Build Coastguard Worker ///    8-bit integer values.
1331*bed243d3SAndroid Build Coastguard Worker ///
1332*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1333*bed243d3SAndroid Build Coastguard Worker ///
1334*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1335*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1336*bed243d3SAndroid Build Coastguard Worker ///
1337*bed243d3SAndroid Build Coastguard Worker /// \param __b7
1338*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [63:56] of the result.
1339*bed243d3SAndroid Build Coastguard Worker /// \param __b6
1340*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [55:48] of the result.
1341*bed243d3SAndroid Build Coastguard Worker /// \param __b5
1342*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [47:40] of the result.
1343*bed243d3SAndroid Build Coastguard Worker /// \param __b4
1344*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [39:32] of the result.
1345*bed243d3SAndroid Build Coastguard Worker /// \param __b3
1346*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [31:24] of the result.
1347*bed243d3SAndroid Build Coastguard Worker /// \param __b2
1348*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [23:16] of the result.
1349*bed243d3SAndroid Build Coastguard Worker /// \param __b1
1350*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [15:8] of the result.
1351*bed243d3SAndroid Build Coastguard Worker /// \param __b0
1352*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [7:0] of the result.
1353*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector.
1354*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_set_pi8(char __b7,char __b6,char __b5,char __b4,char __b3,char __b2,char __b1,char __b0)1355*bed243d3SAndroid Build Coastguard Worker _mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2,
1356*bed243d3SAndroid Build Coastguard Worker             char __b1, char __b0)
1357*bed243d3SAndroid Build Coastguard Worker {
1358*bed243d3SAndroid Build Coastguard Worker     return (__m64)__builtin_ia32_vec_init_v8qi(__b0, __b1, __b2, __b3,
1359*bed243d3SAndroid Build Coastguard Worker                                                __b4, __b5, __b6, __b7);
1360*bed243d3SAndroid Build Coastguard Worker }
1361*bed243d3SAndroid Build Coastguard Worker 
1362*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector of [2 x i32], with each of the
1363*bed243d3SAndroid Build Coastguard Worker ///    32-bit integer vector elements set to the specified 32-bit integer
1364*bed243d3SAndroid Build Coastguard Worker ///    value.
1365*bed243d3SAndroid Build Coastguard Worker ///
1366*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1367*bed243d3SAndroid Build Coastguard Worker ///
1368*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1369*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1370*bed243d3SAndroid Build Coastguard Worker ///
1371*bed243d3SAndroid Build Coastguard Worker /// \param __i
1372*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value used to initialize each vector element of the
1373*bed243d3SAndroid Build Coastguard Worker ///    result.
1374*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector of [2 x i32].
1375*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_set1_pi32(int __i)1376*bed243d3SAndroid Build Coastguard Worker _mm_set1_pi32(int __i)
1377*bed243d3SAndroid Build Coastguard Worker {
1378*bed243d3SAndroid Build Coastguard Worker     return _mm_set_pi32(__i, __i);
1379*bed243d3SAndroid Build Coastguard Worker }
1380*bed243d3SAndroid Build Coastguard Worker 
1381*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector of [4 x i16], with each of the
1382*bed243d3SAndroid Build Coastguard Worker ///    16-bit integer vector elements set to the specified 16-bit integer
1383*bed243d3SAndroid Build Coastguard Worker ///    value.
1384*bed243d3SAndroid Build Coastguard Worker ///
1385*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1386*bed243d3SAndroid Build Coastguard Worker ///
1387*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1388*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1389*bed243d3SAndroid Build Coastguard Worker ///
1390*bed243d3SAndroid Build Coastguard Worker /// \param __w
1391*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize each vector element of the
1392*bed243d3SAndroid Build Coastguard Worker ///    result.
1393*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector of [4 x i16].
1394*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_set1_pi16(short __w)1395*bed243d3SAndroid Build Coastguard Worker _mm_set1_pi16(short __w)
1396*bed243d3SAndroid Build Coastguard Worker {
1397*bed243d3SAndroid Build Coastguard Worker     return _mm_set_pi16(__w, __w, __w, __w);
1398*bed243d3SAndroid Build Coastguard Worker }
1399*bed243d3SAndroid Build Coastguard Worker 
1400*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector of [8 x i8], with each of the
1401*bed243d3SAndroid Build Coastguard Worker ///    8-bit integer vector elements set to the specified 8-bit integer value.
1402*bed243d3SAndroid Build Coastguard Worker ///
1403*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1404*bed243d3SAndroid Build Coastguard Worker ///
1405*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1406*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1407*bed243d3SAndroid Build Coastguard Worker ///
1408*bed243d3SAndroid Build Coastguard Worker /// \param __b
1409*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize each vector element of the
1410*bed243d3SAndroid Build Coastguard Worker ///    result.
1411*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector of [8 x i8].
1412*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_set1_pi8(char __b)1413*bed243d3SAndroid Build Coastguard Worker _mm_set1_pi8(char __b)
1414*bed243d3SAndroid Build Coastguard Worker {
1415*bed243d3SAndroid Build Coastguard Worker     return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b);
1416*bed243d3SAndroid Build Coastguard Worker }
1417*bed243d3SAndroid Build Coastguard Worker 
1418*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector, initialized in reverse order with
1419*bed243d3SAndroid Build Coastguard Worker ///    the specified 32-bit integer values.
1420*bed243d3SAndroid Build Coastguard Worker ///
1421*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1422*bed243d3SAndroid Build Coastguard Worker ///
1423*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1424*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1425*bed243d3SAndroid Build Coastguard Worker ///
1426*bed243d3SAndroid Build Coastguard Worker /// \param __i0
1427*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value used to initialize the lower 32 bits of the
1428*bed243d3SAndroid Build Coastguard Worker ///    result.
1429*bed243d3SAndroid Build Coastguard Worker /// \param __i1
1430*bed243d3SAndroid Build Coastguard Worker ///    A 32-bit integer value used to initialize the upper 32 bits of the
1431*bed243d3SAndroid Build Coastguard Worker ///    result.
1432*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector.
1433*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_setr_pi32(int __i0,int __i1)1434*bed243d3SAndroid Build Coastguard Worker _mm_setr_pi32(int __i0, int __i1)
1435*bed243d3SAndroid Build Coastguard Worker {
1436*bed243d3SAndroid Build Coastguard Worker     return _mm_set_pi32(__i1, __i0);
1437*bed243d3SAndroid Build Coastguard Worker }
1438*bed243d3SAndroid Build Coastguard Worker 
1439*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector, initialized in reverse order with
1440*bed243d3SAndroid Build Coastguard Worker ///    the specified 16-bit integer values.
1441*bed243d3SAndroid Build Coastguard Worker ///
1442*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1443*bed243d3SAndroid Build Coastguard Worker ///
1444*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1445*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1446*bed243d3SAndroid Build Coastguard Worker ///
1447*bed243d3SAndroid Build Coastguard Worker /// \param __w0
1448*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [15:0] of the result.
1449*bed243d3SAndroid Build Coastguard Worker /// \param __w1
1450*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [31:16] of the result.
1451*bed243d3SAndroid Build Coastguard Worker /// \param __w2
1452*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [47:32] of the result.
1453*bed243d3SAndroid Build Coastguard Worker /// \param __w3
1454*bed243d3SAndroid Build Coastguard Worker ///    A 16-bit integer value used to initialize bits [63:48] of the result.
1455*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector.
1456*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_setr_pi16(short __w0,short __w1,short __w2,short __w3)1457*bed243d3SAndroid Build Coastguard Worker _mm_setr_pi16(short __w0, short __w1, short __w2, short __w3)
1458*bed243d3SAndroid Build Coastguard Worker {
1459*bed243d3SAndroid Build Coastguard Worker     return _mm_set_pi16(__w3, __w2, __w1, __w0);
1460*bed243d3SAndroid Build Coastguard Worker }
1461*bed243d3SAndroid Build Coastguard Worker 
1462*bed243d3SAndroid Build Coastguard Worker /// Constructs a 64-bit integer vector, initialized in reverse order with
1463*bed243d3SAndroid Build Coastguard Worker ///    the specified 8-bit integer values.
1464*bed243d3SAndroid Build Coastguard Worker ///
1465*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
1466*bed243d3SAndroid Build Coastguard Worker ///
1467*bed243d3SAndroid Build Coastguard Worker /// This intrinsic is a utility function and does not correspond to a specific
1468*bed243d3SAndroid Build Coastguard Worker ///    instruction.
1469*bed243d3SAndroid Build Coastguard Worker ///
1470*bed243d3SAndroid Build Coastguard Worker /// \param __b0
1471*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [7:0] of the result.
1472*bed243d3SAndroid Build Coastguard Worker /// \param __b1
1473*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [15:8] of the result.
1474*bed243d3SAndroid Build Coastguard Worker /// \param __b2
1475*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [23:16] of the result.
1476*bed243d3SAndroid Build Coastguard Worker /// \param __b3
1477*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [31:24] of the result.
1478*bed243d3SAndroid Build Coastguard Worker /// \param __b4
1479*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [39:32] of the result.
1480*bed243d3SAndroid Build Coastguard Worker /// \param __b5
1481*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [47:40] of the result.
1482*bed243d3SAndroid Build Coastguard Worker /// \param __b6
1483*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [55:48] of the result.
1484*bed243d3SAndroid Build Coastguard Worker /// \param __b7
1485*bed243d3SAndroid Build Coastguard Worker ///    An 8-bit integer value used to initialize bits [63:56] of the result.
1486*bed243d3SAndroid Build Coastguard Worker /// \returns An initialized 64-bit integer vector.
1487*bed243d3SAndroid Build Coastguard Worker static __inline__ __m64 __DEFAULT_FN_ATTRS
_mm_setr_pi8(char __b0,char __b1,char __b2,char __b3,char __b4,char __b5,char __b6,char __b7)1488*bed243d3SAndroid Build Coastguard Worker _mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5,
1489*bed243d3SAndroid Build Coastguard Worker              char __b6, char __b7)
1490*bed243d3SAndroid Build Coastguard Worker {
1491*bed243d3SAndroid Build Coastguard Worker     return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0);
1492*bed243d3SAndroid Build Coastguard Worker }
1493*bed243d3SAndroid Build Coastguard Worker 
1494*bed243d3SAndroid Build Coastguard Worker #undef __DEFAULT_FN_ATTRS
1495*bed243d3SAndroid Build Coastguard Worker 
1496*bed243d3SAndroid Build Coastguard Worker /* Aliases for compatibility. */
1497*bed243d3SAndroid Build Coastguard Worker #define _m_empty _mm_empty
1498*bed243d3SAndroid Build Coastguard Worker #define _m_from_int _mm_cvtsi32_si64
1499*bed243d3SAndroid Build Coastguard Worker #define _m_from_int64 _mm_cvtsi64_m64
1500*bed243d3SAndroid Build Coastguard Worker #define _m_to_int _mm_cvtsi64_si32
1501*bed243d3SAndroid Build Coastguard Worker #define _m_to_int64 _mm_cvtm64_si64
1502*bed243d3SAndroid Build Coastguard Worker #define _m_packsswb _mm_packs_pi16
1503*bed243d3SAndroid Build Coastguard Worker #define _m_packssdw _mm_packs_pi32
1504*bed243d3SAndroid Build Coastguard Worker #define _m_packuswb _mm_packs_pu16
1505*bed243d3SAndroid Build Coastguard Worker #define _m_punpckhbw _mm_unpackhi_pi8
1506*bed243d3SAndroid Build Coastguard Worker #define _m_punpckhwd _mm_unpackhi_pi16
1507*bed243d3SAndroid Build Coastguard Worker #define _m_punpckhdq _mm_unpackhi_pi32
1508*bed243d3SAndroid Build Coastguard Worker #define _m_punpcklbw _mm_unpacklo_pi8
1509*bed243d3SAndroid Build Coastguard Worker #define _m_punpcklwd _mm_unpacklo_pi16
1510*bed243d3SAndroid Build Coastguard Worker #define _m_punpckldq _mm_unpacklo_pi32
1511*bed243d3SAndroid Build Coastguard Worker #define _m_paddb _mm_add_pi8
1512*bed243d3SAndroid Build Coastguard Worker #define _m_paddw _mm_add_pi16
1513*bed243d3SAndroid Build Coastguard Worker #define _m_paddd _mm_add_pi32
1514*bed243d3SAndroid Build Coastguard Worker #define _m_paddsb _mm_adds_pi8
1515*bed243d3SAndroid Build Coastguard Worker #define _m_paddsw _mm_adds_pi16
1516*bed243d3SAndroid Build Coastguard Worker #define _m_paddusb _mm_adds_pu8
1517*bed243d3SAndroid Build Coastguard Worker #define _m_paddusw _mm_adds_pu16
1518*bed243d3SAndroid Build Coastguard Worker #define _m_psubb _mm_sub_pi8
1519*bed243d3SAndroid Build Coastguard Worker #define _m_psubw _mm_sub_pi16
1520*bed243d3SAndroid Build Coastguard Worker #define _m_psubd _mm_sub_pi32
1521*bed243d3SAndroid Build Coastguard Worker #define _m_psubsb _mm_subs_pi8
1522*bed243d3SAndroid Build Coastguard Worker #define _m_psubsw _mm_subs_pi16
1523*bed243d3SAndroid Build Coastguard Worker #define _m_psubusb _mm_subs_pu8
1524*bed243d3SAndroid Build Coastguard Worker #define _m_psubusw _mm_subs_pu16
1525*bed243d3SAndroid Build Coastguard Worker #define _m_pmaddwd _mm_madd_pi16
1526*bed243d3SAndroid Build Coastguard Worker #define _m_pmulhw _mm_mulhi_pi16
1527*bed243d3SAndroid Build Coastguard Worker #define _m_pmullw _mm_mullo_pi16
1528*bed243d3SAndroid Build Coastguard Worker #define _m_psllw _mm_sll_pi16
1529*bed243d3SAndroid Build Coastguard Worker #define _m_psllwi _mm_slli_pi16
1530*bed243d3SAndroid Build Coastguard Worker #define _m_pslld _mm_sll_pi32
1531*bed243d3SAndroid Build Coastguard Worker #define _m_pslldi _mm_slli_pi32
1532*bed243d3SAndroid Build Coastguard Worker #define _m_psllq _mm_sll_si64
1533*bed243d3SAndroid Build Coastguard Worker #define _m_psllqi _mm_slli_si64
1534*bed243d3SAndroid Build Coastguard Worker #define _m_psraw _mm_sra_pi16
1535*bed243d3SAndroid Build Coastguard Worker #define _m_psrawi _mm_srai_pi16
1536*bed243d3SAndroid Build Coastguard Worker #define _m_psrad _mm_sra_pi32
1537*bed243d3SAndroid Build Coastguard Worker #define _m_psradi _mm_srai_pi32
1538*bed243d3SAndroid Build Coastguard Worker #define _m_psrlw _mm_srl_pi16
1539*bed243d3SAndroid Build Coastguard Worker #define _m_psrlwi _mm_srli_pi16
1540*bed243d3SAndroid Build Coastguard Worker #define _m_psrld _mm_srl_pi32
1541*bed243d3SAndroid Build Coastguard Worker #define _m_psrldi _mm_srli_pi32
1542*bed243d3SAndroid Build Coastguard Worker #define _m_psrlq _mm_srl_si64
1543*bed243d3SAndroid Build Coastguard Worker #define _m_psrlqi _mm_srli_si64
1544*bed243d3SAndroid Build Coastguard Worker #define _m_pand _mm_and_si64
1545*bed243d3SAndroid Build Coastguard Worker #define _m_pandn _mm_andnot_si64
1546*bed243d3SAndroid Build Coastguard Worker #define _m_por _mm_or_si64
1547*bed243d3SAndroid Build Coastguard Worker #define _m_pxor _mm_xor_si64
1548*bed243d3SAndroid Build Coastguard Worker #define _m_pcmpeqb _mm_cmpeq_pi8
1549*bed243d3SAndroid Build Coastguard Worker #define _m_pcmpeqw _mm_cmpeq_pi16
1550*bed243d3SAndroid Build Coastguard Worker #define _m_pcmpeqd _mm_cmpeq_pi32
1551*bed243d3SAndroid Build Coastguard Worker #define _m_pcmpgtb _mm_cmpgt_pi8
1552*bed243d3SAndroid Build Coastguard Worker #define _m_pcmpgtw _mm_cmpgt_pi16
1553*bed243d3SAndroid Build Coastguard Worker #define _m_pcmpgtd _mm_cmpgt_pi32
1554*bed243d3SAndroid Build Coastguard Worker 
1555*bed243d3SAndroid Build Coastguard Worker #endif /* __MMINTRIN_H */
1556*bed243d3SAndroid Build Coastguard Worker 
1557