annotate clang/lib/Headers/avx512vlvp2intersectintrin.h @ 266:00f31e85ec16 default tip

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