avx512vp2intersectintrin.h revision 360660
1153317Ssam/*===------- avx512vpintersectintrin.h - VP2INTERSECT intrinsics ------------=== 2174244Ssam * 3153317Ssam * 4153317Ssam * Permission is hereby granted, free of charge, to any person obtaining a copy 5153317Ssam * of this software and associated documentation files (the "Software"), to deal 6153317Ssam * in the Software without restriction, including without limitation the rights 7153317Ssam * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8153317Ssam * copies of the Software, and to permit persons to whom the Software is 9153317Ssam * furnished to do so, subject to the following conditions: 10153317Ssam * 11153317Ssam * The above copyright notice and this permission notice shall be included in 12153317Ssam * all copies or substantial portions of the Software. 13153317Ssam * 14153317Ssam * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15153317Ssam * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16153317Ssam * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17153317Ssam * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18153317Ssam * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19153317Ssam * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20153317Ssam * THE SOFTWARE. 21153317Ssam * 22153317Ssam *===-----------------------------------------------------------------------=== 23153317Ssam */ 24153317Ssam#ifndef __IMMINTRIN_H 25153317Ssam#error "Never use <avx512vp2intersect.h> directly; include <immintrin.h> instead." 26153317Ssam#endif 27153317Ssam 28153317Ssam#ifndef _AVX512VP2INTERSECT_H 29153317Ssam#define _AVX512VP2INTERSECT_H 30153317Ssam 31153317Ssam#define __DEFAULT_FN_ATTRS \ 32153317Ssam __attribute__((__always_inline__, __nodebug__, __target__("avx512vp2intersect"), \ 33161200Ssam __min_vector_width__(512))) 34153317Ssam 35153317Ssam/// Store, in an even/odd pair of mask registers, the indicators of the 36153317Ssam/// locations of value matches between dwords in operands __a and __b. 37153317Ssam/// 38153317Ssam/// \headerfile <x86intrin.h> 39153317Ssam/// 40161200Ssam/// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction. 41153317Ssam/// 42153317Ssam/// \param __a 43153317Ssam/// A 512-bit vector of [16 x i32]. 44153317Ssam/// \param __b 45153317Ssam/// A 512-bit vector of [16 x i32] 46170535Ssam/// \param __m0 47153317Ssam/// A pointer point to 16-bit mask 48161200Ssam/// \param __m1 49153317Ssam/// A pointer point to 16-bit mask 50153317Ssamstatic __inline__ void __DEFAULT_FN_ATTRS 51161200Ssam_mm512_2intersect_epi32(__m512i __a, __m512i __b, __mmask16 *__m0, __mmask16 *__m1) { 52153317Ssam __builtin_ia32_vp2intersect_d_512((__v16si)__a, (__v16si)__b, __m0, __m1); 53153392Ssam} 54153317Ssam 55161200Ssam/// Store, in an even/odd pair of mask registers, the indicators of the 56153317Ssam/// locations of value matches between quadwords in operands __a and __b. 57161200Ssam/// 58161200Ssam/// \headerfile <x86intrin.h> 59161200Ssam/// 60161200Ssam/// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction. 61161200Ssam/// 62173306Ssam/// \param __a 63173306Ssam/// A 512-bit vector of [8 x i64]. 64161200Ssam/// \param __b 65173306Ssam/// A 512-bit vector of [8 x i64] 66173306Ssam/// \param __m0 67173306Ssam/// A pointer point to 8-bit mask 68173306Ssam/// \param __m1 69173306Ssam/// A pointer point to 8-bit mask 70173306Ssamstatic __inline__ void __DEFAULT_FN_ATTRS 71173306Ssam_mm512_2intersect_epi64(__m512i __a, __m512i __b, __mmask8 *__m0, __mmask8 *__m1) { 72173306Ssam __builtin_ia32_vp2intersect_q_512((__v8di)__a, (__v8di)__b, __m0, __m1); 73173306Ssam} 74173306Ssam 75173306Ssam#undef __DEFAULT_FN_ATTRS 76173306Ssam 77173306Ssam#endif 78173306Ssam