avx512vlbwintrin.h 140 KB

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