avx512vlbwintrin.h 142 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758
  1. /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  2. This file is part of GCC.
  3. GCC is free software; you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation; either version 3, or (at your option)
  6. any later version.
  7. GCC is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. Under Section 7 of GPL version 3, you are granted additional
  12. permissions described in the GCC Runtime Library Exception, version
  13. 3.1, as published by the Free Software Foundation.
  14. You should have received a copy of the GNU General Public License and
  15. a copy of the GCC Runtime Library Exception along with this program;
  16. see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  17. <http://www.gnu.org/licenses/>. */
  18. #ifndef _IMMINTRIN_H_INCLUDED
  19. #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
  20. #endif
  21. #ifndef _AVX512VLBWINTRIN_H_INCLUDED
  22. #define _AVX512VLBWINTRIN_H_INCLUDED
  23. #if !defined(__AVX512VL__) || !defined(__AVX512BW__)
  24. #pragma GCC push_options
  25. #pragma GCC target("avx512vl,avx512bw")
  26. #define __DISABLE_AVX512VLBW__
  27. #endif /* __AVX512VLBW__ */
  28. /* Internal data types for implementing the intrinsics. */
  29. typedef short __v16hi_u __attribute__ ((__vector_size__ (32), \
  30. __may_alias__, __aligned__ (1)));
  31. typedef short __v8hi_u __attribute__ ((__vector_size__ (16), \
  32. __may_alias__, __aligned__ (1)));
  33. typedef char __v32qi_u __attribute__ ((__vector_size__ (32), \
  34. __may_alias__, __aligned__ (1)));
  35. typedef char __v16qi_u __attribute__ ((__vector_size__ (16), \
  36. __may_alias__, __aligned__ (1)));
  37. extern __inline __m256i
  38. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  39. _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
  40. {
  41. return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
  42. (__v32qi) __W,
  43. (__mmask32) __U);
  44. }
  45. extern __inline __m256i
  46. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  47. _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
  48. {
  49. return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
  50. (__v32qi)
  51. _mm256_setzero_si256 (),
  52. (__mmask32) __U);
  53. }
  54. extern __inline __m128i
  55. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  56. _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
  57. {
  58. return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
  59. (__v16qi) __W,
  60. (__mmask16) __U);
  61. }
  62. extern __inline __m128i
  63. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  64. _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
  65. {
  66. return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
  67. (__v16qi)
  68. _mm_setzero_si128 (),
  69. (__mmask16) __U);
  70. }
  71. extern __inline void
  72. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  73. _mm256_storeu_epi8 (void *__P, __m256i __A)
  74. {
  75. *(__v32qi_u *) __P = (__v32qi_u) __A;
  76. }
  77. extern __inline void
  78. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  79. _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
  80. {
  81. __builtin_ia32_storedquqi256_mask ((char *) __P,
  82. (__v32qi) __A,
  83. (__mmask32) __U);
  84. }
  85. extern __inline void
  86. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  87. _mm_storeu_epi8 (void *__P, __m128i __A)
  88. {
  89. *(__v16qi_u *) __P = (__v16qi_u) __A;
  90. }
  91. extern __inline void
  92. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  93. _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
  94. {
  95. __builtin_ia32_storedquqi128_mask ((char *) __P,
  96. (__v16qi) __A,
  97. (__mmask16) __U);
  98. }
  99. extern __inline __m256i
  100. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  101. _mm256_loadu_epi16 (void const *__P)
  102. {
  103. return (__m256i) (*(__v16hi_u *) __P);
  104. }
  105. extern __inline __m256i
  106. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  107. _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
  108. {
  109. return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
  110. (__v16hi) __W,
  111. (__mmask16) __U);
  112. }
  113. extern __inline __m256i
  114. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  115. _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
  116. {
  117. return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
  118. (__v16hi)
  119. _mm256_setzero_si256 (),
  120. (__mmask16) __U);
  121. }
  122. extern __inline __m128i
  123. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  124. _mm_loadu_epi16 (void const *__P)
  125. {
  126. return (__m128i) (*(__v8hi_u *) __P);
  127. }
  128. extern __inline __m128i
  129. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  130. _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
  131. {
  132. return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
  133. (__v8hi) __W,
  134. (__mmask8) __U);
  135. }
  136. extern __inline __m128i
  137. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  138. _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
  139. {
  140. return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
  141. (__v8hi)
  142. _mm_setzero_si128 (),
  143. (__mmask8) __U);
  144. }
  145. extern __inline __m256i
  146. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  147. _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
  148. {
  149. return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
  150. (__v16hi) __W,
  151. (__mmask16) __U);
  152. }
  153. extern __inline __m256i
  154. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  155. _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
  156. {
  157. return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
  158. (__v16hi)
  159. _mm256_setzero_si256 (),
  160. (__mmask16) __U);
  161. }
  162. extern __inline __m128i
  163. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  164. _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  165. {
  166. return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
  167. (__v8hi) __W,
  168. (__mmask8) __U);
  169. }
  170. extern __inline __m128i
  171. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  172. _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
  173. {
  174. return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
  175. (__v8hi)
  176. _mm_setzero_si128 (),
  177. (__mmask8) __U);
  178. }
  179. extern __inline __m256i
  180. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  181. _mm256_loadu_epi8 (void const *__P)
  182. {
  183. return (__m256i) (*(__v32qi_u *) __P);
  184. }
  185. extern __inline __m256i
  186. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  187. _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
  188. {
  189. return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
  190. (__v32qi) __W,
  191. (__mmask32) __U);
  192. }
  193. extern __inline __m256i
  194. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  195. _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
  196. {
  197. return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
  198. (__v32qi)
  199. _mm256_setzero_si256 (),
  200. (__mmask32) __U);
  201. }
  202. extern __inline __m128i
  203. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  204. _mm_loadu_epi8 (void const *__P)
  205. {
  206. return (__m128i) (*(__v16qi_u *) __P);
  207. }
  208. extern __inline __m128i
  209. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  210. _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
  211. {
  212. return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
  213. (__v16qi) __W,
  214. (__mmask16) __U);
  215. }
  216. extern __inline __m128i
  217. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  218. _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
  219. {
  220. return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
  221. (__v16qi)
  222. _mm_setzero_si128 (),
  223. (__mmask16) __U);
  224. }
  225. extern __inline __m128i
  226. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  227. _mm256_cvtepi16_epi8 (__m256i __A)
  228. {
  229. return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
  230. (__v16qi)_mm_undefined_si128(),
  231. (__mmask16) -1);
  232. }
  233. extern __inline void
  234. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  235. _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
  236. {
  237. __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
  238. }
  239. extern __inline __m128i
  240. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  241. _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
  242. {
  243. return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
  244. (__v16qi) __O, __M);
  245. }
  246. extern __inline __m128i
  247. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  248. _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A)
  249. {
  250. return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
  251. (__v16qi)
  252. _mm_setzero_si128 (),
  253. __M);
  254. }
  255. extern __inline __m128i
  256. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  257. _mm_cvtsepi16_epi8 (__m128i __A)
  258. {
  259. return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  260. (__v16qi)_mm_undefined_si128(),
  261. (__mmask8) -1);
  262. }
  263. extern __inline void
  264. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  265. _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  266. {
  267. __builtin_ia32_pmovswb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
  268. }
  269. extern __inline __m128i
  270. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  271. _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
  272. {
  273. return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  274. (__v16qi) __O, __M);
  275. }
  276. extern __inline __m128i
  277. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  278. _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A)
  279. {
  280. return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  281. (__v16qi)
  282. _mm_setzero_si128 (),
  283. __M);
  284. }
  285. extern __inline __m128i
  286. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  287. _mm256_cvtsepi16_epi8 (__m256i __A)
  288. {
  289. return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  290. (__v16qi)_mm_undefined_si128(),
  291. (__mmask16) -1);
  292. }
  293. extern __inline void
  294. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  295. _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
  296. {
  297. __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
  298. }
  299. extern __inline __m128i
  300. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  301. _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
  302. {
  303. return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  304. (__v16qi) __O, __M);
  305. }
  306. extern __inline __m128i
  307. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  308. _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A)
  309. {
  310. return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  311. (__v16qi)
  312. _mm_setzero_si128 (),
  313. __M);
  314. }
  315. extern __inline __m128i
  316. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  317. _mm_cvtusepi16_epi8 (__m128i __A)
  318. {
  319. return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  320. (__v16qi)_mm_undefined_si128(),
  321. (__mmask8) -1);
  322. }
  323. extern __inline void
  324. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  325. _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  326. {
  327. __builtin_ia32_pmovuswb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
  328. }
  329. extern __inline __m128i
  330. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  331. _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
  332. {
  333. return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  334. (__v16qi) __O,
  335. __M);
  336. }
  337. extern __inline __m128i
  338. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  339. _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A)
  340. {
  341. return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  342. (__v16qi)
  343. _mm_setzero_si128 (),
  344. __M);
  345. }
  346. extern __inline __m128i
  347. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  348. _mm256_cvtusepi16_epi8 (__m256i __A)
  349. {
  350. return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  351. (__v16qi)_mm_undefined_si128(),
  352. (__mmask16) -1);
  353. }
  354. extern __inline void
  355. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  356. _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
  357. {
  358. __builtin_ia32_pmovuswb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
  359. }
  360. extern __inline __m128i
  361. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  362. _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
  363. {
  364. return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  365. (__v16qi) __O,
  366. __M);
  367. }
  368. extern __inline __m128i
  369. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  370. _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A)
  371. {
  372. return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  373. (__v16qi)
  374. _mm_setzero_si128 (),
  375. __M);
  376. }
  377. extern __inline __m256i
  378. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  379. _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
  380. {
  381. return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
  382. (__v32qi) __O,
  383. __M);
  384. }
  385. extern __inline __m256i
  386. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  387. _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
  388. {
  389. return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
  390. (__v32qi)
  391. _mm256_setzero_si256 (),
  392. __M);
  393. }
  394. extern __inline __m256i
  395. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  396. _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
  397. {
  398. return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
  399. (__v32qi) __O,
  400. __M);
  401. }
  402. extern __inline __m256i
  403. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  404. _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
  405. {
  406. return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
  407. (__v32qi)
  408. _mm256_setzero_si256 (),
  409. __M);
  410. }
  411. extern __inline __m128i
  412. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  413. _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
  414. {
  415. return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
  416. (__v16qi) __O,
  417. __M);
  418. }
  419. extern __inline __m128i
  420. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  421. _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
  422. {
  423. return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
  424. (__v16qi)
  425. _mm_setzero_si128 (),
  426. __M);
  427. }
  428. extern __inline __m128i
  429. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  430. _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
  431. {
  432. return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
  433. (__v16qi) __O,
  434. __M);
  435. }
  436. extern __inline __m128i
  437. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  438. _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
  439. {
  440. return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
  441. (__v16qi)
  442. _mm_setzero_si128 (),
  443. __M);
  444. }
  445. extern __inline __m256i
  446. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  447. _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
  448. {
  449. return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
  450. (__v16hi) __O,
  451. __M);
  452. }
  453. extern __inline __m256i
  454. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  455. _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
  456. {
  457. return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
  458. (__v16hi)
  459. _mm256_setzero_si256 (),
  460. __M);
  461. }
  462. extern __inline __m256i
  463. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  464. _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
  465. {
  466. return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
  467. (__v16hi) __O,
  468. __M);
  469. }
  470. extern __inline __m256i
  471. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  472. _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
  473. {
  474. return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
  475. (__v16hi)
  476. _mm256_setzero_si256 (),
  477. __M);
  478. }
  479. extern __inline __m128i
  480. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  481. _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
  482. {
  483. return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
  484. (__v8hi) __O,
  485. __M);
  486. }
  487. extern __inline __m128i
  488. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  489. _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
  490. {
  491. return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
  492. (__v8hi)
  493. _mm_setzero_si128 (),
  494. __M);
  495. }
  496. extern __inline __m128i
  497. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  498. _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
  499. {
  500. return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
  501. (__v8hi) __O,
  502. __M);
  503. }
  504. extern __inline __m128i
  505. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  506. _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
  507. {
  508. return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
  509. (__v8hi)
  510. _mm_setzero_si128 (),
  511. __M);
  512. }
  513. extern __inline __m256i
  514. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  515. _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
  516. {
  517. return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
  518. (__v16hi) __A,
  519. (__v16hi)
  520. _mm256_setzero_si256 (),
  521. (__mmask16) -1);
  522. }
  523. extern __inline __m256i
  524. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  525. _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
  526. __m256i __B)
  527. {
  528. return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
  529. (__v16hi) __A,
  530. (__v16hi)
  531. _mm256_setzero_si256 (),
  532. (__mmask16) __M);
  533. }
  534. extern __inline __m256i
  535. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  536. _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
  537. __m256i __B)
  538. {
  539. return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
  540. (__v16hi) __A,
  541. (__v16hi) __W,
  542. (__mmask16) __M);
  543. }
  544. extern __inline __m128i
  545. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  546. _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
  547. {
  548. return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
  549. (__v8hi) __A,
  550. (__v8hi)
  551. _mm_setzero_si128 (),
  552. (__mmask8) -1);
  553. }
  554. extern __inline __m128i
  555. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  556. _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
  557. {
  558. return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
  559. (__v8hi) __A,
  560. (__v8hi)
  561. _mm_setzero_si128 (),
  562. (__mmask8) __M);
  563. }
  564. extern __inline __m128i
  565. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  566. _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
  567. __m128i __B)
  568. {
  569. return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
  570. (__v8hi) __A,
  571. (__v8hi) __W,
  572. (__mmask8) __M);
  573. }
  574. extern __inline __m256i
  575. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  576. _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
  577. {
  578. return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
  579. /* idx */ ,
  580. (__v16hi) __A,
  581. (__v16hi) __B,
  582. (__mmask16) -1);
  583. }
  584. extern __inline __m256i
  585. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  586. _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
  587. __m256i __I, __m256i __B)
  588. {
  589. return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
  590. /* idx */ ,
  591. (__v16hi) __A,
  592. (__v16hi) __B,
  593. (__mmask16)
  594. __U);
  595. }
  596. extern __inline __m256i
  597. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  598. _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
  599. __mmask16 __U, __m256i __B)
  600. {
  601. return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
  602. (__v16hi) __I
  603. /* idx */ ,
  604. (__v16hi) __B,
  605. (__mmask16)
  606. __U);
  607. }
  608. extern __inline __m256i
  609. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  610. _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
  611. __m256i __I, __m256i __B)
  612. {
  613. return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I
  614. /* idx */ ,
  615. (__v16hi) __A,
  616. (__v16hi) __B,
  617. (__mmask16)
  618. __U);
  619. }
  620. extern __inline __m128i
  621. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  622. _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
  623. {
  624. return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
  625. /* idx */ ,
  626. (__v8hi) __A,
  627. (__v8hi) __B,
  628. (__mmask8) -1);
  629. }
  630. extern __inline __m128i
  631. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  632. _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
  633. __m128i __B)
  634. {
  635. return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
  636. /* idx */ ,
  637. (__v8hi) __A,
  638. (__v8hi) __B,
  639. (__mmask8)
  640. __U);
  641. }
  642. extern __inline __m128i
  643. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  644. _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
  645. __m128i __B)
  646. {
  647. return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
  648. (__v8hi) __I
  649. /* idx */ ,
  650. (__v8hi) __B,
  651. (__mmask8)
  652. __U);
  653. }
  654. extern __inline __m128i
  655. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  656. _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
  657. __m128i __B)
  658. {
  659. return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I
  660. /* idx */ ,
  661. (__v8hi) __A,
  662. (__v8hi) __B,
  663. (__mmask8)
  664. __U);
  665. }
  666. extern __inline __m256i
  667. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  668. _mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
  669. __m256i __Y)
  670. {
  671. return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
  672. (__v32qi) __Y,
  673. (__v16hi) __W,
  674. (__mmask16) __U);
  675. }
  676. extern __inline __m256i
  677. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  678. _mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
  679. {
  680. return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
  681. (__v32qi) __Y,
  682. (__v16hi)
  683. _mm256_setzero_si256 (),
  684. (__mmask16) __U);
  685. }
  686. extern __inline __m128i
  687. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  688. _mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
  689. __m128i __Y)
  690. {
  691. return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
  692. (__v16qi) __Y,
  693. (__v8hi) __W,
  694. (__mmask8) __U);
  695. }
  696. extern __inline __m128i
  697. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  698. _mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
  699. {
  700. return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
  701. (__v16qi) __Y,
  702. (__v8hi)
  703. _mm_setzero_si128 (),
  704. (__mmask8) __U);
  705. }
  706. extern __inline __m256i
  707. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  708. _mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A,
  709. __m256i __B)
  710. {
  711. return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
  712. (__v16hi) __B,
  713. (__v8si) __W,
  714. (__mmask8) __U);
  715. }
  716. extern __inline __m256i
  717. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  718. _mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B)
  719. {
  720. return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
  721. (__v16hi) __B,
  722. (__v8si)
  723. _mm256_setzero_si256 (),
  724. (__mmask8) __U);
  725. }
  726. extern __inline __m128i
  727. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  728. _mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  729. __m128i __B)
  730. {
  731. return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
  732. (__v8hi) __B,
  733. (__v4si) __W,
  734. (__mmask8) __U);
  735. }
  736. extern __inline __m128i
  737. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  738. _mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  739. {
  740. return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
  741. (__v8hi) __B,
  742. (__v4si)
  743. _mm_setzero_si128 (),
  744. (__mmask8) __U);
  745. }
  746. extern __inline __mmask16
  747. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  748. _mm_movepi8_mask (__m128i __A)
  749. {
  750. return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
  751. }
  752. extern __inline __mmask32
  753. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  754. _mm256_movepi8_mask (__m256i __A)
  755. {
  756. return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
  757. }
  758. extern __inline __mmask8
  759. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  760. _mm_movepi16_mask (__m128i __A)
  761. {
  762. return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
  763. }
  764. extern __inline __mmask16
  765. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  766. _mm256_movepi16_mask (__m256i __A)
  767. {
  768. return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
  769. }
  770. extern __inline __m128i
  771. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  772. _mm_movm_epi8 (__mmask16 __A)
  773. {
  774. return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
  775. }
  776. extern __inline __m256i
  777. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  778. _mm256_movm_epi8 (__mmask32 __A)
  779. {
  780. return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
  781. }
  782. extern __inline __m128i
  783. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  784. _mm_movm_epi16 (__mmask8 __A)
  785. {
  786. return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
  787. }
  788. extern __inline __m256i
  789. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  790. _mm256_movm_epi16 (__mmask16 __A)
  791. {
  792. return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
  793. }
  794. extern __inline __mmask16
  795. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  796. _mm_test_epi8_mask (__m128i __A, __m128i __B)
  797. {
  798. return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
  799. (__v16qi) __B,
  800. (__mmask16) -1);
  801. }
  802. extern __inline __mmask16
  803. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  804. _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  805. {
  806. return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
  807. (__v16qi) __B, __U);
  808. }
  809. extern __inline __mmask32
  810. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  811. _mm256_test_epi8_mask (__m256i __A, __m256i __B)
  812. {
  813. return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
  814. (__v32qi) __B,
  815. (__mmask32) -1);
  816. }
  817. extern __inline __mmask32
  818. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  819. _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  820. {
  821. return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
  822. (__v32qi) __B, __U);
  823. }
  824. extern __inline __mmask8
  825. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  826. _mm_test_epi16_mask (__m128i __A, __m128i __B)
  827. {
  828. return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
  829. (__v8hi) __B,
  830. (__mmask8) -1);
  831. }
  832. extern __inline __mmask8
  833. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  834. _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  835. {
  836. return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
  837. (__v8hi) __B, __U);
  838. }
  839. extern __inline __mmask16
  840. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  841. _mm256_test_epi16_mask (__m256i __A, __m256i __B)
  842. {
  843. return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
  844. (__v16hi) __B,
  845. (__mmask16) -1);
  846. }
  847. extern __inline __mmask16
  848. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  849. _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  850. {
  851. return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
  852. (__v16hi) __B, __U);
  853. }
  854. extern __inline __m256i
  855. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  856. _mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
  857. {
  858. return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
  859. (__v16hi) __B,
  860. (__v16hi)
  861. _mm256_setzero_si256 (),
  862. (__mmask16) __M);
  863. }
  864. extern __inline __m256i
  865. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  866. _mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
  867. __m256i __B)
  868. {
  869. return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
  870. (__v16hi) __B,
  871. (__v16hi) __W,
  872. (__mmask16) __M);
  873. }
  874. extern __inline __m128i
  875. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  876. _mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
  877. {
  878. return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
  879. (__v8hi) __B,
  880. (__v8hi)
  881. _mm_setzero_si128 (),
  882. (__mmask8) __M);
  883. }
  884. extern __inline __m128i
  885. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  886. _mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
  887. __m128i __B)
  888. {
  889. return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
  890. (__v8hi) __B,
  891. (__v8hi) __W,
  892. (__mmask8) __M);
  893. }
  894. extern __inline __m256i
  895. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  896. _mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
  897. {
  898. return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
  899. (__v16hi) __B,
  900. (__v16hi)
  901. _mm256_setzero_si256 (),
  902. (__mmask16) __M);
  903. }
  904. extern __inline __m256i
  905. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  906. _mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
  907. __m256i __B)
  908. {
  909. return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
  910. (__v16hi) __B,
  911. (__v16hi) __W,
  912. (__mmask16) __M);
  913. }
  914. extern __inline __m256i
  915. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  916. _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
  917. {
  918. return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
  919. (__v32qi) __B,
  920. (__v32qi)
  921. _mm256_setzero_si256 (),
  922. (__mmask32) __M);
  923. }
  924. extern __inline __m256i
  925. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  926. _mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
  927. __m256i __B)
  928. {
  929. return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
  930. (__v32qi) __B,
  931. (__v32qi) __W,
  932. (__mmask32) __M);
  933. }
  934. extern __inline __m128i
  935. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  936. _mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
  937. {
  938. return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
  939. (__v16qi) __B,
  940. (__v16qi)
  941. _mm_setzero_si128 (),
  942. (__mmask16) __M);
  943. }
  944. extern __inline __m128i
  945. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  946. _mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
  947. __m128i __B)
  948. {
  949. return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
  950. (__v16qi) __B,
  951. (__v16qi) __W,
  952. (__mmask16) __M);
  953. }
  954. extern __inline __m256i
  955. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  956. _mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
  957. {
  958. return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
  959. (__v32qi) __B,
  960. (__v32qi)
  961. _mm256_setzero_si256 (),
  962. (__mmask32) __M);
  963. }
  964. extern __inline __m256i
  965. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  966. _mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
  967. __m256i __B)
  968. {
  969. return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
  970. (__v32qi) __B,
  971. (__v32qi) __W,
  972. (__mmask32) __M);
  973. }
  974. extern __inline __m128i
  975. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  976. _mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
  977. {
  978. return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
  979. (__v16qi) __B,
  980. (__v16qi)
  981. _mm_setzero_si128 (),
  982. (__mmask16) __M);
  983. }
  984. extern __inline __m128i
  985. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  986. _mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
  987. __m128i __B)
  988. {
  989. return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
  990. (__v16qi) __B,
  991. (__v16qi) __W,
  992. (__mmask16) __M);
  993. }
  994. extern __inline __m256i
  995. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  996. _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
  997. {
  998. return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
  999. (__v32qi) __B,
  1000. (__v32qi)
  1001. _mm256_setzero_si256 (),
  1002. (__mmask32) __M);
  1003. }
  1004. extern __inline __m256i
  1005. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1006. _mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
  1007. __m256i __B)
  1008. {
  1009. return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
  1010. (__v32qi) __B,
  1011. (__v32qi) __W,
  1012. (__mmask32) __M);
  1013. }
  1014. extern __inline __m128i
  1015. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1016. _mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
  1017. {
  1018. return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
  1019. (__v16qi) __B,
  1020. (__v16qi)
  1021. _mm_setzero_si128 (),
  1022. (__mmask16) __M);
  1023. }
  1024. extern __inline __m128i
  1025. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1026. _mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
  1027. __m128i __B)
  1028. {
  1029. return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
  1030. (__v16qi) __B,
  1031. (__v16qi) __W,
  1032. (__mmask16) __M);
  1033. }
  1034. extern __inline __m256i
  1035. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1036. _mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
  1037. {
  1038. return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
  1039. (__v32qi) __B,
  1040. (__v32qi)
  1041. _mm256_setzero_si256 (),
  1042. (__mmask32) __M);
  1043. }
  1044. extern __inline __m256i
  1045. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1046. _mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
  1047. __m256i __B)
  1048. {
  1049. return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
  1050. (__v32qi) __B,
  1051. (__v32qi) __W,
  1052. (__mmask32) __M);
  1053. }
  1054. extern __inline __m128i
  1055. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1056. _mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
  1057. {
  1058. return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
  1059. (__v16qi) __B,
  1060. (__v16qi)
  1061. _mm_setzero_si128 (),
  1062. (__mmask16) __M);
  1063. }
  1064. extern __inline __m128i
  1065. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1066. _mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
  1067. __m128i __B)
  1068. {
  1069. return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
  1070. (__v16qi) __B,
  1071. (__v16qi) __W,
  1072. (__mmask16) __M);
  1073. }
  1074. extern __inline __m256i
  1075. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1076. _mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
  1077. {
  1078. return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
  1079. (__v16hi) __B,
  1080. (__v16hi)
  1081. _mm256_setzero_si256 (),
  1082. (__mmask16) __M);
  1083. }
  1084. extern __inline __m256i
  1085. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1086. _mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
  1087. __m256i __B)
  1088. {
  1089. return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
  1090. (__v16hi) __B,
  1091. (__v16hi) __W,
  1092. (__mmask16) __M);
  1093. }
  1094. extern __inline __m128i
  1095. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1096. _mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
  1097. {
  1098. return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
  1099. (__v8hi) __B,
  1100. (__v8hi)
  1101. _mm_setzero_si128 (),
  1102. (__mmask8) __M);
  1103. }
  1104. extern __inline __m128i
  1105. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1106. _mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
  1107. __m128i __B)
  1108. {
  1109. return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
  1110. (__v8hi) __B,
  1111. (__v8hi) __W,
  1112. (__mmask8) __M);
  1113. }
  1114. extern __inline __m256i
  1115. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1116. _mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
  1117. {
  1118. return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
  1119. (__v16hi) __B,
  1120. (__v16hi)
  1121. _mm256_setzero_si256 (),
  1122. (__mmask16) __M);
  1123. }
  1124. extern __inline __m256i
  1125. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1126. _mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
  1127. __m256i __B)
  1128. {
  1129. return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
  1130. (__v16hi) __B,
  1131. (__v16hi) __W,
  1132. (__mmask16) __M);
  1133. }
  1134. extern __inline __m128i
  1135. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1136. _mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
  1137. {
  1138. return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
  1139. (__v8hi) __B,
  1140. (__v8hi)
  1141. _mm_setzero_si128 (),
  1142. (__mmask8) __M);
  1143. }
  1144. extern __inline __m128i
  1145. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1146. _mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
  1147. __m128i __B)
  1148. {
  1149. return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
  1150. (__v8hi) __B,
  1151. (__v8hi) __W,
  1152. (__mmask8) __M);
  1153. }
  1154. extern __inline __m128i
  1155. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1156. _mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
  1157. {
  1158. return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
  1159. (__v8hi) __B,
  1160. (__v8hi)
  1161. _mm_setzero_si128 (),
  1162. (__mmask8) __M);
  1163. }
  1164. extern __inline __m128i
  1165. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1166. _mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
  1167. __m128i __B)
  1168. {
  1169. return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
  1170. (__v8hi) __B,
  1171. (__v8hi) __W,
  1172. (__mmask8) __M);
  1173. }
  1174. #ifdef __OPTIMIZE__
  1175. extern __inline __m256i
  1176. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1177. _mm256_mask_alignr_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  1178. __m256i __B, const int __N)
  1179. {
  1180. return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
  1181. (__v4di) __B,
  1182. __N * 8,
  1183. (__v4di) __W,
  1184. (__mmask32) __U);
  1185. }
  1186. extern __inline __m256i
  1187. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1188. _mm256_maskz_alignr_epi8 (__mmask32 __U, __m256i __A, __m256i __B,
  1189. const int __N)
  1190. {
  1191. return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
  1192. (__v4di) __B,
  1193. __N * 8,
  1194. (__v4di)
  1195. _mm256_setzero_si256 (),
  1196. (__mmask32) __U);
  1197. }
  1198. extern __inline __m128i
  1199. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1200. _mm_mask_alignr_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  1201. __m128i __B, const int __N)
  1202. {
  1203. return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
  1204. (__v2di) __B,
  1205. __N * 8,
  1206. (__v2di) __W,
  1207. (__mmask16) __U);
  1208. }
  1209. extern __inline __m128i
  1210. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1211. _mm_maskz_alignr_epi8 (__mmask16 __U, __m128i __A, __m128i __B,
  1212. const int __N)
  1213. {
  1214. return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
  1215. (__v2di) __B,
  1216. __N * 8,
  1217. (__v2di)
  1218. _mm_setzero_si128 (),
  1219. (__mmask16) __U);
  1220. }
  1221. extern __inline __m256i
  1222. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1223. _mm256_dbsad_epu8 (__m256i __A, __m256i __B, const int __imm)
  1224. {
  1225. return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
  1226. (__v32qi) __B,
  1227. __imm,
  1228. (__v16hi)
  1229. _mm256_setzero_si256 (),
  1230. (__mmask16) -1);
  1231. }
  1232. extern __inline __m256i
  1233. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1234. _mm256_mask_dbsad_epu8 (__m256i __W, __mmask16 __U, __m256i __A,
  1235. __m256i __B, const int __imm)
  1236. {
  1237. return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
  1238. (__v32qi) __B,
  1239. __imm,
  1240. (__v16hi) __W,
  1241. (__mmask16) __U);
  1242. }
  1243. extern __inline __m256i
  1244. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1245. _mm256_maskz_dbsad_epu8 (__mmask16 __U, __m256i __A, __m256i __B,
  1246. const int __imm)
  1247. {
  1248. return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
  1249. (__v32qi) __B,
  1250. __imm,
  1251. (__v16hi)
  1252. _mm256_setzero_si256 (),
  1253. (__mmask16) __U);
  1254. }
  1255. extern __inline __m128i
  1256. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1257. _mm_dbsad_epu8 (__m128i __A, __m128i __B, const int __imm)
  1258. {
  1259. return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
  1260. (__v16qi) __B,
  1261. __imm,
  1262. (__v8hi)
  1263. _mm_setzero_si128 (),
  1264. (__mmask8) -1);
  1265. }
  1266. extern __inline __m128i
  1267. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1268. _mm_mask_dbsad_epu8 (__m128i __W, __mmask8 __U, __m128i __A,
  1269. __m128i __B, const int __imm)
  1270. {
  1271. return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
  1272. (__v16qi) __B,
  1273. __imm,
  1274. (__v8hi) __W,
  1275. (__mmask8) __U);
  1276. }
  1277. extern __inline __m128i
  1278. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1279. _mm_maskz_dbsad_epu8 (__mmask8 __U, __m128i __A, __m128i __B,
  1280. const int __imm)
  1281. {
  1282. return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
  1283. (__v16qi) __B,
  1284. __imm,
  1285. (__v8hi)
  1286. _mm_setzero_si128 (),
  1287. (__mmask8) __U);
  1288. }
  1289. extern __inline __m128i
  1290. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1291. _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
  1292. {
  1293. return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A,
  1294. (__v8hi) __W,
  1295. (__mmask8) __U);
  1296. }
  1297. extern __inline __m128i
  1298. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1299. _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
  1300. {
  1301. return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A,
  1302. (__v16qi) __W,
  1303. (__mmask16) __U);
  1304. }
  1305. extern __inline __m256i
  1306. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1307. _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
  1308. {
  1309. return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A,
  1310. (__v16hi) __W,
  1311. (__mmask16) __U);
  1312. }
  1313. extern __inline __m256i
  1314. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1315. _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
  1316. {
  1317. return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A,
  1318. (__v32qi) __W,
  1319. (__mmask32) __U);
  1320. }
  1321. extern __inline __mmask8
  1322. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1323. _mm_mask_cmp_epi16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
  1324. const int __P)
  1325. {
  1326. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  1327. (__v8hi) __Y, __P,
  1328. (__mmask8) __U);
  1329. }
  1330. extern __inline __mmask8
  1331. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1332. _mm_cmp_epi16_mask (__m128i __X, __m128i __Y, const int __P)
  1333. {
  1334. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  1335. (__v8hi) __Y, __P,
  1336. (__mmask8) -1);
  1337. }
  1338. extern __inline __mmask16
  1339. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1340. _mm256_mask_cmp_epi16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
  1341. const int __P)
  1342. {
  1343. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  1344. (__v16hi) __Y, __P,
  1345. (__mmask16) __U);
  1346. }
  1347. extern __inline __mmask16
  1348. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1349. _mm256_cmp_epi16_mask (__m256i __X, __m256i __Y, const int __P)
  1350. {
  1351. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  1352. (__v16hi) __Y, __P,
  1353. (__mmask16) -1);
  1354. }
  1355. extern __inline __mmask16
  1356. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1357. _mm_mask_cmp_epi8_mask (__mmask16 __U, __m128i __X, __m128i __Y,
  1358. const int __P)
  1359. {
  1360. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  1361. (__v16qi) __Y, __P,
  1362. (__mmask16) __U);
  1363. }
  1364. extern __inline __mmask16
  1365. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1366. _mm_cmp_epi8_mask (__m128i __X, __m128i __Y, const int __P)
  1367. {
  1368. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  1369. (__v16qi) __Y, __P,
  1370. (__mmask16) -1);
  1371. }
  1372. extern __inline __mmask32
  1373. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1374. _mm256_mask_cmp_epi8_mask (__mmask32 __U, __m256i __X, __m256i __Y,
  1375. const int __P)
  1376. {
  1377. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  1378. (__v32qi) __Y, __P,
  1379. (__mmask32) __U);
  1380. }
  1381. extern __inline __mmask32
  1382. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1383. _mm256_cmp_epi8_mask (__m256i __X, __m256i __Y, const int __P)
  1384. {
  1385. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  1386. (__v32qi) __Y, __P,
  1387. (__mmask32) -1);
  1388. }
  1389. extern __inline __mmask8
  1390. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1391. _mm_mask_cmp_epu16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
  1392. const int __P)
  1393. {
  1394. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  1395. (__v8hi) __Y, __P,
  1396. (__mmask8) __U);
  1397. }
  1398. extern __inline __mmask8
  1399. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1400. _mm_cmp_epu16_mask (__m128i __X, __m128i __Y, const int __P)
  1401. {
  1402. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  1403. (__v8hi) __Y, __P,
  1404. (__mmask8) -1);
  1405. }
  1406. extern __inline __mmask16
  1407. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1408. _mm256_mask_cmp_epu16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
  1409. const int __P)
  1410. {
  1411. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  1412. (__v16hi) __Y, __P,
  1413. (__mmask16) __U);
  1414. }
  1415. extern __inline __mmask16
  1416. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1417. _mm256_cmp_epu16_mask (__m256i __X, __m256i __Y, const int __P)
  1418. {
  1419. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  1420. (__v16hi) __Y, __P,
  1421. (__mmask16) -1);
  1422. }
  1423. extern __inline __mmask16
  1424. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1425. _mm_mask_cmp_epu8_mask (__mmask16 __U, __m128i __X, __m128i __Y,
  1426. const int __P)
  1427. {
  1428. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  1429. (__v16qi) __Y, __P,
  1430. (__mmask16) __U);
  1431. }
  1432. extern __inline __mmask16
  1433. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1434. _mm_cmp_epu8_mask (__m128i __X, __m128i __Y, const int __P)
  1435. {
  1436. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  1437. (__v16qi) __Y, __P,
  1438. (__mmask16) -1);
  1439. }
  1440. extern __inline __mmask32
  1441. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1442. _mm256_mask_cmp_epu8_mask (__mmask32 __U, __m256i __X, __m256i __Y,
  1443. const int __P)
  1444. {
  1445. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  1446. (__v32qi) __Y, __P,
  1447. (__mmask32) __U);
  1448. }
  1449. extern __inline __mmask32
  1450. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1451. _mm256_cmp_epu8_mask (__m256i __X, __m256i __Y, const int __P)
  1452. {
  1453. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  1454. (__v32qi) __Y, __P,
  1455. (__mmask32) -1);
  1456. }
  1457. extern __inline __m256i
  1458. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1459. _mm256_mask_srli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  1460. const int __imm)
  1461. {
  1462. return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
  1463. (__v16hi) __W,
  1464. (__mmask16) __U);
  1465. }
  1466. extern __inline __m256i
  1467. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1468. _mm256_maskz_srli_epi16 (__mmask16 __U, __m256i __A, const int __imm)
  1469. {
  1470. return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
  1471. (__v16hi)
  1472. _mm256_setzero_si256 (),
  1473. (__mmask16) __U);
  1474. }
  1475. extern __inline __m128i
  1476. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1477. _mm_mask_srli_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  1478. const int __imm)
  1479. {
  1480. return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
  1481. (__v8hi) __W,
  1482. (__mmask8) __U);
  1483. }
  1484. extern __inline __m128i
  1485. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1486. _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, const int __imm)
  1487. {
  1488. return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
  1489. (__v8hi)
  1490. _mm_setzero_si128 (),
  1491. (__mmask8) __U);
  1492. }
  1493. extern __inline __m256i
  1494. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1495. _mm256_mask_shufflehi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  1496. const int __imm)
  1497. {
  1498. return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
  1499. __imm,
  1500. (__v16hi) __W,
  1501. (__mmask16) __U);
  1502. }
  1503. extern __inline __m256i
  1504. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1505. _mm256_maskz_shufflehi_epi16 (__mmask16 __U, __m256i __A,
  1506. const int __imm)
  1507. {
  1508. return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
  1509. __imm,
  1510. (__v16hi)
  1511. _mm256_setzero_si256 (),
  1512. (__mmask16) __U);
  1513. }
  1514. extern __inline __m128i
  1515. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1516. _mm_mask_shufflehi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  1517. const int __imm)
  1518. {
  1519. return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
  1520. (__v8hi) __W,
  1521. (__mmask8) __U);
  1522. }
  1523. extern __inline __m128i
  1524. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1525. _mm_maskz_shufflehi_epi16 (__mmask8 __U, __m128i __A, const int __imm)
  1526. {
  1527. return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
  1528. (__v8hi)
  1529. _mm_setzero_si128 (),
  1530. (__mmask8) __U);
  1531. }
  1532. extern __inline __m256i
  1533. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1534. _mm256_mask_shufflelo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  1535. const int __imm)
  1536. {
  1537. return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
  1538. __imm,
  1539. (__v16hi) __W,
  1540. (__mmask16) __U);
  1541. }
  1542. extern __inline __m256i
  1543. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1544. _mm256_maskz_shufflelo_epi16 (__mmask16 __U, __m256i __A,
  1545. const int __imm)
  1546. {
  1547. return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
  1548. __imm,
  1549. (__v16hi)
  1550. _mm256_setzero_si256 (),
  1551. (__mmask16) __U);
  1552. }
  1553. extern __inline __m128i
  1554. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1555. _mm_mask_shufflelo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  1556. const int __imm)
  1557. {
  1558. return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
  1559. (__v8hi) __W,
  1560. (__mmask8) __U);
  1561. }
  1562. extern __inline __m128i
  1563. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1564. _mm_maskz_shufflelo_epi16 (__mmask8 __U, __m128i __A, const int __imm)
  1565. {
  1566. return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
  1567. (__v8hi)
  1568. _mm_setzero_si128 (),
  1569. (__mmask8) __U);
  1570. }
  1571. extern __inline __m256i
  1572. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1573. _mm256_mask_srai_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  1574. const int __imm)
  1575. {
  1576. return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
  1577. (__v16hi) __W,
  1578. (__mmask16) __U);
  1579. }
  1580. extern __inline __m256i
  1581. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1582. _mm256_maskz_srai_epi16 (__mmask16 __U, __m256i __A, const int __imm)
  1583. {
  1584. return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
  1585. (__v16hi)
  1586. _mm256_setzero_si256 (),
  1587. (__mmask16) __U);
  1588. }
  1589. extern __inline __m128i
  1590. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1591. _mm_mask_srai_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  1592. const int __imm)
  1593. {
  1594. return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
  1595. (__v8hi) __W,
  1596. (__mmask8) __U);
  1597. }
  1598. extern __inline __m128i
  1599. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1600. _mm_maskz_srai_epi16 (__mmask8 __U, __m128i __A, const int __imm)
  1601. {
  1602. return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
  1603. (__v8hi)
  1604. _mm_setzero_si128 (),
  1605. (__mmask8) __U);
  1606. }
  1607. extern __inline __m256i
  1608. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1609. _mm256_mask_slli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  1610. int __B)
  1611. {
  1612. return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
  1613. (__v16hi) __W,
  1614. (__mmask16) __U);
  1615. }
  1616. extern __inline __m256i
  1617. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1618. _mm256_maskz_slli_epi16 (__mmask16 __U, __m256i __A, int __B)
  1619. {
  1620. return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
  1621. (__v16hi)
  1622. _mm256_setzero_si256 (),
  1623. (__mmask16) __U);
  1624. }
  1625. extern __inline __m128i
  1626. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1627. _mm_mask_slli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
  1628. {
  1629. return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
  1630. (__v8hi) __W,
  1631. (__mmask8) __U);
  1632. }
  1633. extern __inline __m128i
  1634. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1635. _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
  1636. {
  1637. return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
  1638. (__v8hi)
  1639. _mm_setzero_si128 (),
  1640. (__mmask8) __U);
  1641. }
  1642. #else
  1643. #define _mm256_mask_alignr_epi8(W, U, X, Y, N) \
  1644. ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \
  1645. (__v4di)(__m256i)(Y), (int)((N) * 8), \
  1646. (__v4di)(__m256i)(X), (__mmask32)(U)))
  1647. #define _mm256_mask_srli_epi16(W, U, A, B) \
  1648. ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A), \
  1649. (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
  1650. #define _mm256_maskz_srli_epi16(U, A, B) \
  1651. ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A), \
  1652. (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
  1653. #define _mm_mask_srli_epi16(W, U, A, B) \
  1654. ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A), \
  1655. (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
  1656. #define _mm_maskz_srli_epi16(U, A, B) \
  1657. ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A), \
  1658. (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
  1659. #define _mm256_mask_srai_epi16(W, U, A, B) \
  1660. ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A), \
  1661. (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
  1662. #define _mm256_maskz_srai_epi16(U, A, B) \
  1663. ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A), \
  1664. (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
  1665. #define _mm_mask_srai_epi16(W, U, A, B) \
  1666. ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A), \
  1667. (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
  1668. #define _mm_maskz_srai_epi16(U, A, B) \
  1669. ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A), \
  1670. (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
  1671. #define _mm256_mask_shufflehi_epi16(W, U, A, B) \
  1672. ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
  1673. (__v16hi)(__m256i)(W), \
  1674. (__mmask16)(U)))
  1675. #define _mm256_maskz_shufflehi_epi16(U, A, B) \
  1676. ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
  1677. (__v16hi)(__m256i)_mm256_setzero_si256 (), \
  1678. (__mmask16)(U)))
  1679. #define _mm_mask_shufflehi_epi16(W, U, A, B) \
  1680. ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
  1681. (__v8hi)(__m128i)(W), \
  1682. (__mmask8)(U)))
  1683. #define _mm_maskz_shufflehi_epi16(U, A, B) \
  1684. ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
  1685. (__v8hi)(__m128i)_mm_setzero_si128 (), \
  1686. (__mmask8)(U)))
  1687. #define _mm256_mask_shufflelo_epi16(W, U, A, B) \
  1688. ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
  1689. (__v16hi)(__m256i)(W), \
  1690. (__mmask16)(U)))
  1691. #define _mm256_maskz_shufflelo_epi16(U, A, B) \
  1692. ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
  1693. (__v16hi)(__m256i)_mm256_setzero_si256 (), \
  1694. (__mmask16)(U)))
  1695. #define _mm_mask_shufflelo_epi16(W, U, A, B) \
  1696. ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
  1697. (__v8hi)(__m128i)(W), \
  1698. (__mmask8)(U)))
  1699. #define _mm_maskz_shufflelo_epi16(U, A, B) \
  1700. ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
  1701. (__v8hi)(__m128i)_mm_setzero_si128 (), \
  1702. (__mmask8)(U)))
  1703. #define _mm256_maskz_alignr_epi8(U, X, Y, N) \
  1704. ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \
  1705. (__v4di)(__m256i)(Y), (int)((N) * 8), \
  1706. (__v4di)(__m256i)_mm256_setzero_si256 (), \
  1707. (__mmask32)(U)))
  1708. #define _mm_mask_alignr_epi8(W, U, X, Y, N) \
  1709. ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \
  1710. (__v2di)(__m128i)(Y), (int)((N) * 8), \
  1711. (__v2di)(__m128i)(X), (__mmask16)(U)))
  1712. #define _mm_maskz_alignr_epi8(U, X, Y, N) \
  1713. ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \
  1714. (__v2di)(__m128i)(Y), (int)((N) * 8), \
  1715. (__v2di)(__m128i)_mm_setzero_si128 (), \
  1716. (__mmask16)(U)))
  1717. #define _mm_mask_slli_epi16(W, U, X, C) \
  1718. ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
  1719. (__v8hi)(__m128i)(W),\
  1720. (__mmask8)(U)))
  1721. #define _mm_maskz_slli_epi16(U, X, C) \
  1722. ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
  1723. (__v8hi)(__m128i)_mm_setzero_si128 (),\
  1724. (__mmask8)(U)))
  1725. #define _mm256_dbsad_epu8(X, Y, C) \
  1726. ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \
  1727. (__v32qi)(__m256i) (Y), (int) (C), \
  1728. (__v16hi)(__m256i)_mm256_setzero_si256(),\
  1729. (__mmask16)-1))
  1730. #define _mm256_mask_slli_epi16(W, U, X, C) \
  1731. ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
  1732. (__v16hi)(__m256i)(W),\
  1733. (__mmask16)(U)))
  1734. #define _mm256_maskz_slli_epi16(U, X, C) \
  1735. ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
  1736. (__v16hi)(__m256i)_mm256_setzero_si256 (),\
  1737. (__mmask16)(U)))
  1738. #define _mm256_mask_dbsad_epu8(W, U, X, Y, C) \
  1739. ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \
  1740. (__v32qi)(__m256i) (Y), (int) (C), \
  1741. (__v16hi)(__m256i)(W), \
  1742. (__mmask16)(U)))
  1743. #define _mm256_maskz_dbsad_epu8(U, X, Y, C) \
  1744. ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \
  1745. (__v32qi)(__m256i) (Y), (int) (C), \
  1746. (__v16hi)(__m256i)_mm256_setzero_si256(),\
  1747. (__mmask16)(U)))
  1748. #define _mm_dbsad_epu8(X, Y, C) \
  1749. ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \
  1750. (__v16qi)(__m128i) (Y), (int) (C), \
  1751. (__v8hi)(__m128i)_mm_setzero_si128(), \
  1752. (__mmask8)-1))
  1753. #define _mm_mask_dbsad_epu8(W, U, X, Y, C) \
  1754. ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \
  1755. (__v16qi)(__m128i) (Y), (int) (C), \
  1756. (__v8hi)(__m128i)(W), \
  1757. (__mmask8)(U)))
  1758. #define _mm_maskz_dbsad_epu8(U, X, Y, C) \
  1759. ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \
  1760. (__v16qi)(__m128i) (Y), (int) (C), \
  1761. (__v8hi)(__m128i)_mm_setzero_si128(), \
  1762. (__mmask8)(U)))
  1763. #define _mm_mask_blend_epi16(__U, __A, __W) \
  1764. ((__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) (__A), \
  1765. (__v8hi) (__W), \
  1766. (__mmask8) (__U)))
  1767. #define _mm_mask_blend_epi8(__U, __A, __W) \
  1768. ((__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) (__A), \
  1769. (__v16qi) (__W), \
  1770. (__mmask16) (__U)))
  1771. #define _mm256_mask_blend_epi16(__U, __A, __W) \
  1772. ((__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) (__A), \
  1773. (__v16hi) (__W), \
  1774. (__mmask16) (__U)))
  1775. #define _mm256_mask_blend_epi8(__U, __A, __W) \
  1776. ((__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) (__A), \
  1777. (__v32qi) (__W), \
  1778. (__mmask32) (__U)))
  1779. #define _mm_cmp_epi16_mask(X, Y, P) \
  1780. ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X), \
  1781. (__v8hi)(__m128i)(Y), (int)(P),\
  1782. (__mmask8)(-1)))
  1783. #define _mm_cmp_epi8_mask(X, Y, P) \
  1784. ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X), \
  1785. (__v16qi)(__m128i)(Y), (int)(P),\
  1786. (__mmask16)(-1)))
  1787. #define _mm256_cmp_epi16_mask(X, Y, P) \
  1788. ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X), \
  1789. (__v16hi)(__m256i)(Y), (int)(P),\
  1790. (__mmask16)(-1)))
  1791. #define _mm256_cmp_epi8_mask(X, Y, P) \
  1792. ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X), \
  1793. (__v32qi)(__m256i)(Y), (int)(P),\
  1794. (__mmask32)(-1)))
  1795. #define _mm_cmp_epu16_mask(X, Y, P) \
  1796. ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X), \
  1797. (__v8hi)(__m128i)(Y), (int)(P),\
  1798. (__mmask8)(-1)))
  1799. #define _mm_cmp_epu8_mask(X, Y, P) \
  1800. ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X), \
  1801. (__v16qi)(__m128i)(Y), (int)(P),\
  1802. (__mmask16)(-1)))
  1803. #define _mm256_cmp_epu16_mask(X, Y, P) \
  1804. ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X), \
  1805. (__v16hi)(__m256i)(Y), (int)(P),\
  1806. (__mmask16)(-1)))
  1807. #define _mm256_cmp_epu8_mask(X, Y, P) \
  1808. ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \
  1809. (__v32qi)(__m256i)(Y), (int)(P),\
  1810. (__mmask32)-1))
  1811. #define _mm_mask_cmp_epi16_mask(M, X, Y, P) \
  1812. ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X), \
  1813. (__v8hi)(__m128i)(Y), (int)(P),\
  1814. (__mmask8)(M)))
  1815. #define _mm_mask_cmp_epi8_mask(M, X, Y, P) \
  1816. ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X), \
  1817. (__v16qi)(__m128i)(Y), (int)(P),\
  1818. (__mmask16)(M)))
  1819. #define _mm256_mask_cmp_epi16_mask(M, X, Y, P) \
  1820. ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X), \
  1821. (__v16hi)(__m256i)(Y), (int)(P),\
  1822. (__mmask16)(M)))
  1823. #define _mm256_mask_cmp_epi8_mask(M, X, Y, P) \
  1824. ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X), \
  1825. (__v32qi)(__m256i)(Y), (int)(P),\
  1826. (__mmask32)(M)))
  1827. #define _mm_mask_cmp_epu16_mask(M, X, Y, P) \
  1828. ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X), \
  1829. (__v8hi)(__m128i)(Y), (int)(P),\
  1830. (__mmask8)(M)))
  1831. #define _mm_mask_cmp_epu8_mask(M, X, Y, P) \
  1832. ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X), \
  1833. (__v16qi)(__m128i)(Y), (int)(P),\
  1834. (__mmask16)(M)))
  1835. #define _mm256_mask_cmp_epu16_mask(M, X, Y, P) \
  1836. ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X), \
  1837. (__v16hi)(__m256i)(Y), (int)(P),\
  1838. (__mmask16)(M)))
  1839. #define _mm256_mask_cmp_epu8_mask(M, X, Y, P) \
  1840. ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \
  1841. (__v32qi)(__m256i)(Y), (int)(P),\
  1842. (__mmask32)(M)))
  1843. #endif
  1844. extern __inline __mmask32
  1845. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1846. _mm256_cmpneq_epi8_mask (__m256i __X, __m256i __Y)
  1847. {
  1848. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  1849. (__v32qi) __Y, 4,
  1850. (__mmask32) -1);
  1851. }
  1852. extern __inline __mmask32
  1853. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1854. _mm256_cmplt_epi8_mask (__m256i __X, __m256i __Y)
  1855. {
  1856. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  1857. (__v32qi) __Y, 1,
  1858. (__mmask32) -1);
  1859. }
  1860. extern __inline __mmask32
  1861. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1862. _mm256_cmpge_epi8_mask (__m256i __X, __m256i __Y)
  1863. {
  1864. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  1865. (__v32qi) __Y, 5,
  1866. (__mmask32) -1);
  1867. }
  1868. extern __inline __mmask32
  1869. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1870. _mm256_cmple_epi8_mask (__m256i __X, __m256i __Y)
  1871. {
  1872. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  1873. (__v32qi) __Y, 2,
  1874. (__mmask32) -1);
  1875. }
  1876. extern __inline __mmask16
  1877. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1878. _mm256_cmpneq_epi16_mask (__m256i __X, __m256i __Y)
  1879. {
  1880. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  1881. (__v16hi) __Y, 4,
  1882. (__mmask16) -1);
  1883. }
  1884. extern __inline __mmask16
  1885. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1886. _mm256_cmplt_epi16_mask (__m256i __X, __m256i __Y)
  1887. {
  1888. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  1889. (__v16hi) __Y, 1,
  1890. (__mmask16) -1);
  1891. }
  1892. extern __inline __mmask16
  1893. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1894. _mm256_cmpge_epi16_mask (__m256i __X, __m256i __Y)
  1895. {
  1896. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  1897. (__v16hi) __Y, 5,
  1898. (__mmask16) -1);
  1899. }
  1900. extern __inline __mmask16
  1901. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1902. _mm256_cmple_epi16_mask (__m256i __X, __m256i __Y)
  1903. {
  1904. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  1905. (__v16hi) __Y, 2,
  1906. (__mmask16) -1);
  1907. }
  1908. extern __inline __mmask16
  1909. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1910. _mm_cmpneq_epu8_mask (__m128i __X, __m128i __Y)
  1911. {
  1912. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  1913. (__v16qi) __Y, 4,
  1914. (__mmask16) -1);
  1915. }
  1916. extern __inline __mmask16
  1917. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1918. _mm_cmplt_epu8_mask (__m128i __X, __m128i __Y)
  1919. {
  1920. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  1921. (__v16qi) __Y, 1,
  1922. (__mmask16) -1);
  1923. }
  1924. extern __inline __mmask16
  1925. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1926. _mm_cmpge_epu8_mask (__m128i __X, __m128i __Y)
  1927. {
  1928. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  1929. (__v16qi) __Y, 5,
  1930. (__mmask16) -1);
  1931. }
  1932. extern __inline __mmask16
  1933. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1934. _mm_cmple_epu8_mask (__m128i __X, __m128i __Y)
  1935. {
  1936. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  1937. (__v16qi) __Y, 2,
  1938. (__mmask16) -1);
  1939. }
  1940. extern __inline __mmask8
  1941. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1942. _mm_cmpneq_epu16_mask (__m128i __X, __m128i __Y)
  1943. {
  1944. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  1945. (__v8hi) __Y, 4,
  1946. (__mmask8) -1);
  1947. }
  1948. extern __inline __mmask8
  1949. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1950. _mm_cmplt_epu16_mask (__m128i __X, __m128i __Y)
  1951. {
  1952. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  1953. (__v8hi) __Y, 1,
  1954. (__mmask8) -1);
  1955. }
  1956. extern __inline __mmask8
  1957. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1958. _mm_cmpge_epu16_mask (__m128i __X, __m128i __Y)
  1959. {
  1960. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  1961. (__v8hi) __Y, 5,
  1962. (__mmask8) -1);
  1963. }
  1964. extern __inline __mmask8
  1965. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1966. _mm_cmple_epu16_mask (__m128i __X, __m128i __Y)
  1967. {
  1968. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  1969. (__v8hi) __Y, 2,
  1970. (__mmask8) -1);
  1971. }
  1972. extern __inline __mmask16
  1973. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1974. _mm_cmpneq_epi8_mask (__m128i __X, __m128i __Y)
  1975. {
  1976. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  1977. (__v16qi) __Y, 4,
  1978. (__mmask16) -1);
  1979. }
  1980. extern __inline __mmask16
  1981. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1982. _mm_cmplt_epi8_mask (__m128i __X, __m128i __Y)
  1983. {
  1984. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  1985. (__v16qi) __Y, 1,
  1986. (__mmask16) -1);
  1987. }
  1988. extern __inline __mmask16
  1989. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1990. _mm_cmpge_epi8_mask (__m128i __X, __m128i __Y)
  1991. {
  1992. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  1993. (__v16qi) __Y, 5,
  1994. (__mmask16) -1);
  1995. }
  1996. extern __inline __mmask16
  1997. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1998. _mm_cmple_epi8_mask (__m128i __X, __m128i __Y)
  1999. {
  2000. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  2001. (__v16qi) __Y, 2,
  2002. (__mmask16) -1);
  2003. }
  2004. extern __inline __mmask8
  2005. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2006. _mm_cmpneq_epi16_mask (__m128i __X, __m128i __Y)
  2007. {
  2008. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  2009. (__v8hi) __Y, 4,
  2010. (__mmask8) -1);
  2011. }
  2012. extern __inline __mmask8
  2013. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2014. _mm_cmplt_epi16_mask (__m128i __X, __m128i __Y)
  2015. {
  2016. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  2017. (__v8hi) __Y, 1,
  2018. (__mmask8) -1);
  2019. }
  2020. extern __inline __mmask8
  2021. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2022. _mm_cmpge_epi16_mask (__m128i __X, __m128i __Y)
  2023. {
  2024. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  2025. (__v8hi) __Y, 5,
  2026. (__mmask8) -1);
  2027. }
  2028. extern __inline __mmask8
  2029. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2030. _mm_cmple_epi16_mask (__m128i __X, __m128i __Y)
  2031. {
  2032. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  2033. (__v8hi) __Y, 2,
  2034. (__mmask8) -1);
  2035. }
  2036. extern __inline __m256i
  2037. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2038. _mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
  2039. __m256i __Y)
  2040. {
  2041. return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
  2042. (__v16hi) __Y,
  2043. (__v16hi) __W,
  2044. (__mmask16) __U);
  2045. }
  2046. extern __inline __m256i
  2047. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2048. _mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
  2049. {
  2050. return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
  2051. (__v16hi) __Y,
  2052. (__v16hi)
  2053. _mm256_setzero_si256 (),
  2054. (__mmask16) __U);
  2055. }
  2056. extern __inline __m256i
  2057. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2058. _mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
  2059. __m256i __B)
  2060. {
  2061. return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
  2062. (__v16hi) __B,
  2063. (__v16hi) __W,
  2064. (__mmask16) __U);
  2065. }
  2066. extern __inline __m256i
  2067. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2068. _mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
  2069. {
  2070. return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
  2071. (__v16hi) __B,
  2072. (__v16hi)
  2073. _mm256_setzero_si256 (),
  2074. (__mmask16) __U);
  2075. }
  2076. extern __inline __m256i
  2077. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2078. _mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2079. __m256i __B)
  2080. {
  2081. return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
  2082. (__v16hi) __B,
  2083. (__v16hi) __W,
  2084. (__mmask16) __U);
  2085. }
  2086. extern __inline __m256i
  2087. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2088. _mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2089. {
  2090. return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
  2091. (__v16hi) __B,
  2092. (__v16hi)
  2093. _mm256_setzero_si256 (),
  2094. (__mmask16) __U);
  2095. }
  2096. extern __inline __m128i
  2097. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2098. _mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  2099. __m128i __B)
  2100. {
  2101. return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
  2102. (__v8hi) __B,
  2103. (__v8hi) __W,
  2104. (__mmask8) __U);
  2105. }
  2106. extern __inline __m128i
  2107. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2108. _mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  2109. {
  2110. return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
  2111. (__v8hi) __B,
  2112. (__v8hi)
  2113. _mm_setzero_si128 (),
  2114. (__mmask8) __U);
  2115. }
  2116. extern __inline __m128i
  2117. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2118. _mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
  2119. __m128i __B)
  2120. {
  2121. return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
  2122. (__v8hi) __B,
  2123. (__v8hi) __W,
  2124. (__mmask8) __U);
  2125. }
  2126. extern __inline __m128i
  2127. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2128. _mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
  2129. {
  2130. return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
  2131. (__v8hi) __B,
  2132. (__v8hi)
  2133. _mm_setzero_si128 (),
  2134. (__mmask8) __U);
  2135. }
  2136. extern __inline __m128i
  2137. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2138. _mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
  2139. __m128i __Y)
  2140. {
  2141. return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
  2142. (__v8hi) __Y,
  2143. (__v8hi) __W,
  2144. (__mmask8) __U);
  2145. }
  2146. extern __inline __m128i
  2147. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2148. _mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
  2149. {
  2150. return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
  2151. (__v8hi) __Y,
  2152. (__v8hi)
  2153. _mm_setzero_si128 (),
  2154. (__mmask8) __U);
  2155. }
  2156. extern __inline __m256i
  2157. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2158. _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2159. __m256i __B)
  2160. {
  2161. return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
  2162. (__v16hi) __B,
  2163. (__v16hi) __W,
  2164. (__mmask16) __U);
  2165. }
  2166. extern __inline __m256i
  2167. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2168. _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2169. {
  2170. return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
  2171. (__v16hi) __B,
  2172. (__v16hi)
  2173. _mm256_setzero_si256 (),
  2174. (__mmask16) __U);
  2175. }
  2176. extern __inline __m128i
  2177. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2178. _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  2179. __m128i __B)
  2180. {
  2181. return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
  2182. (__v8hi) __B,
  2183. (__v8hi) __W,
  2184. (__mmask8) __U);
  2185. }
  2186. extern __inline __m128i
  2187. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2188. _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  2189. {
  2190. return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
  2191. (__v8hi) __B,
  2192. (__v8hi)
  2193. _mm_setzero_si128 (),
  2194. (__mmask8) __U);
  2195. }
  2196. extern __inline __m256i
  2197. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2198. _mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask16 __U, __m128i __A)
  2199. {
  2200. return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
  2201. (__v16hi) __W,
  2202. (__mmask16) __U);
  2203. }
  2204. extern __inline __m256i
  2205. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2206. _mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
  2207. {
  2208. return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
  2209. (__v16hi)
  2210. _mm256_setzero_si256 (),
  2211. (__mmask16) __U);
  2212. }
  2213. extern __inline __m128i
  2214. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2215. _mm_mask_cvtepi8_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  2216. {
  2217. return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
  2218. (__v8hi) __W,
  2219. (__mmask8) __U);
  2220. }
  2221. extern __inline __m128i
  2222. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2223. _mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
  2224. {
  2225. return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
  2226. (__v8hi)
  2227. _mm_setzero_si128 (),
  2228. (__mmask8) __U);
  2229. }
  2230. extern __inline __m256i
  2231. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2232. _mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask16 __U, __m128i __A)
  2233. {
  2234. return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
  2235. (__v16hi) __W,
  2236. (__mmask16) __U);
  2237. }
  2238. extern __inline __m256i
  2239. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2240. _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
  2241. {
  2242. return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
  2243. (__v16hi)
  2244. _mm256_setzero_si256 (),
  2245. (__mmask16) __U);
  2246. }
  2247. extern __inline __m128i
  2248. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2249. _mm_mask_cvtepu8_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  2250. {
  2251. return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
  2252. (__v8hi) __W,
  2253. (__mmask8) __U);
  2254. }
  2255. extern __inline __m128i
  2256. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2257. _mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
  2258. {
  2259. return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
  2260. (__v8hi)
  2261. _mm_setzero_si128 (),
  2262. (__mmask8) __U);
  2263. }
  2264. extern __inline __m256i
  2265. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2266. _mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
  2267. __m256i __B)
  2268. {
  2269. return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
  2270. (__v32qi) __B,
  2271. (__v32qi) __W,
  2272. (__mmask32) __U);
  2273. }
  2274. extern __inline __m256i
  2275. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2276. _mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
  2277. {
  2278. return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
  2279. (__v32qi) __B,
  2280. (__v32qi)
  2281. _mm256_setzero_si256 (),
  2282. (__mmask32) __U);
  2283. }
  2284. extern __inline __m128i
  2285. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2286. _mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
  2287. __m128i __B)
  2288. {
  2289. return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
  2290. (__v16qi) __B,
  2291. (__v16qi) __W,
  2292. (__mmask16) __U);
  2293. }
  2294. extern __inline __m128i
  2295. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2296. _mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
  2297. {
  2298. return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
  2299. (__v16qi) __B,
  2300. (__v16qi)
  2301. _mm_setzero_si128 (),
  2302. (__mmask16) __U);
  2303. }
  2304. extern __inline __m256i
  2305. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2306. _mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
  2307. __m256i __B)
  2308. {
  2309. return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
  2310. (__v16hi) __B,
  2311. (__v16hi) __W,
  2312. (__mmask16) __U);
  2313. }
  2314. extern __inline __m256i
  2315. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2316. _mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
  2317. {
  2318. return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
  2319. (__v16hi) __B,
  2320. (__v16hi)
  2321. _mm256_setzero_si256 (),
  2322. (__mmask16) __U);
  2323. }
  2324. extern __inline __m128i
  2325. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2326. _mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
  2327. __m128i __B)
  2328. {
  2329. return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
  2330. (__v8hi) __B,
  2331. (__v8hi) __W,
  2332. (__mmask8) __U);
  2333. }
  2334. extern __inline __m128i
  2335. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2336. _mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
  2337. {
  2338. return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
  2339. (__v8hi) __B,
  2340. (__v8hi)
  2341. _mm_setzero_si128 (),
  2342. (__mmask8) __U);
  2343. }
  2344. extern __inline __m256i
  2345. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2346. _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  2347. __m256i __B)
  2348. {
  2349. return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
  2350. (__v32qi) __B,
  2351. (__v32qi) __W,
  2352. (__mmask32) __U);
  2353. }
  2354. extern __inline __m256i
  2355. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2356. _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  2357. {
  2358. return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
  2359. (__v32qi) __B,
  2360. (__v32qi)
  2361. _mm256_setzero_si256 (),
  2362. (__mmask32) __U);
  2363. }
  2364. extern __inline __m256i
  2365. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2366. _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2367. __m256i __B)
  2368. {
  2369. return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
  2370. (__v16hi) __B,
  2371. (__v16hi) __W,
  2372. (__mmask16) __U);
  2373. }
  2374. extern __inline __m256i
  2375. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2376. _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2377. {
  2378. return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
  2379. (__v16hi) __B,
  2380. (__v16hi)
  2381. _mm256_setzero_si256 (),
  2382. (__mmask16) __U);
  2383. }
  2384. extern __inline __m256i
  2385. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2386. _mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  2387. __m256i __B)
  2388. {
  2389. return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
  2390. (__v32qi) __B,
  2391. (__v32qi) __W,
  2392. (__mmask32) __U);
  2393. }
  2394. extern __inline __m256i
  2395. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2396. _mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  2397. {
  2398. return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
  2399. (__v32qi) __B,
  2400. (__v32qi)
  2401. _mm256_setzero_si256 (),
  2402. (__mmask32) __U);
  2403. }
  2404. extern __inline __m256i
  2405. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2406. _mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2407. __m256i __B)
  2408. {
  2409. return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
  2410. (__v16hi) __B,
  2411. (__v16hi) __W,
  2412. (__mmask16) __U);
  2413. }
  2414. extern __inline __m256i
  2415. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2416. _mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2417. {
  2418. return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
  2419. (__v16hi) __B,
  2420. (__v16hi)
  2421. _mm256_setzero_si256 (),
  2422. (__mmask16) __U);
  2423. }
  2424. extern __inline __m256i
  2425. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2426. _mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
  2427. __m256i __B)
  2428. {
  2429. return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
  2430. (__v32qi) __B,
  2431. (__v32qi) __W,
  2432. (__mmask32) __U);
  2433. }
  2434. extern __inline __m256i
  2435. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2436. _mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
  2437. {
  2438. return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
  2439. (__v32qi) __B,
  2440. (__v32qi)
  2441. _mm256_setzero_si256 (),
  2442. (__mmask32) __U);
  2443. }
  2444. extern __inline __m256i
  2445. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2446. _mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
  2447. __m256i __B)
  2448. {
  2449. return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
  2450. (__v16hi) __B,
  2451. (__v16hi) __W,
  2452. (__mmask16) __U);
  2453. }
  2454. extern __inline __m256i
  2455. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2456. _mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
  2457. {
  2458. return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
  2459. (__v16hi) __B,
  2460. (__v16hi)
  2461. _mm256_setzero_si256 (),
  2462. (__mmask16) __U);
  2463. }
  2464. extern __inline __m256i
  2465. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2466. _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  2467. __m256i __B)
  2468. {
  2469. return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
  2470. (__v32qi) __B,
  2471. (__v32qi) __W,
  2472. (__mmask32) __U);
  2473. }
  2474. extern __inline __m256i
  2475. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2476. _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  2477. {
  2478. return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
  2479. (__v32qi) __B,
  2480. (__v32qi)
  2481. _mm256_setzero_si256 (),
  2482. (__mmask32) __U);
  2483. }
  2484. extern __inline __m256i
  2485. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2486. _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2487. __m256i __B)
  2488. {
  2489. return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
  2490. (__v16hi) __B,
  2491. (__v16hi) __W,
  2492. (__mmask16) __U);
  2493. }
  2494. extern __inline __m256i
  2495. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2496. _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2497. {
  2498. return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
  2499. (__v16hi) __B,
  2500. (__v16hi)
  2501. _mm256_setzero_si256 (),
  2502. (__mmask16) __U);
  2503. }
  2504. extern __inline __m256i
  2505. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2506. _mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  2507. __m256i __B)
  2508. {
  2509. return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
  2510. (__v32qi) __B,
  2511. (__v32qi) __W,
  2512. (__mmask32) __U);
  2513. }
  2514. extern __inline __m256i
  2515. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2516. _mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  2517. {
  2518. return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
  2519. (__v32qi) __B,
  2520. (__v32qi)
  2521. _mm256_setzero_si256 (),
  2522. (__mmask32) __U);
  2523. }
  2524. extern __inline __m256i
  2525. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2526. _mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2527. __m256i __B)
  2528. {
  2529. return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
  2530. (__v16hi) __B,
  2531. (__v16hi) __W,
  2532. (__mmask16) __U);
  2533. }
  2534. extern __inline __m256i
  2535. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2536. _mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2537. {
  2538. return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
  2539. (__v16hi) __B,
  2540. (__v16hi)
  2541. _mm256_setzero_si256 (),
  2542. (__mmask16) __U);
  2543. }
  2544. extern __inline __m256i
  2545. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2546. _mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
  2547. __m256i __B)
  2548. {
  2549. return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
  2550. (__v32qi) __B,
  2551. (__v32qi) __W,
  2552. (__mmask32) __U);
  2553. }
  2554. extern __inline __m256i
  2555. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2556. _mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
  2557. {
  2558. return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
  2559. (__v32qi) __B,
  2560. (__v32qi)
  2561. _mm256_setzero_si256 (),
  2562. (__mmask32) __U);
  2563. }
  2564. extern __inline __m256i
  2565. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2566. _mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
  2567. __m256i __B)
  2568. {
  2569. return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
  2570. (__v16hi) __B,
  2571. (__v16hi) __W,
  2572. (__mmask16) __U);
  2573. }
  2574. extern __inline __m256i
  2575. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2576. _mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
  2577. {
  2578. return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
  2579. (__v16hi) __B,
  2580. (__v16hi)
  2581. _mm256_setzero_si256 (),
  2582. (__mmask16) __U);
  2583. }
  2584. extern __inline __m128i
  2585. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2586. _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  2587. __m128i __B)
  2588. {
  2589. return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
  2590. (__v16qi) __B,
  2591. (__v16qi) __W,
  2592. (__mmask16) __U);
  2593. }
  2594. extern __inline __m128i
  2595. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2596. _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  2597. {
  2598. return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
  2599. (__v16qi) __B,
  2600. (__v16qi)
  2601. _mm_setzero_si128 (),
  2602. (__mmask16) __U);
  2603. }
  2604. extern __inline __m128i
  2605. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2606. _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  2607. __m128i __B)
  2608. {
  2609. return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
  2610. (__v8hi) __B,
  2611. (__v8hi) __W,
  2612. (__mmask8) __U);
  2613. }
  2614. extern __inline __m128i
  2615. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2616. _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  2617. {
  2618. return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
  2619. (__v8hi) __B,
  2620. (__v8hi)
  2621. _mm_setzero_si128 (),
  2622. (__mmask8) __U);
  2623. }
  2624. extern __inline __m256i
  2625. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2626. _mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  2627. __m256i __B)
  2628. {
  2629. return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
  2630. (__v32qi) __B,
  2631. (__v32qi) __W,
  2632. (__mmask32) __U);
  2633. }
  2634. extern __inline __m256i
  2635. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2636. _mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  2637. {
  2638. return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
  2639. (__v32qi) __B,
  2640. (__v32qi)
  2641. _mm256_setzero_si256 (),
  2642. (__mmask32) __U);
  2643. }
  2644. extern __inline __m128i
  2645. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2646. _mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  2647. __m128i __B)
  2648. {
  2649. return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
  2650. (__v16qi) __B,
  2651. (__v16qi) __W,
  2652. (__mmask16) __U);
  2653. }
  2654. extern __inline __m128i
  2655. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2656. _mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  2657. {
  2658. return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
  2659. (__v16qi) __B,
  2660. (__v16qi)
  2661. _mm_setzero_si128 (),
  2662. (__mmask16) __U);
  2663. }
  2664. extern __inline __m256i
  2665. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2666. _mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2667. __m256i __B)
  2668. {
  2669. return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
  2670. (__v16hi) __B,
  2671. (__v16hi) __W,
  2672. (__mmask16) __U);
  2673. }
  2674. extern __inline __m256i
  2675. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2676. _mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2677. {
  2678. return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
  2679. (__v16hi) __B,
  2680. (__v16hi)
  2681. _mm256_setzero_si256 (),
  2682. (__mmask16) __U);
  2683. }
  2684. extern __inline __m128i
  2685. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2686. _mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  2687. __m128i __B)
  2688. {
  2689. return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
  2690. (__v8hi) __B,
  2691. (__v8hi) __W,
  2692. (__mmask8) __U);
  2693. }
  2694. extern __inline __m128i
  2695. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2696. _mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  2697. {
  2698. return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
  2699. (__v8hi) __B,
  2700. (__v8hi)
  2701. _mm_setzero_si128 (),
  2702. (__mmask8) __U);
  2703. }
  2704. extern __inline __m256i
  2705. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2706. _mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  2707. __m256i __B)
  2708. {
  2709. return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
  2710. (__v32qi) __B,
  2711. (__v32qi) __W,
  2712. (__mmask32) __U);
  2713. }
  2714. extern __inline __m256i
  2715. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2716. _mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  2717. {
  2718. return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
  2719. (__v32qi) __B,
  2720. (__v32qi)
  2721. _mm256_setzero_si256 (),
  2722. (__mmask32) __U);
  2723. }
  2724. extern __inline __m128i
  2725. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2726. _mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  2727. __m128i __B)
  2728. {
  2729. return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
  2730. (__v16qi) __B,
  2731. (__v16qi) __W,
  2732. (__mmask16) __U);
  2733. }
  2734. extern __inline __m128i
  2735. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2736. _mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  2737. {
  2738. return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
  2739. (__v16qi) __B,
  2740. (__v16qi)
  2741. _mm_setzero_si128 (),
  2742. (__mmask16) __U);
  2743. }
  2744. extern __inline __m256i
  2745. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2746. _mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  2747. __m256i __B)
  2748. {
  2749. return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
  2750. (__v16hi) __B,
  2751. (__v16hi) __W,
  2752. (__mmask16) __U);
  2753. }
  2754. extern __inline __m256i
  2755. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2756. _mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  2757. {
  2758. return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
  2759. (__v16hi) __B,
  2760. (__v16hi)
  2761. _mm256_setzero_si256 (),
  2762. (__mmask16) __U);
  2763. }
  2764. extern __inline __m128i
  2765. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2766. _mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  2767. __m128i __B)
  2768. {
  2769. return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
  2770. (__v8hi) __B,
  2771. (__v8hi) __W,
  2772. (__mmask8) __U);
  2773. }
  2774. extern __inline __m128i
  2775. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2776. _mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  2777. {
  2778. return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
  2779. (__v8hi) __B,
  2780. (__v8hi)
  2781. _mm_setzero_si128 (),
  2782. (__mmask8) __U);
  2783. }
  2784. extern __inline __mmask16
  2785. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2786. _mm_cmpeq_epi8_mask (__m128i __A, __m128i __B)
  2787. {
  2788. return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
  2789. (__v16qi) __B,
  2790. (__mmask16) -1);
  2791. }
  2792. extern __inline __mmask16
  2793. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2794. _mm_cmpeq_epu8_mask (__m128i __A, __m128i __B)
  2795. {
  2796. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
  2797. (__v16qi) __B, 0,
  2798. (__mmask16) -1);
  2799. }
  2800. extern __inline __mmask16
  2801. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2802. _mm_mask_cmpeq_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2803. {
  2804. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
  2805. (__v16qi) __B, 0,
  2806. __U);
  2807. }
  2808. extern __inline __mmask16
  2809. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2810. _mm_mask_cmpeq_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2811. {
  2812. return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
  2813. (__v16qi) __B,
  2814. __U);
  2815. }
  2816. extern __inline __mmask32
  2817. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2818. _mm256_cmpeq_epu8_mask (__m256i __A, __m256i __B)
  2819. {
  2820. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
  2821. (__v32qi) __B, 0,
  2822. (__mmask32) -1);
  2823. }
  2824. extern __inline __mmask32
  2825. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2826. _mm256_cmpeq_epi8_mask (__m256i __A, __m256i __B)
  2827. {
  2828. return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
  2829. (__v32qi) __B,
  2830. (__mmask32) -1);
  2831. }
  2832. extern __inline __mmask32
  2833. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2834. _mm256_mask_cmpeq_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2835. {
  2836. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
  2837. (__v32qi) __B, 0,
  2838. __U);
  2839. }
  2840. extern __inline __mmask32
  2841. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2842. _mm256_mask_cmpeq_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2843. {
  2844. return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
  2845. (__v32qi) __B,
  2846. __U);
  2847. }
  2848. extern __inline __mmask8
  2849. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2850. _mm_cmpeq_epu16_mask (__m128i __A, __m128i __B)
  2851. {
  2852. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
  2853. (__v8hi) __B, 0,
  2854. (__mmask8) -1);
  2855. }
  2856. extern __inline __mmask8
  2857. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2858. _mm_cmpeq_epi16_mask (__m128i __A, __m128i __B)
  2859. {
  2860. return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
  2861. (__v8hi) __B,
  2862. (__mmask8) -1);
  2863. }
  2864. extern __inline __mmask8
  2865. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2866. _mm_mask_cmpeq_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2867. {
  2868. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
  2869. (__v8hi) __B, 0, __U);
  2870. }
  2871. extern __inline __mmask8
  2872. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2873. _mm_mask_cmpeq_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2874. {
  2875. return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
  2876. (__v8hi) __B, __U);
  2877. }
  2878. extern __inline __mmask16
  2879. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2880. _mm256_cmpeq_epu16_mask (__m256i __A, __m256i __B)
  2881. {
  2882. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
  2883. (__v16hi) __B, 0,
  2884. (__mmask16) -1);
  2885. }
  2886. extern __inline __mmask16
  2887. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2888. _mm256_cmpeq_epi16_mask (__m256i __A, __m256i __B)
  2889. {
  2890. return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
  2891. (__v16hi) __B,
  2892. (__mmask16) -1);
  2893. }
  2894. extern __inline __mmask16
  2895. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2896. _mm256_mask_cmpeq_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  2897. {
  2898. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
  2899. (__v16hi) __B, 0,
  2900. __U);
  2901. }
  2902. extern __inline __mmask16
  2903. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2904. _mm256_mask_cmpeq_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  2905. {
  2906. return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
  2907. (__v16hi) __B,
  2908. __U);
  2909. }
  2910. extern __inline __mmask16
  2911. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2912. _mm_cmpgt_epu8_mask (__m128i __A, __m128i __B)
  2913. {
  2914. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
  2915. (__v16qi) __B, 6,
  2916. (__mmask16) -1);
  2917. }
  2918. extern __inline __mmask16
  2919. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2920. _mm_cmpgt_epi8_mask (__m128i __A, __m128i __B)
  2921. {
  2922. return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
  2923. (__v16qi) __B,
  2924. (__mmask16) -1);
  2925. }
  2926. extern __inline __mmask16
  2927. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2928. _mm_mask_cmpgt_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2929. {
  2930. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
  2931. (__v16qi) __B, 6,
  2932. __U);
  2933. }
  2934. extern __inline __mmask16
  2935. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2936. _mm_mask_cmpgt_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2937. {
  2938. return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
  2939. (__v16qi) __B,
  2940. __U);
  2941. }
  2942. extern __inline __mmask32
  2943. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2944. _mm256_cmpgt_epu8_mask (__m256i __A, __m256i __B)
  2945. {
  2946. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
  2947. (__v32qi) __B, 6,
  2948. (__mmask32) -1);
  2949. }
  2950. extern __inline __mmask32
  2951. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2952. _mm256_cmpgt_epi8_mask (__m256i __A, __m256i __B)
  2953. {
  2954. return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
  2955. (__v32qi) __B,
  2956. (__mmask32) -1);
  2957. }
  2958. extern __inline __mmask32
  2959. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2960. _mm256_mask_cmpgt_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2961. {
  2962. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
  2963. (__v32qi) __B, 6,
  2964. __U);
  2965. }
  2966. extern __inline __mmask32
  2967. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2968. _mm256_mask_cmpgt_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2969. {
  2970. return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
  2971. (__v32qi) __B,
  2972. __U);
  2973. }
  2974. extern __inline __mmask8
  2975. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2976. _mm_cmpgt_epu16_mask (__m128i __A, __m128i __B)
  2977. {
  2978. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
  2979. (__v8hi) __B, 6,
  2980. (__mmask8) -1);
  2981. }
  2982. extern __inline __mmask8
  2983. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2984. _mm_cmpgt_epi16_mask (__m128i __A, __m128i __B)
  2985. {
  2986. return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
  2987. (__v8hi) __B,
  2988. (__mmask8) -1);
  2989. }
  2990. extern __inline __mmask8
  2991. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2992. _mm_mask_cmpgt_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2993. {
  2994. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
  2995. (__v8hi) __B, 6, __U);
  2996. }
  2997. extern __inline __mmask8
  2998. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2999. _mm_mask_cmpgt_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  3000. {
  3001. return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
  3002. (__v8hi) __B, __U);
  3003. }
  3004. extern __inline __mmask16
  3005. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3006. _mm256_cmpgt_epu16_mask (__m256i __A, __m256i __B)
  3007. {
  3008. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
  3009. (__v16hi) __B, 6,
  3010. (__mmask16) -1);
  3011. }
  3012. extern __inline __mmask16
  3013. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3014. _mm256_cmpgt_epi16_mask (__m256i __A, __m256i __B)
  3015. {
  3016. return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
  3017. (__v16hi) __B,
  3018. (__mmask16) -1);
  3019. }
  3020. extern __inline __mmask16
  3021. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3022. _mm256_mask_cmpgt_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  3023. {
  3024. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
  3025. (__v16hi) __B, 6,
  3026. __U);
  3027. }
  3028. extern __inline __mmask16
  3029. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3030. _mm256_mask_cmpgt_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  3031. {
  3032. return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
  3033. (__v16hi) __B,
  3034. __U);
  3035. }
  3036. extern __inline __mmask16
  3037. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3038. _mm_testn_epi8_mask (__m128i __A, __m128i __B)
  3039. {
  3040. return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
  3041. (__v16qi) __B,
  3042. (__mmask16) -1);
  3043. }
  3044. extern __inline __mmask16
  3045. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3046. _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  3047. {
  3048. return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
  3049. (__v16qi) __B, __U);
  3050. }
  3051. extern __inline __mmask32
  3052. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3053. _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
  3054. {
  3055. return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
  3056. (__v32qi) __B,
  3057. (__mmask32) -1);
  3058. }
  3059. extern __inline __mmask32
  3060. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3061. _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  3062. {
  3063. return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
  3064. (__v32qi) __B, __U);
  3065. }
  3066. extern __inline __mmask8
  3067. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3068. _mm_testn_epi16_mask (__m128i __A, __m128i __B)
  3069. {
  3070. return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
  3071. (__v8hi) __B,
  3072. (__mmask8) -1);
  3073. }
  3074. extern __inline __mmask8
  3075. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3076. _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  3077. {
  3078. return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
  3079. (__v8hi) __B, __U);
  3080. }
  3081. extern __inline __mmask16
  3082. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3083. _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
  3084. {
  3085. return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
  3086. (__v16hi) __B,
  3087. (__mmask16) -1);
  3088. }
  3089. extern __inline __mmask16
  3090. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3091. _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  3092. {
  3093. return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
  3094. (__v16hi) __B, __U);
  3095. }
  3096. extern __inline __m256i
  3097. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3098. _mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
  3099. __m256i __B)
  3100. {
  3101. return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
  3102. (__v32qi) __B,
  3103. (__v32qi) __W,
  3104. (__mmask32) __U);
  3105. }
  3106. extern __inline __m256i
  3107. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3108. _mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
  3109. {
  3110. return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
  3111. (__v32qi) __B,
  3112. (__v32qi)
  3113. _mm256_setzero_si256 (),
  3114. (__mmask32) __U);
  3115. }
  3116. extern __inline __m128i
  3117. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3118. _mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  3119. __m128i __B)
  3120. {
  3121. return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
  3122. (__v16qi) __B,
  3123. (__v16qi) __W,
  3124. (__mmask16) __U);
  3125. }
  3126. extern __inline __m128i
  3127. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3128. _mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  3129. {
  3130. return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
  3131. (__v16qi) __B,
  3132. (__v16qi)
  3133. _mm_setzero_si128 (),
  3134. (__mmask16) __U);
  3135. }
  3136. extern __inline __m256i
  3137. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3138. _mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
  3139. {
  3140. return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
  3141. (__v16hi) __B,
  3142. (__v32qi)
  3143. _mm256_setzero_si256 (),
  3144. __M);
  3145. }
  3146. extern __inline __m256i
  3147. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3148. _mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
  3149. __m256i __B)
  3150. {
  3151. return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
  3152. (__v16hi) __B,
  3153. (__v32qi) __W,
  3154. __M);
  3155. }
  3156. extern __inline __m128i
  3157. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3158. _mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
  3159. {
  3160. return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
  3161. (__v8hi) __B,
  3162. (__v16qi)
  3163. _mm_setzero_si128 (),
  3164. __M);
  3165. }
  3166. extern __inline __m128i
  3167. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3168. _mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
  3169. __m128i __B)
  3170. {
  3171. return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
  3172. (__v8hi) __B,
  3173. (__v16qi) __W,
  3174. __M);
  3175. }
  3176. extern __inline __m256i
  3177. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3178. _mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
  3179. {
  3180. return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
  3181. (__v16hi) __B,
  3182. (__v32qi)
  3183. _mm256_setzero_si256 (),
  3184. __M);
  3185. }
  3186. extern __inline __m256i
  3187. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3188. _mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
  3189. __m256i __B)
  3190. {
  3191. return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
  3192. (__v16hi) __B,
  3193. (__v32qi) __W,
  3194. __M);
  3195. }
  3196. extern __inline __m128i
  3197. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3198. _mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
  3199. {
  3200. return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
  3201. (__v8hi) __B,
  3202. (__v16qi)
  3203. _mm_setzero_si128 (),
  3204. __M);
  3205. }
  3206. extern __inline __m128i
  3207. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3208. _mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
  3209. __m128i __B)
  3210. {
  3211. return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
  3212. (__v8hi) __B,
  3213. (__v16qi) __W,
  3214. __M);
  3215. }
  3216. extern __inline __m256i
  3217. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3218. _mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
  3219. {
  3220. return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
  3221. (__v32qi) __W,
  3222. (__mmask32) __U);
  3223. }
  3224. extern __inline __m256i
  3225. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3226. _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
  3227. {
  3228. return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
  3229. (__v32qi)
  3230. _mm256_setzero_si256 (),
  3231. (__mmask32) __U);
  3232. }
  3233. extern __inline __m128i
  3234. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3235. _mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
  3236. {
  3237. return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
  3238. (__v16qi) __W,
  3239. (__mmask16) __U);
  3240. }
  3241. extern __inline __m128i
  3242. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3243. _mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
  3244. {
  3245. return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
  3246. (__v16qi)
  3247. _mm_setzero_si128 (),
  3248. (__mmask16) __U);
  3249. }
  3250. extern __inline __m256i
  3251. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3252. _mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
  3253. {
  3254. return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
  3255. (__v16hi) __W,
  3256. (__mmask16) __U);
  3257. }
  3258. extern __inline __m256i
  3259. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3260. _mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
  3261. {
  3262. return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
  3263. (__v16hi)
  3264. _mm256_setzero_si256 (),
  3265. (__mmask16) __U);
  3266. }
  3267. extern __inline __m128i
  3268. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3269. _mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  3270. {
  3271. return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
  3272. (__v8hi) __W,
  3273. (__mmask8) __U);
  3274. }
  3275. extern __inline __m128i
  3276. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3277. _mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
  3278. {
  3279. return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
  3280. (__v8hi)
  3281. _mm_setzero_si128 (),
  3282. (__mmask8) __U);
  3283. }
  3284. extern __inline __mmask32
  3285. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3286. _mm256_cmpneq_epu8_mask (__m256i __X, __m256i __Y)
  3287. {
  3288. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  3289. (__v32qi) __Y, 4,
  3290. (__mmask32) -1);
  3291. }
  3292. extern __inline __mmask32
  3293. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3294. _mm256_cmplt_epu8_mask (__m256i __X, __m256i __Y)
  3295. {
  3296. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  3297. (__v32qi) __Y, 1,
  3298. (__mmask32) -1);
  3299. }
  3300. extern __inline __mmask32
  3301. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3302. _mm256_cmpge_epu8_mask (__m256i __X, __m256i __Y)
  3303. {
  3304. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  3305. (__v32qi) __Y, 5,
  3306. (__mmask32) -1);
  3307. }
  3308. extern __inline __mmask32
  3309. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3310. _mm256_cmple_epu8_mask (__m256i __X, __m256i __Y)
  3311. {
  3312. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  3313. (__v32qi) __Y, 2,
  3314. (__mmask32) -1);
  3315. }
  3316. extern __inline __mmask16
  3317. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3318. _mm256_cmpneq_epu16_mask (__m256i __X, __m256i __Y)
  3319. {
  3320. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  3321. (__v16hi) __Y, 4,
  3322. (__mmask16) -1);
  3323. }
  3324. extern __inline __mmask16
  3325. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3326. _mm256_cmplt_epu16_mask (__m256i __X, __m256i __Y)
  3327. {
  3328. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  3329. (__v16hi) __Y, 1,
  3330. (__mmask16) -1);
  3331. }
  3332. extern __inline __mmask16
  3333. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3334. _mm256_cmpge_epu16_mask (__m256i __X, __m256i __Y)
  3335. {
  3336. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  3337. (__v16hi) __Y, 5,
  3338. (__mmask16) -1);
  3339. }
  3340. extern __inline __mmask16
  3341. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3342. _mm256_cmple_epu16_mask (__m256i __X, __m256i __Y)
  3343. {
  3344. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  3345. (__v16hi) __Y, 2,
  3346. (__mmask16) -1);
  3347. }
  3348. extern __inline void
  3349. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3350. _mm256_storeu_epi16 (void *__P, __m256i __A)
  3351. {
  3352. *(__v16hi_u *) __P = (__v16hi_u) __A;
  3353. }
  3354. extern __inline void
  3355. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3356. _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
  3357. {
  3358. __builtin_ia32_storedquhi256_mask ((short *) __P,
  3359. (__v16hi) __A,
  3360. (__mmask16) __U);
  3361. }
  3362. extern __inline void
  3363. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3364. _mm_storeu_epi16 (void *__P, __m128i __A)
  3365. {
  3366. *(__v8hi_u *) __P = (__v8hi_u) __A;
  3367. }
  3368. extern __inline void
  3369. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3370. _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
  3371. {
  3372. __builtin_ia32_storedquhi128_mask ((short *) __P,
  3373. (__v8hi) __A,
  3374. (__mmask8) __U);
  3375. }
  3376. extern __inline __m128i
  3377. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3378. _mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3379. __m128i __B)
  3380. {
  3381. return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
  3382. (__v8hi) __B,
  3383. (__v8hi) __W,
  3384. (__mmask8) __U);
  3385. }
  3386. extern __inline __m128i
  3387. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3388. _mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  3389. __m128i __B)
  3390. {
  3391. return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
  3392. (__v16qi) __B,
  3393. (__v16qi) __W,
  3394. (__mmask16) __U);
  3395. }
  3396. extern __inline __m128i
  3397. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3398. _mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  3399. {
  3400. return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
  3401. (__v16qi) __B,
  3402. (__v16qi)
  3403. _mm_setzero_si128 (),
  3404. (__mmask16) __U);
  3405. }
  3406. extern __inline __m128i
  3407. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3408. _mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3409. __m128i __B)
  3410. {
  3411. return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
  3412. (__v8hi) __B,
  3413. (__v8hi) __W,
  3414. (__mmask8) __U);
  3415. }
  3416. extern __inline __m128i
  3417. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3418. _mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3419. {
  3420. return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
  3421. (__v8hi) __B,
  3422. (__v8hi)
  3423. _mm_setzero_si128 (),
  3424. (__mmask8) __U);
  3425. }
  3426. extern __inline __m128i
  3427. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3428. _mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
  3429. __m128i __B)
  3430. {
  3431. return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
  3432. (__v16qi) __B,
  3433. (__v16qi) __W,
  3434. (__mmask16) __U);
  3435. }
  3436. extern __inline __m128i
  3437. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3438. _mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
  3439. {
  3440. return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
  3441. (__v16qi) __B,
  3442. (__v16qi)
  3443. _mm_setzero_si128 (),
  3444. (__mmask16) __U);
  3445. }
  3446. extern __inline __m128i
  3447. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3448. _mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
  3449. __m128i __B)
  3450. {
  3451. return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
  3452. (__v8hi) __B,
  3453. (__v8hi) __W,
  3454. (__mmask8) __U);
  3455. }
  3456. extern __inline __m128i
  3457. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3458. _mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
  3459. {
  3460. return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
  3461. (__v8hi) __B,
  3462. (__v8hi)
  3463. _mm_setzero_si128 (),
  3464. (__mmask8) __U);
  3465. }
  3466. extern __inline __m256i
  3467. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3468. _mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  3469. __m128i __B)
  3470. {
  3471. return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
  3472. (__v8hi) __B,
  3473. (__v16hi) __W,
  3474. (__mmask16) __U);
  3475. }
  3476. extern __inline __m256i
  3477. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3478. _mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
  3479. {
  3480. return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
  3481. (__v8hi) __B,
  3482. (__v16hi)
  3483. _mm256_setzero_si256 (),
  3484. (__mmask16) __U);
  3485. }
  3486. extern __inline __m128i
  3487. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3488. _mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3489. __m128i __B)
  3490. {
  3491. return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
  3492. (__v8hi) __B,
  3493. (__v8hi) __W,
  3494. (__mmask8) __U);
  3495. }
  3496. extern __inline __m128i
  3497. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3498. _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3499. {
  3500. return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
  3501. (__v8hi) __B,
  3502. (__v8hi)
  3503. _mm_setzero_si128 (),
  3504. (__mmask8) __U);
  3505. }
  3506. extern __inline __m256i
  3507. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3508. _mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  3509. __m128i __B)
  3510. {
  3511. return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
  3512. (__v8hi) __B,
  3513. (__v16hi) __W,
  3514. (__mmask16) __U);
  3515. }
  3516. extern __inline __m256i
  3517. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3518. _mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
  3519. {
  3520. return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
  3521. (__v8hi) __B,
  3522. (__v16hi)
  3523. _mm256_setzero_si256 (),
  3524. (__mmask16) __U);
  3525. }
  3526. extern __inline __m128i
  3527. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3528. _mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3529. __m128i __B)
  3530. {
  3531. return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
  3532. (__v8hi) __B,
  3533. (__v8hi) __W,
  3534. (__mmask8) __U);
  3535. }
  3536. extern __inline __m128i
  3537. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3538. _mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3539. {
  3540. return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
  3541. (__v8hi) __B,
  3542. (__v8hi)
  3543. _mm_setzero_si128 (),
  3544. (__mmask8) __U);
  3545. }
  3546. extern __inline __m128i
  3547. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3548. _mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3549. {
  3550. return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
  3551. (__v8hi) __B,
  3552. (__v8hi)
  3553. _mm_setzero_si128 (),
  3554. (__mmask8) __U);
  3555. }
  3556. extern __inline __m128i
  3557. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3558. _mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
  3559. __m128i __B)
  3560. {
  3561. return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
  3562. (__v16qi) __B,
  3563. (__v16qi) __W,
  3564. (__mmask16) __U);
  3565. }
  3566. extern __inline __m128i
  3567. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3568. _mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
  3569. {
  3570. return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
  3571. (__v16qi) __B,
  3572. (__v16qi)
  3573. _mm_setzero_si128 (),
  3574. (__mmask16) __U);
  3575. }
  3576. extern __inline __m128i
  3577. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3578. _mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
  3579. __m128i __B)
  3580. {
  3581. return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
  3582. (__v8hi) __B,
  3583. (__v8hi) __W,
  3584. (__mmask8) __U);
  3585. }
  3586. extern __inline __m128i
  3587. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3588. _mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
  3589. {
  3590. return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
  3591. (__v8hi) __B,
  3592. (__v8hi)
  3593. _mm_setzero_si128 (),
  3594. (__mmask8) __U);
  3595. }
  3596. extern __inline __m128i
  3597. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3598. _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  3599. __m128i __B)
  3600. {
  3601. return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
  3602. (__v16qi) __B,
  3603. (__v16qi) __W,
  3604. (__mmask16) __U);
  3605. }
  3606. extern __inline __m128i
  3607. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3608. _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  3609. {
  3610. return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
  3611. (__v16qi) __B,
  3612. (__v16qi)
  3613. _mm_setzero_si128 (),
  3614. (__mmask16) __U);
  3615. }
  3616. extern __inline __m128i
  3617. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3618. _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3619. __m128i __B)
  3620. {
  3621. return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
  3622. (__v8hi) __B,
  3623. (__v8hi) __W,
  3624. (__mmask8) __U);
  3625. }
  3626. extern __inline __m128i
  3627. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3628. _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3629. {
  3630. return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
  3631. (__v8hi) __B,
  3632. (__v8hi)
  3633. _mm_setzero_si128 (),
  3634. (__mmask8) __U);
  3635. }
  3636. extern __inline __m128i
  3637. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3638. _mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
  3639. __m128i __B)
  3640. {
  3641. return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
  3642. (__v16qi) __B,
  3643. (__v16qi) __W,
  3644. (__mmask16) __U);
  3645. }
  3646. extern __inline __m128i
  3647. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3648. _mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
  3649. {
  3650. return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
  3651. (__v16qi) __B,
  3652. (__v16qi)
  3653. _mm_setzero_si128 (),
  3654. (__mmask16) __U);
  3655. }
  3656. extern __inline __m128i
  3657. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3658. _mm_cvtepi16_epi8 (__m128i __A)
  3659. {
  3660. return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  3661. (__v16qi)_mm_undefined_si128(),
  3662. (__mmask8) -1);
  3663. }
  3664. extern __inline void
  3665. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3666. _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
  3667. {
  3668. __builtin_ia32_pmovwb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
  3669. }
  3670. extern __inline __m128i
  3671. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3672. _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
  3673. {
  3674. return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  3675. (__v16qi) __O, __M);
  3676. }
  3677. extern __inline __m128i
  3678. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3679. _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A)
  3680. {
  3681. return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  3682. (__v16qi)
  3683. _mm_setzero_si128 (),
  3684. __M);
  3685. }
  3686. extern __inline __m256i
  3687. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3688. _mm256_srav_epi16 (__m256i __A, __m256i __B)
  3689. {
  3690. return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
  3691. (__v16hi) __B,
  3692. (__v16hi)
  3693. _mm256_setzero_si256 (),
  3694. (__mmask16) -1);
  3695. }
  3696. extern __inline __m256i
  3697. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3698. _mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  3699. __m256i __B)
  3700. {
  3701. return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
  3702. (__v16hi) __B,
  3703. (__v16hi) __W,
  3704. (__mmask16) __U);
  3705. }
  3706. extern __inline __m256i
  3707. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3708. _mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  3709. {
  3710. return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
  3711. (__v16hi) __B,
  3712. (__v16hi)
  3713. _mm256_setzero_si256 (),
  3714. (__mmask16) __U);
  3715. }
  3716. extern __inline __m128i
  3717. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3718. _mm_srav_epi16 (__m128i __A, __m128i __B)
  3719. {
  3720. return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
  3721. (__v8hi) __B,
  3722. (__v8hi)
  3723. _mm_setzero_si128 (),
  3724. (__mmask8) -1);
  3725. }
  3726. extern __inline __m128i
  3727. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3728. _mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3729. __m128i __B)
  3730. {
  3731. return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
  3732. (__v8hi) __B,
  3733. (__v8hi) __W,
  3734. (__mmask8) __U);
  3735. }
  3736. extern __inline __m128i
  3737. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3738. _mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3739. {
  3740. return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
  3741. (__v8hi) __B,
  3742. (__v8hi)
  3743. _mm_setzero_si128 (),
  3744. (__mmask8) __U);
  3745. }
  3746. extern __inline __m256i
  3747. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3748. _mm256_srlv_epi16 (__m256i __A, __m256i __B)
  3749. {
  3750. return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
  3751. (__v16hi) __B,
  3752. (__v16hi)
  3753. _mm256_setzero_si256 (),
  3754. (__mmask16) -1);
  3755. }
  3756. extern __inline __m256i
  3757. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3758. _mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  3759. __m256i __B)
  3760. {
  3761. return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
  3762. (__v16hi) __B,
  3763. (__v16hi) __W,
  3764. (__mmask16) __U);
  3765. }
  3766. extern __inline __m256i
  3767. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3768. _mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  3769. {
  3770. return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
  3771. (__v16hi) __B,
  3772. (__v16hi)
  3773. _mm256_setzero_si256 (),
  3774. (__mmask16) __U);
  3775. }
  3776. extern __inline __m128i
  3777. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3778. _mm_srlv_epi16 (__m128i __A, __m128i __B)
  3779. {
  3780. return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
  3781. (__v8hi) __B,
  3782. (__v8hi)
  3783. _mm_setzero_si128 (),
  3784. (__mmask8) -1);
  3785. }
  3786. extern __inline __m128i
  3787. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3788. _mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3789. __m128i __B)
  3790. {
  3791. return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
  3792. (__v8hi) __B,
  3793. (__v8hi) __W,
  3794. (__mmask8) __U);
  3795. }
  3796. extern __inline __m128i
  3797. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3798. _mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3799. {
  3800. return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
  3801. (__v8hi) __B,
  3802. (__v8hi)
  3803. _mm_setzero_si128 (),
  3804. (__mmask8) __U);
  3805. }
  3806. extern __inline __m256i
  3807. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3808. _mm256_sllv_epi16 (__m256i __A, __m256i __B)
  3809. {
  3810. return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
  3811. (__v16hi) __B,
  3812. (__v16hi)
  3813. _mm256_setzero_si256 (),
  3814. (__mmask16) -1);
  3815. }
  3816. extern __inline __m256i
  3817. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3818. _mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  3819. __m256i __B)
  3820. {
  3821. return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
  3822. (__v16hi) __B,
  3823. (__v16hi) __W,
  3824. (__mmask16) __U);
  3825. }
  3826. extern __inline __m256i
  3827. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3828. _mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
  3829. {
  3830. return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
  3831. (__v16hi) __B,
  3832. (__v16hi)
  3833. _mm256_setzero_si256 (),
  3834. (__mmask16) __U);
  3835. }
  3836. extern __inline __m128i
  3837. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3838. _mm_sllv_epi16 (__m128i __A, __m128i __B)
  3839. {
  3840. return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
  3841. (__v8hi) __B,
  3842. (__v8hi)
  3843. _mm_setzero_si128 (),
  3844. (__mmask8) -1);
  3845. }
  3846. extern __inline __m128i
  3847. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3848. _mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3849. __m128i __B)
  3850. {
  3851. return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
  3852. (__v8hi) __B,
  3853. (__v8hi) __W,
  3854. (__mmask8) __U);
  3855. }
  3856. extern __inline __m128i
  3857. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3858. _mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3859. {
  3860. return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
  3861. (__v8hi) __B,
  3862. (__v8hi)
  3863. _mm_setzero_si128 (),
  3864. (__mmask8) __U);
  3865. }
  3866. extern __inline __m128i
  3867. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3868. _mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
  3869. __m128i __B)
  3870. {
  3871. return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
  3872. (__v8hi) __B,
  3873. (__v8hi) __W,
  3874. (__mmask8) __U);
  3875. }
  3876. extern __inline __m128i
  3877. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3878. _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  3879. {
  3880. return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
  3881. (__v8hi) __B,
  3882. (__v8hi)
  3883. _mm_setzero_si128 (),
  3884. (__mmask8) __U);
  3885. }
  3886. extern __inline __m256i
  3887. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3888. _mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
  3889. __m128i __B)
  3890. {
  3891. return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
  3892. (__v8hi) __B,
  3893. (__v16hi) __W,
  3894. (__mmask16) __U);
  3895. }
  3896. extern __inline __m256i
  3897. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3898. _mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
  3899. {
  3900. return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
  3901. (__v8hi) __B,
  3902. (__v16hi)
  3903. _mm256_setzero_si256 (),
  3904. (__mmask16) __U);
  3905. }
  3906. extern __inline __m256i
  3907. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3908. _mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
  3909. {
  3910. return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
  3911. (__v8si) __B,
  3912. (__v16hi)
  3913. _mm256_setzero_si256 (),
  3914. __M);
  3915. }
  3916. extern __inline __m256i
  3917. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3918. _mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
  3919. __m256i __B)
  3920. {
  3921. return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
  3922. (__v8si) __B,
  3923. (__v16hi) __W,
  3924. __M);
  3925. }
  3926. extern __inline __m128i
  3927. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3928. _mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
  3929. {
  3930. return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
  3931. (__v4si) __B,
  3932. (__v8hi)
  3933. _mm_setzero_si128 (),
  3934. __M);
  3935. }
  3936. extern __inline __m128i
  3937. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3938. _mm_mask_packus_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
  3939. __m128i __B)
  3940. {
  3941. return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
  3942. (__v4si) __B,
  3943. (__v8hi) __W, __M);
  3944. }
  3945. extern __inline __m256i
  3946. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3947. _mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
  3948. {
  3949. return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
  3950. (__v8si) __B,
  3951. (__v16hi)
  3952. _mm256_setzero_si256 (),
  3953. __M);
  3954. }
  3955. extern __inline __m256i
  3956. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3957. _mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
  3958. __m256i __B)
  3959. {
  3960. return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
  3961. (__v8si) __B,
  3962. (__v16hi) __W,
  3963. __M);
  3964. }
  3965. extern __inline __m128i
  3966. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3967. _mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
  3968. {
  3969. return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
  3970. (__v4si) __B,
  3971. (__v8hi)
  3972. _mm_setzero_si128 (),
  3973. __M);
  3974. }
  3975. extern __inline __m128i
  3976. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3977. _mm_mask_packs_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
  3978. __m128i __B)
  3979. {
  3980. return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
  3981. (__v4si) __B,
  3982. (__v8hi) __W, __M);
  3983. }
  3984. extern __inline __mmask16
  3985. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3986. _mm_mask_cmpneq_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  3987. {
  3988. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  3989. (__v16qi) __Y, 4,
  3990. (__mmask16) __M);
  3991. }
  3992. extern __inline __mmask16
  3993. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  3994. _mm_mask_cmplt_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  3995. {
  3996. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  3997. (__v16qi) __Y, 1,
  3998. (__mmask16) __M);
  3999. }
  4000. extern __inline __mmask16
  4001. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4002. _mm_mask_cmpge_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  4003. {
  4004. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  4005. (__v16qi) __Y, 5,
  4006. (__mmask16) __M);
  4007. }
  4008. extern __inline __mmask16
  4009. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4010. _mm_mask_cmple_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  4011. {
  4012. return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
  4013. (__v16qi) __Y, 2,
  4014. (__mmask16) __M);
  4015. }
  4016. extern __inline __mmask8
  4017. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4018. _mm_mask_cmpneq_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4019. {
  4020. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  4021. (__v8hi) __Y, 4,
  4022. (__mmask8) __M);
  4023. }
  4024. extern __inline __mmask8
  4025. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4026. _mm_mask_cmplt_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4027. {
  4028. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  4029. (__v8hi) __Y, 1,
  4030. (__mmask8) __M);
  4031. }
  4032. extern __inline __mmask8
  4033. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4034. _mm_mask_cmpge_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4035. {
  4036. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  4037. (__v8hi) __Y, 5,
  4038. (__mmask8) __M);
  4039. }
  4040. extern __inline __mmask8
  4041. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4042. _mm_mask_cmple_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4043. {
  4044. return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
  4045. (__v8hi) __Y, 2,
  4046. (__mmask8) __M);
  4047. }
  4048. extern __inline __mmask16
  4049. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4050. _mm_mask_cmpneq_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  4051. {
  4052. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  4053. (__v16qi) __Y, 4,
  4054. (__mmask16) __M);
  4055. }
  4056. extern __inline __mmask16
  4057. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4058. _mm_mask_cmplt_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  4059. {
  4060. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  4061. (__v16qi) __Y, 1,
  4062. (__mmask16) __M);
  4063. }
  4064. extern __inline __mmask16
  4065. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4066. _mm_mask_cmpge_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  4067. {
  4068. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  4069. (__v16qi) __Y, 5,
  4070. (__mmask16) __M);
  4071. }
  4072. extern __inline __mmask16
  4073. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4074. _mm_mask_cmple_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
  4075. {
  4076. return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
  4077. (__v16qi) __Y, 2,
  4078. (__mmask16) __M);
  4079. }
  4080. extern __inline __mmask8
  4081. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4082. _mm_mask_cmpneq_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4083. {
  4084. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  4085. (__v8hi) __Y, 4,
  4086. (__mmask8) __M);
  4087. }
  4088. extern __inline __mmask8
  4089. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4090. _mm_mask_cmplt_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4091. {
  4092. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  4093. (__v8hi) __Y, 1,
  4094. (__mmask8) __M);
  4095. }
  4096. extern __inline __mmask8
  4097. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4098. _mm_mask_cmpge_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4099. {
  4100. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  4101. (__v8hi) __Y, 5,
  4102. (__mmask8) __M);
  4103. }
  4104. extern __inline __mmask8
  4105. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4106. _mm_mask_cmple_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
  4107. {
  4108. return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
  4109. (__v8hi) __Y, 2,
  4110. (__mmask8) __M);
  4111. }
  4112. extern __inline __mmask32
  4113. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4114. _mm256_mask_cmpneq_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4115. {
  4116. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  4117. (__v32qi) __Y, 4,
  4118. (__mmask32) __M);
  4119. }
  4120. extern __inline __mmask32
  4121. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4122. _mm256_mask_cmplt_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4123. {
  4124. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  4125. (__v32qi) __Y, 1,
  4126. (__mmask32) __M);
  4127. }
  4128. extern __inline __mmask32
  4129. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4130. _mm256_mask_cmpge_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4131. {
  4132. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  4133. (__v32qi) __Y, 5,
  4134. (__mmask32) __M);
  4135. }
  4136. extern __inline __mmask32
  4137. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4138. _mm256_mask_cmple_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4139. {
  4140. return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
  4141. (__v32qi) __Y, 2,
  4142. (__mmask32) __M);
  4143. }
  4144. extern __inline __mmask16
  4145. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4146. _mm256_mask_cmpneq_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4147. {
  4148. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  4149. (__v16hi) __Y, 4,
  4150. (__mmask16) __M);
  4151. }
  4152. extern __inline __mmask16
  4153. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4154. _mm256_mask_cmplt_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4155. {
  4156. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  4157. (__v16hi) __Y, 1,
  4158. (__mmask16) __M);
  4159. }
  4160. extern __inline __mmask16
  4161. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4162. _mm256_mask_cmpge_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4163. {
  4164. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  4165. (__v16hi) __Y, 5,
  4166. (__mmask16) __M);
  4167. }
  4168. extern __inline __mmask16
  4169. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4170. _mm256_mask_cmple_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4171. {
  4172. return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
  4173. (__v16hi) __Y, 2,
  4174. (__mmask16) __M);
  4175. }
  4176. extern __inline __mmask32
  4177. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4178. _mm256_mask_cmpneq_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4179. {
  4180. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  4181. (__v32qi) __Y, 4,
  4182. (__mmask32) __M);
  4183. }
  4184. extern __inline __mmask32
  4185. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4186. _mm256_mask_cmplt_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4187. {
  4188. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  4189. (__v32qi) __Y, 1,
  4190. (__mmask32) __M);
  4191. }
  4192. extern __inline __mmask32
  4193. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4194. _mm256_mask_cmpge_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4195. {
  4196. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  4197. (__v32qi) __Y, 5,
  4198. (__mmask32) __M);
  4199. }
  4200. extern __inline __mmask32
  4201. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4202. _mm256_mask_cmple_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
  4203. {
  4204. return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
  4205. (__v32qi) __Y, 2,
  4206. (__mmask32) __M);
  4207. }
  4208. extern __inline __mmask16
  4209. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4210. _mm256_mask_cmpneq_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4211. {
  4212. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  4213. (__v16hi) __Y, 4,
  4214. (__mmask16) __M);
  4215. }
  4216. extern __inline __mmask16
  4217. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4218. _mm256_mask_cmplt_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4219. {
  4220. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  4221. (__v16hi) __Y, 1,
  4222. (__mmask16) __M);
  4223. }
  4224. extern __inline __mmask16
  4225. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4226. _mm256_mask_cmpge_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4227. {
  4228. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  4229. (__v16hi) __Y, 5,
  4230. (__mmask16) __M);
  4231. }
  4232. extern __inline __mmask16
  4233. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  4234. _mm256_mask_cmple_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
  4235. {
  4236. return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
  4237. (__v16hi) __Y, 2,
  4238. (__mmask16) __M);
  4239. }
  4240. #ifdef __DISABLE_AVX512VLBW__
  4241. #undef __DISABLE_AVX512VLBW__
  4242. #pragma GCC pop_options
  4243. #endif /* __DISABLE_AVX512VLBW__ */
  4244. #endif /* _AVX512VLBWINTRIN_H_INCLUDED */