avx512vlbwintrin.h 109 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781
  1. /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------===
  2. *
  3. * Permission is hereby granted, free of charge, to any person obtaining a copy
  4. * of this software and associated documentation files (the "Software"), to deal
  5. * in the Software without restriction, including without limitation the rights
  6. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. * copies of the Software, and to permit persons to whom the Software is
  8. * furnished to do so, subject to the following conditions:
  9. *
  10. * The above copyright notice and this permission notice shall be included in
  11. * all copies or substantial portions of the Software.
  12. *
  13. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. * 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 IN
  19. * THE SOFTWARE.
  20. *
  21. *===-----------------------------------------------------------------------===
  22. */
  23. #ifndef __IMMINTRIN_H
  24. #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
  25. #endif
  26. #ifndef __AVX512VLBWINTRIN_H
  27. #define __AVX512VLBWINTRIN_H
  28. /* Define the default attributes for the functions in this file. */
  29. #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw")))
  30. static __inline __m128i __DEFAULT_FN_ATTRS
  31. _mm_setzero_hi(void){
  32. return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 };
  33. }
  34. /* Integer compare */
  35. #define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
  36. (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
  37. (__v16qi)(__m128i)(b), (int)(p), \
  38. (__mmask16)-1); })
  39. #define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
  40. (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
  41. (__v16qi)(__m128i)(b), (int)(p), \
  42. (__mmask16)(m)); })
  43. #define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
  44. (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
  45. (__v16qi)(__m128i)(b), (int)(p), \
  46. (__mmask16)-1); })
  47. #define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
  48. (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
  49. (__v16qi)(__m128i)(b), (int)(p), \
  50. (__mmask16)(m)); })
  51. #define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
  52. (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
  53. (__v32qi)(__m256i)(b), (int)(p), \
  54. (__mmask32)-1); })
  55. #define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
  56. (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
  57. (__v32qi)(__m256i)(b), (int)(p), \
  58. (__mmask32)(m)); })
  59. #define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
  60. (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
  61. (__v32qi)(__m256i)(b), (int)(p), \
  62. (__mmask32)-1); })
  63. #define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
  64. (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
  65. (__v32qi)(__m256i)(b), (int)(p), \
  66. (__mmask32)(m)); })
  67. #define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
  68. (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
  69. (__v8hi)(__m128i)(b), (int)(p), \
  70. (__mmask8)-1); })
  71. #define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
  72. (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
  73. (__v8hi)(__m128i)(b), (int)(p), \
  74. (__mmask8)(m)); })
  75. #define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
  76. (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
  77. (__v8hi)(__m128i)(b), (int)(p), \
  78. (__mmask8)-1); })
  79. #define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
  80. (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
  81. (__v8hi)(__m128i)(b), (int)(p), \
  82. (__mmask8)(m)); })
  83. #define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
  84. (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
  85. (__v16hi)(__m256i)(b), (int)(p), \
  86. (__mmask16)-1); })
  87. #define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
  88. (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
  89. (__v16hi)(__m256i)(b), (int)(p), \
  90. (__mmask16)(m)); })
  91. #define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
  92. (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
  93. (__v16hi)(__m256i)(b), (int)(p), \
  94. (__mmask16)-1); })
  95. #define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
  96. (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
  97. (__v16hi)(__m256i)(b), (int)(p), \
  98. (__mmask16)(m)); })
  99. #define _mm_cmpeq_epi8_mask(A, B) \
  100. _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
  101. #define _mm_mask_cmpeq_epi8_mask(k, A, B) \
  102. _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
  103. #define _mm_cmpge_epi8_mask(A, B) \
  104. _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
  105. #define _mm_mask_cmpge_epi8_mask(k, A, B) \
  106. _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
  107. #define _mm_cmpgt_epi8_mask(A, B) \
  108. _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
  109. #define _mm_mask_cmpgt_epi8_mask(k, A, B) \
  110. _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
  111. #define _mm_cmple_epi8_mask(A, B) \
  112. _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
  113. #define _mm_mask_cmple_epi8_mask(k, A, B) \
  114. _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
  115. #define _mm_cmplt_epi8_mask(A, B) \
  116. _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
  117. #define _mm_mask_cmplt_epi8_mask(k, A, B) \
  118. _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
  119. #define _mm_cmpneq_epi8_mask(A, B) \
  120. _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
  121. #define _mm_mask_cmpneq_epi8_mask(k, A, B) \
  122. _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
  123. #define _mm256_cmpeq_epi8_mask(A, B) \
  124. _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
  125. #define _mm256_mask_cmpeq_epi8_mask(k, A, B) \
  126. _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
  127. #define _mm256_cmpge_epi8_mask(A, B) \
  128. _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
  129. #define _mm256_mask_cmpge_epi8_mask(k, A, B) \
  130. _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
  131. #define _mm256_cmpgt_epi8_mask(A, B) \
  132. _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
  133. #define _mm256_mask_cmpgt_epi8_mask(k, A, B) \
  134. _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
  135. #define _mm256_cmple_epi8_mask(A, B) \
  136. _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
  137. #define _mm256_mask_cmple_epi8_mask(k, A, B) \
  138. _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
  139. #define _mm256_cmplt_epi8_mask(A, B) \
  140. _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
  141. #define _mm256_mask_cmplt_epi8_mask(k, A, B) \
  142. _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
  143. #define _mm256_cmpneq_epi8_mask(A, B) \
  144. _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
  145. #define _mm256_mask_cmpneq_epi8_mask(k, A, B) \
  146. _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
  147. #define _mm_cmpeq_epu8_mask(A, B) \
  148. _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
  149. #define _mm_mask_cmpeq_epu8_mask(k, A, B) \
  150. _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
  151. #define _mm_cmpge_epu8_mask(A, B) \
  152. _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
  153. #define _mm_mask_cmpge_epu8_mask(k, A, B) \
  154. _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
  155. #define _mm_cmpgt_epu8_mask(A, B) \
  156. _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
  157. #define _mm_mask_cmpgt_epu8_mask(k, A, B) \
  158. _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
  159. #define _mm_cmple_epu8_mask(A, B) \
  160. _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
  161. #define _mm_mask_cmple_epu8_mask(k, A, B) \
  162. _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
  163. #define _mm_cmplt_epu8_mask(A, B) \
  164. _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
  165. #define _mm_mask_cmplt_epu8_mask(k, A, B) \
  166. _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
  167. #define _mm_cmpneq_epu8_mask(A, B) \
  168. _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
  169. #define _mm_mask_cmpneq_epu8_mask(k, A, B) \
  170. _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
  171. #define _mm256_cmpeq_epu8_mask(A, B) \
  172. _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
  173. #define _mm256_mask_cmpeq_epu8_mask(k, A, B) \
  174. _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
  175. #define _mm256_cmpge_epu8_mask(A, B) \
  176. _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
  177. #define _mm256_mask_cmpge_epu8_mask(k, A, B) \
  178. _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
  179. #define _mm256_cmpgt_epu8_mask(A, B) \
  180. _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
  181. #define _mm256_mask_cmpgt_epu8_mask(k, A, B) \
  182. _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
  183. #define _mm256_cmple_epu8_mask(A, B) \
  184. _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
  185. #define _mm256_mask_cmple_epu8_mask(k, A, B) \
  186. _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
  187. #define _mm256_cmplt_epu8_mask(A, B) \
  188. _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
  189. #define _mm256_mask_cmplt_epu8_mask(k, A, B) \
  190. _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
  191. #define _mm256_cmpneq_epu8_mask(A, B) \
  192. _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
  193. #define _mm256_mask_cmpneq_epu8_mask(k, A, B) \
  194. _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
  195. #define _mm_cmpeq_epi16_mask(A, B) \
  196. _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
  197. #define _mm_mask_cmpeq_epi16_mask(k, A, B) \
  198. _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
  199. #define _mm_cmpge_epi16_mask(A, B) \
  200. _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
  201. #define _mm_mask_cmpge_epi16_mask(k, A, B) \
  202. _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
  203. #define _mm_cmpgt_epi16_mask(A, B) \
  204. _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
  205. #define _mm_mask_cmpgt_epi16_mask(k, A, B) \
  206. _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
  207. #define _mm_cmple_epi16_mask(A, B) \
  208. _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
  209. #define _mm_mask_cmple_epi16_mask(k, A, B) \
  210. _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
  211. #define _mm_cmplt_epi16_mask(A, B) \
  212. _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
  213. #define _mm_mask_cmplt_epi16_mask(k, A, B) \
  214. _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
  215. #define _mm_cmpneq_epi16_mask(A, B) \
  216. _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
  217. #define _mm_mask_cmpneq_epi16_mask(k, A, B) \
  218. _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
  219. #define _mm256_cmpeq_epi16_mask(A, B) \
  220. _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
  221. #define _mm256_mask_cmpeq_epi16_mask(k, A, B) \
  222. _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
  223. #define _mm256_cmpge_epi16_mask(A, B) \
  224. _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
  225. #define _mm256_mask_cmpge_epi16_mask(k, A, B) \
  226. _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
  227. #define _mm256_cmpgt_epi16_mask(A, B) \
  228. _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
  229. #define _mm256_mask_cmpgt_epi16_mask(k, A, B) \
  230. _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
  231. #define _mm256_cmple_epi16_mask(A, B) \
  232. _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
  233. #define _mm256_mask_cmple_epi16_mask(k, A, B) \
  234. _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
  235. #define _mm256_cmplt_epi16_mask(A, B) \
  236. _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
  237. #define _mm256_mask_cmplt_epi16_mask(k, A, B) \
  238. _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
  239. #define _mm256_cmpneq_epi16_mask(A, B) \
  240. _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
  241. #define _mm256_mask_cmpneq_epi16_mask(k, A, B) \
  242. _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
  243. #define _mm_cmpeq_epu16_mask(A, B) \
  244. _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
  245. #define _mm_mask_cmpeq_epu16_mask(k, A, B) \
  246. _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
  247. #define _mm_cmpge_epu16_mask(A, B) \
  248. _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
  249. #define _mm_mask_cmpge_epu16_mask(k, A, B) \
  250. _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
  251. #define _mm_cmpgt_epu16_mask(A, B) \
  252. _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
  253. #define _mm_mask_cmpgt_epu16_mask(k, A, B) \
  254. _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
  255. #define _mm_cmple_epu16_mask(A, B) \
  256. _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
  257. #define _mm_mask_cmple_epu16_mask(k, A, B) \
  258. _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
  259. #define _mm_cmplt_epu16_mask(A, B) \
  260. _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
  261. #define _mm_mask_cmplt_epu16_mask(k, A, B) \
  262. _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
  263. #define _mm_cmpneq_epu16_mask(A, B) \
  264. _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
  265. #define _mm_mask_cmpneq_epu16_mask(k, A, B) \
  266. _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
  267. #define _mm256_cmpeq_epu16_mask(A, B) \
  268. _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
  269. #define _mm256_mask_cmpeq_epu16_mask(k, A, B) \
  270. _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
  271. #define _mm256_cmpge_epu16_mask(A, B) \
  272. _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
  273. #define _mm256_mask_cmpge_epu16_mask(k, A, B) \
  274. _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
  275. #define _mm256_cmpgt_epu16_mask(A, B) \
  276. _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
  277. #define _mm256_mask_cmpgt_epu16_mask(k, A, B) \
  278. _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
  279. #define _mm256_cmple_epu16_mask(A, B) \
  280. _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
  281. #define _mm256_mask_cmple_epu16_mask(k, A, B) \
  282. _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
  283. #define _mm256_cmplt_epu16_mask(A, B) \
  284. _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
  285. #define _mm256_mask_cmplt_epu16_mask(k, A, B) \
  286. _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
  287. #define _mm256_cmpneq_epu16_mask(A, B) \
  288. _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
  289. #define _mm256_mask_cmpneq_epu16_mask(k, A, B) \
  290. _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
  291. static __inline__ __m256i __DEFAULT_FN_ATTRS
  292. _mm256_mask_add_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
  293. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  294. (__v32qi)_mm256_add_epi8(__A, __B),
  295. (__v32qi)__W);
  296. }
  297. static __inline__ __m256i __DEFAULT_FN_ATTRS
  298. _mm256_maskz_add_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  299. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  300. (__v32qi)_mm256_add_epi8(__A, __B),
  301. (__v32qi)_mm256_setzero_si256());
  302. }
  303. static __inline__ __m256i __DEFAULT_FN_ATTRS
  304. _mm256_mask_add_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  305. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  306. (__v16hi)_mm256_add_epi16(__A, __B),
  307. (__v16hi)__W);
  308. }
  309. static __inline__ __m256i __DEFAULT_FN_ATTRS
  310. _mm256_maskz_add_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  311. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  312. (__v16hi)_mm256_add_epi16(__A, __B),
  313. (__v16hi)_mm256_setzero_si256());
  314. }
  315. static __inline__ __m256i __DEFAULT_FN_ATTRS
  316. _mm256_mask_sub_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
  317. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  318. (__v32qi)_mm256_sub_epi8(__A, __B),
  319. (__v32qi)__W);
  320. }
  321. static __inline__ __m256i __DEFAULT_FN_ATTRS
  322. _mm256_maskz_sub_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  323. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  324. (__v32qi)_mm256_sub_epi8(__A, __B),
  325. (__v32qi)_mm256_setzero_si256());
  326. }
  327. static __inline__ __m256i __DEFAULT_FN_ATTRS
  328. _mm256_mask_sub_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  329. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  330. (__v16hi)_mm256_sub_epi16(__A, __B),
  331. (__v16hi)__W);
  332. }
  333. static __inline__ __m256i __DEFAULT_FN_ATTRS
  334. _mm256_maskz_sub_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  335. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  336. (__v16hi)_mm256_sub_epi16(__A, __B),
  337. (__v16hi)_mm256_setzero_si256());
  338. }
  339. static __inline__ __m128i __DEFAULT_FN_ATTRS
  340. _mm_mask_add_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  341. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  342. (__v16qi)_mm_add_epi8(__A, __B),
  343. (__v16qi)__W);
  344. }
  345. static __inline__ __m128i __DEFAULT_FN_ATTRS
  346. _mm_maskz_add_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  347. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  348. (__v16qi)_mm_add_epi8(__A, __B),
  349. (__v16qi)_mm_setzero_si128());
  350. }
  351. static __inline__ __m128i __DEFAULT_FN_ATTRS
  352. _mm_mask_add_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  353. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  354. (__v8hi)_mm_add_epi16(__A, __B),
  355. (__v8hi)__W);
  356. }
  357. static __inline__ __m128i __DEFAULT_FN_ATTRS
  358. _mm_maskz_add_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  359. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  360. (__v8hi)_mm_add_epi16(__A, __B),
  361. (__v8hi)_mm_setzero_si128());
  362. }
  363. static __inline__ __m128i __DEFAULT_FN_ATTRS
  364. _mm_mask_sub_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  365. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  366. (__v16qi)_mm_sub_epi8(__A, __B),
  367. (__v16qi)__W);
  368. }
  369. static __inline__ __m128i __DEFAULT_FN_ATTRS
  370. _mm_maskz_sub_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  371. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  372. (__v16qi)_mm_sub_epi8(__A, __B),
  373. (__v16qi)_mm_setzero_si128());
  374. }
  375. static __inline__ __m128i __DEFAULT_FN_ATTRS
  376. _mm_mask_sub_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  377. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  378. (__v8hi)_mm_sub_epi16(__A, __B),
  379. (__v8hi)__W);
  380. }
  381. static __inline__ __m128i __DEFAULT_FN_ATTRS
  382. _mm_maskz_sub_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  383. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  384. (__v8hi)_mm_sub_epi16(__A, __B),
  385. (__v8hi)_mm_setzero_si128());
  386. }
  387. static __inline__ __m256i __DEFAULT_FN_ATTRS
  388. _mm256_mask_mullo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  389. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  390. (__v16hi)_mm256_mullo_epi16(__A, __B),
  391. (__v16hi)__W);
  392. }
  393. static __inline__ __m256i __DEFAULT_FN_ATTRS
  394. _mm256_maskz_mullo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  395. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  396. (__v16hi)_mm256_mullo_epi16(__A, __B),
  397. (__v16hi)_mm256_setzero_si256());
  398. }
  399. static __inline__ __m128i __DEFAULT_FN_ATTRS
  400. _mm_mask_mullo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  401. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  402. (__v8hi)_mm_mullo_epi16(__A, __B),
  403. (__v8hi)__W);
  404. }
  405. static __inline__ __m128i __DEFAULT_FN_ATTRS
  406. _mm_maskz_mullo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  407. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  408. (__v8hi)_mm_mullo_epi16(__A, __B),
  409. (__v8hi)_mm_setzero_si128());
  410. }
  411. static __inline__ __m128i __DEFAULT_FN_ATTRS
  412. _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
  413. {
  414. return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
  415. (__v16qi) __W,
  416. (__v16qi) __A);
  417. }
  418. static __inline__ __m256i __DEFAULT_FN_ATTRS
  419. _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
  420. {
  421. return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
  422. (__v32qi) __W,
  423. (__v32qi) __A);
  424. }
  425. static __inline__ __m128i __DEFAULT_FN_ATTRS
  426. _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
  427. {
  428. return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
  429. (__v8hi) __W,
  430. (__v8hi) __A);
  431. }
  432. static __inline__ __m256i __DEFAULT_FN_ATTRS
  433. _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
  434. {
  435. return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
  436. (__v16hi) __W,
  437. (__v16hi) __A);
  438. }
  439. static __inline__ __m128i __DEFAULT_FN_ATTRS
  440. _mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A)
  441. {
  442. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  443. (__v16qi)_mm_abs_epi8(__A),
  444. (__v16qi)__W);
  445. }
  446. static __inline__ __m128i __DEFAULT_FN_ATTRS
  447. _mm_maskz_abs_epi8(__mmask16 __U, __m128i __A)
  448. {
  449. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  450. (__v16qi)_mm_abs_epi8(__A),
  451. (__v16qi)_mm_setzero_si128());
  452. }
  453. static __inline__ __m256i __DEFAULT_FN_ATTRS
  454. _mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A)
  455. {
  456. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  457. (__v32qi)_mm256_abs_epi8(__A),
  458. (__v32qi)__W);
  459. }
  460. static __inline__ __m256i __DEFAULT_FN_ATTRS
  461. _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
  462. {
  463. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  464. (__v32qi)_mm256_abs_epi8(__A),
  465. (__v32qi)_mm256_setzero_si256());
  466. }
  467. static __inline__ __m128i __DEFAULT_FN_ATTRS
  468. _mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A)
  469. {
  470. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  471. (__v8hi)_mm_abs_epi16(__A),
  472. (__v8hi)__W);
  473. }
  474. static __inline__ __m128i __DEFAULT_FN_ATTRS
  475. _mm_maskz_abs_epi16(__mmask8 __U, __m128i __A)
  476. {
  477. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  478. (__v8hi)_mm_abs_epi16(__A),
  479. (__v8hi)_mm_setzero_si128());
  480. }
  481. static __inline__ __m256i __DEFAULT_FN_ATTRS
  482. _mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A)
  483. {
  484. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  485. (__v16hi)_mm256_abs_epi16(__A),
  486. (__v16hi)__W);
  487. }
  488. static __inline__ __m256i __DEFAULT_FN_ATTRS
  489. _mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A)
  490. {
  491. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  492. (__v16hi)_mm256_abs_epi16(__A),
  493. (__v16hi)_mm256_setzero_si256());
  494. }
  495. static __inline__ __m128i __DEFAULT_FN_ATTRS
  496. _mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
  497. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  498. (__v8hi)_mm_packs_epi32(__A, __B),
  499. (__v8hi)_mm_setzero_si128());
  500. }
  501. static __inline__ __m128i __DEFAULT_FN_ATTRS
  502. _mm_mask_packs_epi32(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  503. {
  504. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  505. (__v8hi)_mm_packs_epi32(__A, __B),
  506. (__v8hi)__W);
  507. }
  508. static __inline__ __m256i __DEFAULT_FN_ATTRS
  509. _mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B)
  510. {
  511. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  512. (__v16hi)_mm256_packs_epi32(__A, __B),
  513. (__v16hi)_mm256_setzero_si256());
  514. }
  515. static __inline__ __m256i __DEFAULT_FN_ATTRS
  516. _mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  517. {
  518. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  519. (__v16hi)_mm256_packs_epi32(__A, __B),
  520. (__v16hi)__W);
  521. }
  522. static __inline__ __m128i __DEFAULT_FN_ATTRS
  523. _mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B)
  524. {
  525. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  526. (__v16qi)_mm_packs_epi16(__A, __B),
  527. (__v16qi)_mm_setzero_si128());
  528. }
  529. static __inline__ __m128i __DEFAULT_FN_ATTRS
  530. _mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  531. {
  532. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  533. (__v16qi)_mm_packs_epi16(__A, __B),
  534. (__v16qi)__W);
  535. }
  536. static __inline__ __m256i __DEFAULT_FN_ATTRS
  537. _mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B)
  538. {
  539. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  540. (__v32qi)_mm256_packs_epi16(__A, __B),
  541. (__v32qi)_mm256_setzero_si256());
  542. }
  543. static __inline__ __m256i __DEFAULT_FN_ATTRS
  544. _mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  545. {
  546. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  547. (__v32qi)_mm256_packs_epi16(__A, __B),
  548. (__v32qi)__W);
  549. }
  550. static __inline__ __m128i __DEFAULT_FN_ATTRS
  551. _mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B)
  552. {
  553. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  554. (__v8hi)_mm_packus_epi32(__A, __B),
  555. (__v8hi)_mm_setzero_si128());
  556. }
  557. static __inline__ __m128i __DEFAULT_FN_ATTRS
  558. _mm_mask_packus_epi32(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  559. {
  560. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  561. (__v8hi)_mm_packus_epi32(__A, __B),
  562. (__v8hi)__W);
  563. }
  564. static __inline__ __m256i __DEFAULT_FN_ATTRS
  565. _mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B)
  566. {
  567. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  568. (__v16hi)_mm256_packus_epi32(__A, __B),
  569. (__v16hi)_mm256_setzero_si256());
  570. }
  571. static __inline__ __m256i __DEFAULT_FN_ATTRS
  572. _mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  573. {
  574. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  575. (__v16hi)_mm256_packus_epi32(__A, __B),
  576. (__v16hi)__W);
  577. }
  578. static __inline__ __m128i __DEFAULT_FN_ATTRS
  579. _mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B)
  580. {
  581. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  582. (__v16qi)_mm_packus_epi16(__A, __B),
  583. (__v16qi)_mm_setzero_si128());
  584. }
  585. static __inline__ __m128i __DEFAULT_FN_ATTRS
  586. _mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  587. {
  588. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  589. (__v16qi)_mm_packus_epi16(__A, __B),
  590. (__v16qi)__W);
  591. }
  592. static __inline__ __m256i __DEFAULT_FN_ATTRS
  593. _mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B)
  594. {
  595. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  596. (__v32qi)_mm256_packus_epi16(__A, __B),
  597. (__v32qi)_mm256_setzero_si256());
  598. }
  599. static __inline__ __m256i __DEFAULT_FN_ATTRS
  600. _mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  601. {
  602. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  603. (__v32qi)_mm256_packus_epi16(__A, __B),
  604. (__v32qi)__W);
  605. }
  606. static __inline__ __m128i __DEFAULT_FN_ATTRS
  607. _mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  608. {
  609. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  610. (__v16qi)_mm_adds_epi8(__A, __B),
  611. (__v16qi)__W);
  612. }
  613. static __inline__ __m128i __DEFAULT_FN_ATTRS
  614. _mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B)
  615. {
  616. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  617. (__v16qi)_mm_adds_epi8(__A, __B),
  618. (__v16qi)_mm_setzero_si128());
  619. }
  620. static __inline__ __m256i __DEFAULT_FN_ATTRS
  621. _mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  622. {
  623. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  624. (__v32qi)_mm256_adds_epi8(__A, __B),
  625. (__v32qi)__W);
  626. }
  627. static __inline__ __m256i __DEFAULT_FN_ATTRS
  628. _mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B)
  629. {
  630. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  631. (__v32qi)_mm256_adds_epi8(__A, __B),
  632. (__v32qi)_mm256_setzero_si256());
  633. }
  634. static __inline__ __m128i __DEFAULT_FN_ATTRS
  635. _mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  636. {
  637. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  638. (__v8hi)_mm_adds_epi16(__A, __B),
  639. (__v8hi)__W);
  640. }
  641. static __inline__ __m128i __DEFAULT_FN_ATTRS
  642. _mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  643. {
  644. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  645. (__v8hi)_mm_adds_epi16(__A, __B),
  646. (__v8hi)_mm_setzero_si128());
  647. }
  648. static __inline__ __m256i __DEFAULT_FN_ATTRS
  649. _mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  650. {
  651. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  652. (__v16hi)_mm256_adds_epi16(__A, __B),
  653. (__v16hi)__W);
  654. }
  655. static __inline__ __m256i __DEFAULT_FN_ATTRS
  656. _mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  657. {
  658. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  659. (__v16hi)_mm256_adds_epi16(__A, __B),
  660. (__v16hi)_mm256_setzero_si256());
  661. }
  662. static __inline__ __m128i __DEFAULT_FN_ATTRS
  663. _mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  664. {
  665. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  666. (__v16qi)_mm_adds_epu8(__A, __B),
  667. (__v16qi)__W);
  668. }
  669. static __inline__ __m128i __DEFAULT_FN_ATTRS
  670. _mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B)
  671. {
  672. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  673. (__v16qi)_mm_adds_epu8(__A, __B),
  674. (__v16qi)_mm_setzero_si128());
  675. }
  676. static __inline__ __m256i __DEFAULT_FN_ATTRS
  677. _mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  678. {
  679. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  680. (__v32qi)_mm256_adds_epu8(__A, __B),
  681. (__v32qi)__W);
  682. }
  683. static __inline__ __m256i __DEFAULT_FN_ATTRS
  684. _mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B)
  685. {
  686. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  687. (__v32qi)_mm256_adds_epu8(__A, __B),
  688. (__v32qi)_mm256_setzero_si256());
  689. }
  690. static __inline__ __m128i __DEFAULT_FN_ATTRS
  691. _mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  692. {
  693. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  694. (__v8hi)_mm_adds_epu16(__A, __B),
  695. (__v8hi)__W);
  696. }
  697. static __inline__ __m128i __DEFAULT_FN_ATTRS
  698. _mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B)
  699. {
  700. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  701. (__v8hi)_mm_adds_epu16(__A, __B),
  702. (__v8hi)_mm_setzero_si128());
  703. }
  704. static __inline__ __m256i __DEFAULT_FN_ATTRS
  705. _mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  706. {
  707. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  708. (__v16hi)_mm256_adds_epu16(__A, __B),
  709. (__v16hi)__W);
  710. }
  711. static __inline__ __m256i __DEFAULT_FN_ATTRS
  712. _mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B)
  713. {
  714. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  715. (__v16hi)_mm256_adds_epu16(__A, __B),
  716. (__v16hi)_mm256_setzero_si256());
  717. }
  718. static __inline__ __m128i __DEFAULT_FN_ATTRS
  719. _mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  720. {
  721. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  722. (__v16qi)_mm_avg_epu8(__A, __B),
  723. (__v16qi)__W);
  724. }
  725. static __inline__ __m128i __DEFAULT_FN_ATTRS
  726. _mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B)
  727. {
  728. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  729. (__v16qi)_mm_avg_epu8(__A, __B),
  730. (__v16qi)_mm_setzero_si128());
  731. }
  732. static __inline__ __m256i __DEFAULT_FN_ATTRS
  733. _mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  734. {
  735. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  736. (__v32qi)_mm256_avg_epu8(__A, __B),
  737. (__v32qi)__W);
  738. }
  739. static __inline__ __m256i __DEFAULT_FN_ATTRS
  740. _mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B)
  741. {
  742. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  743. (__v32qi)_mm256_avg_epu8(__A, __B),
  744. (__v32qi)_mm256_setzero_si256());
  745. }
  746. static __inline__ __m128i __DEFAULT_FN_ATTRS
  747. _mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  748. {
  749. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  750. (__v8hi)_mm_avg_epu16(__A, __B),
  751. (__v8hi)__W);
  752. }
  753. static __inline__ __m128i __DEFAULT_FN_ATTRS
  754. _mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B)
  755. {
  756. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  757. (__v8hi)_mm_avg_epu16(__A, __B),
  758. (__v8hi)_mm_setzero_si128());
  759. }
  760. static __inline__ __m256i __DEFAULT_FN_ATTRS
  761. _mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  762. {
  763. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  764. (__v16hi)_mm256_avg_epu16(__A, __B),
  765. (__v16hi)__W);
  766. }
  767. static __inline__ __m256i __DEFAULT_FN_ATTRS
  768. _mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B)
  769. {
  770. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  771. (__v16hi)_mm256_avg_epu16(__A, __B),
  772. (__v16hi)_mm256_setzero_si256());
  773. }
  774. static __inline__ __m128i __DEFAULT_FN_ATTRS
  775. _mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B)
  776. {
  777. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  778. (__v16qi)_mm_max_epi8(__A, __B),
  779. (__v16qi)_mm_setzero_si128());
  780. }
  781. static __inline__ __m128i __DEFAULT_FN_ATTRS
  782. _mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  783. {
  784. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  785. (__v16qi)_mm_max_epi8(__A, __B),
  786. (__v16qi)__W);
  787. }
  788. static __inline__ __m256i __DEFAULT_FN_ATTRS
  789. _mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B)
  790. {
  791. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  792. (__v32qi)_mm256_max_epi8(__A, __B),
  793. (__v32qi)_mm256_setzero_si256());
  794. }
  795. static __inline__ __m256i __DEFAULT_FN_ATTRS
  796. _mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  797. {
  798. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  799. (__v32qi)_mm256_max_epi8(__A, __B),
  800. (__v32qi)__W);
  801. }
  802. static __inline__ __m128i __DEFAULT_FN_ATTRS
  803. _mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B)
  804. {
  805. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  806. (__v8hi)_mm_max_epi16(__A, __B),
  807. (__v8hi)_mm_setzero_si128());
  808. }
  809. static __inline__ __m128i __DEFAULT_FN_ATTRS
  810. _mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  811. {
  812. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  813. (__v8hi)_mm_max_epi16(__A, __B),
  814. (__v8hi)__W);
  815. }
  816. static __inline__ __m256i __DEFAULT_FN_ATTRS
  817. _mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B)
  818. {
  819. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  820. (__v16hi)_mm256_max_epi16(__A, __B),
  821. (__v16hi)_mm256_setzero_si256());
  822. }
  823. static __inline__ __m256i __DEFAULT_FN_ATTRS
  824. _mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  825. {
  826. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  827. (__v16hi)_mm256_max_epi16(__A, __B),
  828. (__v16hi)__W);
  829. }
  830. static __inline__ __m128i __DEFAULT_FN_ATTRS
  831. _mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B)
  832. {
  833. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  834. (__v16qi)_mm_max_epu8(__A, __B),
  835. (__v16qi)_mm_setzero_si128());
  836. }
  837. static __inline__ __m128i __DEFAULT_FN_ATTRS
  838. _mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  839. {
  840. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  841. (__v16qi)_mm_max_epu8(__A, __B),
  842. (__v16qi)__W);
  843. }
  844. static __inline__ __m256i __DEFAULT_FN_ATTRS
  845. _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
  846. {
  847. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  848. (__v32qi)_mm256_max_epu8(__A, __B),
  849. (__v32qi)_mm256_setzero_si256());
  850. }
  851. static __inline__ __m256i __DEFAULT_FN_ATTRS
  852. _mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  853. {
  854. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  855. (__v32qi)_mm256_max_epu8(__A, __B),
  856. (__v32qi)__W);
  857. }
  858. static __inline__ __m128i __DEFAULT_FN_ATTRS
  859. _mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B)
  860. {
  861. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  862. (__v8hi)_mm_max_epu16(__A, __B),
  863. (__v8hi)_mm_setzero_si128());
  864. }
  865. static __inline__ __m128i __DEFAULT_FN_ATTRS
  866. _mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  867. {
  868. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  869. (__v8hi)_mm_max_epu16(__A, __B),
  870. (__v8hi)__W);
  871. }
  872. static __inline__ __m256i __DEFAULT_FN_ATTRS
  873. _mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B)
  874. {
  875. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  876. (__v16hi)_mm256_max_epu16(__A, __B),
  877. (__v16hi)_mm256_setzero_si256());
  878. }
  879. static __inline__ __m256i __DEFAULT_FN_ATTRS
  880. _mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  881. {
  882. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  883. (__v16hi)_mm256_max_epu16(__A, __B),
  884. (__v16hi)__W);
  885. }
  886. static __inline__ __m128i __DEFAULT_FN_ATTRS
  887. _mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B)
  888. {
  889. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  890. (__v16qi)_mm_min_epi8(__A, __B),
  891. (__v16qi)_mm_setzero_si128());
  892. }
  893. static __inline__ __m128i __DEFAULT_FN_ATTRS
  894. _mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  895. {
  896. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  897. (__v16qi)_mm_min_epi8(__A, __B),
  898. (__v16qi)__W);
  899. }
  900. static __inline__ __m256i __DEFAULT_FN_ATTRS
  901. _mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B)
  902. {
  903. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  904. (__v32qi)_mm256_min_epi8(__A, __B),
  905. (__v32qi)_mm256_setzero_si256());
  906. }
  907. static __inline__ __m256i __DEFAULT_FN_ATTRS
  908. _mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  909. {
  910. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  911. (__v32qi)_mm256_min_epi8(__A, __B),
  912. (__v32qi)__W);
  913. }
  914. static __inline__ __m128i __DEFAULT_FN_ATTRS
  915. _mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B)
  916. {
  917. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  918. (__v8hi)_mm_min_epi16(__A, __B),
  919. (__v8hi)_mm_setzero_si128());
  920. }
  921. static __inline__ __m128i __DEFAULT_FN_ATTRS
  922. _mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  923. {
  924. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  925. (__v8hi)_mm_min_epi16(__A, __B),
  926. (__v8hi)__W);
  927. }
  928. static __inline__ __m256i __DEFAULT_FN_ATTRS
  929. _mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B)
  930. {
  931. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  932. (__v16hi)_mm256_min_epi16(__A, __B),
  933. (__v16hi)_mm256_setzero_si256());
  934. }
  935. static __inline__ __m256i __DEFAULT_FN_ATTRS
  936. _mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  937. {
  938. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  939. (__v16hi)_mm256_min_epi16(__A, __B),
  940. (__v16hi)__W);
  941. }
  942. static __inline__ __m128i __DEFAULT_FN_ATTRS
  943. _mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B)
  944. {
  945. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  946. (__v16qi)_mm_min_epu8(__A, __B),
  947. (__v16qi)_mm_setzero_si128());
  948. }
  949. static __inline__ __m128i __DEFAULT_FN_ATTRS
  950. _mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  951. {
  952. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  953. (__v16qi)_mm_min_epu8(__A, __B),
  954. (__v16qi)__W);
  955. }
  956. static __inline__ __m256i __DEFAULT_FN_ATTRS
  957. _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
  958. {
  959. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  960. (__v32qi)_mm256_min_epu8(__A, __B),
  961. (__v32qi)_mm256_setzero_si256());
  962. }
  963. static __inline__ __m256i __DEFAULT_FN_ATTRS
  964. _mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  965. {
  966. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  967. (__v32qi)_mm256_min_epu8(__A, __B),
  968. (__v32qi)__W);
  969. }
  970. static __inline__ __m128i __DEFAULT_FN_ATTRS
  971. _mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B)
  972. {
  973. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  974. (__v8hi)_mm_min_epu16(__A, __B),
  975. (__v8hi)_mm_setzero_si128());
  976. }
  977. static __inline__ __m128i __DEFAULT_FN_ATTRS
  978. _mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  979. {
  980. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  981. (__v8hi)_mm_min_epu16(__A, __B),
  982. (__v8hi)__W);
  983. }
  984. static __inline__ __m256i __DEFAULT_FN_ATTRS
  985. _mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B)
  986. {
  987. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  988. (__v16hi)_mm256_min_epu16(__A, __B),
  989. (__v16hi)_mm256_setzero_si256());
  990. }
  991. static __inline__ __m256i __DEFAULT_FN_ATTRS
  992. _mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  993. {
  994. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  995. (__v16hi)_mm256_min_epu16(__A, __B),
  996. (__v16hi)__W);
  997. }
  998. static __inline__ __m128i __DEFAULT_FN_ATTRS
  999. _mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  1000. {
  1001. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1002. (__v16qi)_mm_shuffle_epi8(__A, __B),
  1003. (__v16qi)__W);
  1004. }
  1005. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1006. _mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B)
  1007. {
  1008. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1009. (__v16qi)_mm_shuffle_epi8(__A, __B),
  1010. (__v16qi)_mm_setzero_si128());
  1011. }
  1012. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1013. _mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  1014. {
  1015. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1016. (__v32qi)_mm256_shuffle_epi8(__A, __B),
  1017. (__v32qi)__W);
  1018. }
  1019. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1020. _mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B)
  1021. {
  1022. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1023. (__v32qi)_mm256_shuffle_epi8(__A, __B),
  1024. (__v32qi)_mm256_setzero_si256());
  1025. }
  1026. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1027. _mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  1028. {
  1029. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1030. (__v16qi)_mm_subs_epi8(__A, __B),
  1031. (__v16qi)__W);
  1032. }
  1033. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1034. _mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B)
  1035. {
  1036. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1037. (__v16qi)_mm_subs_epi8(__A, __B),
  1038. (__v16qi)_mm_setzero_si128());
  1039. }
  1040. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1041. _mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  1042. {
  1043. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1044. (__v32qi)_mm256_subs_epi8(__A, __B),
  1045. (__v32qi)__W);
  1046. }
  1047. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1048. _mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B)
  1049. {
  1050. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1051. (__v32qi)_mm256_subs_epi8(__A, __B),
  1052. (__v32qi)_mm256_setzero_si256());
  1053. }
  1054. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1055. _mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1056. {
  1057. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1058. (__v8hi)_mm_subs_epi16(__A, __B),
  1059. (__v8hi)__W);
  1060. }
  1061. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1062. _mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1063. {
  1064. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1065. (__v8hi)_mm_subs_epi16(__A, __B),
  1066. (__v8hi)_mm_setzero_si128());
  1067. }
  1068. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1069. _mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1070. {
  1071. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1072. (__v16hi)_mm256_subs_epi16(__A, __B),
  1073. (__v16hi)__W);
  1074. }
  1075. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1076. _mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1077. {
  1078. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1079. (__v16hi)_mm256_subs_epi16(__A, __B),
  1080. (__v16hi)_mm256_setzero_si256());
  1081. }
  1082. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1083. _mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  1084. {
  1085. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1086. (__v16qi)_mm_subs_epu8(__A, __B),
  1087. (__v16qi)__W);
  1088. }
  1089. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1090. _mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B)
  1091. {
  1092. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1093. (__v16qi)_mm_subs_epu8(__A, __B),
  1094. (__v16qi)_mm_setzero_si128());
  1095. }
  1096. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1097. _mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  1098. {
  1099. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1100. (__v32qi)_mm256_subs_epu8(__A, __B),
  1101. (__v32qi)__W);
  1102. }
  1103. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1104. _mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B)
  1105. {
  1106. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1107. (__v32qi)_mm256_subs_epu8(__A, __B),
  1108. (__v32qi)_mm256_setzero_si256());
  1109. }
  1110. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1111. _mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1112. {
  1113. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1114. (__v8hi)_mm_subs_epu16(__A, __B),
  1115. (__v8hi)__W);
  1116. }
  1117. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1118. _mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B)
  1119. {
  1120. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1121. (__v8hi)_mm_subs_epu16(__A, __B),
  1122. (__v8hi)_mm_setzero_si128());
  1123. }
  1124. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1125. _mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A,
  1126. __m256i __B) {
  1127. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1128. (__v16hi)_mm256_subs_epu16(__A, __B),
  1129. (__v16hi)__W);
  1130. }
  1131. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1132. _mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B)
  1133. {
  1134. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1135. (__v16hi)_mm256_subs_epu16(__A, __B),
  1136. (__v16hi)_mm256_setzero_si256());
  1137. }
  1138. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1139. _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
  1140. __m128i __B)
  1141. {
  1142. return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
  1143. (__v8hi) __I /* idx */ ,
  1144. (__v8hi) __B,
  1145. (__mmask8) __U);
  1146. }
  1147. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1148. _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
  1149. __mmask16 __U, __m256i __B)
  1150. {
  1151. return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
  1152. (__v16hi) __I /* idx */ ,
  1153. (__v16hi) __B,
  1154. (__mmask16) __U);
  1155. }
  1156. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1157. _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
  1158. {
  1159. return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
  1160. (__v8hi) __A,
  1161. (__v8hi) __B,
  1162. (__mmask8) -1);
  1163. }
  1164. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1165. _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
  1166. __m128i __B)
  1167. {
  1168. return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
  1169. (__v8hi) __A,
  1170. (__v8hi) __B,
  1171. (__mmask8) __U);
  1172. }
  1173. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1174. _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
  1175. __m128i __B)
  1176. {
  1177. return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I/* idx */,
  1178. (__v8hi) __A,
  1179. (__v8hi) __B,
  1180. (__mmask8) __U);
  1181. }
  1182. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1183. _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
  1184. {
  1185. return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
  1186. (__v16hi) __A,
  1187. (__v16hi) __B,
  1188. (__mmask16) -1);
  1189. }
  1190. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1191. _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
  1192. __m256i __I, __m256i __B)
  1193. {
  1194. return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
  1195. (__v16hi) __A,
  1196. (__v16hi) __B,
  1197. (__mmask16) __U);
  1198. }
  1199. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1200. _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
  1201. __m256i __I, __m256i __B)
  1202. {
  1203. return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I/* idx */,
  1204. (__v16hi) __A,
  1205. (__v16hi) __B,
  1206. (__mmask16) __U);
  1207. }
  1208. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1209. _mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
  1210. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1211. (__v8hi)_mm_maddubs_epi16(__X, __Y),
  1212. (__v8hi)__W);
  1213. }
  1214. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1215. _mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
  1216. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1217. (__v8hi)_mm_maddubs_epi16(__X, __Y),
  1218. (__v8hi)_mm_setzero_si128());
  1219. }
  1220. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1221. _mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X,
  1222. __m256i __Y) {
  1223. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1224. (__v16hi)_mm256_maddubs_epi16(__X, __Y),
  1225. (__v16hi)__W);
  1226. }
  1227. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1228. _mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
  1229. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1230. (__v16hi)_mm256_maddubs_epi16(__X, __Y),
  1231. (__v16hi)_mm256_setzero_si256());
  1232. }
  1233. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1234. _mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1235. return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
  1236. (__v4si)_mm_madd_epi16(__A, __B),
  1237. (__v4si)__W);
  1238. }
  1239. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1240. _mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1241. return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
  1242. (__v4si)_mm_madd_epi16(__A, __B),
  1243. (__v4si)_mm_setzero_si128());
  1244. }
  1245. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1246. _mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
  1247. return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
  1248. (__v8si)_mm256_madd_epi16(__A, __B),
  1249. (__v8si)__W);
  1250. }
  1251. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1252. _mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
  1253. return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
  1254. (__v8si)_mm256_madd_epi16(__A, __B),
  1255. (__v8si)_mm256_setzero_si256());
  1256. }
  1257. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1258. _mm_cvtsepi16_epi8 (__m128i __A) {
  1259. return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  1260. (__v16qi) _mm_setzero_si128(),
  1261. (__mmask8) -1);
  1262. }
  1263. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1264. _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
  1265. return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  1266. (__v16qi) __O,
  1267. __M);
  1268. }
  1269. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1270. _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
  1271. return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  1272. (__v16qi) _mm_setzero_si128(),
  1273. __M);
  1274. }
  1275. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1276. _mm256_cvtsepi16_epi8 (__m256i __A) {
  1277. return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  1278. (__v16qi) _mm_setzero_si128(),
  1279. (__mmask16) -1);
  1280. }
  1281. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1282. _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
  1283. return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  1284. (__v16qi) __O,
  1285. __M);
  1286. }
  1287. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1288. _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
  1289. return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  1290. (__v16qi) _mm_setzero_si128(),
  1291. __M);
  1292. }
  1293. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1294. _mm_cvtusepi16_epi8 (__m128i __A) {
  1295. return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  1296. (__v16qi) _mm_setzero_si128(),
  1297. (__mmask8) -1);
  1298. }
  1299. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1300. _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
  1301. return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  1302. (__v16qi) __O,
  1303. __M);
  1304. }
  1305. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1306. _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
  1307. return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  1308. (__v16qi) _mm_setzero_si128(),
  1309. __M);
  1310. }
  1311. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1312. _mm256_cvtusepi16_epi8 (__m256i __A) {
  1313. return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  1314. (__v16qi) _mm_setzero_si128(),
  1315. (__mmask16) -1);
  1316. }
  1317. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1318. _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
  1319. return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  1320. (__v16qi) __O,
  1321. __M);
  1322. }
  1323. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1324. _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
  1325. return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  1326. (__v16qi) _mm_setzero_si128(),
  1327. __M);
  1328. }
  1329. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1330. _mm_cvtepi16_epi8 (__m128i __A) {
  1331. return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  1332. (__v16qi) _mm_setzero_si128(),
  1333. (__mmask8) -1);
  1334. }
  1335. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1336. _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
  1337. return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  1338. (__v16qi) __O,
  1339. __M);
  1340. }
  1341. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1342. _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
  1343. return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  1344. (__v16qi) _mm_setzero_si128(),
  1345. __M);
  1346. }
  1347. static __inline__ void __DEFAULT_FN_ATTRS
  1348. _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  1349. {
  1350. __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
  1351. }
  1352. static __inline__ void __DEFAULT_FN_ATTRS
  1353. _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  1354. {
  1355. __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
  1356. }
  1357. static __inline__ void __DEFAULT_FN_ATTRS
  1358. _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  1359. {
  1360. __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
  1361. }
  1362. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1363. _mm256_cvtepi16_epi8 (__m256i __A) {
  1364. return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
  1365. (__v16qi) _mm_setzero_si128(),
  1366. (__mmask16) -1);
  1367. }
  1368. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1369. _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
  1370. return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
  1371. (__v16qi) __O,
  1372. __M);
  1373. }
  1374. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1375. _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
  1376. return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
  1377. (__v16qi) _mm_setzero_si128(),
  1378. __M);
  1379. }
  1380. static __inline__ void __DEFAULT_FN_ATTRS
  1381. _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
  1382. {
  1383. __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
  1384. }
  1385. static __inline__ void __DEFAULT_FN_ATTRS
  1386. _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
  1387. {
  1388. __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
  1389. }
  1390. static __inline__ void __DEFAULT_FN_ATTRS
  1391. _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
  1392. {
  1393. __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M);
  1394. }
  1395. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1396. _mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
  1397. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1398. (__v8hi)_mm_mulhrs_epi16(__X, __Y),
  1399. (__v8hi)__W);
  1400. }
  1401. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1402. _mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
  1403. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1404. (__v8hi)_mm_mulhrs_epi16(__X, __Y),
  1405. (__v8hi)_mm_setzero_si128());
  1406. }
  1407. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1408. _mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
  1409. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1410. (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
  1411. (__v16hi)__W);
  1412. }
  1413. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1414. _mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
  1415. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1416. (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
  1417. (__v16hi)_mm256_setzero_si256());
  1418. }
  1419. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1420. _mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1421. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1422. (__v8hi)_mm_mulhi_epu16(__A, __B),
  1423. (__v8hi)__W);
  1424. }
  1425. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1426. _mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
  1427. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1428. (__v8hi)_mm_mulhi_epu16(__A, __B),
  1429. (__v8hi)_mm_setzero_si128());
  1430. }
  1431. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1432. _mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1433. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1434. (__v16hi)_mm256_mulhi_epu16(__A, __B),
  1435. (__v16hi)__W);
  1436. }
  1437. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1438. _mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
  1439. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1440. (__v16hi)_mm256_mulhi_epu16(__A, __B),
  1441. (__v16hi)_mm256_setzero_si256());
  1442. }
  1443. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1444. _mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1445. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1446. (__v8hi)_mm_mulhi_epi16(__A, __B),
  1447. (__v8hi)__W);
  1448. }
  1449. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1450. _mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1451. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1452. (__v8hi)_mm_mulhi_epi16(__A, __B),
  1453. (__v8hi)_mm_setzero_si128());
  1454. }
  1455. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1456. _mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1457. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1458. (__v16hi)_mm256_mulhi_epi16(__A, __B),
  1459. (__v16hi)__W);
  1460. }
  1461. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1462. _mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  1463. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1464. (__v16hi)_mm256_mulhi_epi16(__A, __B),
  1465. (__v16hi)_mm256_setzero_si256());
  1466. }
  1467. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1468. _mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  1469. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1470. (__v16qi)_mm_unpackhi_epi8(__A, __B),
  1471. (__v16qi)__W);
  1472. }
  1473. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1474. _mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  1475. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1476. (__v16qi)_mm_unpackhi_epi8(__A, __B),
  1477. (__v16qi)_mm_setzero_si128());
  1478. }
  1479. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1480. _mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
  1481. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1482. (__v32qi)_mm256_unpackhi_epi8(__A, __B),
  1483. (__v32qi)__W);
  1484. }
  1485. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1486. _mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  1487. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1488. (__v32qi)_mm256_unpackhi_epi8(__A, __B),
  1489. (__v32qi)_mm256_setzero_si256());
  1490. }
  1491. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1492. _mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1493. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1494. (__v8hi)_mm_unpackhi_epi16(__A, __B),
  1495. (__v8hi)__W);
  1496. }
  1497. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1498. _mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1499. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1500. (__v8hi)_mm_unpackhi_epi16(__A, __B),
  1501. (__v8hi) _mm_setzero_si128());
  1502. }
  1503. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1504. _mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1505. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1506. (__v16hi)_mm256_unpackhi_epi16(__A, __B),
  1507. (__v16hi)__W);
  1508. }
  1509. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1510. _mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  1511. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1512. (__v16hi)_mm256_unpackhi_epi16(__A, __B),
  1513. (__v16hi)_mm256_setzero_si256());
  1514. }
  1515. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1516. _mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  1517. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1518. (__v16qi)_mm_unpacklo_epi8(__A, __B),
  1519. (__v16qi)__W);
  1520. }
  1521. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1522. _mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  1523. return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1524. (__v16qi)_mm_unpacklo_epi8(__A, __B),
  1525. (__v16qi)_mm_setzero_si128());
  1526. }
  1527. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1528. _mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
  1529. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1530. (__v32qi)_mm256_unpacklo_epi8(__A, __B),
  1531. (__v32qi)__W);
  1532. }
  1533. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1534. _mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  1535. return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1536. (__v32qi)_mm256_unpacklo_epi8(__A, __B),
  1537. (__v32qi)_mm256_setzero_si256());
  1538. }
  1539. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1540. _mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1541. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1542. (__v8hi)_mm_unpacklo_epi16(__A, __B),
  1543. (__v8hi)__W);
  1544. }
  1545. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1546. _mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1547. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1548. (__v8hi)_mm_unpacklo_epi16(__A, __B),
  1549. (__v8hi) _mm_setzero_si128());
  1550. }
  1551. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1552. _mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1553. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1554. (__v16hi)_mm256_unpacklo_epi16(__A, __B),
  1555. (__v16hi)__W);
  1556. }
  1557. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1558. _mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  1559. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1560. (__v16hi)_mm256_unpacklo_epi16(__A, __B),
  1561. (__v16hi)_mm256_setzero_si256());
  1562. }
  1563. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1564. _mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
  1565. {
  1566. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1567. (__v8hi)_mm_cvtepi8_epi16(__A),
  1568. (__v8hi)__W);
  1569. }
  1570. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1571. _mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A)
  1572. {
  1573. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1574. (__v8hi)_mm_cvtepi8_epi16(__A),
  1575. (__v8hi)_mm_setzero_si128());
  1576. }
  1577. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1578. _mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
  1579. {
  1580. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1581. (__v16hi)_mm256_cvtepi8_epi16(__A),
  1582. (__v16hi)__W);
  1583. }
  1584. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1585. _mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A)
  1586. {
  1587. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1588. (__v16hi)_mm256_cvtepi8_epi16(__A),
  1589. (__v16hi)_mm256_setzero_si256());
  1590. }
  1591. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1592. _mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
  1593. {
  1594. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1595. (__v8hi)_mm_cvtepu8_epi16(__A),
  1596. (__v8hi)__W);
  1597. }
  1598. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1599. _mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A)
  1600. {
  1601. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1602. (__v8hi)_mm_cvtepu8_epi16(__A),
  1603. (__v8hi)_mm_setzero_si128());
  1604. }
  1605. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1606. _mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
  1607. {
  1608. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1609. (__v16hi)_mm256_cvtepu8_epi16(__A),
  1610. (__v16hi)__W);
  1611. }
  1612. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1613. _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
  1614. {
  1615. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1616. (__v16hi)_mm256_cvtepu8_epi16(__A),
  1617. (__v16hi)_mm256_setzero_si256());
  1618. }
  1619. #define _mm_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
  1620. (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1621. (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
  1622. (__v8hi)(__m128i)(W)); })
  1623. #define _mm_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
  1624. (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1625. (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
  1626. (__v8hi)_mm_setzero_hi()); })
  1627. #define _mm256_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
  1628. (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1629. (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
  1630. (__v16hi)(__m256i)(W)); })
  1631. #define _mm256_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
  1632. (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1633. (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
  1634. (__v16hi)_mm256_setzero_si256()); })
  1635. #define _mm_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
  1636. (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1637. (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
  1638. (__v8hi)(__m128i)(W)); })
  1639. #define _mm_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
  1640. (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1641. (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
  1642. (__v8hi)_mm_setzero_hi()); })
  1643. #define _mm256_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
  1644. (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1645. (__v16hi)_mm256_shufflelo_epi16((A), \
  1646. (imm)), \
  1647. (__v16hi)(__m256i)(W)); })
  1648. #define _mm256_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
  1649. (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1650. (__v16hi)_mm256_shufflelo_epi16((A), \
  1651. (imm)), \
  1652. (__v16hi)_mm256_setzero_si256()); })
  1653. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1654. _mm256_sllv_epi16(__m256i __A, __m256i __B)
  1655. {
  1656. return (__m256i)__builtin_ia32_psllv16hi((__v16hi)__A, (__v16hi)__B);
  1657. }
  1658. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1659. _mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1660. {
  1661. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1662. (__v16hi)_mm256_sllv_epi16(__A, __B),
  1663. (__v16hi)__W);
  1664. }
  1665. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1666. _mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1667. {
  1668. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1669. (__v16hi)_mm256_sllv_epi16(__A, __B),
  1670. (__v16hi)_mm256_setzero_si256());
  1671. }
  1672. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1673. _mm_sllv_epi16(__m128i __A, __m128i __B)
  1674. {
  1675. return (__m128i)__builtin_ia32_psllv8hi((__v8hi)__A, (__v8hi)__B);
  1676. }
  1677. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1678. _mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1679. {
  1680. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1681. (__v8hi)_mm_sllv_epi16(__A, __B),
  1682. (__v8hi)__W);
  1683. }
  1684. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1685. _mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1686. {
  1687. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1688. (__v8hi)_mm_sllv_epi16(__A, __B),
  1689. (__v8hi)_mm_setzero_si128());
  1690. }
  1691. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1692. _mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1693. {
  1694. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1695. (__v8hi)_mm_sll_epi16(__A, __B),
  1696. (__v8hi)__W);
  1697. }
  1698. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1699. _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  1700. {
  1701. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1702. (__v8hi)_mm_sll_epi16(__A, __B),
  1703. (__v8hi)_mm_setzero_si128());
  1704. }
  1705. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1706. _mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
  1707. {
  1708. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1709. (__v16hi)_mm256_sll_epi16(__A, __B),
  1710. (__v16hi)__W);
  1711. }
  1712. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1713. _mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B)
  1714. {
  1715. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1716. (__v16hi)_mm256_sll_epi16(__A, __B),
  1717. (__v16hi)_mm256_setzero_si256());
  1718. }
  1719. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1720. _mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
  1721. {
  1722. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1723. (__v8hi)_mm_slli_epi16(__A, __B),
  1724. (__v8hi)__W);
  1725. }
  1726. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1727. _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
  1728. {
  1729. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1730. (__v8hi)_mm_slli_epi16(__A, __B),
  1731. (__v8hi)_mm_setzero_si128());
  1732. }
  1733. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1734. _mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
  1735. {
  1736. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1737. (__v16hi)_mm256_slli_epi16(__A, __B),
  1738. (__v16hi)__W);
  1739. }
  1740. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1741. _mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A, int __B)
  1742. {
  1743. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1744. (__v16hi)_mm256_slli_epi16(__A, __B),
  1745. (__v16hi)_mm256_setzero_si256());
  1746. }
  1747. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1748. _mm256_srlv_epi16(__m256i __A, __m256i __B)
  1749. {
  1750. return (__m256i)__builtin_ia32_psrlv16hi((__v16hi)__A, (__v16hi)__B);
  1751. }
  1752. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1753. _mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1754. {
  1755. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1756. (__v16hi)_mm256_srlv_epi16(__A, __B),
  1757. (__v16hi)__W);
  1758. }
  1759. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1760. _mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1761. {
  1762. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1763. (__v16hi)_mm256_srlv_epi16(__A, __B),
  1764. (__v16hi)_mm256_setzero_si256());
  1765. }
  1766. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1767. _mm_srlv_epi16(__m128i __A, __m128i __B)
  1768. {
  1769. return (__m128i)__builtin_ia32_psrlv8hi((__v8hi)__A, (__v8hi)__B);
  1770. }
  1771. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1772. _mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1773. {
  1774. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1775. (__v8hi)_mm_srlv_epi16(__A, __B),
  1776. (__v8hi)__W);
  1777. }
  1778. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1779. _mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1780. {
  1781. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1782. (__v8hi)_mm_srlv_epi16(__A, __B),
  1783. (__v8hi)_mm_setzero_si128());
  1784. }
  1785. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1786. _mm256_srav_epi16(__m256i __A, __m256i __B)
  1787. {
  1788. return (__m256i)__builtin_ia32_psrav16hi((__v16hi)__A, (__v16hi)__B);
  1789. }
  1790. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1791. _mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1792. {
  1793. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1794. (__v16hi)_mm256_srav_epi16(__A, __B),
  1795. (__v16hi)__W);
  1796. }
  1797. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1798. _mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1799. {
  1800. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1801. (__v16hi)_mm256_srav_epi16(__A, __B),
  1802. (__v16hi)_mm256_setzero_si256());
  1803. }
  1804. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1805. _mm_srav_epi16(__m128i __A, __m128i __B)
  1806. {
  1807. return (__m128i)__builtin_ia32_psrav8hi((__v8hi)__A, (__v8hi)__B);
  1808. }
  1809. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1810. _mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1811. {
  1812. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1813. (__v8hi)_mm_srav_epi16(__A, __B),
  1814. (__v8hi)__W);
  1815. }
  1816. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1817. _mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1818. {
  1819. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1820. (__v8hi)_mm_srav_epi16(__A, __B),
  1821. (__v8hi)_mm_setzero_si128());
  1822. }
  1823. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1824. _mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1825. {
  1826. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1827. (__v8hi)_mm_sra_epi16(__A, __B),
  1828. (__v8hi)__W);
  1829. }
  1830. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1831. _mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1832. {
  1833. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1834. (__v8hi)_mm_sra_epi16(__A, __B),
  1835. (__v8hi)_mm_setzero_si128());
  1836. }
  1837. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1838. _mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
  1839. {
  1840. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1841. (__v16hi)_mm256_sra_epi16(__A, __B),
  1842. (__v16hi)__W);
  1843. }
  1844. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1845. _mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B)
  1846. {
  1847. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1848. (__v16hi)_mm256_sra_epi16(__A, __B),
  1849. (__v16hi)_mm256_setzero_si256());
  1850. }
  1851. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1852. _mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
  1853. {
  1854. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1855. (__v8hi)_mm_srai_epi16(__A, __B),
  1856. (__v8hi)__W);
  1857. }
  1858. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1859. _mm_maskz_srai_epi16(__mmask8 __U, __m128i __A, int __B)
  1860. {
  1861. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1862. (__v8hi)_mm_srai_epi16(__A, __B),
  1863. (__v8hi)_mm_setzero_si128());
  1864. }
  1865. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1866. _mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
  1867. {
  1868. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1869. (__v16hi)_mm256_srai_epi16(__A, __B),
  1870. (__v16hi)__W);
  1871. }
  1872. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1873. _mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A, int __B)
  1874. {
  1875. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1876. (__v16hi)_mm256_srai_epi16(__A, __B),
  1877. (__v16hi)_mm256_setzero_si256());
  1878. }
  1879. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1880. _mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1881. {
  1882. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1883. (__v8hi)_mm_srl_epi16(__A, __B),
  1884. (__v8hi)__W);
  1885. }
  1886. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1887. _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  1888. {
  1889. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1890. (__v8hi)_mm_srl_epi16(__A, __B),
  1891. (__v8hi)_mm_setzero_si128());
  1892. }
  1893. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1894. _mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
  1895. {
  1896. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1897. (__v16hi)_mm256_srl_epi16(__A, __B),
  1898. (__v16hi)__W);
  1899. }
  1900. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1901. _mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B)
  1902. {
  1903. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1904. (__v16hi)_mm256_srl_epi16(__A, __B),
  1905. (__v16hi)_mm256_setzero_si256());
  1906. }
  1907. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1908. _mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
  1909. {
  1910. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1911. (__v8hi)_mm_srli_epi16(__A, __B),
  1912. (__v8hi)__W);
  1913. }
  1914. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1915. _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, int __B)
  1916. {
  1917. return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1918. (__v8hi)_mm_srli_epi16(__A, __B),
  1919. (__v8hi)_mm_setzero_si128());
  1920. }
  1921. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1922. _mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
  1923. {
  1924. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1925. (__v16hi)_mm256_srli_epi16(__A, __B),
  1926. (__v16hi)__W);
  1927. }
  1928. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1929. _mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A, int __B)
  1930. {
  1931. return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1932. (__v16hi)_mm256_srli_epi16(__A, __B),
  1933. (__v16hi)_mm256_setzero_si256());
  1934. }
  1935. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1936. _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  1937. {
  1938. return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
  1939. (__v8hi) __A,
  1940. (__v8hi) __W);
  1941. }
  1942. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1943. _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
  1944. {
  1945. return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
  1946. (__v8hi) __A,
  1947. (__v8hi) _mm_setzero_hi ());
  1948. }
  1949. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1950. _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
  1951. {
  1952. return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
  1953. (__v16hi) __A,
  1954. (__v16hi) __W);
  1955. }
  1956. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1957. _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
  1958. {
  1959. return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
  1960. (__v16hi) __A,
  1961. (__v16hi) _mm256_setzero_si256 ());
  1962. }
  1963. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1964. _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
  1965. {
  1966. return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
  1967. (__v16qi) __A,
  1968. (__v16qi) __W);
  1969. }
  1970. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1971. _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
  1972. {
  1973. return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
  1974. (__v16qi) __A,
  1975. (__v16qi) _mm_setzero_hi ());
  1976. }
  1977. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1978. _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
  1979. {
  1980. return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
  1981. (__v32qi) __A,
  1982. (__v32qi) __W);
  1983. }
  1984. static __inline__ __m256i __DEFAULT_FN_ATTRS
  1985. _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
  1986. {
  1987. return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
  1988. (__v32qi) __A,
  1989. (__v32qi) _mm256_setzero_si256 ());
  1990. }
  1991. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1992. _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
  1993. {
  1994. return (__m128i) __builtin_ia32_selectb_128(__M,
  1995. (__v16qi) _mm_set1_epi8(__A),
  1996. (__v16qi) __O);
  1997. }
  1998. static __inline__ __m128i __DEFAULT_FN_ATTRS
  1999. _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
  2000. {
  2001. return (__m128i) __builtin_ia32_selectb_128(__M,
  2002. (__v16qi) _mm_set1_epi8(__A),
  2003. (__v16qi) _mm_setzero_si128());
  2004. }
  2005. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2006. _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
  2007. {
  2008. return (__m256i) __builtin_ia32_selectb_256(__M,
  2009. (__v32qi) _mm256_set1_epi8(__A),
  2010. (__v32qi) __O);
  2011. }
  2012. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2013. _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
  2014. {
  2015. return (__m256i) __builtin_ia32_selectb_256(__M,
  2016. (__v32qi) _mm256_set1_epi8(__A),
  2017. (__v32qi) _mm256_setzero_si256());
  2018. }
  2019. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2020. _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
  2021. {
  2022. return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
  2023. (__v8hi) __W,
  2024. (__mmask8) __U);
  2025. }
  2026. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2027. _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
  2028. {
  2029. return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
  2030. (__v8hi)
  2031. _mm_setzero_hi (),
  2032. (__mmask8) __U);
  2033. }
  2034. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2035. _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
  2036. {
  2037. return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
  2038. (__v16hi) __W,
  2039. (__mmask16) __U);
  2040. }
  2041. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2042. _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
  2043. {
  2044. return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
  2045. (__v16hi)
  2046. _mm256_setzero_si256 (),
  2047. (__mmask16) __U);
  2048. }
  2049. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2050. _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
  2051. {
  2052. return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
  2053. (__v16qi) __W,
  2054. (__mmask16) __U);
  2055. }
  2056. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2057. _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
  2058. {
  2059. return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
  2060. (__v16qi)
  2061. _mm_setzero_si128 (),
  2062. (__mmask16) __U);
  2063. }
  2064. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2065. _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
  2066. {
  2067. return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
  2068. (__v32qi) __W,
  2069. (__mmask32) __U);
  2070. }
  2071. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2072. _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
  2073. {
  2074. return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
  2075. (__v32qi)
  2076. _mm256_setzero_si256 (),
  2077. (__mmask32) __U);
  2078. }
  2079. static __inline__ void __DEFAULT_FN_ATTRS
  2080. _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
  2081. {
  2082. __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
  2083. (__v8hi) __A,
  2084. (__mmask8) __U);
  2085. }
  2086. static __inline__ void __DEFAULT_FN_ATTRS
  2087. _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
  2088. {
  2089. __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
  2090. (__v16hi) __A,
  2091. (__mmask16) __U);
  2092. }
  2093. static __inline__ void __DEFAULT_FN_ATTRS
  2094. _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
  2095. {
  2096. __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
  2097. (__v16qi) __A,
  2098. (__mmask16) __U);
  2099. }
  2100. static __inline__ void __DEFAULT_FN_ATTRS
  2101. _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
  2102. {
  2103. __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
  2104. (__v32qi) __A,
  2105. (__mmask32) __U);
  2106. }
  2107. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2108. _mm_test_epi8_mask (__m128i __A, __m128i __B)
  2109. {
  2110. return _mm_cmpneq_epi8_mask (_mm_and_si128(__A, __B), _mm_setzero_hi());
  2111. }
  2112. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2113. _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2114. {
  2115. return _mm_mask_cmpneq_epi8_mask (__U, _mm_and_si128 (__A, __B),
  2116. _mm_setzero_hi());
  2117. }
  2118. static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  2119. _mm256_test_epi8_mask (__m256i __A, __m256i __B)
  2120. {
  2121. return _mm256_cmpneq_epi8_mask (_mm256_and_si256(__A, __B),
  2122. _mm256_setzero_si256());
  2123. }
  2124. static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  2125. _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2126. {
  2127. return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B),
  2128. _mm256_setzero_si256());
  2129. }
  2130. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2131. _mm_test_epi16_mask (__m128i __A, __m128i __B)
  2132. {
  2133. return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi());
  2134. }
  2135. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2136. _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2137. {
  2138. return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B),
  2139. _mm_setzero_hi());
  2140. }
  2141. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2142. _mm256_test_epi16_mask (__m256i __A, __m256i __B)
  2143. {
  2144. return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B),
  2145. _mm256_setzero_si256 ());
  2146. }
  2147. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2148. _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  2149. {
  2150. return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B),
  2151. _mm256_setzero_si256());
  2152. }
  2153. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2154. _mm_testn_epi8_mask (__m128i __A, __m128i __B)
  2155. {
  2156. return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi());
  2157. }
  2158. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2159. _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2160. {
  2161. return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B),
  2162. _mm_setzero_hi());
  2163. }
  2164. static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  2165. _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
  2166. {
  2167. return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B),
  2168. _mm256_setzero_si256());
  2169. }
  2170. static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  2171. _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2172. {
  2173. return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B),
  2174. _mm256_setzero_si256());
  2175. }
  2176. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2177. _mm_testn_epi16_mask (__m128i __A, __m128i __B)
  2178. {
  2179. return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi());
  2180. }
  2181. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2182. _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2183. {
  2184. return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_hi());
  2185. }
  2186. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2187. _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
  2188. {
  2189. return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B),
  2190. _mm256_setzero_si256());
  2191. }
  2192. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2193. _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  2194. {
  2195. return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B),
  2196. _mm256_setzero_si256());
  2197. }
  2198. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2199. _mm_movepi8_mask (__m128i __A)
  2200. {
  2201. return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
  2202. }
  2203. static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  2204. _mm256_movepi8_mask (__m256i __A)
  2205. {
  2206. return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
  2207. }
  2208. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2209. _mm_movepi16_mask (__m128i __A)
  2210. {
  2211. return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
  2212. }
  2213. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2214. _mm256_movepi16_mask (__m256i __A)
  2215. {
  2216. return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
  2217. }
  2218. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2219. _mm_movm_epi8 (__mmask16 __A)
  2220. {
  2221. return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
  2222. }
  2223. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2224. _mm256_movm_epi8 (__mmask32 __A)
  2225. {
  2226. return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
  2227. }
  2228. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2229. _mm_movm_epi16 (__mmask8 __A)
  2230. {
  2231. return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
  2232. }
  2233. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2234. _mm256_movm_epi16 (__mmask16 __A)
  2235. {
  2236. return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
  2237. }
  2238. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2239. _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
  2240. {
  2241. return (__m128i)__builtin_ia32_selectb_128(__M,
  2242. (__v16qi) _mm_broadcastb_epi8(__A),
  2243. (__v16qi) __O);
  2244. }
  2245. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2246. _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
  2247. {
  2248. return (__m128i)__builtin_ia32_selectb_128(__M,
  2249. (__v16qi) _mm_broadcastb_epi8(__A),
  2250. (__v16qi) _mm_setzero_si128());
  2251. }
  2252. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2253. _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
  2254. {
  2255. return (__m256i)__builtin_ia32_selectb_256(__M,
  2256. (__v32qi) _mm256_broadcastb_epi8(__A),
  2257. (__v32qi) __O);
  2258. }
  2259. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2260. _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
  2261. {
  2262. return (__m256i)__builtin_ia32_selectb_256(__M,
  2263. (__v32qi) _mm256_broadcastb_epi8(__A),
  2264. (__v32qi) _mm256_setzero_si256());
  2265. }
  2266. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2267. _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
  2268. {
  2269. return (__m128i)__builtin_ia32_selectw_128(__M,
  2270. (__v8hi) _mm_broadcastw_epi16(__A),
  2271. (__v8hi) __O);
  2272. }
  2273. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2274. _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
  2275. {
  2276. return (__m128i)__builtin_ia32_selectw_128(__M,
  2277. (__v8hi) _mm_broadcastw_epi16(__A),
  2278. (__v8hi) _mm_setzero_si128());
  2279. }
  2280. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2281. _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
  2282. {
  2283. return (__m256i)__builtin_ia32_selectw_256(__M,
  2284. (__v16hi) _mm256_broadcastw_epi16(__A),
  2285. (__v16hi) __O);
  2286. }
  2287. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2288. _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
  2289. {
  2290. return (__m256i)__builtin_ia32_selectw_256(__M,
  2291. (__v16hi) _mm256_broadcastw_epi16(__A),
  2292. (__v16hi) _mm256_setzero_si256());
  2293. }
  2294. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2295. _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
  2296. {
  2297. return (__m256i) __builtin_ia32_selectw_256 (__M,
  2298. (__v16hi) _mm256_set1_epi16(__A),
  2299. (__v16hi) __O);
  2300. }
  2301. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2302. _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
  2303. {
  2304. return (__m256i) __builtin_ia32_selectw_256(__M,
  2305. (__v16hi)_mm256_set1_epi16(__A),
  2306. (__v16hi) _mm256_setzero_si256());
  2307. }
  2308. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2309. _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
  2310. {
  2311. return (__m128i) __builtin_ia32_selectw_128(__M,
  2312. (__v8hi) _mm_set1_epi16(__A),
  2313. (__v8hi) __O);
  2314. }
  2315. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2316. _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
  2317. {
  2318. return (__m128i) __builtin_ia32_selectw_128(__M,
  2319. (__v8hi) _mm_set1_epi16(__A),
  2320. (__v8hi) _mm_setzero_si128());
  2321. }
  2322. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2323. _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
  2324. {
  2325. return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
  2326. (__v8hi) __A,
  2327. (__v8hi) _mm_undefined_si128 (),
  2328. (__mmask8) -1);
  2329. }
  2330. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2331. _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
  2332. {
  2333. return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
  2334. (__v8hi) __A,
  2335. (__v8hi) _mm_setzero_si128 (),
  2336. (__mmask8) __M);
  2337. }
  2338. static __inline__ __m128i __DEFAULT_FN_ATTRS
  2339. _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
  2340. __m128i __B)
  2341. {
  2342. return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
  2343. (__v8hi) __A,
  2344. (__v8hi) __W,
  2345. (__mmask8) __M);
  2346. }
  2347. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2348. _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
  2349. {
  2350. return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
  2351. (__v16hi) __A,
  2352. (__v16hi) _mm256_undefined_si256 (),
  2353. (__mmask16) -1);
  2354. }
  2355. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2356. _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
  2357. __m256i __B)
  2358. {
  2359. return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
  2360. (__v16hi) __A,
  2361. (__v16hi) _mm256_setzero_si256 (),
  2362. (__mmask16) __M);
  2363. }
  2364. static __inline__ __m256i __DEFAULT_FN_ATTRS
  2365. _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
  2366. __m256i __B)
  2367. {
  2368. return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
  2369. (__v16hi) __A,
  2370. (__v16hi) __W,
  2371. (__mmask16) __M);
  2372. }
  2373. #define _mm_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
  2374. (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
  2375. (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
  2376. (__v16qi)(__m128i)(W)); })
  2377. #define _mm_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
  2378. (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
  2379. (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
  2380. (__v16qi)_mm_setzero_si128()); })
  2381. #define _mm256_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
  2382. (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
  2383. (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
  2384. (__v32qi)(__m256i)(W)); })
  2385. #define _mm256_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
  2386. (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
  2387. (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
  2388. (__v32qi)_mm256_setzero_si256()); })
  2389. #define _mm_dbsad_epu8(A, B, imm) __extension__ ({ \
  2390. (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
  2391. (__v16qi)(__m128i)(B), (int)(imm), \
  2392. (__v8hi)_mm_setzero_hi(), \
  2393. (__mmask8)-1); })
  2394. #define _mm_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
  2395. (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
  2396. (__v16qi)(__m128i)(B), (int)(imm), \
  2397. (__v8hi)(__m128i)(W), \
  2398. (__mmask8)(U)); })
  2399. #define _mm_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
  2400. (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
  2401. (__v16qi)(__m128i)(B), (int)(imm), \
  2402. (__v8hi)_mm_setzero_si128(), \
  2403. (__mmask8)(U)); })
  2404. #define _mm256_dbsad_epu8(A, B, imm) __extension__ ({ \
  2405. (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
  2406. (__v32qi)(__m256i)(B), (int)(imm), \
  2407. (__v16hi)_mm256_setzero_si256(), \
  2408. (__mmask16)-1); })
  2409. #define _mm256_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
  2410. (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
  2411. (__v32qi)(__m256i)(B), (int)(imm), \
  2412. (__v16hi)(__m256i)(W), \
  2413. (__mmask16)(U)); })
  2414. #define _mm256_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
  2415. (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
  2416. (__v32qi)(__m256i)(B), (int)(imm), \
  2417. (__v16hi)_mm256_setzero_si256(), \
  2418. (__mmask16)(U)); })
  2419. #undef __DEFAULT_FN_ATTRS
  2420. #endif /* __AVX512VLBWINTRIN_H */