xref: /aosp_15_r20/prebuilts/clang-tools/linux-x86/clang-headers/avx512vlvp2intersectintrin.h (revision bed243d3d9cd544cfb038bfa7be843dedc6e6bf7)
1*bed243d3SAndroid Build Coastguard Worker /*===------ avx512vlvp2intersectintrin.h - VL VP2INTERSECT intrinsics ------===
2*bed243d3SAndroid Build Coastguard Worker  *
3*bed243d3SAndroid Build Coastguard Worker  *
4*bed243d3SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a copy
5*bed243d3SAndroid Build Coastguard Worker  * of this software and associated documentation files (the "Software"), to deal
6*bed243d3SAndroid Build Coastguard Worker  * in the Software without restriction, including without limitation the rights
7*bed243d3SAndroid Build Coastguard Worker  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8*bed243d3SAndroid Build Coastguard Worker  * copies of the Software, and to permit persons to whom the Software is
9*bed243d3SAndroid Build Coastguard Worker  * furnished to do so, subject to the following conditions:
10*bed243d3SAndroid Build Coastguard Worker  *
11*bed243d3SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included in
12*bed243d3SAndroid Build Coastguard Worker  * all copies or substantial portions of the Software.
13*bed243d3SAndroid Build Coastguard Worker  *
14*bed243d3SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*bed243d3SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*bed243d3SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17*bed243d3SAndroid Build Coastguard Worker  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*bed243d3SAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19*bed243d3SAndroid Build Coastguard Worker  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20*bed243d3SAndroid Build Coastguard Worker  * THE SOFTWARE.
21*bed243d3SAndroid Build Coastguard Worker  *
22*bed243d3SAndroid Build Coastguard Worker  *===-----------------------------------------------------------------------===
23*bed243d3SAndroid Build Coastguard Worker  */
24*bed243d3SAndroid Build Coastguard Worker #ifndef __IMMINTRIN_H
25*bed243d3SAndroid Build Coastguard Worker #error "Never use <avx512vlvp2intersectintrin.h> directly; include <immintrin.h> instead."
26*bed243d3SAndroid Build Coastguard Worker #endif
27*bed243d3SAndroid Build Coastguard Worker 
28*bed243d3SAndroid Build Coastguard Worker #ifndef _AVX512VLVP2INTERSECT_H
29*bed243d3SAndroid Build Coastguard Worker #define _AVX512VLVP2INTERSECT_H
30*bed243d3SAndroid Build Coastguard Worker 
31*bed243d3SAndroid Build Coastguard Worker #define __DEFAULT_FN_ATTRS128                                                  \
32*bed243d3SAndroid Build Coastguard Worker   __attribute__((__always_inline__, __nodebug__,                               \
33*bed243d3SAndroid Build Coastguard Worker                  __target__("avx512vl,avx512vp2intersect,no-evex512"),         \
34*bed243d3SAndroid Build Coastguard Worker                  __min_vector_width__(128)))
35*bed243d3SAndroid Build Coastguard Worker 
36*bed243d3SAndroid Build Coastguard Worker #define __DEFAULT_FN_ATTRS256                                                  \
37*bed243d3SAndroid Build Coastguard Worker   __attribute__((__always_inline__, __nodebug__,                               \
38*bed243d3SAndroid Build Coastguard Worker                  __target__("avx512vl,avx512vp2intersect,no-evex512"),         \
39*bed243d3SAndroid Build Coastguard Worker                  __min_vector_width__(256)))
40*bed243d3SAndroid Build Coastguard Worker /// Store, in an even/odd pair of mask registers, the indicators of the
41*bed243d3SAndroid Build Coastguard Worker /// locations of value matches between dwords in operands __a and __b.
42*bed243d3SAndroid Build Coastguard Worker ///
43*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
44*bed243d3SAndroid Build Coastguard Worker ///
45*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
46*bed243d3SAndroid Build Coastguard Worker ///
47*bed243d3SAndroid Build Coastguard Worker /// \param __a
48*bed243d3SAndroid Build Coastguard Worker ///    A 256-bit vector of [8 x i32].
49*bed243d3SAndroid Build Coastguard Worker /// \param __b
50*bed243d3SAndroid Build Coastguard Worker ///    A 256-bit vector of [8 x i32]
51*bed243d3SAndroid Build Coastguard Worker /// \param __m0
52*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
53*bed243d3SAndroid Build Coastguard Worker /// \param __m1
54*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
55*bed243d3SAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS256
_mm256_2intersect_epi32(__m256i __a,__m256i __b,__mmask8 * __m0,__mmask8 * __m1)56*bed243d3SAndroid Build Coastguard Worker _mm256_2intersect_epi32(__m256i __a, __m256i __b, __mmask8 *__m0, __mmask8 *__m1) {
57*bed243d3SAndroid Build Coastguard Worker   __builtin_ia32_vp2intersect_d_256((__v8si)__a, (__v8si)__b, __m0, __m1);
58*bed243d3SAndroid Build Coastguard Worker }
59*bed243d3SAndroid Build Coastguard Worker 
60*bed243d3SAndroid Build Coastguard Worker /// Store, in an even/odd pair of mask registers, the indicators of the
61*bed243d3SAndroid Build Coastguard Worker /// locations of value matches between quadwords in operands __a and __b.
62*bed243d3SAndroid Build Coastguard Worker ///
63*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
64*bed243d3SAndroid Build Coastguard Worker ///
65*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
66*bed243d3SAndroid Build Coastguard Worker ///
67*bed243d3SAndroid Build Coastguard Worker /// \param __a
68*bed243d3SAndroid Build Coastguard Worker ///    A 256-bit vector of [4 x i64].
69*bed243d3SAndroid Build Coastguard Worker /// \param __b
70*bed243d3SAndroid Build Coastguard Worker ///    A 256-bit vector of [4 x i64]
71*bed243d3SAndroid Build Coastguard Worker /// \param __m0
72*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
73*bed243d3SAndroid Build Coastguard Worker /// \param __m1
74*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
75*bed243d3SAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS256
_mm256_2intersect_epi64(__m256i __a,__m256i __b,__mmask8 * __m0,__mmask8 * __m1)76*bed243d3SAndroid Build Coastguard Worker _mm256_2intersect_epi64(__m256i __a, __m256i __b, __mmask8 *__m0, __mmask8 *__m1) {
77*bed243d3SAndroid Build Coastguard Worker   __builtin_ia32_vp2intersect_q_256((__v4di)__a, (__v4di)__b, __m0, __m1);
78*bed243d3SAndroid Build Coastguard Worker }
79*bed243d3SAndroid Build Coastguard Worker 
80*bed243d3SAndroid Build Coastguard Worker /// Store, in an even/odd pair of mask registers, the indicators of the
81*bed243d3SAndroid Build Coastguard Worker /// locations of value matches between dwords in operands __a and __b.
82*bed243d3SAndroid Build Coastguard Worker ///
83*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
84*bed243d3SAndroid Build Coastguard Worker ///
85*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
86*bed243d3SAndroid Build Coastguard Worker ///
87*bed243d3SAndroid Build Coastguard Worker /// \param __a
88*bed243d3SAndroid Build Coastguard Worker ///    A 128-bit vector of [4 x i32].
89*bed243d3SAndroid Build Coastguard Worker /// \param __b
90*bed243d3SAndroid Build Coastguard Worker ///    A 128-bit vector of [4 x i32]
91*bed243d3SAndroid Build Coastguard Worker /// \param __m0
92*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
93*bed243d3SAndroid Build Coastguard Worker /// \param __m1
94*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
95*bed243d3SAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS128
_mm_2intersect_epi32(__m128i __a,__m128i __b,__mmask8 * __m0,__mmask8 * __m1)96*bed243d3SAndroid Build Coastguard Worker _mm_2intersect_epi32(__m128i __a, __m128i __b, __mmask8 *__m0, __mmask8 *__m1) {
97*bed243d3SAndroid Build Coastguard Worker   __builtin_ia32_vp2intersect_d_128((__v4si)__a, (__v4si)__b, __m0, __m1);
98*bed243d3SAndroid Build Coastguard Worker }
99*bed243d3SAndroid Build Coastguard Worker 
100*bed243d3SAndroid Build Coastguard Worker /// Store, in an even/odd pair of mask registers, the indicators of the
101*bed243d3SAndroid Build Coastguard Worker /// locations of value matches between quadwords in operands __a and __b.
102*bed243d3SAndroid Build Coastguard Worker ///
103*bed243d3SAndroid Build Coastguard Worker /// \headerfile <x86intrin.h>
104*bed243d3SAndroid Build Coastguard Worker ///
105*bed243d3SAndroid Build Coastguard Worker /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
106*bed243d3SAndroid Build Coastguard Worker ///
107*bed243d3SAndroid Build Coastguard Worker /// \param __a
108*bed243d3SAndroid Build Coastguard Worker ///    A 128-bit vector of [2 x i64].
109*bed243d3SAndroid Build Coastguard Worker /// \param __b
110*bed243d3SAndroid Build Coastguard Worker ///    A 128-bit vector of [2 x i64]
111*bed243d3SAndroid Build Coastguard Worker /// \param __m0
112*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
113*bed243d3SAndroid Build Coastguard Worker /// \param __m1
114*bed243d3SAndroid Build Coastguard Worker ///    A pointer point to 8-bit mask
115*bed243d3SAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS128
_mm_2intersect_epi64(__m128i __a,__m128i __b,__mmask8 * __m0,__mmask8 * __m1)116*bed243d3SAndroid Build Coastguard Worker _mm_2intersect_epi64(__m128i __a, __m128i __b, __mmask8 *__m0, __mmask8 *__m1) {
117*bed243d3SAndroid Build Coastguard Worker   __builtin_ia32_vp2intersect_q_128((__v2di)__a, (__v2di)__b, __m0, __m1);
118*bed243d3SAndroid Build Coastguard Worker }
119*bed243d3SAndroid Build Coastguard Worker 
120*bed243d3SAndroid Build Coastguard Worker #undef __DEFAULT_FN_ATTRS128
121*bed243d3SAndroid Build Coastguard Worker #undef __DEFAULT_FN_ATTRS256
122*bed243d3SAndroid Build Coastguard Worker 
123*bed243d3SAndroid Build Coastguard Worker #endif
124