avx512fintrin.h 91 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457
  1. /*===---- avx512fintrin.h - AVX2 intrinsics --------------------------------===
  2. *
  3. * Permission is hereby granted, free of charge, to any person obtaining a copy
  4. * of this software and associated documentation files (the "Software"), to deal
  5. * in the Software without restriction, including without limitation the rights
  6. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. * copies of the Software, and to permit persons to whom the Software is
  8. * furnished to do so, subject to the following conditions:
  9. *
  10. * The above copyright notice and this permission notice shall be included in
  11. * all copies or substantial portions of the Software.
  12. *
  13. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19. * THE SOFTWARE.
  20. *
  21. *===-----------------------------------------------------------------------===
  22. */
  23. #ifndef __IMMINTRIN_H
  24. #error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
  25. #endif
  26. #ifndef __AVX512FINTRIN_H
  27. #define __AVX512FINTRIN_H
  28. typedef double __v8df __attribute__((__vector_size__(64)));
  29. typedef float __v16sf __attribute__((__vector_size__(64)));
  30. typedef long long __v8di __attribute__((__vector_size__(64)));
  31. typedef int __v16si __attribute__((__vector_size__(64)));
  32. typedef float __m512 __attribute__((__vector_size__(64)));
  33. typedef double __m512d __attribute__((__vector_size__(64)));
  34. typedef long long __m512i __attribute__((__vector_size__(64)));
  35. typedef unsigned char __mmask8;
  36. typedef unsigned short __mmask16;
  37. /* Rounding mode macros. */
  38. #define _MM_FROUND_TO_NEAREST_INT 0x00
  39. #define _MM_FROUND_TO_NEG_INF 0x01
  40. #define _MM_FROUND_TO_POS_INF 0x02
  41. #define _MM_FROUND_TO_ZERO 0x03
  42. #define _MM_FROUND_CUR_DIRECTION 0x04
  43. /* Define the default attributes for the functions in this file. */
  44. #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
  45. /* Create vectors with repeated elements */
  46. static __inline __m512i __DEFAULT_FN_ATTRS
  47. _mm512_setzero_si512(void)
  48. {
  49. return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
  50. }
  51. static __inline __m512i __DEFAULT_FN_ATTRS
  52. _mm512_maskz_set1_epi32(__mmask16 __M, int __A)
  53. {
  54. return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
  55. (__v16si)
  56. _mm512_setzero_si512 (),
  57. __M);
  58. }
  59. static __inline __m512i __DEFAULT_FN_ATTRS
  60. _mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
  61. {
  62. #ifdef __x86_64__
  63. return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
  64. (__v8di)
  65. _mm512_setzero_si512 (),
  66. __M);
  67. #else
  68. return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
  69. (__v8di)
  70. _mm512_setzero_si512 (),
  71. __M);
  72. #endif
  73. }
  74. static __inline __m512 __DEFAULT_FN_ATTRS
  75. _mm512_setzero_ps(void)
  76. {
  77. return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  78. 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
  79. }
  80. static __inline __m512d __DEFAULT_FN_ATTRS
  81. _mm512_setzero_pd(void)
  82. {
  83. return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
  84. }
  85. static __inline __m512 __DEFAULT_FN_ATTRS
  86. _mm512_set1_ps(float __w)
  87. {
  88. return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
  89. __w, __w, __w, __w, __w, __w, __w, __w };
  90. }
  91. static __inline __m512d __DEFAULT_FN_ATTRS
  92. _mm512_set1_pd(double __w)
  93. {
  94. return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
  95. }
  96. static __inline __m512i __DEFAULT_FN_ATTRS
  97. _mm512_set1_epi32(int __s)
  98. {
  99. return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
  100. __s, __s, __s, __s, __s, __s, __s, __s };
  101. }
  102. static __inline __m512i __DEFAULT_FN_ATTRS
  103. _mm512_set1_epi64(long long __d)
  104. {
  105. return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
  106. }
  107. static __inline__ __m512 __DEFAULT_FN_ATTRS
  108. _mm512_broadcastss_ps(__m128 __X)
  109. {
  110. float __f = __X[0];
  111. return (__v16sf){ __f, __f, __f, __f,
  112. __f, __f, __f, __f,
  113. __f, __f, __f, __f,
  114. __f, __f, __f, __f };
  115. }
  116. static __inline__ __m512d __DEFAULT_FN_ATTRS
  117. _mm512_broadcastsd_pd(__m128d __X)
  118. {
  119. double __d = __X[0];
  120. return (__v8df){ __d, __d, __d, __d,
  121. __d, __d, __d, __d };
  122. }
  123. /* Cast between vector types */
  124. static __inline __m512d __DEFAULT_FN_ATTRS
  125. _mm512_castpd256_pd512(__m256d __a)
  126. {
  127. return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
  128. }
  129. static __inline __m512 __DEFAULT_FN_ATTRS
  130. _mm512_castps256_ps512(__m256 __a)
  131. {
  132. return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
  133. -1, -1, -1, -1, -1, -1, -1, -1);
  134. }
  135. static __inline __m128d __DEFAULT_FN_ATTRS
  136. _mm512_castpd512_pd128(__m512d __a)
  137. {
  138. return __builtin_shufflevector(__a, __a, 0, 1);
  139. }
  140. static __inline __m128 __DEFAULT_FN_ATTRS
  141. _mm512_castps512_ps128(__m512 __a)
  142. {
  143. return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
  144. }
  145. /* Bitwise operators */
  146. static __inline__ __m512i __DEFAULT_FN_ATTRS
  147. _mm512_and_epi32(__m512i __a, __m512i __b)
  148. {
  149. return __a & __b;
  150. }
  151. static __inline__ __m512i __DEFAULT_FN_ATTRS
  152. _mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
  153. {
  154. return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
  155. (__v16si) __b,
  156. (__v16si) __src,
  157. (__mmask16) __k);
  158. }
  159. static __inline__ __m512i __DEFAULT_FN_ATTRS
  160. _mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
  161. {
  162. return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
  163. (__v16si) __b,
  164. (__v16si)
  165. _mm512_setzero_si512 (),
  166. (__mmask16) __k);
  167. }
  168. static __inline__ __m512i __DEFAULT_FN_ATTRS
  169. _mm512_and_epi64(__m512i __a, __m512i __b)
  170. {
  171. return __a & __b;
  172. }
  173. static __inline__ __m512i __DEFAULT_FN_ATTRS
  174. _mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
  175. {
  176. return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
  177. (__v8di) __b,
  178. (__v8di) __src,
  179. (__mmask8) __k);
  180. }
  181. static __inline__ __m512i __DEFAULT_FN_ATTRS
  182. _mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
  183. {
  184. return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
  185. (__v8di) __b,
  186. (__v8di)
  187. _mm512_setzero_si512 (),
  188. (__mmask8) __k);
  189. }
  190. static __inline__ __m512i __DEFAULT_FN_ATTRS
  191. _mm512_andnot_epi32 (__m512i __A, __m512i __B)
  192. {
  193. return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  194. (__v16si) __B,
  195. (__v16si)
  196. _mm512_setzero_si512 (),
  197. (__mmask16) -1);
  198. }
  199. static __inline__ __m512i __DEFAULT_FN_ATTRS
  200. _mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
  201. {
  202. return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  203. (__v16si) __B,
  204. (__v16si) __W,
  205. (__mmask16) __U);
  206. }
  207. static __inline__ __m512i __DEFAULT_FN_ATTRS
  208. _mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
  209. {
  210. return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
  211. (__v16si) __B,
  212. (__v16si)
  213. _mm512_setzero_si512 (),
  214. (__mmask16) __U);
  215. }
  216. static __inline__ __m512i __DEFAULT_FN_ATTRS
  217. _mm512_andnot_epi64 (__m512i __A, __m512i __B)
  218. {
  219. return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
  220. (__v8di) __B,
  221. (__v8di)
  222. _mm512_setzero_si512 (),
  223. (__mmask8) -1);
  224. }
  225. static __inline__ __m512i __DEFAULT_FN_ATTRS
  226. _mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
  227. {
  228. return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
  229. (__v8di) __B,
  230. (__v8di) __W, __U);
  231. }
  232. static __inline__ __m512i __DEFAULT_FN_ATTRS
  233. _mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
  234. {
  235. return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
  236. (__v8di) __B,
  237. (__v8di)
  238. _mm512_setzero_pd (),
  239. __U);
  240. }
  241. static __inline__ __m512i __DEFAULT_FN_ATTRS
  242. _mm512_or_epi32(__m512i __a, __m512i __b)
  243. {
  244. return __a | __b;
  245. }
  246. static __inline__ __m512i __DEFAULT_FN_ATTRS
  247. _mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
  248. {
  249. return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
  250. (__v16si) __b,
  251. (__v16si) __src,
  252. (__mmask16) __k);
  253. }
  254. static __inline__ __m512i __DEFAULT_FN_ATTRS
  255. _mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
  256. {
  257. return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
  258. (__v16si) __b,
  259. (__v16si)
  260. _mm512_setzero_si512 (),
  261. (__mmask16) __k);
  262. }
  263. static __inline__ __m512i __DEFAULT_FN_ATTRS
  264. _mm512_or_epi64(__m512i __a, __m512i __b)
  265. {
  266. return __a | __b;
  267. }
  268. static __inline__ __m512i __DEFAULT_FN_ATTRS
  269. _mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
  270. {
  271. return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
  272. (__v8di) __b,
  273. (__v8di) __src,
  274. (__mmask8) __k);
  275. }
  276. static __inline__ __m512i __DEFAULT_FN_ATTRS
  277. _mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
  278. {
  279. return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
  280. (__v8di) __b,
  281. (__v8di)
  282. _mm512_setzero_si512 (),
  283. (__mmask8) __k);
  284. }
  285. static __inline__ __m512i __DEFAULT_FN_ATTRS
  286. _mm512_xor_epi32(__m512i __a, __m512i __b)
  287. {
  288. return __a ^ __b;
  289. }
  290. static __inline__ __m512i __DEFAULT_FN_ATTRS
  291. _mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
  292. {
  293. return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
  294. (__v16si) __b,
  295. (__v16si) __src,
  296. (__mmask16) __k);
  297. }
  298. static __inline__ __m512i __DEFAULT_FN_ATTRS
  299. _mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
  300. {
  301. return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
  302. (__v16si) __b,
  303. (__v16si)
  304. _mm512_setzero_si512 (),
  305. (__mmask16) __k);
  306. }
  307. static __inline__ __m512i __DEFAULT_FN_ATTRS
  308. _mm512_xor_epi64(__m512i __a, __m512i __b)
  309. {
  310. return __a ^ __b;
  311. }
  312. static __inline__ __m512i __DEFAULT_FN_ATTRS
  313. _mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
  314. {
  315. return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
  316. (__v8di) __b,
  317. (__v8di) __src,
  318. (__mmask8) __k);
  319. }
  320. static __inline__ __m512i __DEFAULT_FN_ATTRS
  321. _mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
  322. {
  323. return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
  324. (__v8di) __b,
  325. (__v8di)
  326. _mm512_setzero_si512 (),
  327. (__mmask8) __k);
  328. }
  329. static __inline__ __m512i __DEFAULT_FN_ATTRS
  330. _mm512_and_si512(__m512i __a, __m512i __b)
  331. {
  332. return __a & __b;
  333. }
  334. static __inline__ __m512i __DEFAULT_FN_ATTRS
  335. _mm512_or_si512(__m512i __a, __m512i __b)
  336. {
  337. return __a | __b;
  338. }
  339. static __inline__ __m512i __DEFAULT_FN_ATTRS
  340. _mm512_xor_si512(__m512i __a, __m512i __b)
  341. {
  342. return __a ^ __b;
  343. }
  344. /* Arithmetic */
  345. static __inline __m512d __DEFAULT_FN_ATTRS
  346. _mm512_add_pd(__m512d __a, __m512d __b)
  347. {
  348. return __a + __b;
  349. }
  350. static __inline __m512 __DEFAULT_FN_ATTRS
  351. _mm512_add_ps(__m512 __a, __m512 __b)
  352. {
  353. return __a + __b;
  354. }
  355. static __inline __m512d __DEFAULT_FN_ATTRS
  356. _mm512_mul_pd(__m512d __a, __m512d __b)
  357. {
  358. return __a * __b;
  359. }
  360. static __inline __m512 __DEFAULT_FN_ATTRS
  361. _mm512_mul_ps(__m512 __a, __m512 __b)
  362. {
  363. return __a * __b;
  364. }
  365. static __inline __m512d __DEFAULT_FN_ATTRS
  366. _mm512_sub_pd(__m512d __a, __m512d __b)
  367. {
  368. return __a - __b;
  369. }
  370. static __inline __m512 __DEFAULT_FN_ATTRS
  371. _mm512_sub_ps(__m512 __a, __m512 __b)
  372. {
  373. return __a - __b;
  374. }
  375. static __inline__ __m512i __DEFAULT_FN_ATTRS
  376. _mm512_add_epi64 (__m512i __A, __m512i __B)
  377. {
  378. return (__m512i) ((__v8di) __A + (__v8di) __B);
  379. }
  380. static __inline__ __m512i __DEFAULT_FN_ATTRS
  381. _mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
  382. {
  383. return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
  384. (__v8di) __B,
  385. (__v8di) __W,
  386. (__mmask8) __U);
  387. }
  388. static __inline__ __m512i __DEFAULT_FN_ATTRS
  389. _mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
  390. {
  391. return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
  392. (__v8di) __B,
  393. (__v8di)
  394. _mm512_setzero_si512 (),
  395. (__mmask8) __U);
  396. }
  397. static __inline__ __m512i __DEFAULT_FN_ATTRS
  398. _mm512_sub_epi64 (__m512i __A, __m512i __B)
  399. {
  400. return (__m512i) ((__v8di) __A - (__v8di) __B);
  401. }
  402. static __inline__ __m512i __DEFAULT_FN_ATTRS
  403. _mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
  404. {
  405. return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
  406. (__v8di) __B,
  407. (__v8di) __W,
  408. (__mmask8) __U);
  409. }
  410. static __inline__ __m512i __DEFAULT_FN_ATTRS
  411. _mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
  412. {
  413. return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
  414. (__v8di) __B,
  415. (__v8di)
  416. _mm512_setzero_si512 (),
  417. (__mmask8) __U);
  418. }
  419. static __inline__ __m512i __DEFAULT_FN_ATTRS
  420. _mm512_add_epi32 (__m512i __A, __m512i __B)
  421. {
  422. return (__m512i) ((__v16si) __A + (__v16si) __B);
  423. }
  424. static __inline__ __m512i __DEFAULT_FN_ATTRS
  425. _mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
  426. {
  427. return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
  428. (__v16si) __B,
  429. (__v16si) __W,
  430. (__mmask16) __U);
  431. }
  432. static __inline__ __m512i __DEFAULT_FN_ATTRS
  433. _mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
  434. {
  435. return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
  436. (__v16si) __B,
  437. (__v16si)
  438. _mm512_setzero_si512 (),
  439. (__mmask16) __U);
  440. }
  441. static __inline__ __m512i __DEFAULT_FN_ATTRS
  442. _mm512_sub_epi32 (__m512i __A, __m512i __B)
  443. {
  444. return (__m512i) ((__v16si) __A - (__v16si) __B);
  445. }
  446. static __inline__ __m512i __DEFAULT_FN_ATTRS
  447. _mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
  448. {
  449. return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
  450. (__v16si) __B,
  451. (__v16si) __W,
  452. (__mmask16) __U);
  453. }
  454. static __inline__ __m512i __DEFAULT_FN_ATTRS
  455. _mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
  456. {
  457. return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
  458. (__v16si) __B,
  459. (__v16si)
  460. _mm512_setzero_si512 (),
  461. (__mmask16) __U);
  462. }
  463. static __inline__ __m512d __DEFAULT_FN_ATTRS
  464. _mm512_max_pd(__m512d __A, __m512d __B)
  465. {
  466. return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
  467. (__v8df) __B,
  468. (__v8df)
  469. _mm512_setzero_pd (),
  470. (__mmask8) -1,
  471. _MM_FROUND_CUR_DIRECTION);
  472. }
  473. static __inline__ __m512 __DEFAULT_FN_ATTRS
  474. _mm512_max_ps(__m512 __A, __m512 __B)
  475. {
  476. return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
  477. (__v16sf) __B,
  478. (__v16sf)
  479. _mm512_setzero_ps (),
  480. (__mmask16) -1,
  481. _MM_FROUND_CUR_DIRECTION);
  482. }
  483. static __inline __m512i
  484. __DEFAULT_FN_ATTRS
  485. _mm512_max_epi32(__m512i __A, __m512i __B)
  486. {
  487. return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
  488. (__v16si) __B,
  489. (__v16si)
  490. _mm512_setzero_si512 (),
  491. (__mmask16) -1);
  492. }
  493. static __inline __m512i __DEFAULT_FN_ATTRS
  494. _mm512_max_epu32(__m512i __A, __m512i __B)
  495. {
  496. return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
  497. (__v16si) __B,
  498. (__v16si)
  499. _mm512_setzero_si512 (),
  500. (__mmask16) -1);
  501. }
  502. static __inline __m512i __DEFAULT_FN_ATTRS
  503. _mm512_max_epi64(__m512i __A, __m512i __B)
  504. {
  505. return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
  506. (__v8di) __B,
  507. (__v8di)
  508. _mm512_setzero_si512 (),
  509. (__mmask8) -1);
  510. }
  511. static __inline __m512i __DEFAULT_FN_ATTRS
  512. _mm512_max_epu64(__m512i __A, __m512i __B)
  513. {
  514. return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
  515. (__v8di) __B,
  516. (__v8di)
  517. _mm512_setzero_si512 (),
  518. (__mmask8) -1);
  519. }
  520. static __inline__ __m512d __DEFAULT_FN_ATTRS
  521. _mm512_min_pd(__m512d __A, __m512d __B)
  522. {
  523. return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
  524. (__v8df) __B,
  525. (__v8df)
  526. _mm512_setzero_pd (),
  527. (__mmask8) -1,
  528. _MM_FROUND_CUR_DIRECTION);
  529. }
  530. static __inline__ __m512 __DEFAULT_FN_ATTRS
  531. _mm512_min_ps(__m512 __A, __m512 __B)
  532. {
  533. return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
  534. (__v16sf) __B,
  535. (__v16sf)
  536. _mm512_setzero_ps (),
  537. (__mmask16) -1,
  538. _MM_FROUND_CUR_DIRECTION);
  539. }
  540. static __inline __m512i
  541. __DEFAULT_FN_ATTRS
  542. _mm512_min_epi32(__m512i __A, __m512i __B)
  543. {
  544. return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
  545. (__v16si) __B,
  546. (__v16si)
  547. _mm512_setzero_si512 (),
  548. (__mmask16) -1);
  549. }
  550. static __inline __m512i __DEFAULT_FN_ATTRS
  551. _mm512_min_epu32(__m512i __A, __m512i __B)
  552. {
  553. return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
  554. (__v16si) __B,
  555. (__v16si)
  556. _mm512_setzero_si512 (),
  557. (__mmask16) -1);
  558. }
  559. static __inline __m512i __DEFAULT_FN_ATTRS
  560. _mm512_min_epi64(__m512i __A, __m512i __B)
  561. {
  562. return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
  563. (__v8di) __B,
  564. (__v8di)
  565. _mm512_setzero_si512 (),
  566. (__mmask8) -1);
  567. }
  568. static __inline __m512i __DEFAULT_FN_ATTRS
  569. _mm512_min_epu64(__m512i __A, __m512i __B)
  570. {
  571. return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
  572. (__v8di) __B,
  573. (__v8di)
  574. _mm512_setzero_si512 (),
  575. (__mmask8) -1);
  576. }
  577. static __inline __m512i __DEFAULT_FN_ATTRS
  578. _mm512_mul_epi32(__m512i __X, __m512i __Y)
  579. {
  580. return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
  581. (__v16si) __Y,
  582. (__v8di)
  583. _mm512_setzero_si512 (),
  584. (__mmask8) -1);
  585. }
  586. static __inline __m512i __DEFAULT_FN_ATTRS
  587. _mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
  588. {
  589. return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
  590. (__v16si) __Y,
  591. (__v8di) __W, __M);
  592. }
  593. static __inline __m512i __DEFAULT_FN_ATTRS
  594. _mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
  595. {
  596. return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
  597. (__v16si) __Y,
  598. (__v8di)
  599. _mm512_setzero_si512 (),
  600. __M);
  601. }
  602. static __inline __m512i __DEFAULT_FN_ATTRS
  603. _mm512_mul_epu32(__m512i __X, __m512i __Y)
  604. {
  605. return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
  606. (__v16si) __Y,
  607. (__v8di)
  608. _mm512_setzero_si512 (),
  609. (__mmask8) -1);
  610. }
  611. static __inline __m512i __DEFAULT_FN_ATTRS
  612. _mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
  613. {
  614. return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
  615. (__v16si) __Y,
  616. (__v8di) __W, __M);
  617. }
  618. static __inline __m512i __DEFAULT_FN_ATTRS
  619. _mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
  620. {
  621. return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
  622. (__v16si) __Y,
  623. (__v8di)
  624. _mm512_setzero_si512 (),
  625. __M);
  626. }
  627. static __inline __m512i __DEFAULT_FN_ATTRS
  628. _mm512_mullo_epi32 (__m512i __A, __m512i __B)
  629. {
  630. return (__m512i) ((__v16si) __A * (__v16si) __B);
  631. }
  632. static __inline __m512i __DEFAULT_FN_ATTRS
  633. _mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
  634. {
  635. return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
  636. (__v16si) __B,
  637. (__v16si)
  638. _mm512_setzero_si512 (),
  639. __M);
  640. }
  641. static __inline __m512i __DEFAULT_FN_ATTRS
  642. _mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
  643. {
  644. return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
  645. (__v16si) __B,
  646. (__v16si) __W, __M);
  647. }
  648. static __inline__ __m512d __DEFAULT_FN_ATTRS
  649. _mm512_sqrt_pd(__m512d a)
  650. {
  651. return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
  652. (__v8df) _mm512_setzero_pd (),
  653. (__mmask8) -1,
  654. _MM_FROUND_CUR_DIRECTION);
  655. }
  656. static __inline__ __m512 __DEFAULT_FN_ATTRS
  657. _mm512_sqrt_ps(__m512 a)
  658. {
  659. return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
  660. (__v16sf) _mm512_setzero_ps (),
  661. (__mmask16) -1,
  662. _MM_FROUND_CUR_DIRECTION);
  663. }
  664. static __inline__ __m512d __DEFAULT_FN_ATTRS
  665. _mm512_rsqrt14_pd(__m512d __A)
  666. {
  667. return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
  668. (__v8df)
  669. _mm512_setzero_pd (),
  670. (__mmask8) -1);}
  671. static __inline__ __m512 __DEFAULT_FN_ATTRS
  672. _mm512_rsqrt14_ps(__m512 __A)
  673. {
  674. return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
  675. (__v16sf)
  676. _mm512_setzero_ps (),
  677. (__mmask16) -1);
  678. }
  679. static __inline__ __m128 __DEFAULT_FN_ATTRS
  680. _mm_rsqrt14_ss(__m128 __A, __m128 __B)
  681. {
  682. return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
  683. (__v4sf) __B,
  684. (__v4sf)
  685. _mm_setzero_ps (),
  686. (__mmask8) -1);
  687. }
  688. static __inline__ __m128d __DEFAULT_FN_ATTRS
  689. _mm_rsqrt14_sd(__m128d __A, __m128d __B)
  690. {
  691. return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
  692. (__v2df) __B,
  693. (__v2df)
  694. _mm_setzero_pd (),
  695. (__mmask8) -1);
  696. }
  697. static __inline__ __m512d __DEFAULT_FN_ATTRS
  698. _mm512_rcp14_pd(__m512d __A)
  699. {
  700. return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
  701. (__v8df)
  702. _mm512_setzero_pd (),
  703. (__mmask8) -1);
  704. }
  705. static __inline__ __m512 __DEFAULT_FN_ATTRS
  706. _mm512_rcp14_ps(__m512 __A)
  707. {
  708. return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
  709. (__v16sf)
  710. _mm512_setzero_ps (),
  711. (__mmask16) -1);
  712. }
  713. static __inline__ __m128 __DEFAULT_FN_ATTRS
  714. _mm_rcp14_ss(__m128 __A, __m128 __B)
  715. {
  716. return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
  717. (__v4sf) __B,
  718. (__v4sf)
  719. _mm_setzero_ps (),
  720. (__mmask8) -1);
  721. }
  722. static __inline__ __m128d __DEFAULT_FN_ATTRS
  723. _mm_rcp14_sd(__m128d __A, __m128d __B)
  724. {
  725. return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
  726. (__v2df) __B,
  727. (__v2df)
  728. _mm_setzero_pd (),
  729. (__mmask8) -1);
  730. }
  731. static __inline __m512 __DEFAULT_FN_ATTRS
  732. _mm512_floor_ps(__m512 __A)
  733. {
  734. return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
  735. _MM_FROUND_FLOOR,
  736. (__v16sf) __A, -1,
  737. _MM_FROUND_CUR_DIRECTION);
  738. }
  739. static __inline __m512d __DEFAULT_FN_ATTRS
  740. _mm512_floor_pd(__m512d __A)
  741. {
  742. return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
  743. _MM_FROUND_FLOOR,
  744. (__v8df) __A, -1,
  745. _MM_FROUND_CUR_DIRECTION);
  746. }
  747. static __inline __m512 __DEFAULT_FN_ATTRS
  748. _mm512_ceil_ps(__m512 __A)
  749. {
  750. return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
  751. _MM_FROUND_CEIL,
  752. (__v16sf) __A, -1,
  753. _MM_FROUND_CUR_DIRECTION);
  754. }
  755. static __inline __m512d __DEFAULT_FN_ATTRS
  756. _mm512_ceil_pd(__m512d __A)
  757. {
  758. return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
  759. _MM_FROUND_CEIL,
  760. (__v8df) __A, -1,
  761. _MM_FROUND_CUR_DIRECTION);
  762. }
  763. static __inline __m512i __DEFAULT_FN_ATTRS
  764. _mm512_abs_epi64(__m512i __A)
  765. {
  766. return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
  767. (__v8di)
  768. _mm512_setzero_si512 (),
  769. (__mmask8) -1);
  770. }
  771. static __inline __m512i __DEFAULT_FN_ATTRS
  772. _mm512_abs_epi32(__m512i __A)
  773. {
  774. return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
  775. (__v16si)
  776. _mm512_setzero_si512 (),
  777. (__mmask16) -1);
  778. }
  779. #define _mm512_roundscale_ps(A, B) __extension__ ({ \
  780. (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
  781. -1, _MM_FROUND_CUR_DIRECTION); })
  782. #define _mm512_roundscale_pd(A, B) __extension__ ({ \
  783. (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
  784. -1, _MM_FROUND_CUR_DIRECTION); })
  785. #define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
  786. (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
  787. (__v8df) (B), (__v8df) (C), \
  788. (__mmask8) -1, (R)); })
  789. #define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
  790. (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
  791. (__v8df) (B), (__v8df) (C), \
  792. (__mmask8) (U), (R)); })
  793. #define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
  794. (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
  795. (__v8df) (B), (__v8df) (C), \
  796. (__mmask8) (U), (R)); })
  797. #define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
  798. (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
  799. (__v8df) (B), (__v8df) (C), \
  800. (__mmask8) (U), (R)); })
  801. #define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
  802. (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
  803. (__v8df) (B), -(__v8df) (C), \
  804. (__mmask8) -1, (R)); })
  805. #define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
  806. (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
  807. (__v8df) (B), -(__v8df) (C), \
  808. (__mmask8) (U), (R)); })
  809. #define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
  810. (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
  811. (__v8df) (B), -(__v8df) (C), \
  812. (__mmask8) (U), (R)); })
  813. #define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
  814. (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
  815. (__v8df) (B), (__v8df) (C), \
  816. (__mmask8) -1, (R)); })
  817. #define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
  818. (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
  819. (__v8df) (B), (__v8df) (C), \
  820. (__mmask8) (U), (R)); })
  821. #define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
  822. (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
  823. (__v8df) (B), (__v8df) (C), \
  824. (__mmask8) (U), (R)); })
  825. #define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
  826. (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
  827. (__v8df) (B), -(__v8df) (C), \
  828. (__mmask8) -1, (R)); })
  829. #define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
  830. (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
  831. (__v8df) (B), -(__v8df) (C), \
  832. (__mmask8) (U), (R)); })
  833. static __inline__ __m512d __DEFAULT_FN_ATTRS
  834. _mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
  835. {
  836. return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
  837. (__v8df) __B,
  838. (__v8df) __C,
  839. (__mmask8) -1,
  840. _MM_FROUND_CUR_DIRECTION);
  841. }
  842. static __inline__ __m512d __DEFAULT_FN_ATTRS
  843. _mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
  844. {
  845. return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
  846. (__v8df) __B,
  847. (__v8df) __C,
  848. (__mmask8) __U,
  849. _MM_FROUND_CUR_DIRECTION);
  850. }
  851. static __inline__ __m512d __DEFAULT_FN_ATTRS
  852. _mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
  853. {
  854. return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
  855. (__v8df) __B,
  856. (__v8df) __C,
  857. (__mmask8) __U,
  858. _MM_FROUND_CUR_DIRECTION);
  859. }
  860. static __inline__ __m512d __DEFAULT_FN_ATTRS
  861. _mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
  862. {
  863. return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
  864. (__v8df) __B,
  865. (__v8df) __C,
  866. (__mmask8) __U,
  867. _MM_FROUND_CUR_DIRECTION);
  868. }
  869. static __inline__ __m512d __DEFAULT_FN_ATTRS
  870. _mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
  871. {
  872. return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
  873. (__v8df) __B,
  874. -(__v8df) __C,
  875. (__mmask8) -1,
  876. _MM_FROUND_CUR_DIRECTION);
  877. }
  878. static __inline__ __m512d __DEFAULT_FN_ATTRS
  879. _mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
  880. {
  881. return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
  882. (__v8df) __B,
  883. -(__v8df) __C,
  884. (__mmask8) __U,
  885. _MM_FROUND_CUR_DIRECTION);
  886. }
  887. static __inline__ __m512d __DEFAULT_FN_ATTRS
  888. _mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
  889. {
  890. return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
  891. (__v8df) __B,
  892. -(__v8df) __C,
  893. (__mmask8) __U,
  894. _MM_FROUND_CUR_DIRECTION);
  895. }
  896. static __inline__ __m512d __DEFAULT_FN_ATTRS
  897. _mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
  898. {
  899. return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
  900. (__v8df) __B,
  901. (__v8df) __C,
  902. (__mmask8) -1,
  903. _MM_FROUND_CUR_DIRECTION);
  904. }
  905. static __inline__ __m512d __DEFAULT_FN_ATTRS
  906. _mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
  907. {
  908. return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
  909. (__v8df) __B,
  910. (__v8df) __C,
  911. (__mmask8) __U,
  912. _MM_FROUND_CUR_DIRECTION);
  913. }
  914. static __inline__ __m512d __DEFAULT_FN_ATTRS
  915. _mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
  916. {
  917. return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
  918. (__v8df) __B,
  919. (__v8df) __C,
  920. (__mmask8) __U,
  921. _MM_FROUND_CUR_DIRECTION);
  922. }
  923. static __inline__ __m512d __DEFAULT_FN_ATTRS
  924. _mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
  925. {
  926. return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
  927. (__v8df) __B,
  928. -(__v8df) __C,
  929. (__mmask8) -1,
  930. _MM_FROUND_CUR_DIRECTION);
  931. }
  932. static __inline__ __m512d __DEFAULT_FN_ATTRS
  933. _mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
  934. {
  935. return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
  936. (__v8df) __B,
  937. -(__v8df) __C,
  938. (__mmask8) __U,
  939. _MM_FROUND_CUR_DIRECTION);
  940. }
  941. #define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
  942. (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
  943. (__v16sf) (B), (__v16sf) (C), \
  944. (__mmask16) -1, (R)); })
  945. #define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
  946. (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
  947. (__v16sf) (B), (__v16sf) (C), \
  948. (__mmask16) (U), (R)); })
  949. #define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
  950. (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
  951. (__v16sf) (B), (__v16sf) (C), \
  952. (__mmask16) (U), (R)); })
  953. #define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
  954. (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
  955. (__v16sf) (B), (__v16sf) (C), \
  956. (__mmask16) (U), (R)); })
  957. #define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
  958. (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
  959. (__v16sf) (B), -(__v16sf) (C), \
  960. (__mmask16) -1, (R)); })
  961. #define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
  962. (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
  963. (__v16sf) (B), -(__v16sf) (C), \
  964. (__mmask16) (U), (R)); })
  965. #define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
  966. (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
  967. (__v16sf) (B), -(__v16sf) (C), \
  968. (__mmask16) (U), (R)); })
  969. #define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
  970. (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
  971. (__v16sf) (B), (__v16sf) (C), \
  972. (__mmask16) -1, (R)); })
  973. #define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
  974. (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
  975. (__v16sf) (B), (__v16sf) (C), \
  976. (__mmask16) (U), (R)); })
  977. #define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
  978. (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
  979. (__v16sf) (B), (__v16sf) (C), \
  980. (__mmask16) (U), (R)); })
  981. #define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
  982. (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
  983. (__v16sf) (B), -(__v16sf) (C), \
  984. (__mmask16) -1, (R)); })
  985. #define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
  986. (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
  987. (__v16sf) (B), -(__v16sf) (C), \
  988. (__mmask16) (U), (R)); })
  989. static __inline__ __m512 __DEFAULT_FN_ATTRS
  990. _mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
  991. {
  992. return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
  993. (__v16sf) __B,
  994. (__v16sf) __C,
  995. (__mmask16) -1,
  996. _MM_FROUND_CUR_DIRECTION);
  997. }
  998. static __inline__ __m512 __DEFAULT_FN_ATTRS
  999. _mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
  1000. {
  1001. return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
  1002. (__v16sf) __B,
  1003. (__v16sf) __C,
  1004. (__mmask16) __U,
  1005. _MM_FROUND_CUR_DIRECTION);
  1006. }
  1007. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1008. _mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
  1009. {
  1010. return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
  1011. (__v16sf) __B,
  1012. (__v16sf) __C,
  1013. (__mmask16) __U,
  1014. _MM_FROUND_CUR_DIRECTION);
  1015. }
  1016. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1017. _mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
  1018. {
  1019. return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
  1020. (__v16sf) __B,
  1021. (__v16sf) __C,
  1022. (__mmask16) __U,
  1023. _MM_FROUND_CUR_DIRECTION);
  1024. }
  1025. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1026. _mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
  1027. {
  1028. return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
  1029. (__v16sf) __B,
  1030. -(__v16sf) __C,
  1031. (__mmask16) -1,
  1032. _MM_FROUND_CUR_DIRECTION);
  1033. }
  1034. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1035. _mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
  1036. {
  1037. return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
  1038. (__v16sf) __B,
  1039. -(__v16sf) __C,
  1040. (__mmask16) __U,
  1041. _MM_FROUND_CUR_DIRECTION);
  1042. }
  1043. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1044. _mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
  1045. {
  1046. return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
  1047. (__v16sf) __B,
  1048. -(__v16sf) __C,
  1049. (__mmask16) __U,
  1050. _MM_FROUND_CUR_DIRECTION);
  1051. }
  1052. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1053. _mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
  1054. {
  1055. return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
  1056. (__v16sf) __B,
  1057. (__v16sf) __C,
  1058. (__mmask16) -1,
  1059. _MM_FROUND_CUR_DIRECTION);
  1060. }
  1061. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1062. _mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
  1063. {
  1064. return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
  1065. (__v16sf) __B,
  1066. (__v16sf) __C,
  1067. (__mmask16) __U,
  1068. _MM_FROUND_CUR_DIRECTION);
  1069. }
  1070. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1071. _mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
  1072. {
  1073. return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
  1074. (__v16sf) __B,
  1075. (__v16sf) __C,
  1076. (__mmask16) __U,
  1077. _MM_FROUND_CUR_DIRECTION);
  1078. }
  1079. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1080. _mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
  1081. {
  1082. return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
  1083. (__v16sf) __B,
  1084. -(__v16sf) __C,
  1085. (__mmask16) -1,
  1086. _MM_FROUND_CUR_DIRECTION);
  1087. }
  1088. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1089. _mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
  1090. {
  1091. return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
  1092. (__v16sf) __B,
  1093. -(__v16sf) __C,
  1094. (__mmask16) __U,
  1095. _MM_FROUND_CUR_DIRECTION);
  1096. }
  1097. #define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
  1098. (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
  1099. (__v8df) (B), (__v8df) (C), \
  1100. (__mmask8) -1, (R)); })
  1101. #define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
  1102. (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
  1103. (__v8df) (B), (__v8df) (C), \
  1104. (__mmask8) (U), (R)); })
  1105. #define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
  1106. (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
  1107. (__v8df) (B), (__v8df) (C), \
  1108. (__mmask8) (U), (R)); })
  1109. #define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
  1110. (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
  1111. (__v8df) (B), (__v8df) (C), \
  1112. (__mmask8) (U), (R)); })
  1113. #define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
  1114. (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
  1115. (__v8df) (B), -(__v8df) (C), \
  1116. (__mmask8) -1, (R)); })
  1117. #define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
  1118. (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
  1119. (__v8df) (B), -(__v8df) (C), \
  1120. (__mmask8) (U), (R)); })
  1121. #define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
  1122. (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
  1123. (__v8df) (B), -(__v8df) (C), \
  1124. (__mmask8) (U), (R)); })
  1125. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1126. _mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
  1127. {
  1128. return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
  1129. (__v8df) __B,
  1130. (__v8df) __C,
  1131. (__mmask8) -1,
  1132. _MM_FROUND_CUR_DIRECTION);
  1133. }
  1134. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1135. _mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
  1136. {
  1137. return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
  1138. (__v8df) __B,
  1139. (__v8df) __C,
  1140. (__mmask8) __U,
  1141. _MM_FROUND_CUR_DIRECTION);
  1142. }
  1143. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1144. _mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
  1145. {
  1146. return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
  1147. (__v8df) __B,
  1148. (__v8df) __C,
  1149. (__mmask8) __U,
  1150. _MM_FROUND_CUR_DIRECTION);
  1151. }
  1152. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1153. _mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
  1154. {
  1155. return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
  1156. (__v8df) __B,
  1157. (__v8df) __C,
  1158. (__mmask8) __U,
  1159. _MM_FROUND_CUR_DIRECTION);
  1160. }
  1161. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1162. _mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
  1163. {
  1164. return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
  1165. (__v8df) __B,
  1166. -(__v8df) __C,
  1167. (__mmask8) -1,
  1168. _MM_FROUND_CUR_DIRECTION);
  1169. }
  1170. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1171. _mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
  1172. {
  1173. return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
  1174. (__v8df) __B,
  1175. -(__v8df) __C,
  1176. (__mmask8) __U,
  1177. _MM_FROUND_CUR_DIRECTION);
  1178. }
  1179. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1180. _mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
  1181. {
  1182. return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
  1183. (__v8df) __B,
  1184. -(__v8df) __C,
  1185. (__mmask8) __U,
  1186. _MM_FROUND_CUR_DIRECTION);
  1187. }
  1188. #define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
  1189. (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
  1190. (__v16sf) (B), (__v16sf) (C), \
  1191. (__mmask16) -1, (R)); })
  1192. #define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
  1193. (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
  1194. (__v16sf) (B), (__v16sf) (C), \
  1195. (__mmask16) (U), (R)); })
  1196. #define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
  1197. (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
  1198. (__v16sf) (B), (__v16sf) (C), \
  1199. (__mmask16) (U), (R)); })
  1200. #define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
  1201. (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
  1202. (__v16sf) (B), (__v16sf) (C), \
  1203. (__mmask16) (U), (R)); })
  1204. #define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
  1205. (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
  1206. (__v16sf) (B), -(__v16sf) (C), \
  1207. (__mmask16) -1, (R)); })
  1208. #define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
  1209. (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
  1210. (__v16sf) (B), -(__v16sf) (C), \
  1211. (__mmask16) (U), (R)); })
  1212. #define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
  1213. (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
  1214. (__v16sf) (B), -(__v16sf) (C), \
  1215. (__mmask16) (U), (R)); })
  1216. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1217. _mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
  1218. {
  1219. return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
  1220. (__v16sf) __B,
  1221. (__v16sf) __C,
  1222. (__mmask16) -1,
  1223. _MM_FROUND_CUR_DIRECTION);
  1224. }
  1225. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1226. _mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
  1227. {
  1228. return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
  1229. (__v16sf) __B,
  1230. (__v16sf) __C,
  1231. (__mmask16) __U,
  1232. _MM_FROUND_CUR_DIRECTION);
  1233. }
  1234. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1235. _mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
  1236. {
  1237. return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
  1238. (__v16sf) __B,
  1239. (__v16sf) __C,
  1240. (__mmask16) __U,
  1241. _MM_FROUND_CUR_DIRECTION);
  1242. }
  1243. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1244. _mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
  1245. {
  1246. return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
  1247. (__v16sf) __B,
  1248. (__v16sf) __C,
  1249. (__mmask16) __U,
  1250. _MM_FROUND_CUR_DIRECTION);
  1251. }
  1252. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1253. _mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
  1254. {
  1255. return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
  1256. (__v16sf) __B,
  1257. -(__v16sf) __C,
  1258. (__mmask16) -1,
  1259. _MM_FROUND_CUR_DIRECTION);
  1260. }
  1261. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1262. _mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
  1263. {
  1264. return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
  1265. (__v16sf) __B,
  1266. -(__v16sf) __C,
  1267. (__mmask16) __U,
  1268. _MM_FROUND_CUR_DIRECTION);
  1269. }
  1270. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1271. _mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
  1272. {
  1273. return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
  1274. (__v16sf) __B,
  1275. -(__v16sf) __C,
  1276. (__mmask16) __U,
  1277. _MM_FROUND_CUR_DIRECTION);
  1278. }
  1279. #define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
  1280. (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
  1281. (__v8df) (B), (__v8df) (C), \
  1282. (__mmask8) (U), (R)); })
  1283. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1284. _mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
  1285. {
  1286. return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
  1287. (__v8df) __B,
  1288. (__v8df) __C,
  1289. (__mmask8) __U,
  1290. _MM_FROUND_CUR_DIRECTION);
  1291. }
  1292. #define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
  1293. (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
  1294. (__v16sf) (B), (__v16sf) (C), \
  1295. (__mmask16) (U), (R)); })
  1296. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1297. _mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
  1298. {
  1299. return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
  1300. (__v16sf) __B,
  1301. (__v16sf) __C,
  1302. (__mmask16) __U,
  1303. _MM_FROUND_CUR_DIRECTION);
  1304. }
  1305. #define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
  1306. (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
  1307. (__v8df) (B), (__v8df) (C), \
  1308. (__mmask8) (U), (R)); })
  1309. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1310. _mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
  1311. {
  1312. return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
  1313. (__v8df) __B,
  1314. (__v8df) __C,
  1315. (__mmask8) __U,
  1316. _MM_FROUND_CUR_DIRECTION);
  1317. }
  1318. #define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
  1319. (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
  1320. (__v16sf) (B), (__v16sf) (C), \
  1321. (__mmask16) (U), (R)); })
  1322. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1323. _mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
  1324. {
  1325. return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
  1326. (__v16sf) __B,
  1327. (__v16sf) __C,
  1328. (__mmask16) __U,
  1329. _MM_FROUND_CUR_DIRECTION);
  1330. }
  1331. #define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
  1332. (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
  1333. (__v8df) (B), (__v8df) (C), \
  1334. (__mmask8) (U), (R)); })
  1335. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1336. _mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
  1337. {
  1338. return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
  1339. (__v8df) __B,
  1340. (__v8df) __C,
  1341. (__mmask8) __U,
  1342. _MM_FROUND_CUR_DIRECTION);
  1343. }
  1344. #define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
  1345. (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
  1346. (__v16sf) (B), (__v16sf) (C), \
  1347. (__mmask16) (U), (R)); })
  1348. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1349. _mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
  1350. {
  1351. return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
  1352. (__v16sf) __B,
  1353. (__v16sf) __C,
  1354. (__mmask16) __U,
  1355. _MM_FROUND_CUR_DIRECTION);
  1356. }
  1357. #define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
  1358. (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
  1359. (__v8df) (B), (__v8df) (C), \
  1360. (__mmask8) (U), (R)); })
  1361. #define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
  1362. (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
  1363. (__v8df) (B), (__v8df) (C), \
  1364. (__mmask8) (U), (R)); })
  1365. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1366. _mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
  1367. {
  1368. return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
  1369. (__v8df) __B,
  1370. (__v8df) __C,
  1371. (__mmask8) __U,
  1372. _MM_FROUND_CUR_DIRECTION);
  1373. }
  1374. static __inline__ __m512d __DEFAULT_FN_ATTRS
  1375. _mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
  1376. {
  1377. return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
  1378. (__v8df) __B,
  1379. (__v8df) __C,
  1380. (__mmask8) __U,
  1381. _MM_FROUND_CUR_DIRECTION);
  1382. }
  1383. #define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
  1384. (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
  1385. (__v16sf) (B), (__v16sf) (C), \
  1386. (__mmask16) (U), (R)); })
  1387. #define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
  1388. (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
  1389. (__v16sf) (B), (__v16sf) (C), \
  1390. (__mmask16) (U), (R)); })
  1391. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1392. _mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
  1393. {
  1394. return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
  1395. (__v16sf) __B,
  1396. (__v16sf) __C,
  1397. (__mmask16) __U,
  1398. _MM_FROUND_CUR_DIRECTION);
  1399. }
  1400. static __inline__ __m512 __DEFAULT_FN_ATTRS
  1401. _mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
  1402. {
  1403. return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
  1404. (__v16sf) __B,
  1405. (__v16sf) __C,
  1406. (__mmask16) __U,
  1407. _MM_FROUND_CUR_DIRECTION);
  1408. }
  1409. /* Vector permutations */
  1410. static __inline __m512i __DEFAULT_FN_ATTRS
  1411. _mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
  1412. {
  1413. return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
  1414. /* idx */ ,
  1415. (__v16si) __A,
  1416. (__v16si) __B,
  1417. (__mmask16) -1);
  1418. }
  1419. static __inline __m512i __DEFAULT_FN_ATTRS
  1420. _mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
  1421. {
  1422. return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
  1423. /* idx */ ,
  1424. (__v8di) __A,
  1425. (__v8di) __B,
  1426. (__mmask8) -1);
  1427. }
  1428. static __inline __m512d __DEFAULT_FN_ATTRS
  1429. _mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
  1430. {
  1431. return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
  1432. /* idx */ ,
  1433. (__v8df) __A,
  1434. (__v8df) __B,
  1435. (__mmask8) -1);
  1436. }
  1437. static __inline __m512 __DEFAULT_FN_ATTRS
  1438. _mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
  1439. {
  1440. return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
  1441. /* idx */ ,
  1442. (__v16sf) __A,
  1443. (__v16sf) __B,
  1444. (__mmask16) -1);
  1445. }
  1446. #define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
  1447. (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
  1448. (__v8di)(__m512i)(B), \
  1449. (I), (__v8di)_mm512_setzero_si512(), \
  1450. (__mmask8)-1); })
  1451. #define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
  1452. (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
  1453. (__v16si)(__m512i)(B), \
  1454. (I), (__v16si)_mm512_setzero_si512(), \
  1455. (__mmask16)-1); })
  1456. /* Vector Extract */
  1457. #define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
  1458. __m512d __A = (A); \
  1459. (__m256d) \
  1460. __builtin_ia32_extractf64x4_mask((__v8df)__A, \
  1461. (I), \
  1462. (__v4df)_mm256_setzero_si256(), \
  1463. (__mmask8) -1); })
  1464. #define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
  1465. __m512 __A = (A); \
  1466. (__m128) \
  1467. __builtin_ia32_extractf32x4_mask((__v16sf)__A, \
  1468. (I), \
  1469. (__v4sf)_mm_setzero_ps(), \
  1470. (__mmask8) -1); })
  1471. /* Vector Blend */
  1472. static __inline __m512d __DEFAULT_FN_ATTRS
  1473. _mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
  1474. {
  1475. return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
  1476. (__v8df) __W,
  1477. (__mmask8) __U);
  1478. }
  1479. static __inline __m512 __DEFAULT_FN_ATTRS
  1480. _mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
  1481. {
  1482. return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
  1483. (__v16sf) __W,
  1484. (__mmask16) __U);
  1485. }
  1486. static __inline __m512i __DEFAULT_FN_ATTRS
  1487. _mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
  1488. {
  1489. return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
  1490. (__v8di) __W,
  1491. (__mmask8) __U);
  1492. }
  1493. static __inline __m512i __DEFAULT_FN_ATTRS
  1494. _mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
  1495. {
  1496. return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
  1497. (__v16si) __W,
  1498. (__mmask16) __U);
  1499. }
  1500. /* Compare */
  1501. #define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
  1502. (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
  1503. (__v16sf)(__m512)(B), \
  1504. (P), (__mmask16)-1, (R)); })
  1505. #define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
  1506. (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
  1507. (__v16sf)(__m512)(B), \
  1508. (P), (__mmask16)(U), (R)); })
  1509. #define _mm512_cmp_ps_mask(A, B, P) \
  1510. _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
  1511. #define _mm512_mask_cmp_ps_mask(U, A, B, P) \
  1512. _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
  1513. #define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
  1514. (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
  1515. (__v8df)(__m512d)(B), \
  1516. (P), (__mmask8)-1, (R)); })
  1517. #define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
  1518. (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
  1519. (__v8df)(__m512d)(B), \
  1520. (P), (__mmask8)(U), (R)); })
  1521. #define _mm512_cmp_pd_mask(A, B, P) \
  1522. _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
  1523. #define _mm512_mask_cmp_pd_mask(U, A, B, P) \
  1524. _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
  1525. /* Conversion */
  1526. static __inline __m512i __DEFAULT_FN_ATTRS
  1527. _mm512_cvttps_epu32(__m512 __A)
  1528. {
  1529. return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
  1530. (__v16si)
  1531. _mm512_setzero_si512 (),
  1532. (__mmask16) -1,
  1533. _MM_FROUND_CUR_DIRECTION);
  1534. }
  1535. #define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
  1536. (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
  1537. (__v16sf)_mm512_setzero_ps(), \
  1538. (__mmask16)-1, (R)); })
  1539. #define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
  1540. (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
  1541. (__v16sf)_mm512_setzero_ps(), \
  1542. (__mmask16)-1, (R)); })
  1543. static __inline __m512d __DEFAULT_FN_ATTRS
  1544. _mm512_cvtepi32_pd(__m256i __A)
  1545. {
  1546. return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
  1547. (__v8df)
  1548. _mm512_setzero_pd (),
  1549. (__mmask8) -1);
  1550. }
  1551. static __inline __m512d __DEFAULT_FN_ATTRS
  1552. _mm512_cvtepu32_pd(__m256i __A)
  1553. {
  1554. return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
  1555. (__v8df)
  1556. _mm512_setzero_pd (),
  1557. (__mmask8) -1);
  1558. }
  1559. #define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
  1560. (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
  1561. (__v8sf)_mm256_setzero_ps(), \
  1562. (__mmask8)-1, (R)); })
  1563. #define _mm512_cvtps_ph(A, I) __extension__ ({ \
  1564. (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
  1565. (__v16hi)_mm256_setzero_si256(), \
  1566. -1); })
  1567. static __inline __m512 __DEFAULT_FN_ATTRS
  1568. _mm512_cvtph_ps(__m256i __A)
  1569. {
  1570. return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
  1571. (__v16sf)
  1572. _mm512_setzero_ps (),
  1573. (__mmask16) -1,
  1574. _MM_FROUND_CUR_DIRECTION);
  1575. }
  1576. static __inline __m512i __DEFAULT_FN_ATTRS
  1577. _mm512_cvttps_epi32(__m512 a)
  1578. {
  1579. return (__m512i)
  1580. __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
  1581. (__v16si) _mm512_setzero_si512 (),
  1582. (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
  1583. }
  1584. static __inline __m256i __DEFAULT_FN_ATTRS
  1585. _mm512_cvttpd_epi32(__m512d a)
  1586. {
  1587. return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
  1588. (__v8si)_mm256_setzero_si256(),
  1589. (__mmask8) -1,
  1590. _MM_FROUND_CUR_DIRECTION);
  1591. }
  1592. #define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
  1593. (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
  1594. (__v8si)_mm256_setzero_si256(), \
  1595. (__mmask8)-1, (R)); })
  1596. #define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
  1597. (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
  1598. (__v16si)_mm512_setzero_si512(), \
  1599. (__mmask16)-1, (R)); })
  1600. #define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
  1601. (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
  1602. (__v16si)_mm512_setzero_si512(), \
  1603. (__mmask16)-1, (R)); })
  1604. #define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
  1605. (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
  1606. (__v8si)_mm256_setzero_si256(), \
  1607. (__mmask8)-1, (R)); })
  1608. #define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
  1609. (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
  1610. (__v16si)_mm512_setzero_si512(), \
  1611. (__mmask16)-1, (R)); })
  1612. #define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
  1613. (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
  1614. (__v8si)_mm256_setzero_si256(), \
  1615. (__mmask8) -1, (R)); })
  1616. /* Unpack and Interleave */
  1617. static __inline __m512d __DEFAULT_FN_ATTRS
  1618. _mm512_unpackhi_pd(__m512d __a, __m512d __b)
  1619. {
  1620. return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
  1621. }
  1622. static __inline __m512d __DEFAULT_FN_ATTRS
  1623. _mm512_unpacklo_pd(__m512d __a, __m512d __b)
  1624. {
  1625. return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
  1626. }
  1627. static __inline __m512 __DEFAULT_FN_ATTRS
  1628. _mm512_unpackhi_ps(__m512 __a, __m512 __b)
  1629. {
  1630. return __builtin_shufflevector(__a, __b,
  1631. 2, 18, 3, 19,
  1632. 2+4, 18+4, 3+4, 19+4,
  1633. 2+8, 18+8, 3+8, 19+8,
  1634. 2+12, 18+12, 3+12, 19+12);
  1635. }
  1636. static __inline __m512 __DEFAULT_FN_ATTRS
  1637. _mm512_unpacklo_ps(__m512 __a, __m512 __b)
  1638. {
  1639. return __builtin_shufflevector(__a, __b,
  1640. 0, 16, 1, 17,
  1641. 0+4, 16+4, 1+4, 17+4,
  1642. 0+8, 16+8, 1+8, 17+8,
  1643. 0+12, 16+12, 1+12, 17+12);
  1644. }
  1645. /* Bit Test */
  1646. static __inline __mmask16 __DEFAULT_FN_ATTRS
  1647. _mm512_test_epi32_mask(__m512i __A, __m512i __B)
  1648. {
  1649. return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
  1650. (__v16si) __B,
  1651. (__mmask16) -1);
  1652. }
  1653. static __inline __mmask8 __DEFAULT_FN_ATTRS
  1654. _mm512_test_epi64_mask(__m512i __A, __m512i __B)
  1655. {
  1656. return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
  1657. (__v8di) __B,
  1658. (__mmask8) -1);
  1659. }
  1660. /* SIMD load ops */
  1661. static __inline __m512i __DEFAULT_FN_ATTRS
  1662. _mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
  1663. {
  1664. return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
  1665. (__v16si)
  1666. _mm512_setzero_si512 (),
  1667. (__mmask16) __U);
  1668. }
  1669. static __inline __m512i __DEFAULT_FN_ATTRS
  1670. _mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
  1671. {
  1672. return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
  1673. (__v8di)
  1674. _mm512_setzero_si512 (),
  1675. (__mmask8) __U);
  1676. }
  1677. static __inline __m512 __DEFAULT_FN_ATTRS
  1678. _mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
  1679. {
  1680. return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
  1681. (__v16sf)
  1682. _mm512_setzero_ps (),
  1683. (__mmask16) __U);
  1684. }
  1685. static __inline __m512d __DEFAULT_FN_ATTRS
  1686. _mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
  1687. {
  1688. return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
  1689. (__v8df)
  1690. _mm512_setzero_pd (),
  1691. (__mmask8) __U);
  1692. }
  1693. static __inline __m512 __DEFAULT_FN_ATTRS
  1694. _mm512_maskz_load_ps(__mmask16 __U, void const *__P)
  1695. {
  1696. return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
  1697. (__v16sf)
  1698. _mm512_setzero_ps (),
  1699. (__mmask16) __U);
  1700. }
  1701. static __inline __m512d __DEFAULT_FN_ATTRS
  1702. _mm512_maskz_load_pd(__mmask8 __U, void const *__P)
  1703. {
  1704. return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
  1705. (__v8df)
  1706. _mm512_setzero_pd (),
  1707. (__mmask8) __U);
  1708. }
  1709. static __inline __m512d __DEFAULT_FN_ATTRS
  1710. _mm512_loadu_pd(double const *__p)
  1711. {
  1712. struct __loadu_pd {
  1713. __m512d __v;
  1714. } __attribute__((__packed__, __may_alias__));
  1715. return ((struct __loadu_pd*)__p)->__v;
  1716. }
  1717. static __inline __m512 __DEFAULT_FN_ATTRS
  1718. _mm512_loadu_ps(float const *__p)
  1719. {
  1720. struct __loadu_ps {
  1721. __m512 __v;
  1722. } __attribute__((__packed__, __may_alias__));
  1723. return ((struct __loadu_ps*)__p)->__v;
  1724. }
  1725. static __inline __m512 __DEFAULT_FN_ATTRS
  1726. _mm512_load_ps(double const *__p)
  1727. {
  1728. return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
  1729. (__v16sf)
  1730. _mm512_setzero_ps (),
  1731. (__mmask16) -1);
  1732. }
  1733. static __inline __m512d __DEFAULT_FN_ATTRS
  1734. _mm512_load_pd(float const *__p)
  1735. {
  1736. return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
  1737. (__v8df)
  1738. _mm512_setzero_pd (),
  1739. (__mmask8) -1);
  1740. }
  1741. /* SIMD store ops */
  1742. static __inline void __DEFAULT_FN_ATTRS
  1743. _mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
  1744. {
  1745. __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
  1746. (__mmask8) __U);
  1747. }
  1748. static __inline void __DEFAULT_FN_ATTRS
  1749. _mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
  1750. {
  1751. __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
  1752. (__mmask16) __U);
  1753. }
  1754. static __inline void __DEFAULT_FN_ATTRS
  1755. _mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
  1756. {
  1757. __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
  1758. }
  1759. static __inline void __DEFAULT_FN_ATTRS
  1760. _mm512_storeu_pd(void *__P, __m512d __A)
  1761. {
  1762. __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
  1763. }
  1764. static __inline void __DEFAULT_FN_ATTRS
  1765. _mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
  1766. {
  1767. __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
  1768. (__mmask16) __U);
  1769. }
  1770. static __inline void __DEFAULT_FN_ATTRS
  1771. _mm512_storeu_ps(void *__P, __m512 __A)
  1772. {
  1773. __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
  1774. }
  1775. static __inline void __DEFAULT_FN_ATTRS
  1776. _mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
  1777. {
  1778. __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
  1779. }
  1780. static __inline void __DEFAULT_FN_ATTRS
  1781. _mm512_store_pd(void *__P, __m512d __A)
  1782. {
  1783. *(__m512d*)__P = __A;
  1784. }
  1785. static __inline void __DEFAULT_FN_ATTRS
  1786. _mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
  1787. {
  1788. __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
  1789. (__mmask16) __U);
  1790. }
  1791. static __inline void __DEFAULT_FN_ATTRS
  1792. _mm512_store_ps(void *__P, __m512 __A)
  1793. {
  1794. *(__m512*)__P = __A;
  1795. }
  1796. /* Mask ops */
  1797. static __inline __mmask16 __DEFAULT_FN_ATTRS
  1798. _mm512_knot(__mmask16 __M)
  1799. {
  1800. return __builtin_ia32_knothi(__M);
  1801. }
  1802. /* Integer compare */
  1803. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1804. _mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
  1805. return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
  1806. (__mmask16)-1);
  1807. }
  1808. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1809. _mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1810. return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
  1811. __u);
  1812. }
  1813. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1814. _mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
  1815. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
  1816. (__mmask16)-1);
  1817. }
  1818. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1819. _mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1820. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
  1821. __u);
  1822. }
  1823. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1824. _mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1825. return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
  1826. __u);
  1827. }
  1828. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1829. _mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
  1830. return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
  1831. (__mmask8)-1);
  1832. }
  1833. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1834. _mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
  1835. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
  1836. (__mmask8)-1);
  1837. }
  1838. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1839. _mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1840. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
  1841. __u);
  1842. }
  1843. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1844. _mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
  1845. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
  1846. (__mmask16)-1);
  1847. }
  1848. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1849. _mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1850. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
  1851. __u);
  1852. }
  1853. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1854. _mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
  1855. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
  1856. (__mmask16)-1);
  1857. }
  1858. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1859. _mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1860. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
  1861. __u);
  1862. }
  1863. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1864. _mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
  1865. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
  1866. (__mmask8)-1);
  1867. }
  1868. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1869. _mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1870. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
  1871. __u);
  1872. }
  1873. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1874. _mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
  1875. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
  1876. (__mmask8)-1);
  1877. }
  1878. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1879. _mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1880. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
  1881. __u);
  1882. }
  1883. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1884. _mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
  1885. return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
  1886. (__mmask16)-1);
  1887. }
  1888. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1889. _mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1890. return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
  1891. __u);
  1892. }
  1893. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1894. _mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
  1895. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
  1896. (__mmask16)-1);
  1897. }
  1898. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1899. _mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1900. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
  1901. __u);
  1902. }
  1903. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1904. _mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1905. return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
  1906. __u);
  1907. }
  1908. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1909. _mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
  1910. return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
  1911. (__mmask8)-1);
  1912. }
  1913. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1914. _mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
  1915. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
  1916. (__mmask8)-1);
  1917. }
  1918. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1919. _mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1920. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
  1921. __u);
  1922. }
  1923. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1924. _mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
  1925. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
  1926. (__mmask16)-1);
  1927. }
  1928. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1929. _mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1930. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
  1931. __u);
  1932. }
  1933. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1934. _mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
  1935. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
  1936. (__mmask16)-1);
  1937. }
  1938. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1939. _mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1940. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
  1941. __u);
  1942. }
  1943. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1944. _mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
  1945. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
  1946. (__mmask8)-1);
  1947. }
  1948. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1949. _mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1950. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
  1951. __u);
  1952. }
  1953. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1954. _mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
  1955. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
  1956. (__mmask8)-1);
  1957. }
  1958. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1959. _mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1960. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
  1961. __u);
  1962. }
  1963. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1964. _mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
  1965. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
  1966. (__mmask16)-1);
  1967. }
  1968. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1969. _mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1970. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
  1971. __u);
  1972. }
  1973. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1974. _mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
  1975. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
  1976. (__mmask16)-1);
  1977. }
  1978. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  1979. _mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  1980. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
  1981. __u);
  1982. }
  1983. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1984. _mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
  1985. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
  1986. (__mmask8)-1);
  1987. }
  1988. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1989. _mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  1990. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
  1991. __u);
  1992. }
  1993. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1994. _mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
  1995. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
  1996. (__mmask8)-1);
  1997. }
  1998. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  1999. _mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  2000. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
  2001. __u);
  2002. }
  2003. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2004. _mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
  2005. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
  2006. (__mmask16)-1);
  2007. }
  2008. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2009. _mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  2010. return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
  2011. __u);
  2012. }
  2013. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2014. _mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
  2015. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
  2016. (__mmask16)-1);
  2017. }
  2018. static __inline__ __mmask16 __DEFAULT_FN_ATTRS
  2019. _mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
  2020. return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
  2021. __u);
  2022. }
  2023. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2024. _mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
  2025. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
  2026. (__mmask8)-1);
  2027. }
  2028. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2029. _mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  2030. return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
  2031. __u);
  2032. }
  2033. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2034. _mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
  2035. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
  2036. (__mmask8)-1);
  2037. }
  2038. static __inline__ __mmask8 __DEFAULT_FN_ATTRS
  2039. _mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
  2040. return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
  2041. __u);
  2042. }
  2043. #define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
  2044. __m512i __a = (a); \
  2045. __m512i __b = (b); \
  2046. (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
  2047. (__mmask16)-1); })
  2048. #define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
  2049. __m512i __a = (a); \
  2050. __m512i __b = (b); \
  2051. (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
  2052. (__mmask16)-1); })
  2053. #define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
  2054. __m512i __a = (a); \
  2055. __m512i __b = (b); \
  2056. (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
  2057. (__mmask8)-1); })
  2058. #define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
  2059. __m512i __a = (a); \
  2060. __m512i __b = (b); \
  2061. (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
  2062. (__mmask8)-1); })
  2063. #define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
  2064. __m512i __a = (a); \
  2065. __m512i __b = (b); \
  2066. (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
  2067. (__mmask16)(m)); })
  2068. #define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
  2069. __m512i __a = (a); \
  2070. __m512i __b = (b); \
  2071. (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
  2072. (__mmask16)(m)); })
  2073. #define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
  2074. __m512i __a = (a); \
  2075. __m512i __b = (b); \
  2076. (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
  2077. (__mmask8)(m)); })
  2078. #define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
  2079. __m512i __a = (a); \
  2080. __m512i __b = (b); \
  2081. (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
  2082. (__mmask8)(m)); })
  2083. #undef __DEFAULT_FN_ATTRS
  2084. #endif // __AVX512FINTRIN_H