Path: blob/master/tools/android-sdk/renderscript/clang-include/avx512vbmivlintrin.h
496 views
/*===------------- avx512vbmivlintrin.h - VBMI intrinsics ------------------===1*2*3* Permission is hereby granted, free of charge, to any person obtaining a copy4* of this software and associated documentation files (the "Software"), to deal5* in the Software without restriction, including without limitation the rights6* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell7* copies of the Software, and to permit persons to whom the Software is8* furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice shall be included in11* all copies or substantial portions of the Software.12*13* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR14* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,15* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE16* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER17* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,18* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN19* THE SOFTWARE.20*21*===-----------------------------------------------------------------------===22*/23#ifndef __IMMINTRIN_H24#error "Never use <avx512vbmivlintrin.h> directly; include <immintrin.h> instead."25#endif2627#ifndef __VBMIVLINTRIN_H28#define __VBMIVLINTRIN_H2930/* Define the default attributes for the functions in this file. */31#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vbmi,avx512vl")))323334static __inline__ __m128i __DEFAULT_FN_ATTRS35_mm_mask2_permutex2var_epi8 (__m128i __A, __m128i __I, __mmask16 __U,36__m128i __B)37{38return (__m128i) __builtin_ia32_vpermi2varqi128_mask ((__v16qi) __A,39(__v16qi) __I40/* idx */ ,41(__v16qi) __B,42(__mmask16)43__U);44}4546static __inline__ __m256i __DEFAULT_FN_ATTRS47_mm256_mask2_permutex2var_epi8 (__m256i __A, __m256i __I,48__mmask32 __U, __m256i __B)49{50return (__m256i) __builtin_ia32_vpermi2varqi256_mask ((__v32qi) __A,51(__v32qi) __I52/* idx */ ,53(__v32qi) __B,54(__mmask32)55__U);56}5758static __inline__ __m128i __DEFAULT_FN_ATTRS59_mm_permutex2var_epi8 (__m128i __A, __m128i __I, __m128i __B)60{61return (__m128i) __builtin_ia32_vpermt2varqi128_mask ((__v16qi) __I62/* idx */ ,63(__v16qi) __A,64(__v16qi) __B,65(__mmask16) -661);67}6869static __inline__ __m128i __DEFAULT_FN_ATTRS70_mm_mask_permutex2var_epi8 (__m128i __A, __mmask16 __U, __m128i __I,71__m128i __B)72{73return (__m128i) __builtin_ia32_vpermt2varqi128_mask ((__v16qi) __I74/* idx */ ,75(__v16qi) __A,76(__v16qi) __B,77(__mmask16)78__U);79}8081static __inline__ __m128i __DEFAULT_FN_ATTRS82_mm_maskz_permutex2var_epi8 (__mmask16 __U, __m128i __A, __m128i __I,83__m128i __B)84{85return (__m128i) __builtin_ia32_vpermt2varqi128_maskz ((__v16qi) __I86/* idx */ ,87(__v16qi) __A,88(__v16qi) __B,89(__mmask16)90__U);91}9293static __inline__ __m256i __DEFAULT_FN_ATTRS94_mm256_permutex2var_epi8 (__m256i __A, __m256i __I, __m256i __B)95{96return (__m256i) __builtin_ia32_vpermt2varqi256_mask ((__v32qi) __I97/* idx */ ,98(__v32qi) __A,99(__v32qi) __B,100(__mmask32) -1011);102}103104static __inline__ __m256i __DEFAULT_FN_ATTRS105_mm256_mask_permutex2var_epi8 (__m256i __A, __mmask32 __U,106__m256i __I, __m256i __B)107{108return (__m256i) __builtin_ia32_vpermt2varqi256_mask ((__v32qi) __I109/* idx */ ,110(__v32qi) __A,111(__v32qi) __B,112(__mmask32)113__U);114}115116static __inline__ __m256i __DEFAULT_FN_ATTRS117_mm256_maskz_permutex2var_epi8 (__mmask32 __U, __m256i __A,118__m256i __I, __m256i __B)119{120return (__m256i) __builtin_ia32_vpermt2varqi256_maskz ((__v32qi) __I121/* idx */ ,122(__v32qi) __A,123(__v32qi) __B,124(__mmask32)125__U);126}127128static __inline__ __m128i __DEFAULT_FN_ATTRS129_mm_permutexvar_epi8 (__m128i __A, __m128i __B)130{131return (__m128i) __builtin_ia32_permvarqi128_mask ((__v16qi) __B,132(__v16qi) __A,133(__v16qi) _mm_undefined_si128 (),134(__mmask16) -1);135}136137static __inline__ __m128i __DEFAULT_FN_ATTRS138_mm_maskz_permutexvar_epi8 (__mmask16 __M, __m128i __A, __m128i __B)139{140return (__m128i) __builtin_ia32_permvarqi128_mask ((__v16qi) __B,141(__v16qi) __A,142(__v16qi) _mm_setzero_si128 (),143(__mmask16) __M);144}145146static __inline__ __m128i __DEFAULT_FN_ATTRS147_mm_mask_permutexvar_epi8 (__m128i __W, __mmask16 __M, __m128i __A,148__m128i __B)149{150return (__m128i) __builtin_ia32_permvarqi128_mask ((__v16qi) __B,151(__v16qi) __A,152(__v16qi) __W,153(__mmask16) __M);154}155156static __inline__ __m256i __DEFAULT_FN_ATTRS157_mm256_permutexvar_epi8 (__m256i __A, __m256i __B)158{159return (__m256i) __builtin_ia32_permvarqi256_mask ((__v32qi) __B,160(__v32qi) __A,161(__v32qi) _mm256_undefined_si256 (),162(__mmask32) -1);163}164165static __inline__ __m256i __DEFAULT_FN_ATTRS166_mm256_maskz_permutexvar_epi8 (__mmask32 __M, __m256i __A,167__m256i __B)168{169return (__m256i) __builtin_ia32_permvarqi256_mask ((__v32qi) __B,170(__v32qi) __A,171(__v32qi) _mm256_setzero_si256 (),172(__mmask32) __M);173}174175static __inline__ __m256i __DEFAULT_FN_ATTRS176_mm256_mask_permutexvar_epi8 (__m256i __W, __mmask32 __M, __m256i __A,177__m256i __B)178{179return (__m256i) __builtin_ia32_permvarqi256_mask ((__v32qi) __B,180(__v32qi) __A,181(__v32qi) __W,182(__mmask32) __M);183}184185static __inline__ __m128i __DEFAULT_FN_ATTRS186_mm_mask_multishift_epi64_epi8 (__m128i __W, __mmask16 __M, __m128i __X, __m128i __Y)187{188return (__m128i) __builtin_ia32_vpmultishiftqb128_mask ((__v16qi) __X,189(__v16qi) __Y,190(__v16qi) __W,191(__mmask16) __M);192}193194static __inline__ __m128i __DEFAULT_FN_ATTRS195_mm_maskz_multishift_epi64_epi8 (__mmask16 __M, __m128i __X, __m128i __Y)196{197return (__m128i) __builtin_ia32_vpmultishiftqb128_mask ((__v16qi) __X,198(__v16qi) __Y,199(__v16qi)200_mm_setzero_si128 (),201(__mmask16) __M);202}203204static __inline__ __m128i __DEFAULT_FN_ATTRS205_mm_multishift_epi64_epi8 (__m128i __X, __m128i __Y)206{207return (__m128i) __builtin_ia32_vpmultishiftqb128_mask ((__v16qi) __X,208(__v16qi) __Y,209(__v16qi)210_mm_undefined_si128 (),211(__mmask16) -1);212}213214static __inline__ __m256i __DEFAULT_FN_ATTRS215_mm256_mask_multishift_epi64_epi8 (__m256i __W, __mmask32 __M, __m256i __X, __m256i __Y)216{217return (__m256i) __builtin_ia32_vpmultishiftqb256_mask ((__v32qi) __X,218(__v32qi) __Y,219(__v32qi) __W,220(__mmask32) __M);221}222223static __inline__ __m256i __DEFAULT_FN_ATTRS224_mm256_maskz_multishift_epi64_epi8 (__mmask32 __M, __m256i __X, __m256i __Y)225{226return (__m256i) __builtin_ia32_vpmultishiftqb256_mask ((__v32qi) __X,227(__v32qi) __Y,228(__v32qi)229_mm256_setzero_si256 (),230(__mmask32) __M);231}232233static __inline__ __m256i __DEFAULT_FN_ATTRS234_mm256_multishift_epi64_epi8 (__m256i __X, __m256i __Y)235{236return (__m256i) __builtin_ia32_vpmultishiftqb256_mask ((__v32qi) __X,237(__v32qi) __Y,238(__v32qi)239_mm256_undefined_si256 (),240(__mmask32) -1);241}242243244#undef __DEFAULT_FN_ATTRS245246#endif247248249