avx512bwintrin.h 99 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301
  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 <avx512bwintrin.h> directly; include <immintrin.h> instead."
  20. #endif
  21. #ifndef _AVX512BWINTRIN_H_INCLUDED
  22. #define _AVX512BWINTRIN_H_INCLUDED
  23. #ifndef __AVX512BW__
  24. #pragma GCC push_options
  25. #pragma GCC target("avx512bw")
  26. #define __DISABLE_AVX512BW__
  27. #endif /* __AVX512BW__ */
  28. /* Internal data types for implementing the intrinsics. */
  29. typedef short __v32hi __attribute__ ((__vector_size__ (64)));
  30. typedef char __v64qi __attribute__ ((__vector_size__ (64)));
  31. typedef unsigned long long __mmask64;
  32. extern __inline unsigned char
  33. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  34. _ktest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF)
  35. {
  36. *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
  37. return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
  38. }
  39. extern __inline unsigned char
  40. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  41. _ktest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF)
  42. {
  43. *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
  44. return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
  45. }
  46. extern __inline unsigned char
  47. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  48. _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
  49. {
  50. return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
  51. }
  52. extern __inline unsigned char
  53. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  54. _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
  55. {
  56. return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
  57. }
  58. extern __inline unsigned char
  59. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  60. _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
  61. {
  62. return (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
  63. }
  64. extern __inline unsigned char
  65. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  66. _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
  67. {
  68. return (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
  69. }
  70. extern __inline unsigned char
  71. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  72. _kortest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF)
  73. {
  74. *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
  75. return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
  76. }
  77. extern __inline unsigned char
  78. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  79. _kortest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF)
  80. {
  81. *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
  82. return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
  83. }
  84. extern __inline unsigned char
  85. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  86. _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
  87. {
  88. return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
  89. }
  90. extern __inline unsigned char
  91. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  92. _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
  93. {
  94. return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
  95. }
  96. extern __inline unsigned char
  97. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  98. _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
  99. {
  100. return (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
  101. }
  102. extern __inline unsigned char
  103. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  104. _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
  105. {
  106. return (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
  107. }
  108. extern __inline __mmask32
  109. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  110. _kadd_mask32 (__mmask32 __A, __mmask32 __B)
  111. {
  112. return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B);
  113. }
  114. extern __inline __mmask64
  115. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  116. _kadd_mask64 (__mmask64 __A, __mmask64 __B)
  117. {
  118. return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B);
  119. }
  120. extern __inline unsigned int
  121. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  122. _cvtmask32_u32 (__mmask32 __A)
  123. {
  124. return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A);
  125. }
  126. extern __inline unsigned long long
  127. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  128. _cvtmask64_u64 (__mmask64 __A)
  129. {
  130. return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A);
  131. }
  132. extern __inline __mmask32
  133. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  134. _cvtu32_mask32 (unsigned int __A)
  135. {
  136. return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A);
  137. }
  138. extern __inline __mmask64
  139. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  140. _cvtu64_mask64 (unsigned long long __A)
  141. {
  142. return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A);
  143. }
  144. extern __inline __mmask32
  145. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  146. _load_mask32 (__mmask32 *__A)
  147. {
  148. return (__mmask32) __builtin_ia32_kmovd (*__A);
  149. }
  150. extern __inline __mmask64
  151. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  152. _load_mask64 (__mmask64 *__A)
  153. {
  154. return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A);
  155. }
  156. extern __inline void
  157. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  158. _store_mask32 (__mmask32 *__A, __mmask32 __B)
  159. {
  160. *(__mmask32 *) __A = __builtin_ia32_kmovd (__B);
  161. }
  162. extern __inline void
  163. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  164. _store_mask64 (__mmask64 *__A, __mmask64 __B)
  165. {
  166. *(__mmask64 *) __A = __builtin_ia32_kmovq (__B);
  167. }
  168. extern __inline __mmask32
  169. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  170. _knot_mask32 (__mmask32 __A)
  171. {
  172. return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A);
  173. }
  174. extern __inline __mmask64
  175. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  176. _knot_mask64 (__mmask64 __A)
  177. {
  178. return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A);
  179. }
  180. extern __inline __mmask32
  181. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  182. _kor_mask32 (__mmask32 __A, __mmask32 __B)
  183. {
  184. return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B);
  185. }
  186. extern __inline __mmask64
  187. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  188. _kor_mask64 (__mmask64 __A, __mmask64 __B)
  189. {
  190. return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B);
  191. }
  192. extern __inline __mmask32
  193. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  194. _kxnor_mask32 (__mmask32 __A, __mmask32 __B)
  195. {
  196. return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B);
  197. }
  198. extern __inline __mmask64
  199. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  200. _kxnor_mask64 (__mmask64 __A, __mmask64 __B)
  201. {
  202. return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B);
  203. }
  204. extern __inline __mmask32
  205. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  206. _kxor_mask32 (__mmask32 __A, __mmask32 __B)
  207. {
  208. return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B);
  209. }
  210. extern __inline __mmask64
  211. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  212. _kxor_mask64 (__mmask64 __A, __mmask64 __B)
  213. {
  214. return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B);
  215. }
  216. extern __inline __mmask32
  217. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  218. _kand_mask32 (__mmask32 __A, __mmask32 __B)
  219. {
  220. return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B);
  221. }
  222. extern __inline __mmask64
  223. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  224. _kand_mask64 (__mmask64 __A, __mmask64 __B)
  225. {
  226. return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B);
  227. }
  228. extern __inline __mmask32
  229. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  230. _kandn_mask32 (__mmask32 __A, __mmask32 __B)
  231. {
  232. return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B);
  233. }
  234. extern __inline __mmask64
  235. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  236. _kandn_mask64 (__mmask64 __A, __mmask64 __B)
  237. {
  238. return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B);
  239. }
  240. extern __inline __m512i
  241. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  242. _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
  243. {
  244. return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
  245. (__v32hi) __W,
  246. (__mmask32) __U);
  247. }
  248. extern __inline __m512i
  249. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  250. _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
  251. {
  252. return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
  253. (__v32hi)
  254. _mm512_setzero_si512 (),
  255. (__mmask32) __U);
  256. }
  257. extern __inline __m512i
  258. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  259. _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
  260. {
  261. return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
  262. (__v32hi) __W,
  263. (__mmask32) __U);
  264. }
  265. extern __inline __m512i
  266. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  267. _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
  268. {
  269. return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
  270. (__v32hi)
  271. _mm512_setzero_si512 (),
  272. (__mmask32) __U);
  273. }
  274. extern __inline void
  275. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  276. _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
  277. {
  278. __builtin_ia32_storedquhi512_mask ((short *) __P,
  279. (__v32hi) __A,
  280. (__mmask32) __U);
  281. }
  282. extern __inline __m512i
  283. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  284. _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
  285. {
  286. return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
  287. (__v64qi) __W,
  288. (__mmask64) __U);
  289. }
  290. extern __inline __m512i
  291. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  292. _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
  293. {
  294. return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
  295. (__v64qi)
  296. _mm512_setzero_si512 (),
  297. (__mmask64) __U);
  298. }
  299. extern __inline __mmask32
  300. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  301. _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
  302. {
  303. return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
  304. (__mmask32) __B);
  305. }
  306. extern __inline __mmask32
  307. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  308. _kunpackw_mask32 (__mmask16 __A, __mmask16 __B)
  309. {
  310. return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
  311. (__mmask32) __B);
  312. }
  313. extern __inline __mmask64
  314. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  315. _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
  316. {
  317. return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
  318. (__mmask64) __B);
  319. }
  320. extern __inline __mmask64
  321. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  322. _kunpackd_mask64 (__mmask32 __A, __mmask32 __B)
  323. {
  324. return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
  325. (__mmask64) __B);
  326. }
  327. extern __inline __m512i
  328. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  329. _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
  330. {
  331. return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
  332. (__v64qi) __W,
  333. (__mmask64) __U);
  334. }
  335. extern __inline __m512i
  336. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  337. _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
  338. {
  339. return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
  340. (__v64qi)
  341. _mm512_setzero_si512 (),
  342. (__mmask64) __U);
  343. }
  344. extern __inline void
  345. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  346. _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
  347. {
  348. __builtin_ia32_storedquqi512_mask ((char *) __P,
  349. (__v64qi) __A,
  350. (__mmask64) __U);
  351. }
  352. extern __inline __m512i
  353. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  354. _mm512_sad_epu8 (__m512i __A, __m512i __B)
  355. {
  356. return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
  357. (__v64qi) __B);
  358. }
  359. extern __inline __m256i
  360. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  361. _mm512_cvtepi16_epi8 (__m512i __A)
  362. {
  363. return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
  364. (__v32qi) _mm256_undefined_si256(),
  365. (__mmask32) -1);
  366. }
  367. extern __inline void
  368. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  369. _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
  370. {
  371. __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
  372. }
  373. extern __inline __m256i
  374. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  375. _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
  376. {
  377. return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
  378. (__v32qi) __O, __M);
  379. }
  380. extern __inline __m256i
  381. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  382. _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
  383. {
  384. return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
  385. (__v32qi)
  386. _mm256_setzero_si256 (),
  387. __M);
  388. }
  389. extern __inline __m256i
  390. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  391. _mm512_cvtsepi16_epi8 (__m512i __A)
  392. {
  393. return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
  394. (__v32qi)_mm256_undefined_si256(),
  395. (__mmask32) -1);
  396. }
  397. extern __inline void
  398. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  399. _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
  400. {
  401. __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
  402. }
  403. extern __inline __m256i
  404. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  405. _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
  406. {
  407. return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
  408. (__v32qi)__O,
  409. __M);
  410. }
  411. extern __inline __m256i
  412. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  413. _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
  414. {
  415. return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
  416. (__v32qi)
  417. _mm256_setzero_si256 (),
  418. __M);
  419. }
  420. extern __inline __m256i
  421. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  422. _mm512_cvtusepi16_epi8 (__m512i __A)
  423. {
  424. return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
  425. (__v32qi)_mm256_undefined_si256(),
  426. (__mmask32) -1);
  427. }
  428. extern __inline __m256i
  429. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  430. _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
  431. {
  432. return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
  433. (__v32qi) __O,
  434. __M);
  435. }
  436. extern __inline void
  437. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  438. _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
  439. {
  440. __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
  441. }
  442. extern __inline __m256i
  443. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  444. _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
  445. {
  446. return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
  447. (__v32qi)
  448. _mm256_setzero_si256 (),
  449. __M);
  450. }
  451. extern __inline __m512i
  452. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  453. _mm512_broadcastb_epi8 (__m128i __A)
  454. {
  455. return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
  456. (__v64qi)_mm512_undefined_epi32(),
  457. (__mmask64) -1);
  458. }
  459. extern __inline __m512i
  460. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  461. _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
  462. {
  463. return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
  464. (__v64qi) __O,
  465. __M);
  466. }
  467. extern __inline __m512i
  468. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  469. _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
  470. {
  471. return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
  472. (__v64qi)
  473. _mm512_setzero_si512 (),
  474. __M);
  475. }
  476. extern __inline __m512i
  477. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  478. _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
  479. {
  480. return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
  481. (__v64qi) __O,
  482. __M);
  483. }
  484. extern __inline __m512i
  485. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  486. _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
  487. {
  488. return (__m512i)
  489. __builtin_ia32_pbroadcastb512_gpr_mask (__A,
  490. (__v64qi)
  491. _mm512_setzero_si512 (),
  492. __M);
  493. }
  494. extern __inline __m512i
  495. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  496. _mm512_broadcastw_epi16 (__m128i __A)
  497. {
  498. return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
  499. (__v32hi)_mm512_undefined_epi32(),
  500. (__mmask32) -1);
  501. }
  502. extern __inline __m512i
  503. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  504. _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
  505. {
  506. return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
  507. (__v32hi) __O,
  508. __M);
  509. }
  510. extern __inline __m512i
  511. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  512. _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
  513. {
  514. return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
  515. (__v32hi)
  516. _mm512_setzero_si512 (),
  517. __M);
  518. }
  519. extern __inline __m512i
  520. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  521. _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
  522. {
  523. return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
  524. (__v32hi) __O,
  525. __M);
  526. }
  527. extern __inline __m512i
  528. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  529. _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
  530. {
  531. return (__m512i)
  532. __builtin_ia32_pbroadcastw512_gpr_mask (__A,
  533. (__v32hi)
  534. _mm512_setzero_si512 (),
  535. __M);
  536. }
  537. extern __inline __m512i
  538. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  539. _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
  540. {
  541. return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
  542. (__v32hi) __B,
  543. (__v32hi)
  544. _mm512_setzero_si512 (),
  545. (__mmask32) -1);
  546. }
  547. extern __inline __m512i
  548. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  549. _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  550. __m512i __B)
  551. {
  552. return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
  553. (__v32hi) __B,
  554. (__v32hi) __W,
  555. (__mmask32) __U);
  556. }
  557. extern __inline __m512i
  558. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  559. _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  560. {
  561. return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
  562. (__v32hi) __B,
  563. (__v32hi)
  564. _mm512_setzero_si512 (),
  565. (__mmask32) __U);
  566. }
  567. extern __inline __m512i
  568. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  569. _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
  570. {
  571. return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
  572. (__v32hi) __B,
  573. (__v32hi)
  574. _mm512_setzero_si512 (),
  575. (__mmask32) -1);
  576. }
  577. extern __inline __m512i
  578. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  579. _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  580. __m512i __B)
  581. {
  582. return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
  583. (__v32hi) __B,
  584. (__v32hi) __W,
  585. (__mmask32) __U);
  586. }
  587. extern __inline __m512i
  588. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  589. _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  590. {
  591. return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
  592. (__v32hi) __B,
  593. (__v32hi)
  594. _mm512_setzero_si512 (),
  595. (__mmask32) __U);
  596. }
  597. extern __inline __m512i
  598. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  599. _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
  600. {
  601. return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
  602. (__v32hi) __B,
  603. (__v32hi)
  604. _mm512_setzero_si512 (),
  605. (__mmask32) -1);
  606. }
  607. extern __inline __m512i
  608. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  609. _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
  610. __m512i __B)
  611. {
  612. return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
  613. (__v32hi) __B,
  614. (__v32hi) __W,
  615. (__mmask32) __U);
  616. }
  617. extern __inline __m512i
  618. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  619. _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
  620. {
  621. return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
  622. (__v32hi) __B,
  623. (__v32hi)
  624. _mm512_setzero_si512 (),
  625. (__mmask32) __U);
  626. }
  627. extern __inline __m512i
  628. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  629. _mm512_mullo_epi16 (__m512i __A, __m512i __B)
  630. {
  631. return (__m512i) ((__v32hu) __A * (__v32hu) __B);
  632. }
  633. extern __inline __m512i
  634. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  635. _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  636. __m512i __B)
  637. {
  638. return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
  639. (__v32hi) __B,
  640. (__v32hi) __W,
  641. (__mmask32) __U);
  642. }
  643. extern __inline __m512i
  644. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  645. _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  646. {
  647. return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
  648. (__v32hi) __B,
  649. (__v32hi)
  650. _mm512_setzero_si512 (),
  651. (__mmask32) __U);
  652. }
  653. extern __inline __m512i
  654. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  655. _mm512_cvtepi8_epi16 (__m256i __A)
  656. {
  657. return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
  658. (__v32hi)
  659. _mm512_setzero_si512 (),
  660. (__mmask32) -1);
  661. }
  662. extern __inline __m512i
  663. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  664. _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
  665. {
  666. return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
  667. (__v32hi) __W,
  668. (__mmask32) __U);
  669. }
  670. extern __inline __m512i
  671. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  672. _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
  673. {
  674. return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
  675. (__v32hi)
  676. _mm512_setzero_si512 (),
  677. (__mmask32) __U);
  678. }
  679. extern __inline __m512i
  680. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  681. _mm512_cvtepu8_epi16 (__m256i __A)
  682. {
  683. return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
  684. (__v32hi)
  685. _mm512_setzero_si512 (),
  686. (__mmask32) -1);
  687. }
  688. extern __inline __m512i
  689. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  690. _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
  691. {
  692. return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
  693. (__v32hi) __W,
  694. (__mmask32) __U);
  695. }
  696. extern __inline __m512i
  697. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  698. _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
  699. {
  700. return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
  701. (__v32hi)
  702. _mm512_setzero_si512 (),
  703. (__mmask32) __U);
  704. }
  705. extern __inline __m512i
  706. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  707. _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
  708. {
  709. return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
  710. (__v32hi) __A,
  711. (__v32hi)
  712. _mm512_setzero_si512 (),
  713. (__mmask32) -1);
  714. }
  715. extern __inline __m512i
  716. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  717. _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
  718. __m512i __B)
  719. {
  720. return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
  721. (__v32hi) __A,
  722. (__v32hi)
  723. _mm512_setzero_si512 (),
  724. (__mmask32) __M);
  725. }
  726. extern __inline __m512i
  727. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  728. _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
  729. __m512i __B)
  730. {
  731. return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
  732. (__v32hi) __A,
  733. (__v32hi) __W,
  734. (__mmask32) __M);
  735. }
  736. extern __inline __m512i
  737. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  738. _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
  739. {
  740. return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
  741. /* idx */ ,
  742. (__v32hi) __A,
  743. (__v32hi) __B,
  744. (__mmask32) -1);
  745. }
  746. extern __inline __m512i
  747. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  748. _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
  749. __m512i __I, __m512i __B)
  750. {
  751. return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
  752. /* idx */ ,
  753. (__v32hi) __A,
  754. (__v32hi) __B,
  755. (__mmask32)
  756. __U);
  757. }
  758. extern __inline __m512i
  759. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  760. _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
  761. __mmask32 __U, __m512i __B)
  762. {
  763. return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
  764. (__v32hi) __I
  765. /* idx */ ,
  766. (__v32hi) __B,
  767. (__mmask32)
  768. __U);
  769. }
  770. extern __inline __m512i
  771. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  772. _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
  773. __m512i __I, __m512i __B)
  774. {
  775. return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
  776. /* idx */ ,
  777. (__v32hi) __A,
  778. (__v32hi) __B,
  779. (__mmask32)
  780. __U);
  781. }
  782. extern __inline __m512i
  783. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  784. _mm512_avg_epu8 (__m512i __A, __m512i __B)
  785. {
  786. return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
  787. (__v64qi) __B,
  788. (__v64qi)
  789. _mm512_setzero_si512 (),
  790. (__mmask64) -1);
  791. }
  792. extern __inline __m512i
  793. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  794. _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
  795. __m512i __B)
  796. {
  797. return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
  798. (__v64qi) __B,
  799. (__v64qi) __W,
  800. (__mmask64) __U);
  801. }
  802. extern __inline __m512i
  803. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  804. _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
  805. {
  806. return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
  807. (__v64qi) __B,
  808. (__v64qi)
  809. _mm512_setzero_si512 (),
  810. (__mmask64) __U);
  811. }
  812. extern __inline __m512i
  813. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  814. _mm512_add_epi8 (__m512i __A, __m512i __B)
  815. {
  816. return (__m512i) ((__v64qu) __A + (__v64qu) __B);
  817. }
  818. extern __inline __m512i
  819. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  820. _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  821. __m512i __B)
  822. {
  823. return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
  824. (__v64qi) __B,
  825. (__v64qi) __W,
  826. (__mmask64) __U);
  827. }
  828. extern __inline __m512i
  829. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  830. _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  831. {
  832. return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
  833. (__v64qi) __B,
  834. (__v64qi)
  835. _mm512_setzero_si512 (),
  836. (__mmask64) __U);
  837. }
  838. extern __inline __m512i
  839. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  840. _mm512_sub_epi8 (__m512i __A, __m512i __B)
  841. {
  842. return (__m512i) ((__v64qu) __A - (__v64qu) __B);
  843. }
  844. extern __inline __m512i
  845. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  846. _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  847. __m512i __B)
  848. {
  849. return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
  850. (__v64qi) __B,
  851. (__v64qi) __W,
  852. (__mmask64) __U);
  853. }
  854. extern __inline __m512i
  855. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  856. _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  857. {
  858. return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
  859. (__v64qi) __B,
  860. (__v64qi)
  861. _mm512_setzero_si512 (),
  862. (__mmask64) __U);
  863. }
  864. extern __inline __m512i
  865. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  866. _mm512_avg_epu16 (__m512i __A, __m512i __B)
  867. {
  868. return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
  869. (__v32hi) __B,
  870. (__v32hi)
  871. _mm512_setzero_si512 (),
  872. (__mmask32) -1);
  873. }
  874. extern __inline __m512i
  875. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  876. _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
  877. __m512i __B)
  878. {
  879. return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
  880. (__v32hi) __B,
  881. (__v32hi) __W,
  882. (__mmask32) __U);
  883. }
  884. extern __inline __m512i
  885. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  886. _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
  887. {
  888. return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
  889. (__v32hi) __B,
  890. (__v32hi)
  891. _mm512_setzero_si512 (),
  892. (__mmask32) __U);
  893. }
  894. extern __inline __m512i
  895. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  896. _mm512_subs_epi8 (__m512i __A, __m512i __B)
  897. {
  898. return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
  899. (__v64qi) __B,
  900. (__v64qi)
  901. _mm512_setzero_si512 (),
  902. (__mmask64) -1);
  903. }
  904. extern __inline __m512i
  905. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  906. _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  907. __m512i __B)
  908. {
  909. return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
  910. (__v64qi) __B,
  911. (__v64qi) __W,
  912. (__mmask64) __U);
  913. }
  914. extern __inline __m512i
  915. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  916. _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  917. {
  918. return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
  919. (__v64qi) __B,
  920. (__v64qi)
  921. _mm512_setzero_si512 (),
  922. (__mmask64) __U);
  923. }
  924. extern __inline __m512i
  925. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  926. _mm512_subs_epu8 (__m512i __A, __m512i __B)
  927. {
  928. return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
  929. (__v64qi) __B,
  930. (__v64qi)
  931. _mm512_setzero_si512 (),
  932. (__mmask64) -1);
  933. }
  934. extern __inline __m512i
  935. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  936. _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
  937. __m512i __B)
  938. {
  939. return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
  940. (__v64qi) __B,
  941. (__v64qi) __W,
  942. (__mmask64) __U);
  943. }
  944. extern __inline __m512i
  945. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  946. _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
  947. {
  948. return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
  949. (__v64qi) __B,
  950. (__v64qi)
  951. _mm512_setzero_si512 (),
  952. (__mmask64) __U);
  953. }
  954. extern __inline __m512i
  955. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  956. _mm512_adds_epi8 (__m512i __A, __m512i __B)
  957. {
  958. return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
  959. (__v64qi) __B,
  960. (__v64qi)
  961. _mm512_setzero_si512 (),
  962. (__mmask64) -1);
  963. }
  964. extern __inline __m512i
  965. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  966. _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  967. __m512i __B)
  968. {
  969. return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
  970. (__v64qi) __B,
  971. (__v64qi) __W,
  972. (__mmask64) __U);
  973. }
  974. extern __inline __m512i
  975. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  976. _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  977. {
  978. return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
  979. (__v64qi) __B,
  980. (__v64qi)
  981. _mm512_setzero_si512 (),
  982. (__mmask64) __U);
  983. }
  984. extern __inline __m512i
  985. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  986. _mm512_adds_epu8 (__m512i __A, __m512i __B)
  987. {
  988. return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
  989. (__v64qi) __B,
  990. (__v64qi)
  991. _mm512_setzero_si512 (),
  992. (__mmask64) -1);
  993. }
  994. extern __inline __m512i
  995. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  996. _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
  997. __m512i __B)
  998. {
  999. return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
  1000. (__v64qi) __B,
  1001. (__v64qi) __W,
  1002. (__mmask64) __U);
  1003. }
  1004. extern __inline __m512i
  1005. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1006. _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
  1007. {
  1008. return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
  1009. (__v64qi) __B,
  1010. (__v64qi)
  1011. _mm512_setzero_si512 (),
  1012. (__mmask64) __U);
  1013. }
  1014. extern __inline __m512i
  1015. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1016. _mm512_sub_epi16 (__m512i __A, __m512i __B)
  1017. {
  1018. return (__m512i) ((__v32hu) __A - (__v32hu) __B);
  1019. }
  1020. extern __inline __m512i
  1021. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1022. _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1023. __m512i __B)
  1024. {
  1025. return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
  1026. (__v32hi) __B,
  1027. (__v32hi) __W,
  1028. (__mmask32) __U);
  1029. }
  1030. extern __inline __m512i
  1031. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1032. _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1033. {
  1034. return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
  1035. (__v32hi) __B,
  1036. (__v32hi)
  1037. _mm512_setzero_si512 (),
  1038. (__mmask32) __U);
  1039. }
  1040. extern __inline __m512i
  1041. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1042. _mm512_subs_epi16 (__m512i __A, __m512i __B)
  1043. {
  1044. return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
  1045. (__v32hi) __B,
  1046. (__v32hi)
  1047. _mm512_setzero_si512 (),
  1048. (__mmask32) -1);
  1049. }
  1050. extern __inline __m512i
  1051. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1052. _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1053. __m512i __B)
  1054. {
  1055. return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
  1056. (__v32hi) __B,
  1057. (__v32hi) __W,
  1058. (__mmask32) __U);
  1059. }
  1060. extern __inline __m512i
  1061. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1062. _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1063. {
  1064. return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
  1065. (__v32hi) __B,
  1066. (__v32hi)
  1067. _mm512_setzero_si512 (),
  1068. (__mmask32) __U);
  1069. }
  1070. extern __inline __m512i
  1071. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1072. _mm512_subs_epu16 (__m512i __A, __m512i __B)
  1073. {
  1074. return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
  1075. (__v32hi) __B,
  1076. (__v32hi)
  1077. _mm512_setzero_si512 (),
  1078. (__mmask32) -1);
  1079. }
  1080. extern __inline __m512i
  1081. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1082. _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
  1083. __m512i __B)
  1084. {
  1085. return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
  1086. (__v32hi) __B,
  1087. (__v32hi) __W,
  1088. (__mmask32) __U);
  1089. }
  1090. extern __inline __m512i
  1091. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1092. _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
  1093. {
  1094. return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
  1095. (__v32hi) __B,
  1096. (__v32hi)
  1097. _mm512_setzero_si512 (),
  1098. (__mmask32) __U);
  1099. }
  1100. extern __inline __m512i
  1101. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1102. _mm512_add_epi16 (__m512i __A, __m512i __B)
  1103. {
  1104. return (__m512i) ((__v32hu) __A + (__v32hu) __B);
  1105. }
  1106. extern __inline __m512i
  1107. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1108. _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1109. __m512i __B)
  1110. {
  1111. return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
  1112. (__v32hi) __B,
  1113. (__v32hi) __W,
  1114. (__mmask32) __U);
  1115. }
  1116. extern __inline __m512i
  1117. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1118. _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1119. {
  1120. return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
  1121. (__v32hi) __B,
  1122. (__v32hi)
  1123. _mm512_setzero_si512 (),
  1124. (__mmask32) __U);
  1125. }
  1126. extern __inline __m512i
  1127. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1128. _mm512_adds_epi16 (__m512i __A, __m512i __B)
  1129. {
  1130. return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
  1131. (__v32hi) __B,
  1132. (__v32hi)
  1133. _mm512_setzero_si512 (),
  1134. (__mmask32) -1);
  1135. }
  1136. extern __inline __m512i
  1137. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1138. _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1139. __m512i __B)
  1140. {
  1141. return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
  1142. (__v32hi) __B,
  1143. (__v32hi) __W,
  1144. (__mmask32) __U);
  1145. }
  1146. extern __inline __m512i
  1147. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1148. _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1149. {
  1150. return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
  1151. (__v32hi) __B,
  1152. (__v32hi)
  1153. _mm512_setzero_si512 (),
  1154. (__mmask32) __U);
  1155. }
  1156. extern __inline __m512i
  1157. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1158. _mm512_adds_epu16 (__m512i __A, __m512i __B)
  1159. {
  1160. return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
  1161. (__v32hi) __B,
  1162. (__v32hi)
  1163. _mm512_setzero_si512 (),
  1164. (__mmask32) -1);
  1165. }
  1166. extern __inline __m512i
  1167. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1168. _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
  1169. __m512i __B)
  1170. {
  1171. return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
  1172. (__v32hi) __B,
  1173. (__v32hi) __W,
  1174. (__mmask32) __U);
  1175. }
  1176. extern __inline __m512i
  1177. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1178. _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
  1179. {
  1180. return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
  1181. (__v32hi) __B,
  1182. (__v32hi)
  1183. _mm512_setzero_si512 (),
  1184. (__mmask32) __U);
  1185. }
  1186. extern __inline __m512i
  1187. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1188. _mm512_srl_epi16 (__m512i __A, __m128i __B)
  1189. {
  1190. return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
  1191. (__v8hi) __B,
  1192. (__v32hi)
  1193. _mm512_setzero_si512 (),
  1194. (__mmask32) -1);
  1195. }
  1196. extern __inline __m512i
  1197. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1198. _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1199. __m128i __B)
  1200. {
  1201. return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
  1202. (__v8hi) __B,
  1203. (__v32hi) __W,
  1204. (__mmask32) __U);
  1205. }
  1206. extern __inline __m512i
  1207. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1208. _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
  1209. {
  1210. return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
  1211. (__v8hi) __B,
  1212. (__v32hi)
  1213. _mm512_setzero_si512 (),
  1214. (__mmask32) __U);
  1215. }
  1216. extern __inline __m512i
  1217. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1218. _mm512_packs_epi16 (__m512i __A, __m512i __B)
  1219. {
  1220. return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
  1221. (__v32hi) __B,
  1222. (__v64qi)
  1223. _mm512_setzero_si512 (),
  1224. (__mmask64) -1);
  1225. }
  1226. extern __inline __m512i
  1227. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1228. _mm512_sll_epi16 (__m512i __A, __m128i __B)
  1229. {
  1230. return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
  1231. (__v8hi) __B,
  1232. (__v32hi)
  1233. _mm512_setzero_si512 (),
  1234. (__mmask32) -1);
  1235. }
  1236. extern __inline __m512i
  1237. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1238. _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1239. __m128i __B)
  1240. {
  1241. return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
  1242. (__v8hi) __B,
  1243. (__v32hi) __W,
  1244. (__mmask32) __U);
  1245. }
  1246. extern __inline __m512i
  1247. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1248. _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
  1249. {
  1250. return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
  1251. (__v8hi) __B,
  1252. (__v32hi)
  1253. _mm512_setzero_si512 (),
  1254. (__mmask32) __U);
  1255. }
  1256. extern __inline __m512i
  1257. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1258. _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
  1259. {
  1260. return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
  1261. (__v64qi) __Y,
  1262. (__v32hi)
  1263. _mm512_setzero_si512 (),
  1264. (__mmask32) -1);
  1265. }
  1266. extern __inline __m512i
  1267. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1268. _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
  1269. __m512i __Y)
  1270. {
  1271. return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
  1272. (__v64qi) __Y,
  1273. (__v32hi) __W,
  1274. (__mmask32) __U);
  1275. }
  1276. extern __inline __m512i
  1277. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1278. _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
  1279. {
  1280. return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
  1281. (__v64qi) __Y,
  1282. (__v32hi)
  1283. _mm512_setzero_si512 (),
  1284. (__mmask32) __U);
  1285. }
  1286. extern __inline __m512i
  1287. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1288. _mm512_madd_epi16 (__m512i __A, __m512i __B)
  1289. {
  1290. return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
  1291. (__v32hi) __B,
  1292. (__v16si)
  1293. _mm512_setzero_si512 (),
  1294. (__mmask16) -1);
  1295. }
  1296. extern __inline __m512i
  1297. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1298. _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
  1299. __m512i __B)
  1300. {
  1301. return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
  1302. (__v32hi) __B,
  1303. (__v16si) __W,
  1304. (__mmask16) __U);
  1305. }
  1306. extern __inline __m512i
  1307. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1308. _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
  1309. {
  1310. return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
  1311. (__v32hi) __B,
  1312. (__v16si)
  1313. _mm512_setzero_si512 (),
  1314. (__mmask16) __U);
  1315. }
  1316. extern __inline __m512i
  1317. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1318. _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
  1319. {
  1320. return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
  1321. (__v64qi) __B,
  1322. (__v64qi)
  1323. _mm512_setzero_si512 (),
  1324. (__mmask64) -1);
  1325. }
  1326. extern __inline __m512i
  1327. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1328. _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  1329. __m512i __B)
  1330. {
  1331. return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
  1332. (__v64qi) __B,
  1333. (__v64qi) __W,
  1334. (__mmask64) __U);
  1335. }
  1336. extern __inline __m512i
  1337. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1338. _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  1339. {
  1340. return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
  1341. (__v64qi) __B,
  1342. (__v64qi)
  1343. _mm512_setzero_si512 (),
  1344. (__mmask64) __U);
  1345. }
  1346. extern __inline __m512i
  1347. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1348. _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
  1349. {
  1350. return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
  1351. (__v32hi) __B,
  1352. (__v32hi)
  1353. _mm512_setzero_si512 (),
  1354. (__mmask32) -1);
  1355. }
  1356. extern __inline __m512i
  1357. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1358. _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1359. __m512i __B)
  1360. {
  1361. return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
  1362. (__v32hi) __B,
  1363. (__v32hi) __W,
  1364. (__mmask32) __U);
  1365. }
  1366. extern __inline __m512i
  1367. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1368. _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1369. {
  1370. return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
  1371. (__v32hi) __B,
  1372. (__v32hi)
  1373. _mm512_setzero_si512 (),
  1374. (__mmask32) __U);
  1375. }
  1376. extern __inline __m512i
  1377. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1378. _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
  1379. {
  1380. return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
  1381. (__v64qi) __B,
  1382. (__v64qi)
  1383. _mm512_setzero_si512 (),
  1384. (__mmask64) -1);
  1385. }
  1386. extern __inline __m512i
  1387. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1388. _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  1389. __m512i __B)
  1390. {
  1391. return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
  1392. (__v64qi) __B,
  1393. (__v64qi) __W,
  1394. (__mmask64) __U);
  1395. }
  1396. extern __inline __m512i
  1397. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1398. _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  1399. {
  1400. return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
  1401. (__v64qi) __B,
  1402. (__v64qi)
  1403. _mm512_setzero_si512 (),
  1404. (__mmask64) __U);
  1405. }
  1406. extern __inline __m512i
  1407. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1408. _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
  1409. {
  1410. return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
  1411. (__v32hi) __B,
  1412. (__v32hi)
  1413. _mm512_setzero_si512 (),
  1414. (__mmask32) -1);
  1415. }
  1416. extern __inline __m512i
  1417. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1418. _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1419. __m512i __B)
  1420. {
  1421. return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
  1422. (__v32hi) __B,
  1423. (__v32hi) __W,
  1424. (__mmask32) __U);
  1425. }
  1426. extern __inline __m512i
  1427. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1428. _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1429. {
  1430. return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
  1431. (__v32hi) __B,
  1432. (__v32hi)
  1433. _mm512_setzero_si512 (),
  1434. (__mmask32) __U);
  1435. }
  1436. extern __inline __mmask64
  1437. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1438. _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
  1439. {
  1440. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
  1441. (__v64qi) __B, 0,
  1442. (__mmask64) -1);
  1443. }
  1444. extern __inline __mmask64
  1445. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1446. _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
  1447. {
  1448. return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
  1449. (__v64qi) __B,
  1450. (__mmask64) -1);
  1451. }
  1452. extern __inline __mmask64
  1453. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1454. _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
  1455. {
  1456. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
  1457. (__v64qi) __B, 0,
  1458. __U);
  1459. }
  1460. extern __inline __mmask64
  1461. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1462. _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
  1463. {
  1464. return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
  1465. (__v64qi) __B,
  1466. __U);
  1467. }
  1468. extern __inline __mmask32
  1469. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1470. _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
  1471. {
  1472. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
  1473. (__v32hi) __B, 0,
  1474. (__mmask32) -1);
  1475. }
  1476. extern __inline __mmask32
  1477. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1478. _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
  1479. {
  1480. return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
  1481. (__v32hi) __B,
  1482. (__mmask32) -1);
  1483. }
  1484. extern __inline __mmask32
  1485. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1486. _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
  1487. {
  1488. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
  1489. (__v32hi) __B, 0,
  1490. __U);
  1491. }
  1492. extern __inline __mmask32
  1493. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1494. _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
  1495. {
  1496. return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
  1497. (__v32hi) __B,
  1498. __U);
  1499. }
  1500. extern __inline __mmask64
  1501. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1502. _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
  1503. {
  1504. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
  1505. (__v64qi) __B, 6,
  1506. (__mmask64) -1);
  1507. }
  1508. extern __inline __mmask64
  1509. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1510. _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
  1511. {
  1512. return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
  1513. (__v64qi) __B,
  1514. (__mmask64) -1);
  1515. }
  1516. extern __inline __mmask64
  1517. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1518. _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
  1519. {
  1520. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
  1521. (__v64qi) __B, 6,
  1522. __U);
  1523. }
  1524. extern __inline __mmask64
  1525. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1526. _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
  1527. {
  1528. return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
  1529. (__v64qi) __B,
  1530. __U);
  1531. }
  1532. extern __inline __mmask32
  1533. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1534. _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
  1535. {
  1536. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
  1537. (__v32hi) __B, 6,
  1538. (__mmask32) -1);
  1539. }
  1540. extern __inline __mmask32
  1541. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1542. _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
  1543. {
  1544. return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
  1545. (__v32hi) __B,
  1546. (__mmask32) -1);
  1547. }
  1548. extern __inline __mmask32
  1549. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1550. _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
  1551. {
  1552. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
  1553. (__v32hi) __B, 6,
  1554. __U);
  1555. }
  1556. extern __inline __mmask32
  1557. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1558. _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
  1559. {
  1560. return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
  1561. (__v32hi) __B,
  1562. __U);
  1563. }
  1564. extern __inline __mmask64
  1565. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1566. _mm512_movepi8_mask (__m512i __A)
  1567. {
  1568. return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
  1569. }
  1570. extern __inline __mmask32
  1571. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1572. _mm512_movepi16_mask (__m512i __A)
  1573. {
  1574. return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
  1575. }
  1576. extern __inline __m512i
  1577. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1578. _mm512_movm_epi8 (__mmask64 __A)
  1579. {
  1580. return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
  1581. }
  1582. extern __inline __m512i
  1583. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1584. _mm512_movm_epi16 (__mmask32 __A)
  1585. {
  1586. return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
  1587. }
  1588. extern __inline __mmask64
  1589. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1590. _mm512_test_epi8_mask (__m512i __A, __m512i __B)
  1591. {
  1592. return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
  1593. (__v64qi) __B,
  1594. (__mmask64) -1);
  1595. }
  1596. extern __inline __mmask64
  1597. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1598. _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
  1599. {
  1600. return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
  1601. (__v64qi) __B, __U);
  1602. }
  1603. extern __inline __mmask32
  1604. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1605. _mm512_test_epi16_mask (__m512i __A, __m512i __B)
  1606. {
  1607. return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
  1608. (__v32hi) __B,
  1609. (__mmask32) -1);
  1610. }
  1611. extern __inline __mmask32
  1612. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1613. _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
  1614. {
  1615. return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
  1616. (__v32hi) __B, __U);
  1617. }
  1618. extern __inline __mmask64
  1619. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1620. _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
  1621. {
  1622. return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
  1623. (__v64qi) __B,
  1624. (__mmask64) -1);
  1625. }
  1626. extern __inline __mmask64
  1627. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1628. _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
  1629. {
  1630. return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
  1631. (__v64qi) __B, __U);
  1632. }
  1633. extern __inline __mmask32
  1634. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1635. _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
  1636. {
  1637. return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
  1638. (__v32hi) __B,
  1639. (__mmask32) -1);
  1640. }
  1641. extern __inline __mmask32
  1642. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1643. _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
  1644. {
  1645. return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
  1646. (__v32hi) __B, __U);
  1647. }
  1648. extern __inline __m512i
  1649. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1650. _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
  1651. {
  1652. return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
  1653. (__v64qi) __B,
  1654. (__v64qi)
  1655. _mm512_setzero_si512 (),
  1656. (__mmask64) -1);
  1657. }
  1658. extern __inline __m512i
  1659. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1660. _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  1661. __m512i __B)
  1662. {
  1663. return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
  1664. (__v64qi) __B,
  1665. (__v64qi) __W,
  1666. (__mmask64) __U);
  1667. }
  1668. extern __inline __m512i
  1669. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1670. _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
  1671. {
  1672. return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
  1673. (__v64qi) __B,
  1674. (__v64qi)
  1675. _mm512_setzero_si512 (),
  1676. (__mmask64) __U);
  1677. }
  1678. extern __inline __m512i
  1679. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1680. _mm512_min_epu16 (__m512i __A, __m512i __B)
  1681. {
  1682. return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
  1683. (__v32hi) __B,
  1684. (__v32hi)
  1685. _mm512_setzero_si512 (),
  1686. (__mmask32) -1);
  1687. }
  1688. extern __inline __m512i
  1689. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1690. _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
  1691. {
  1692. return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
  1693. (__v32hi) __B,
  1694. (__v32hi)
  1695. _mm512_setzero_si512 (),
  1696. (__mmask32) __M);
  1697. }
  1698. extern __inline __m512i
  1699. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1700. _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
  1701. __m512i __B)
  1702. {
  1703. return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
  1704. (__v32hi) __B,
  1705. (__v32hi) __W,
  1706. (__mmask32) __M);
  1707. }
  1708. extern __inline __m512i
  1709. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1710. _mm512_min_epi16 (__m512i __A, __m512i __B)
  1711. {
  1712. return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
  1713. (__v32hi) __B,
  1714. (__v32hi)
  1715. _mm512_setzero_si512 (),
  1716. (__mmask32) -1);
  1717. }
  1718. extern __inline __m512i
  1719. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1720. _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
  1721. {
  1722. return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
  1723. (__v32hi) __B,
  1724. (__v32hi)
  1725. _mm512_setzero_si512 (),
  1726. (__mmask32) __M);
  1727. }
  1728. extern __inline __m512i
  1729. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1730. _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
  1731. __m512i __B)
  1732. {
  1733. return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
  1734. (__v32hi) __B,
  1735. (__v32hi) __W,
  1736. (__mmask32) __M);
  1737. }
  1738. extern __inline __m512i
  1739. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1740. _mm512_max_epu8 (__m512i __A, __m512i __B)
  1741. {
  1742. return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
  1743. (__v64qi) __B,
  1744. (__v64qi)
  1745. _mm512_setzero_si512 (),
  1746. (__mmask64) -1);
  1747. }
  1748. extern __inline __m512i
  1749. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1750. _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
  1751. {
  1752. return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
  1753. (__v64qi) __B,
  1754. (__v64qi)
  1755. _mm512_setzero_si512 (),
  1756. (__mmask64) __M);
  1757. }
  1758. extern __inline __m512i
  1759. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1760. _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
  1761. __m512i __B)
  1762. {
  1763. return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
  1764. (__v64qi) __B,
  1765. (__v64qi) __W,
  1766. (__mmask64) __M);
  1767. }
  1768. extern __inline __m512i
  1769. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1770. _mm512_max_epi8 (__m512i __A, __m512i __B)
  1771. {
  1772. return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
  1773. (__v64qi) __B,
  1774. (__v64qi)
  1775. _mm512_setzero_si512 (),
  1776. (__mmask64) -1);
  1777. }
  1778. extern __inline __m512i
  1779. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1780. _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
  1781. {
  1782. return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
  1783. (__v64qi) __B,
  1784. (__v64qi)
  1785. _mm512_setzero_si512 (),
  1786. (__mmask64) __M);
  1787. }
  1788. extern __inline __m512i
  1789. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1790. _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
  1791. __m512i __B)
  1792. {
  1793. return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
  1794. (__v64qi) __B,
  1795. (__v64qi) __W,
  1796. (__mmask64) __M);
  1797. }
  1798. extern __inline __m512i
  1799. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1800. _mm512_min_epu8 (__m512i __A, __m512i __B)
  1801. {
  1802. return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
  1803. (__v64qi) __B,
  1804. (__v64qi)
  1805. _mm512_setzero_si512 (),
  1806. (__mmask64) -1);
  1807. }
  1808. extern __inline __m512i
  1809. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1810. _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
  1811. {
  1812. return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
  1813. (__v64qi) __B,
  1814. (__v64qi)
  1815. _mm512_setzero_si512 (),
  1816. (__mmask64) __M);
  1817. }
  1818. extern __inline __m512i
  1819. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1820. _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
  1821. __m512i __B)
  1822. {
  1823. return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
  1824. (__v64qi) __B,
  1825. (__v64qi) __W,
  1826. (__mmask64) __M);
  1827. }
  1828. extern __inline __m512i
  1829. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1830. _mm512_min_epi8 (__m512i __A, __m512i __B)
  1831. {
  1832. return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
  1833. (__v64qi) __B,
  1834. (__v64qi)
  1835. _mm512_setzero_si512 (),
  1836. (__mmask64) -1);
  1837. }
  1838. extern __inline __m512i
  1839. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1840. _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
  1841. {
  1842. return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
  1843. (__v64qi) __B,
  1844. (__v64qi)
  1845. _mm512_setzero_si512 (),
  1846. (__mmask64) __M);
  1847. }
  1848. extern __inline __m512i
  1849. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1850. _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
  1851. __m512i __B)
  1852. {
  1853. return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
  1854. (__v64qi) __B,
  1855. (__v64qi) __W,
  1856. (__mmask64) __M);
  1857. }
  1858. extern __inline __m512i
  1859. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1860. _mm512_max_epi16 (__m512i __A, __m512i __B)
  1861. {
  1862. return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
  1863. (__v32hi) __B,
  1864. (__v32hi)
  1865. _mm512_setzero_si512 (),
  1866. (__mmask32) -1);
  1867. }
  1868. extern __inline __m512i
  1869. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1870. _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
  1871. {
  1872. return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
  1873. (__v32hi) __B,
  1874. (__v32hi)
  1875. _mm512_setzero_si512 (),
  1876. (__mmask32) __M);
  1877. }
  1878. extern __inline __m512i
  1879. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1880. _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
  1881. __m512i __B)
  1882. {
  1883. return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
  1884. (__v32hi) __B,
  1885. (__v32hi) __W,
  1886. (__mmask32) __M);
  1887. }
  1888. extern __inline __m512i
  1889. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1890. _mm512_max_epu16 (__m512i __A, __m512i __B)
  1891. {
  1892. return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
  1893. (__v32hi) __B,
  1894. (__v32hi)
  1895. _mm512_setzero_si512 (),
  1896. (__mmask32) -1);
  1897. }
  1898. extern __inline __m512i
  1899. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1900. _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
  1901. {
  1902. return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
  1903. (__v32hi) __B,
  1904. (__v32hi)
  1905. _mm512_setzero_si512 (),
  1906. (__mmask32) __M);
  1907. }
  1908. extern __inline __m512i
  1909. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1910. _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
  1911. __m512i __B)
  1912. {
  1913. return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
  1914. (__v32hi) __B,
  1915. (__v32hi) __W,
  1916. (__mmask32) __M);
  1917. }
  1918. extern __inline __m512i
  1919. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1920. _mm512_sra_epi16 (__m512i __A, __m128i __B)
  1921. {
  1922. return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
  1923. (__v8hi) __B,
  1924. (__v32hi)
  1925. _mm512_setzero_si512 (),
  1926. (__mmask32) -1);
  1927. }
  1928. extern __inline __m512i
  1929. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1930. _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1931. __m128i __B)
  1932. {
  1933. return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
  1934. (__v8hi) __B,
  1935. (__v32hi) __W,
  1936. (__mmask32) __U);
  1937. }
  1938. extern __inline __m512i
  1939. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1940. _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
  1941. {
  1942. return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
  1943. (__v8hi) __B,
  1944. (__v32hi)
  1945. _mm512_setzero_si512 (),
  1946. (__mmask32) __U);
  1947. }
  1948. extern __inline __m512i
  1949. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1950. _mm512_srav_epi16 (__m512i __A, __m512i __B)
  1951. {
  1952. return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
  1953. (__v32hi) __B,
  1954. (__v32hi)
  1955. _mm512_setzero_si512 (),
  1956. (__mmask32) -1);
  1957. }
  1958. extern __inline __m512i
  1959. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1960. _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1961. __m512i __B)
  1962. {
  1963. return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
  1964. (__v32hi) __B,
  1965. (__v32hi) __W,
  1966. (__mmask32) __U);
  1967. }
  1968. extern __inline __m512i
  1969. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1970. _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  1971. {
  1972. return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
  1973. (__v32hi) __B,
  1974. (__v32hi)
  1975. _mm512_setzero_si512 (),
  1976. (__mmask32) __U);
  1977. }
  1978. extern __inline __m512i
  1979. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1980. _mm512_srlv_epi16 (__m512i __A, __m512i __B)
  1981. {
  1982. return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
  1983. (__v32hi) __B,
  1984. (__v32hi)
  1985. _mm512_setzero_si512 (),
  1986. (__mmask32) -1);
  1987. }
  1988. extern __inline __m512i
  1989. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1990. _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  1991. __m512i __B)
  1992. {
  1993. return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
  1994. (__v32hi) __B,
  1995. (__v32hi) __W,
  1996. (__mmask32) __U);
  1997. }
  1998. extern __inline __m512i
  1999. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2000. _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  2001. {
  2002. return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
  2003. (__v32hi) __B,
  2004. (__v32hi)
  2005. _mm512_setzero_si512 (),
  2006. (__mmask32) __U);
  2007. }
  2008. extern __inline __m512i
  2009. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2010. _mm512_sllv_epi16 (__m512i __A, __m512i __B)
  2011. {
  2012. return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
  2013. (__v32hi) __B,
  2014. (__v32hi)
  2015. _mm512_setzero_si512 (),
  2016. (__mmask32) -1);
  2017. }
  2018. extern __inline __m512i
  2019. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2020. _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  2021. __m512i __B)
  2022. {
  2023. return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
  2024. (__v32hi) __B,
  2025. (__v32hi) __W,
  2026. (__mmask32) __U);
  2027. }
  2028. extern __inline __m512i
  2029. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2030. _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
  2031. {
  2032. return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
  2033. (__v32hi) __B,
  2034. (__v32hi)
  2035. _mm512_setzero_si512 (),
  2036. (__mmask32) __U);
  2037. }
  2038. extern __inline __m512i
  2039. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2040. _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
  2041. __m512i __B)
  2042. {
  2043. return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
  2044. (__v32hi) __B,
  2045. (__v64qi) __W,
  2046. (__mmask64) __M);
  2047. }
  2048. extern __inline __m512i
  2049. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2050. _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
  2051. {
  2052. return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
  2053. (__v32hi) __B,
  2054. (__v64qi)
  2055. _mm512_setzero_si512 (),
  2056. __M);
  2057. }
  2058. extern __inline __m512i
  2059. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2060. _mm512_packus_epi16 (__m512i __A, __m512i __B)
  2061. {
  2062. return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
  2063. (__v32hi) __B,
  2064. (__v64qi)
  2065. _mm512_setzero_si512 (),
  2066. (__mmask64) -1);
  2067. }
  2068. extern __inline __m512i
  2069. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2070. _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
  2071. __m512i __B)
  2072. {
  2073. return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
  2074. (__v32hi) __B,
  2075. (__v64qi) __W,
  2076. (__mmask64) __M);
  2077. }
  2078. extern __inline __m512i
  2079. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2080. _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
  2081. {
  2082. return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
  2083. (__v32hi) __B,
  2084. (__v64qi)
  2085. _mm512_setzero_si512 (),
  2086. (__mmask64) __M);
  2087. }
  2088. extern __inline __m512i
  2089. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2090. _mm512_abs_epi8 (__m512i __A)
  2091. {
  2092. return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
  2093. (__v64qi)
  2094. _mm512_setzero_si512 (),
  2095. (__mmask64) -1);
  2096. }
  2097. extern __inline __m512i
  2098. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2099. _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
  2100. {
  2101. return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
  2102. (__v64qi) __W,
  2103. (__mmask64) __U);
  2104. }
  2105. extern __inline __m512i
  2106. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2107. _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
  2108. {
  2109. return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
  2110. (__v64qi)
  2111. _mm512_setzero_si512 (),
  2112. (__mmask64) __U);
  2113. }
  2114. extern __inline __m512i
  2115. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2116. _mm512_abs_epi16 (__m512i __A)
  2117. {
  2118. return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
  2119. (__v32hi)
  2120. _mm512_setzero_si512 (),
  2121. (__mmask32) -1);
  2122. }
  2123. extern __inline __m512i
  2124. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2125. _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
  2126. {
  2127. return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
  2128. (__v32hi) __W,
  2129. (__mmask32) __U);
  2130. }
  2131. extern __inline __m512i
  2132. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2133. _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
  2134. {
  2135. return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
  2136. (__v32hi)
  2137. _mm512_setzero_si512 (),
  2138. (__mmask32) __U);
  2139. }
  2140. extern __inline __mmask64
  2141. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2142. _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2143. {
  2144. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2145. (__v64qi) __Y, 4,
  2146. (__mmask64) __M);
  2147. }
  2148. extern __inline __mmask64
  2149. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2150. _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2151. {
  2152. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2153. (__v64qi) __Y, 1,
  2154. (__mmask64) __M);
  2155. }
  2156. extern __inline __mmask64
  2157. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2158. _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2159. {
  2160. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2161. (__v64qi) __Y, 5,
  2162. (__mmask64) __M);
  2163. }
  2164. extern __inline __mmask64
  2165. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2166. _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2167. {
  2168. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2169. (__v64qi) __Y, 2,
  2170. (__mmask64) __M);
  2171. }
  2172. extern __inline __mmask32
  2173. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2174. _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2175. {
  2176. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2177. (__v32hi) __Y, 4,
  2178. (__mmask32) __M);
  2179. }
  2180. extern __inline __mmask32
  2181. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2182. _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2183. {
  2184. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2185. (__v32hi) __Y, 1,
  2186. (__mmask32) __M);
  2187. }
  2188. extern __inline __mmask32
  2189. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2190. _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2191. {
  2192. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2193. (__v32hi) __Y, 5,
  2194. (__mmask32) __M);
  2195. }
  2196. extern __inline __mmask32
  2197. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2198. _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2199. {
  2200. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2201. (__v32hi) __Y, 2,
  2202. (__mmask32) __M);
  2203. }
  2204. extern __inline __mmask64
  2205. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2206. _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2207. {
  2208. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2209. (__v64qi) __Y, 4,
  2210. (__mmask64) __M);
  2211. }
  2212. extern __inline __mmask64
  2213. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2214. _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2215. {
  2216. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2217. (__v64qi) __Y, 1,
  2218. (__mmask64) __M);
  2219. }
  2220. extern __inline __mmask64
  2221. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2222. _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2223. {
  2224. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2225. (__v64qi) __Y, 5,
  2226. (__mmask64) __M);
  2227. }
  2228. extern __inline __mmask64
  2229. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2230. _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
  2231. {
  2232. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2233. (__v64qi) __Y, 2,
  2234. (__mmask64) __M);
  2235. }
  2236. extern __inline __mmask32
  2237. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2238. _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2239. {
  2240. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2241. (__v32hi) __Y, 4,
  2242. (__mmask32) __M);
  2243. }
  2244. extern __inline __mmask32
  2245. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2246. _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2247. {
  2248. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2249. (__v32hi) __Y, 1,
  2250. (__mmask32) __M);
  2251. }
  2252. extern __inline __mmask32
  2253. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2254. _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2255. {
  2256. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2257. (__v32hi) __Y, 5,
  2258. (__mmask32) __M);
  2259. }
  2260. extern __inline __mmask32
  2261. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2262. _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
  2263. {
  2264. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2265. (__v32hi) __Y, 2,
  2266. (__mmask32) __M);
  2267. }
  2268. extern __inline __mmask64
  2269. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2270. _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
  2271. {
  2272. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2273. (__v64qi) __Y, 4,
  2274. (__mmask64) -1);
  2275. }
  2276. extern __inline __mmask64
  2277. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2278. _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
  2279. {
  2280. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2281. (__v64qi) __Y, 1,
  2282. (__mmask64) -1);
  2283. }
  2284. extern __inline __mmask64
  2285. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2286. _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
  2287. {
  2288. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2289. (__v64qi) __Y, 5,
  2290. (__mmask64) -1);
  2291. }
  2292. extern __inline __mmask64
  2293. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2294. _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
  2295. {
  2296. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2297. (__v64qi) __Y, 2,
  2298. (__mmask64) -1);
  2299. }
  2300. extern __inline __mmask32
  2301. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2302. _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
  2303. {
  2304. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2305. (__v32hi) __Y, 4,
  2306. (__mmask32) -1);
  2307. }
  2308. extern __inline __mmask32
  2309. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2310. _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
  2311. {
  2312. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2313. (__v32hi) __Y, 1,
  2314. (__mmask32) -1);
  2315. }
  2316. extern __inline __mmask32
  2317. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2318. _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
  2319. {
  2320. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2321. (__v32hi) __Y, 5,
  2322. (__mmask32) -1);
  2323. }
  2324. extern __inline __mmask32
  2325. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2326. _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
  2327. {
  2328. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2329. (__v32hi) __Y, 2,
  2330. (__mmask32) -1);
  2331. }
  2332. extern __inline __mmask64
  2333. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2334. _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
  2335. {
  2336. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2337. (__v64qi) __Y, 4,
  2338. (__mmask64) -1);
  2339. }
  2340. extern __inline __mmask64
  2341. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2342. _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
  2343. {
  2344. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2345. (__v64qi) __Y, 1,
  2346. (__mmask64) -1);
  2347. }
  2348. extern __inline __mmask64
  2349. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2350. _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
  2351. {
  2352. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2353. (__v64qi) __Y, 5,
  2354. (__mmask64) -1);
  2355. }
  2356. extern __inline __mmask64
  2357. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2358. _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
  2359. {
  2360. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2361. (__v64qi) __Y, 2,
  2362. (__mmask64) -1);
  2363. }
  2364. extern __inline __mmask32
  2365. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2366. _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
  2367. {
  2368. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2369. (__v32hi) __Y, 4,
  2370. (__mmask32) -1);
  2371. }
  2372. extern __inline __mmask32
  2373. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2374. _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
  2375. {
  2376. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2377. (__v32hi) __Y, 1,
  2378. (__mmask32) -1);
  2379. }
  2380. extern __inline __mmask32
  2381. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2382. _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
  2383. {
  2384. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2385. (__v32hi) __Y, 5,
  2386. (__mmask32) -1);
  2387. }
  2388. extern __inline __mmask32
  2389. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2390. _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
  2391. {
  2392. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2393. (__v32hi) __Y, 2,
  2394. (__mmask32) -1);
  2395. }
  2396. extern __inline __m512i
  2397. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2398. _mm512_packs_epi32 (__m512i __A, __m512i __B)
  2399. {
  2400. return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
  2401. (__v16si) __B,
  2402. (__v32hi)
  2403. _mm512_setzero_si512 (),
  2404. (__mmask32) -1);
  2405. }
  2406. extern __inline __m512i
  2407. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2408. _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
  2409. {
  2410. return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
  2411. (__v16si) __B,
  2412. (__v32hi)
  2413. _mm512_setzero_si512 (),
  2414. __M);
  2415. }
  2416. extern __inline __m512i
  2417. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2418. _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
  2419. __m512i __B)
  2420. {
  2421. return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
  2422. (__v16si) __B,
  2423. (__v32hi) __W,
  2424. __M);
  2425. }
  2426. extern __inline __m512i
  2427. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2428. _mm512_packus_epi32 (__m512i __A, __m512i __B)
  2429. {
  2430. return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
  2431. (__v16si) __B,
  2432. (__v32hi)
  2433. _mm512_setzero_si512 (),
  2434. (__mmask32) -1);
  2435. }
  2436. extern __inline __m512i
  2437. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2438. _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
  2439. {
  2440. return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
  2441. (__v16si) __B,
  2442. (__v32hi)
  2443. _mm512_setzero_si512 (),
  2444. __M);
  2445. }
  2446. extern __inline __m512i
  2447. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2448. _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
  2449. __m512i __B)
  2450. {
  2451. return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
  2452. (__v16si) __B,
  2453. (__v32hi) __W,
  2454. __M);
  2455. }
  2456. #ifdef __OPTIMIZE__
  2457. extern __inline __mmask32
  2458. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2459. _kshiftli_mask32 (__mmask32 __A, unsigned int __B)
  2460. {
  2461. return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A,
  2462. (__mmask8) __B);
  2463. }
  2464. extern __inline __mmask64
  2465. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2466. _kshiftli_mask64 (__mmask64 __A, unsigned int __B)
  2467. {
  2468. return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A,
  2469. (__mmask8) __B);
  2470. }
  2471. extern __inline __mmask32
  2472. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2473. _kshiftri_mask32 (__mmask32 __A, unsigned int __B)
  2474. {
  2475. return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A,
  2476. (__mmask8) __B);
  2477. }
  2478. extern __inline __mmask64
  2479. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2480. _kshiftri_mask64 (__mmask64 __A, unsigned int __B)
  2481. {
  2482. return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A,
  2483. (__mmask8) __B);
  2484. }
  2485. extern __inline __m512i
  2486. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2487. _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
  2488. {
  2489. return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
  2490. (__v8di) __B, __N * 8);
  2491. }
  2492. extern __inline __m512i
  2493. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2494. _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
  2495. __m512i __B, const int __N)
  2496. {
  2497. return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
  2498. (__v8di) __B,
  2499. __N * 8,
  2500. (__v8di) __W,
  2501. (__mmask64) __U);
  2502. }
  2503. extern __inline __m512i
  2504. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2505. _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
  2506. const int __N)
  2507. {
  2508. return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
  2509. (__v8di) __B,
  2510. __N * 8,
  2511. (__v8di)
  2512. _mm512_setzero_si512 (),
  2513. (__mmask64) __U);
  2514. }
  2515. extern __inline __m512i
  2516. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2517. _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
  2518. {
  2519. return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
  2520. (__v64qi) __B,
  2521. __imm,
  2522. (__v32hi)
  2523. _mm512_setzero_si512 (),
  2524. (__mmask32) -1);
  2525. }
  2526. extern __inline __m512i
  2527. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2528. _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
  2529. __m512i __B, const int __imm)
  2530. {
  2531. return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
  2532. (__v64qi) __B,
  2533. __imm,
  2534. (__v32hi) __W,
  2535. (__mmask32) __U);
  2536. }
  2537. extern __inline __m512i
  2538. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2539. _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
  2540. const int __imm)
  2541. {
  2542. return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
  2543. (__v64qi) __B,
  2544. __imm,
  2545. (__v32hi)
  2546. _mm512_setzero_si512 (),
  2547. (__mmask32) __U);
  2548. }
  2549. extern __inline __m512i
  2550. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2551. _mm512_srli_epi16 (__m512i __A, const int __imm)
  2552. {
  2553. return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
  2554. (__v32hi)
  2555. _mm512_setzero_si512 (),
  2556. (__mmask32) -1);
  2557. }
  2558. extern __inline __m512i
  2559. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2560. _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  2561. const int __imm)
  2562. {
  2563. return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
  2564. (__v32hi) __W,
  2565. (__mmask32) __U);
  2566. }
  2567. extern __inline __m512i
  2568. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2569. _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
  2570. {
  2571. return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
  2572. (__v32hi)
  2573. _mm512_setzero_si512 (),
  2574. (__mmask32) __U);
  2575. }
  2576. extern __inline __m512i
  2577. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2578. _mm512_slli_epi16 (__m512i __A, const int __B)
  2579. {
  2580. return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
  2581. (__v32hi)
  2582. _mm512_setzero_si512 (),
  2583. (__mmask32) -1);
  2584. }
  2585. extern __inline __m512i
  2586. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2587. _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  2588. const int __B)
  2589. {
  2590. return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
  2591. (__v32hi) __W,
  2592. (__mmask32) __U);
  2593. }
  2594. extern __inline __m512i
  2595. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2596. _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
  2597. {
  2598. return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
  2599. (__v32hi)
  2600. _mm512_setzero_si512 (),
  2601. (__mmask32) __U);
  2602. }
  2603. extern __inline __m512i
  2604. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2605. _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
  2606. {
  2607. return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
  2608. __imm,
  2609. (__v32hi)
  2610. _mm512_setzero_si512 (),
  2611. (__mmask32) -1);
  2612. }
  2613. extern __inline __m512i
  2614. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2615. _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  2616. const int __imm)
  2617. {
  2618. return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
  2619. __imm,
  2620. (__v32hi) __W,
  2621. (__mmask32) __U);
  2622. }
  2623. extern __inline __m512i
  2624. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2625. _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
  2626. const int __imm)
  2627. {
  2628. return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
  2629. __imm,
  2630. (__v32hi)
  2631. _mm512_setzero_si512 (),
  2632. (__mmask32) __U);
  2633. }
  2634. extern __inline __m512i
  2635. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2636. _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
  2637. {
  2638. return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
  2639. __imm,
  2640. (__v32hi)
  2641. _mm512_setzero_si512 (),
  2642. (__mmask32) -1);
  2643. }
  2644. extern __inline __m512i
  2645. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2646. _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  2647. const int __imm)
  2648. {
  2649. return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
  2650. __imm,
  2651. (__v32hi) __W,
  2652. (__mmask32) __U);
  2653. }
  2654. extern __inline __m512i
  2655. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2656. _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
  2657. const int __imm)
  2658. {
  2659. return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
  2660. __imm,
  2661. (__v32hi)
  2662. _mm512_setzero_si512 (),
  2663. (__mmask32) __U);
  2664. }
  2665. extern __inline __m512i
  2666. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2667. _mm512_srai_epi16 (__m512i __A, const int __imm)
  2668. {
  2669. return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
  2670. (__v32hi)
  2671. _mm512_setzero_si512 (),
  2672. (__mmask32) -1);
  2673. }
  2674. extern __inline __m512i
  2675. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2676. _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
  2677. const int __imm)
  2678. {
  2679. return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
  2680. (__v32hi) __W,
  2681. (__mmask32) __U);
  2682. }
  2683. extern __inline __m512i
  2684. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2685. _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
  2686. {
  2687. return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
  2688. (__v32hi)
  2689. _mm512_setzero_si512 (),
  2690. (__mmask32) __U);
  2691. }
  2692. extern __inline __m512i
  2693. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2694. _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
  2695. {
  2696. return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
  2697. (__v32hi) __W,
  2698. (__mmask32) __U);
  2699. }
  2700. extern __inline __m512i
  2701. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2702. _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
  2703. {
  2704. return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
  2705. (__v64qi) __W,
  2706. (__mmask64) __U);
  2707. }
  2708. extern __inline __mmask32
  2709. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2710. _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
  2711. const int __P)
  2712. {
  2713. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2714. (__v32hi) __Y, __P,
  2715. (__mmask32) __U);
  2716. }
  2717. extern __inline __mmask32
  2718. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2719. _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
  2720. {
  2721. return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
  2722. (__v32hi) __Y, __P,
  2723. (__mmask32) -1);
  2724. }
  2725. extern __inline __mmask64
  2726. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2727. _mm512_mask_cmp_epi8_mask (__mmask64 __U, __m512i __X, __m512i __Y,
  2728. const int __P)
  2729. {
  2730. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2731. (__v64qi) __Y, __P,
  2732. (__mmask64) __U);
  2733. }
  2734. extern __inline __mmask64
  2735. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2736. _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
  2737. {
  2738. return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
  2739. (__v64qi) __Y, __P,
  2740. (__mmask64) -1);
  2741. }
  2742. extern __inline __mmask32
  2743. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2744. _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
  2745. const int __P)
  2746. {
  2747. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2748. (__v32hi) __Y, __P,
  2749. (__mmask32) __U);
  2750. }
  2751. extern __inline __mmask32
  2752. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2753. _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
  2754. {
  2755. return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
  2756. (__v32hi) __Y, __P,
  2757. (__mmask32) -1);
  2758. }
  2759. extern __inline __mmask64
  2760. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2761. _mm512_mask_cmp_epu8_mask (__mmask64 __U, __m512i __X, __m512i __Y,
  2762. const int __P)
  2763. {
  2764. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2765. (__v64qi) __Y, __P,
  2766. (__mmask64) __U);
  2767. }
  2768. extern __inline __mmask64
  2769. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2770. _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
  2771. {
  2772. return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
  2773. (__v64qi) __Y, __P,
  2774. (__mmask64) -1);
  2775. }
  2776. extern __inline __m512i
  2777. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2778. _mm512_bslli_epi128 (__m512i __A, const int __N)
  2779. {
  2780. return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
  2781. }
  2782. extern __inline __m512i
  2783. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2784. _mm512_bsrli_epi128 (__m512i __A, const int __N)
  2785. {
  2786. return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
  2787. }
  2788. #else
  2789. #define _kshiftli_mask32(X, Y) \
  2790. ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y)))
  2791. #define _kshiftli_mask64(X, Y) \
  2792. ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y)))
  2793. #define _kshiftri_mask32(X, Y) \
  2794. ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y)))
  2795. #define _kshiftri_mask64(X, Y) \
  2796. ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y)))
  2797. #define _mm512_alignr_epi8(X, Y, N) \
  2798. ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \
  2799. (__v8di)(__m512i)(Y), \
  2800. (int)(N * 8)))
  2801. #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \
  2802. ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
  2803. (__v8di)(__m512i)(Y), (int)(N * 8), \
  2804. (__v8di)(__m512i)(W), (__mmask64)(U)))
  2805. #define _mm512_maskz_alignr_epi8(U, X, Y, N) \
  2806. ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
  2807. (__v8di)(__m512i)(Y), (int)(N * 8), \
  2808. (__v8di)(__m512i) \
  2809. _mm512_setzero_si512 (), \
  2810. (__mmask64)(U)))
  2811. #define _mm512_dbsad_epu8(X, Y, C) \
  2812. ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
  2813. (__v64qi)(__m512i) (Y), (int) (C), \
  2814. (__v32hi)(__m512i) \
  2815. _mm512_setzero_si512 (), \
  2816. (__mmask32)-1))
  2817. #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \
  2818. ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
  2819. (__v64qi)(__m512i) (Y), (int) (C), \
  2820. (__v32hi)(__m512i)(W), \
  2821. (__mmask32)(U)))
  2822. #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \
  2823. ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
  2824. (__v64qi)(__m512i) (Y), (int) (C), \
  2825. (__v32hi)(__m512i) \
  2826. _mm512_setzero_si512 (), \
  2827. (__mmask32)(U)))
  2828. #define _mm512_srli_epi16(A, B) \
  2829. ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
  2830. (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
  2831. #define _mm512_mask_srli_epi16(W, U, A, B) \
  2832. ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
  2833. (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
  2834. #define _mm512_maskz_srli_epi16(U, A, B) \
  2835. ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
  2836. (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
  2837. #define _mm512_slli_epi16(X, C) \
  2838. ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
  2839. (__v32hi)(__m512i)_mm512_setzero_si512 (), \
  2840. (__mmask32)-1))
  2841. #define _mm512_mask_slli_epi16(W, U, X, C) \
  2842. ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
  2843. (__v32hi)(__m512i)(W),\
  2844. (__mmask32)(U)))
  2845. #define _mm512_maskz_slli_epi16(U, X, C) \
  2846. ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
  2847. (__v32hi)(__m512i)_mm512_setzero_si512 (), \
  2848. (__mmask32)(U)))
  2849. #define _mm512_shufflehi_epi16(A, B) \
  2850. ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
  2851. (__v32hi)(__m512i) \
  2852. _mm512_setzero_si512 (), \
  2853. (__mmask32)-1))
  2854. #define _mm512_mask_shufflehi_epi16(W, U, A, B) \
  2855. ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
  2856. (__v32hi)(__m512i)(W), \
  2857. (__mmask32)(U)))
  2858. #define _mm512_maskz_shufflehi_epi16(U, A, B) \
  2859. ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
  2860. (__v32hi)(__m512i) \
  2861. _mm512_setzero_si512 (), \
  2862. (__mmask32)(U)))
  2863. #define _mm512_shufflelo_epi16(A, B) \
  2864. ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
  2865. (__v32hi)(__m512i) \
  2866. _mm512_setzero_si512 (), \
  2867. (__mmask32)-1))
  2868. #define _mm512_mask_shufflelo_epi16(W, U, A, B) \
  2869. ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
  2870. (__v32hi)(__m512i)(W), \
  2871. (__mmask32)(U)))
  2872. #define _mm512_maskz_shufflelo_epi16(U, A, B) \
  2873. ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
  2874. (__v32hi)(__m512i) \
  2875. _mm512_setzero_si512 (), \
  2876. (__mmask32)(U)))
  2877. #define _mm512_srai_epi16(A, B) \
  2878. ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
  2879. (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
  2880. #define _mm512_mask_srai_epi16(W, U, A, B) \
  2881. ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
  2882. (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
  2883. #define _mm512_maskz_srai_epi16(U, A, B) \
  2884. ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
  2885. (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
  2886. #define _mm512_mask_blend_epi16(__U, __A, __W) \
  2887. ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \
  2888. (__v32hi) (__W), \
  2889. (__mmask32) (__U)))
  2890. #define _mm512_mask_blend_epi8(__U, __A, __W) \
  2891. ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \
  2892. (__v64qi) (__W), \
  2893. (__mmask64) (__U)))
  2894. #define _mm512_cmp_epi16_mask(X, Y, P) \
  2895. ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
  2896. (__v32hi)(__m512i)(Y), (int)(P),\
  2897. (__mmask32)(-1)))
  2898. #define _mm512_cmp_epi8_mask(X, Y, P) \
  2899. ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
  2900. (__v64qi)(__m512i)(Y), (int)(P),\
  2901. (__mmask64)(-1)))
  2902. #define _mm512_cmp_epu16_mask(X, Y, P) \
  2903. ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
  2904. (__v32hi)(__m512i)(Y), (int)(P),\
  2905. (__mmask32)(-1)))
  2906. #define _mm512_cmp_epu8_mask(X, Y, P) \
  2907. ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
  2908. (__v64qi)(__m512i)(Y), (int)(P),\
  2909. (__mmask64)(-1)))
  2910. #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \
  2911. ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
  2912. (__v32hi)(__m512i)(Y), (int)(P),\
  2913. (__mmask32)(M)))
  2914. #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \
  2915. ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
  2916. (__v64qi)(__m512i)(Y), (int)(P),\
  2917. (__mmask64)(M)))
  2918. #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \
  2919. ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
  2920. (__v32hi)(__m512i)(Y), (int)(P),\
  2921. (__mmask32)(M)))
  2922. #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \
  2923. ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
  2924. (__v64qi)(__m512i)(Y), (int)(P),\
  2925. (__mmask64)(M)))
  2926. #define _mm512_bslli_epi128(A, N) \
  2927. ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
  2928. #define _mm512_bsrli_epi128(A, N) \
  2929. ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
  2930. #endif
  2931. #ifdef __DISABLE_AVX512BW__
  2932. #undef __DISABLE_AVX512BW__
  2933. #pragma GCC pop_options
  2934. #endif /* __DISABLE_AVX512BW__ */
  2935. #endif /* _AVX512BWINTRIN_H_INCLUDED */