avx512dqintrin.h 91 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891
  1. /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  2. This file is part of GCC.
  3. GCC is free software; you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation; either version 3, or (at your option)
  6. any later version.
  7. GCC is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. Under Section 7 of GPL version 3, you are granted additional
  12. permissions described in the GCC Runtime Library Exception, version
  13. 3.1, as published by the Free Software Foundation.
  14. You should have received a copy of the GNU General Public License and
  15. a copy of the GCC Runtime Library Exception along with this program;
  16. see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  17. <http://www.gnu.org/licenses/>. */
  18. #ifndef _IMMINTRIN_H_INCLUDED
  19. #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
  20. #endif
  21. #ifndef _AVX512DQINTRIN_H_INCLUDED
  22. #define _AVX512DQINTRIN_H_INCLUDED
  23. #ifndef __AVX512DQ__
  24. #pragma GCC push_options
  25. #pragma GCC target("avx512dq")
  26. #define __DISABLE_AVX512DQ__
  27. #endif /* __AVX512DQ__ */
  28. extern __inline unsigned char
  29. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  30. _ktest_mask8_u8 (__mmask8 __A, __mmask8 __B, unsigned char *__CF)
  31. {
  32. *__CF = (unsigned char) __builtin_ia32_ktestcqi (__A, __B);
  33. return (unsigned char) __builtin_ia32_ktestzqi (__A, __B);
  34. }
  35. extern __inline unsigned char
  36. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  37. _ktestz_mask8_u8 (__mmask8 __A, __mmask8 __B)
  38. {
  39. return (unsigned char) __builtin_ia32_ktestzqi (__A, __B);
  40. }
  41. extern __inline unsigned char
  42. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  43. _ktestc_mask8_u8 (__mmask8 __A, __mmask8 __B)
  44. {
  45. return (unsigned char) __builtin_ia32_ktestcqi (__A, __B);
  46. }
  47. extern __inline unsigned char
  48. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  49. _ktest_mask16_u8 (__mmask16 __A, __mmask16 __B, unsigned char *__CF)
  50. {
  51. *__CF = (unsigned char) __builtin_ia32_ktestchi (__A, __B);
  52. return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
  53. }
  54. extern __inline unsigned char
  55. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  56. _ktestz_mask16_u8 (__mmask16 __A, __mmask16 __B)
  57. {
  58. return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
  59. }
  60. extern __inline unsigned char
  61. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  62. _ktestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
  63. {
  64. return (unsigned char) __builtin_ia32_ktestchi (__A, __B);
  65. }
  66. extern __inline unsigned char
  67. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  68. _kortest_mask8_u8 (__mmask8 __A, __mmask8 __B, unsigned char *__CF)
  69. {
  70. *__CF = (unsigned char) __builtin_ia32_kortestcqi (__A, __B);
  71. return (unsigned char) __builtin_ia32_kortestzqi (__A, __B);
  72. }
  73. extern __inline unsigned char
  74. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  75. _kortestz_mask8_u8 (__mmask8 __A, __mmask8 __B)
  76. {
  77. return (unsigned char) __builtin_ia32_kortestzqi (__A, __B);
  78. }
  79. extern __inline unsigned char
  80. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  81. _kortestc_mask8_u8 (__mmask8 __A, __mmask8 __B)
  82. {
  83. return (unsigned char) __builtin_ia32_kortestcqi (__A, __B);
  84. }
  85. extern __inline __mmask8
  86. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  87. _kadd_mask8 (__mmask8 __A, __mmask8 __B)
  88. {
  89. return (__mmask8) __builtin_ia32_kaddqi ((__mmask8) __A, (__mmask8) __B);
  90. }
  91. extern __inline __mmask16
  92. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  93. _kadd_mask16 (__mmask16 __A, __mmask16 __B)
  94. {
  95. return (__mmask16) __builtin_ia32_kaddhi ((__mmask16) __A, (__mmask16) __B);
  96. }
  97. extern __inline unsigned int
  98. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  99. _cvtmask8_u32 (__mmask8 __A)
  100. {
  101. return (unsigned int) __builtin_ia32_kmovb ((__mmask8 ) __A);
  102. }
  103. extern __inline __mmask8
  104. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  105. _cvtu32_mask8 (unsigned int __A)
  106. {
  107. return (__mmask8) __builtin_ia32_kmovb ((__mmask8) __A);
  108. }
  109. extern __inline __mmask8
  110. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  111. _load_mask8 (__mmask8 *__A)
  112. {
  113. return (__mmask8) __builtin_ia32_kmovb (*(__mmask8 *) __A);
  114. }
  115. extern __inline void
  116. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  117. _store_mask8 (__mmask8 *__A, __mmask8 __B)
  118. {
  119. *(__mmask8 *) __A = __builtin_ia32_kmovb (__B);
  120. }
  121. extern __inline __mmask8
  122. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  123. _knot_mask8 (__mmask8 __A)
  124. {
  125. return (__mmask8) __builtin_ia32_knotqi ((__mmask8) __A);
  126. }
  127. extern __inline __mmask8
  128. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  129. _kor_mask8 (__mmask8 __A, __mmask8 __B)
  130. {
  131. return (__mmask8) __builtin_ia32_korqi ((__mmask8) __A, (__mmask8) __B);
  132. }
  133. extern __inline __mmask8
  134. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  135. _kxnor_mask8 (__mmask8 __A, __mmask8 __B)
  136. {
  137. return (__mmask8) __builtin_ia32_kxnorqi ((__mmask8) __A, (__mmask8) __B);
  138. }
  139. extern __inline __mmask8
  140. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  141. _kxor_mask8 (__mmask8 __A, __mmask8 __B)
  142. {
  143. return (__mmask8) __builtin_ia32_kxorqi ((__mmask8) __A, (__mmask8) __B);
  144. }
  145. extern __inline __mmask8
  146. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  147. _kand_mask8 (__mmask8 __A, __mmask8 __B)
  148. {
  149. return (__mmask8) __builtin_ia32_kandqi ((__mmask8) __A, (__mmask8) __B);
  150. }
  151. extern __inline __mmask8
  152. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  153. _kandn_mask8 (__mmask8 __A, __mmask8 __B)
  154. {
  155. return (__mmask8) __builtin_ia32_kandnqi ((__mmask8) __A, (__mmask8) __B);
  156. }
  157. extern __inline __m512d
  158. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  159. _mm512_broadcast_f64x2 (__m128d __A)
  160. {
  161. return (__m512d)
  162. __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
  163. _mm512_undefined_pd (),
  164. (__mmask8) -1);
  165. }
  166. extern __inline __m512d
  167. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  168. _mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
  169. {
  170. return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
  171. __A,
  172. (__v8df)
  173. __O, __M);
  174. }
  175. extern __inline __m512d
  176. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  177. _mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
  178. {
  179. return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
  180. __A,
  181. (__v8df)
  182. _mm512_setzero_ps (),
  183. __M);
  184. }
  185. extern __inline __m512i
  186. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  187. _mm512_broadcast_i64x2 (__m128i __A)
  188. {
  189. return (__m512i)
  190. __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
  191. _mm512_undefined_epi32 (),
  192. (__mmask8) -1);
  193. }
  194. extern __inline __m512i
  195. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  196. _mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
  197. {
  198. return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
  199. __A,
  200. (__v8di)
  201. __O, __M);
  202. }
  203. extern __inline __m512i
  204. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  205. _mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
  206. {
  207. return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
  208. __A,
  209. (__v8di)
  210. _mm512_setzero_si512 (),
  211. __M);
  212. }
  213. extern __inline __m512
  214. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  215. _mm512_broadcast_f32x2 (__m128 __A)
  216. {
  217. return (__m512)
  218. __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
  219. (__v16sf)_mm512_undefined_ps (),
  220. (__mmask16) -1);
  221. }
  222. extern __inline __m512
  223. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  224. _mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
  225. {
  226. return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
  227. (__v16sf)
  228. __O, __M);
  229. }
  230. extern __inline __m512
  231. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  232. _mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
  233. {
  234. return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
  235. (__v16sf)
  236. _mm512_setzero_ps (),
  237. __M);
  238. }
  239. extern __inline __m512i
  240. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  241. _mm512_broadcast_i32x2 (__m128i __A)
  242. {
  243. return (__m512i)
  244. __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
  245. (__v16si)
  246. _mm512_undefined_epi32 (),
  247. (__mmask16) -1);
  248. }
  249. extern __inline __m512i
  250. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  251. _mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
  252. {
  253. return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
  254. __A,
  255. (__v16si)
  256. __O, __M);
  257. }
  258. extern __inline __m512i
  259. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  260. _mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
  261. {
  262. return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
  263. __A,
  264. (__v16si)
  265. _mm512_setzero_si512 (),
  266. __M);
  267. }
  268. extern __inline __m512
  269. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  270. _mm512_broadcast_f32x8 (__m256 __A)
  271. {
  272. return (__m512)
  273. __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
  274. _mm512_undefined_ps (),
  275. (__mmask16) -1);
  276. }
  277. extern __inline __m512
  278. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  279. _mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
  280. {
  281. return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
  282. (__v16sf)__O,
  283. __M);
  284. }
  285. extern __inline __m512
  286. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  287. _mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
  288. {
  289. return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
  290. (__v16sf)
  291. _mm512_setzero_ps (),
  292. __M);
  293. }
  294. extern __inline __m512i
  295. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  296. _mm512_broadcast_i32x8 (__m256i __A)
  297. {
  298. return (__m512i)
  299. __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
  300. (__v16si)
  301. _mm512_undefined_epi32 (),
  302. (__mmask16) -1);
  303. }
  304. extern __inline __m512i
  305. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  306. _mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
  307. {
  308. return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
  309. __A,
  310. (__v16si)__O,
  311. __M);
  312. }
  313. extern __inline __m512i
  314. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  315. _mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
  316. {
  317. return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
  318. __A,
  319. (__v16si)
  320. _mm512_setzero_si512 (),
  321. __M);
  322. }
  323. extern __inline __m512i
  324. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  325. _mm512_mullo_epi64 (__m512i __A, __m512i __B)
  326. {
  327. return (__m512i) ((__v8du) __A * (__v8du) __B);
  328. }
  329. extern __inline __m512i
  330. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  331. _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
  332. __m512i __B)
  333. {
  334. return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
  335. (__v8di) __B,
  336. (__v8di) __W,
  337. (__mmask8) __U);
  338. }
  339. extern __inline __m512i
  340. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  341. _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
  342. {
  343. return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
  344. (__v8di) __B,
  345. (__v8di)
  346. _mm512_setzero_si512 (),
  347. (__mmask8) __U);
  348. }
  349. extern __inline __m512d
  350. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  351. _mm512_xor_pd (__m512d __A, __m512d __B)
  352. {
  353. return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
  354. (__v8df) __B,
  355. (__v8df)
  356. _mm512_setzero_pd (),
  357. (__mmask8) -1);
  358. }
  359. extern __inline __m512d
  360. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  361. _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A,
  362. __m512d __B)
  363. {
  364. return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
  365. (__v8df) __B,
  366. (__v8df) __W,
  367. (__mmask8) __U);
  368. }
  369. extern __inline __m512d
  370. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  371. _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B)
  372. {
  373. return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
  374. (__v8df) __B,
  375. (__v8df)
  376. _mm512_setzero_pd (),
  377. (__mmask8) __U);
  378. }
  379. extern __inline __m512
  380. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  381. _mm512_xor_ps (__m512 __A, __m512 __B)
  382. {
  383. return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
  384. (__v16sf) __B,
  385. (__v16sf)
  386. _mm512_setzero_ps (),
  387. (__mmask16) -1);
  388. }
  389. extern __inline __m512
  390. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  391. _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
  392. {
  393. return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
  394. (__v16sf) __B,
  395. (__v16sf) __W,
  396. (__mmask16) __U);
  397. }
  398. extern __inline __m512
  399. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  400. _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B)
  401. {
  402. return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
  403. (__v16sf) __B,
  404. (__v16sf)
  405. _mm512_setzero_ps (),
  406. (__mmask16) __U);
  407. }
  408. extern __inline __m512d
  409. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  410. _mm512_or_pd (__m512d __A, __m512d __B)
  411. {
  412. return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
  413. (__v8df) __B,
  414. (__v8df)
  415. _mm512_setzero_pd (),
  416. (__mmask8) -1);
  417. }
  418. extern __inline __m512d
  419. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  420. _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
  421. {
  422. return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
  423. (__v8df) __B,
  424. (__v8df) __W,
  425. (__mmask8) __U);
  426. }
  427. extern __inline __m512d
  428. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  429. _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B)
  430. {
  431. return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
  432. (__v8df) __B,
  433. (__v8df)
  434. _mm512_setzero_pd (),
  435. (__mmask8) __U);
  436. }
  437. extern __inline __m512
  438. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  439. _mm512_or_ps (__m512 __A, __m512 __B)
  440. {
  441. return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
  442. (__v16sf) __B,
  443. (__v16sf)
  444. _mm512_setzero_ps (),
  445. (__mmask16) -1);
  446. }
  447. extern __inline __m512
  448. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  449. _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
  450. {
  451. return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
  452. (__v16sf) __B,
  453. (__v16sf) __W,
  454. (__mmask16) __U);
  455. }
  456. extern __inline __m512
  457. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  458. _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B)
  459. {
  460. return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
  461. (__v16sf) __B,
  462. (__v16sf)
  463. _mm512_setzero_ps (),
  464. (__mmask16) __U);
  465. }
  466. extern __inline __m512d
  467. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  468. _mm512_and_pd (__m512d __A, __m512d __B)
  469. {
  470. return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
  471. (__v8df) __B,
  472. (__v8df)
  473. _mm512_setzero_pd (),
  474. (__mmask8) -1);
  475. }
  476. extern __inline __m512d
  477. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  478. _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A,
  479. __m512d __B)
  480. {
  481. return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
  482. (__v8df) __B,
  483. (__v8df) __W,
  484. (__mmask8) __U);
  485. }
  486. extern __inline __m512d
  487. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  488. _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B)
  489. {
  490. return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
  491. (__v8df) __B,
  492. (__v8df)
  493. _mm512_setzero_pd (),
  494. (__mmask8) __U);
  495. }
  496. extern __inline __m512
  497. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  498. _mm512_and_ps (__m512 __A, __m512 __B)
  499. {
  500. return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
  501. (__v16sf) __B,
  502. (__v16sf)
  503. _mm512_setzero_ps (),
  504. (__mmask16) -1);
  505. }
  506. extern __inline __m512
  507. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  508. _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
  509. {
  510. return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
  511. (__v16sf) __B,
  512. (__v16sf) __W,
  513. (__mmask16) __U);
  514. }
  515. extern __inline __m512
  516. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  517. _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B)
  518. {
  519. return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
  520. (__v16sf) __B,
  521. (__v16sf)
  522. _mm512_setzero_ps (),
  523. (__mmask16) __U);
  524. }
  525. extern __inline __m512d
  526. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  527. _mm512_andnot_pd (__m512d __A, __m512d __B)
  528. {
  529. return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
  530. (__v8df) __B,
  531. (__v8df)
  532. _mm512_setzero_pd (),
  533. (__mmask8) -1);
  534. }
  535. extern __inline __m512d
  536. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  537. _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A,
  538. __m512d __B)
  539. {
  540. return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
  541. (__v8df) __B,
  542. (__v8df) __W,
  543. (__mmask8) __U);
  544. }
  545. extern __inline __m512d
  546. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  547. _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B)
  548. {
  549. return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
  550. (__v8df) __B,
  551. (__v8df)
  552. _mm512_setzero_pd (),
  553. (__mmask8) __U);
  554. }
  555. extern __inline __m512
  556. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  557. _mm512_andnot_ps (__m512 __A, __m512 __B)
  558. {
  559. return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
  560. (__v16sf) __B,
  561. (__v16sf)
  562. _mm512_setzero_ps (),
  563. (__mmask16) -1);
  564. }
  565. extern __inline __m512
  566. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  567. _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A,
  568. __m512 __B)
  569. {
  570. return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
  571. (__v16sf) __B,
  572. (__v16sf) __W,
  573. (__mmask16) __U);
  574. }
  575. extern __inline __m512
  576. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  577. _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B)
  578. {
  579. return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
  580. (__v16sf) __B,
  581. (__v16sf)
  582. _mm512_setzero_ps (),
  583. (__mmask16) __U);
  584. }
  585. extern __inline __mmask16
  586. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  587. _mm512_movepi32_mask (__m512i __A)
  588. {
  589. return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
  590. }
  591. extern __inline __mmask8
  592. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  593. _mm512_movepi64_mask (__m512i __A)
  594. {
  595. return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
  596. }
  597. extern __inline __m512i
  598. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  599. _mm512_movm_epi32 (__mmask16 __A)
  600. {
  601. return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
  602. }
  603. extern __inline __m512i
  604. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  605. _mm512_movm_epi64 (__mmask8 __A)
  606. {
  607. return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
  608. }
  609. extern __inline __m512i
  610. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  611. _mm512_cvttpd_epi64 (__m512d __A)
  612. {
  613. return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
  614. (__v8di)
  615. _mm512_setzero_si512 (),
  616. (__mmask8) -1,
  617. _MM_FROUND_CUR_DIRECTION);
  618. }
  619. extern __inline __m512i
  620. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  621. _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
  622. {
  623. return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
  624. (__v8di) __W,
  625. (__mmask8) __U,
  626. _MM_FROUND_CUR_DIRECTION);
  627. }
  628. extern __inline __m512i
  629. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  630. _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A)
  631. {
  632. return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
  633. (__v8di)
  634. _mm512_setzero_si512 (),
  635. (__mmask8) __U,
  636. _MM_FROUND_CUR_DIRECTION);
  637. }
  638. extern __inline __m512i
  639. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  640. _mm512_cvttpd_epu64 (__m512d __A)
  641. {
  642. return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
  643. (__v8di)
  644. _mm512_setzero_si512 (),
  645. (__mmask8) -1,
  646. _MM_FROUND_CUR_DIRECTION);
  647. }
  648. extern __inline __m512i
  649. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  650. _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
  651. {
  652. return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
  653. (__v8di) __W,
  654. (__mmask8) __U,
  655. _MM_FROUND_CUR_DIRECTION);
  656. }
  657. extern __inline __m512i
  658. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  659. _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A)
  660. {
  661. return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
  662. (__v8di)
  663. _mm512_setzero_si512 (),
  664. (__mmask8) __U,
  665. _MM_FROUND_CUR_DIRECTION);
  666. }
  667. extern __inline __m512i
  668. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  669. _mm512_cvttps_epi64 (__m256 __A)
  670. {
  671. return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
  672. (__v8di)
  673. _mm512_setzero_si512 (),
  674. (__mmask8) -1,
  675. _MM_FROUND_CUR_DIRECTION);
  676. }
  677. extern __inline __m512i
  678. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  679. _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
  680. {
  681. return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
  682. (__v8di) __W,
  683. (__mmask8) __U,
  684. _MM_FROUND_CUR_DIRECTION);
  685. }
  686. extern __inline __m512i
  687. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  688. _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A)
  689. {
  690. return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
  691. (__v8di)
  692. _mm512_setzero_si512 (),
  693. (__mmask8) __U,
  694. _MM_FROUND_CUR_DIRECTION);
  695. }
  696. extern __inline __m512i
  697. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  698. _mm512_cvttps_epu64 (__m256 __A)
  699. {
  700. return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
  701. (__v8di)
  702. _mm512_setzero_si512 (),
  703. (__mmask8) -1,
  704. _MM_FROUND_CUR_DIRECTION);
  705. }
  706. extern __inline __m512i
  707. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  708. _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
  709. {
  710. return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
  711. (__v8di) __W,
  712. (__mmask8) __U,
  713. _MM_FROUND_CUR_DIRECTION);
  714. }
  715. extern __inline __m512i
  716. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  717. _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A)
  718. {
  719. return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
  720. (__v8di)
  721. _mm512_setzero_si512 (),
  722. (__mmask8) __U,
  723. _MM_FROUND_CUR_DIRECTION);
  724. }
  725. extern __inline __m512i
  726. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  727. _mm512_cvtpd_epi64 (__m512d __A)
  728. {
  729. return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
  730. (__v8di)
  731. _mm512_setzero_si512 (),
  732. (__mmask8) -1,
  733. _MM_FROUND_CUR_DIRECTION);
  734. }
  735. extern __inline __m512i
  736. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  737. _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
  738. {
  739. return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
  740. (__v8di) __W,
  741. (__mmask8) __U,
  742. _MM_FROUND_CUR_DIRECTION);
  743. }
  744. extern __inline __m512i
  745. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  746. _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A)
  747. {
  748. return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
  749. (__v8di)
  750. _mm512_setzero_si512 (),
  751. (__mmask8) __U,
  752. _MM_FROUND_CUR_DIRECTION);
  753. }
  754. extern __inline __m512i
  755. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  756. _mm512_cvtpd_epu64 (__m512d __A)
  757. {
  758. return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
  759. (__v8di)
  760. _mm512_setzero_si512 (),
  761. (__mmask8) -1,
  762. _MM_FROUND_CUR_DIRECTION);
  763. }
  764. extern __inline __m512i
  765. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  766. _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
  767. {
  768. return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
  769. (__v8di) __W,
  770. (__mmask8) __U,
  771. _MM_FROUND_CUR_DIRECTION);
  772. }
  773. extern __inline __m512i
  774. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  775. _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A)
  776. {
  777. return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
  778. (__v8di)
  779. _mm512_setzero_si512 (),
  780. (__mmask8) __U,
  781. _MM_FROUND_CUR_DIRECTION);
  782. }
  783. extern __inline __m512i
  784. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  785. _mm512_cvtps_epi64 (__m256 __A)
  786. {
  787. return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
  788. (__v8di)
  789. _mm512_setzero_si512 (),
  790. (__mmask8) -1,
  791. _MM_FROUND_CUR_DIRECTION);
  792. }
  793. extern __inline __m512i
  794. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  795. _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
  796. {
  797. return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
  798. (__v8di) __W,
  799. (__mmask8) __U,
  800. _MM_FROUND_CUR_DIRECTION);
  801. }
  802. extern __inline __m512i
  803. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  804. _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A)
  805. {
  806. return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
  807. (__v8di)
  808. _mm512_setzero_si512 (),
  809. (__mmask8) __U,
  810. _MM_FROUND_CUR_DIRECTION);
  811. }
  812. extern __inline __m512i
  813. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  814. _mm512_cvtps_epu64 (__m256 __A)
  815. {
  816. return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
  817. (__v8di)
  818. _mm512_setzero_si512 (),
  819. (__mmask8) -1,
  820. _MM_FROUND_CUR_DIRECTION);
  821. }
  822. extern __inline __m512i
  823. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  824. _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
  825. {
  826. return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
  827. (__v8di) __W,
  828. (__mmask8) __U,
  829. _MM_FROUND_CUR_DIRECTION);
  830. }
  831. extern __inline __m512i
  832. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  833. _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A)
  834. {
  835. return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
  836. (__v8di)
  837. _mm512_setzero_si512 (),
  838. (__mmask8) __U,
  839. _MM_FROUND_CUR_DIRECTION);
  840. }
  841. extern __inline __m256
  842. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  843. _mm512_cvtepi64_ps (__m512i __A)
  844. {
  845. return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
  846. (__v8sf)
  847. _mm256_setzero_ps (),
  848. (__mmask8) -1,
  849. _MM_FROUND_CUR_DIRECTION);
  850. }
  851. extern __inline __m256
  852. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  853. _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A)
  854. {
  855. return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
  856. (__v8sf) __W,
  857. (__mmask8) __U,
  858. _MM_FROUND_CUR_DIRECTION);
  859. }
  860. extern __inline __m256
  861. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  862. _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A)
  863. {
  864. return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
  865. (__v8sf)
  866. _mm256_setzero_ps (),
  867. (__mmask8) __U,
  868. _MM_FROUND_CUR_DIRECTION);
  869. }
  870. extern __inline __m256
  871. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  872. _mm512_cvtepu64_ps (__m512i __A)
  873. {
  874. return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
  875. (__v8sf)
  876. _mm256_setzero_ps (),
  877. (__mmask8) -1,
  878. _MM_FROUND_CUR_DIRECTION);
  879. }
  880. extern __inline __m256
  881. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  882. _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A)
  883. {
  884. return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
  885. (__v8sf) __W,
  886. (__mmask8) __U,
  887. _MM_FROUND_CUR_DIRECTION);
  888. }
  889. extern __inline __m256
  890. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  891. _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A)
  892. {
  893. return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
  894. (__v8sf)
  895. _mm256_setzero_ps (),
  896. (__mmask8) __U,
  897. _MM_FROUND_CUR_DIRECTION);
  898. }
  899. extern __inline __m512d
  900. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  901. _mm512_cvtepi64_pd (__m512i __A)
  902. {
  903. return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
  904. (__v8df)
  905. _mm512_setzero_pd (),
  906. (__mmask8) -1,
  907. _MM_FROUND_CUR_DIRECTION);
  908. }
  909. extern __inline __m512d
  910. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  911. _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A)
  912. {
  913. return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
  914. (__v8df) __W,
  915. (__mmask8) __U,
  916. _MM_FROUND_CUR_DIRECTION);
  917. }
  918. extern __inline __m512d
  919. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  920. _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A)
  921. {
  922. return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
  923. (__v8df)
  924. _mm512_setzero_pd (),
  925. (__mmask8) __U,
  926. _MM_FROUND_CUR_DIRECTION);
  927. }
  928. extern __inline __m512d
  929. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  930. _mm512_cvtepu64_pd (__m512i __A)
  931. {
  932. return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
  933. (__v8df)
  934. _mm512_setzero_pd (),
  935. (__mmask8) -1,
  936. _MM_FROUND_CUR_DIRECTION);
  937. }
  938. extern __inline __m512d
  939. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  940. _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A)
  941. {
  942. return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
  943. (__v8df) __W,
  944. (__mmask8) __U,
  945. _MM_FROUND_CUR_DIRECTION);
  946. }
  947. extern __inline __m512d
  948. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  949. _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A)
  950. {
  951. return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
  952. (__v8df)
  953. _mm512_setzero_pd (),
  954. (__mmask8) __U,
  955. _MM_FROUND_CUR_DIRECTION);
  956. }
  957. #ifdef __OPTIMIZE__
  958. extern __inline __mmask8
  959. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  960. _kshiftli_mask8 (__mmask8 __A, unsigned int __B)
  961. {
  962. return (__mmask8) __builtin_ia32_kshiftliqi ((__mmask8) __A, (__mmask8) __B);
  963. }
  964. extern __inline __mmask8
  965. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  966. _kshiftri_mask8 (__mmask8 __A, unsigned int __B)
  967. {
  968. return (__mmask8) __builtin_ia32_kshiftriqi ((__mmask8) __A, (__mmask8) __B);
  969. }
  970. extern __inline __m512d
  971. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  972. _mm512_range_pd (__m512d __A, __m512d __B, int __C)
  973. {
  974. return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
  975. (__v8df) __B, __C,
  976. (__v8df)
  977. _mm512_setzero_pd (),
  978. (__mmask8) -1,
  979. _MM_FROUND_CUR_DIRECTION);
  980. }
  981. extern __inline __m512d
  982. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  983. _mm512_mask_range_pd (__m512d __W, __mmask8 __U,
  984. __m512d __A, __m512d __B, int __C)
  985. {
  986. return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
  987. (__v8df) __B, __C,
  988. (__v8df) __W,
  989. (__mmask8) __U,
  990. _MM_FROUND_CUR_DIRECTION);
  991. }
  992. extern __inline __m512d
  993. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  994. _mm512_maskz_range_pd (__mmask8 __U, __m512d __A, __m512d __B, int __C)
  995. {
  996. return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
  997. (__v8df) __B, __C,
  998. (__v8df)
  999. _mm512_setzero_pd (),
  1000. (__mmask8) __U,
  1001. _MM_FROUND_CUR_DIRECTION);
  1002. }
  1003. extern __inline __m512
  1004. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1005. _mm512_range_ps (__m512 __A, __m512 __B, int __C)
  1006. {
  1007. return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
  1008. (__v16sf) __B, __C,
  1009. (__v16sf)
  1010. _mm512_setzero_ps (),
  1011. (__mmask16) -1,
  1012. _MM_FROUND_CUR_DIRECTION);
  1013. }
  1014. extern __inline __m512
  1015. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1016. _mm512_mask_range_ps (__m512 __W, __mmask16 __U,
  1017. __m512 __A, __m512 __B, int __C)
  1018. {
  1019. return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
  1020. (__v16sf) __B, __C,
  1021. (__v16sf) __W,
  1022. (__mmask16) __U,
  1023. _MM_FROUND_CUR_DIRECTION);
  1024. }
  1025. extern __inline __m512
  1026. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1027. _mm512_maskz_range_ps (__mmask16 __U, __m512 __A, __m512 __B, int __C)
  1028. {
  1029. return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
  1030. (__v16sf) __B, __C,
  1031. (__v16sf)
  1032. _mm512_setzero_ps (),
  1033. (__mmask16) __U,
  1034. _MM_FROUND_CUR_DIRECTION);
  1035. }
  1036. extern __inline __m128d
  1037. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1038. _mm_reduce_sd (__m128d __A, __m128d __B, int __C)
  1039. {
  1040. return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
  1041. (__v2df) __B, __C,
  1042. (__v2df) _mm_setzero_pd (),
  1043. (__mmask8) -1);
  1044. }
  1045. extern __inline __m128d
  1046. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1047. _mm_reduce_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
  1048. {
  1049. return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
  1050. (__v2df) __B, __C,
  1051. (__v2df)
  1052. _mm_setzero_pd (),
  1053. (__mmask8) -1, __R);
  1054. }
  1055. extern __inline __m128d
  1056. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1057. _mm_mask_reduce_sd (__m128d __W, __mmask8 __U, __m128d __A,
  1058. __m128d __B, int __C)
  1059. {
  1060. return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
  1061. (__v2df) __B, __C,
  1062. (__v2df) __W,
  1063. (__mmask8) __U);
  1064. }
  1065. extern __inline __m128d
  1066. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1067. _mm_mask_reduce_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
  1068. __m128d __B, int __C, const int __R)
  1069. {
  1070. return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
  1071. (__v2df) __B, __C,
  1072. (__v2df) __W,
  1073. __U, __R);
  1074. }
  1075. extern __inline __m128d
  1076. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1077. _mm_maskz_reduce_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C)
  1078. {
  1079. return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
  1080. (__v2df) __B, __C,
  1081. (__v2df) _mm_setzero_pd (),
  1082. (__mmask8) __U);
  1083. }
  1084. extern __inline __m128d
  1085. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1086. _mm_maskz_reduce_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
  1087. int __C, const int __R)
  1088. {
  1089. return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
  1090. (__v2df) __B, __C,
  1091. (__v2df)
  1092. _mm_setzero_pd (),
  1093. __U, __R);
  1094. }
  1095. extern __inline __m128
  1096. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1097. _mm_reduce_ss (__m128 __A, __m128 __B, int __C)
  1098. {
  1099. return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
  1100. (__v4sf) __B, __C,
  1101. (__v4sf) _mm_setzero_ps (),
  1102. (__mmask8) -1);
  1103. }
  1104. extern __inline __m128
  1105. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1106. _mm_reduce_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
  1107. {
  1108. return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
  1109. (__v4sf) __B, __C,
  1110. (__v4sf)
  1111. _mm_setzero_ps (),
  1112. (__mmask8) -1, __R);
  1113. }
  1114. extern __inline __m128
  1115. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1116. _mm_mask_reduce_ss (__m128 __W, __mmask8 __U, __m128 __A,
  1117. __m128 __B, int __C)
  1118. {
  1119. return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
  1120. (__v4sf) __B, __C,
  1121. (__v4sf) __W,
  1122. (__mmask8) __U);
  1123. }
  1124. extern __inline __m128
  1125. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1126. _mm_mask_reduce_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
  1127. __m128 __B, int __C, const int __R)
  1128. {
  1129. return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
  1130. (__v4sf) __B, __C,
  1131. (__v4sf) __W,
  1132. __U, __R);
  1133. }
  1134. extern __inline __m128
  1135. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1136. _mm_maskz_reduce_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C)
  1137. {
  1138. return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
  1139. (__v4sf) __B, __C,
  1140. (__v4sf) _mm_setzero_ps (),
  1141. (__mmask8) __U);
  1142. }
  1143. extern __inline __m128
  1144. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1145. _mm_maskz_reduce_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
  1146. int __C, const int __R)
  1147. {
  1148. return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
  1149. (__v4sf) __B, __C,
  1150. (__v4sf)
  1151. _mm_setzero_ps (),
  1152. __U, __R);
  1153. }
  1154. extern __inline __m128d
  1155. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1156. _mm_range_sd (__m128d __A, __m128d __B, int __C)
  1157. {
  1158. return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
  1159. (__v2df) __B, __C,
  1160. (__v2df)
  1161. _mm_setzero_pd (),
  1162. (__mmask8) -1,
  1163. _MM_FROUND_CUR_DIRECTION);
  1164. }
  1165. extern __inline __m128d
  1166. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1167. _mm_mask_range_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B, int __C)
  1168. {
  1169. return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
  1170. (__v2df) __B, __C,
  1171. (__v2df) __W,
  1172. (__mmask8) __U,
  1173. _MM_FROUND_CUR_DIRECTION);
  1174. }
  1175. extern __inline __m128d
  1176. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1177. _mm_maskz_range_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C)
  1178. {
  1179. return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
  1180. (__v2df) __B, __C,
  1181. (__v2df)
  1182. _mm_setzero_pd (),
  1183. (__mmask8) __U,
  1184. _MM_FROUND_CUR_DIRECTION);
  1185. }
  1186. extern __inline __m128
  1187. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1188. _mm_range_ss (__m128 __A, __m128 __B, int __C)
  1189. {
  1190. return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
  1191. (__v4sf) __B, __C,
  1192. (__v4sf)
  1193. _mm_setzero_ps (),
  1194. (__mmask8) -1,
  1195. _MM_FROUND_CUR_DIRECTION);
  1196. }
  1197. extern __inline __m128
  1198. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1199. _mm_mask_range_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B, int __C)
  1200. {
  1201. return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
  1202. (__v4sf) __B, __C,
  1203. (__v4sf) __W,
  1204. (__mmask8) __U,
  1205. _MM_FROUND_CUR_DIRECTION);
  1206. }
  1207. extern __inline __m128
  1208. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1209. _mm_maskz_range_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C)
  1210. {
  1211. return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
  1212. (__v4sf) __B, __C,
  1213. (__v4sf)
  1214. _mm_setzero_ps (),
  1215. (__mmask8) __U,
  1216. _MM_FROUND_CUR_DIRECTION);
  1217. }
  1218. extern __inline __m128d
  1219. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1220. _mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
  1221. {
  1222. return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
  1223. (__v2df) __B, __C,
  1224. (__v2df)
  1225. _mm_setzero_pd (),
  1226. (__mmask8) -1, __R);
  1227. }
  1228. extern __inline __m128d
  1229. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1230. _mm_mask_range_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
  1231. int __C, const int __R)
  1232. {
  1233. return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
  1234. (__v2df) __B, __C,
  1235. (__v2df) __W,
  1236. (__mmask8) __U, __R);
  1237. }
  1238. extern __inline __m128d
  1239. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1240. _mm_maskz_range_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C,
  1241. const int __R)
  1242. {
  1243. return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
  1244. (__v2df) __B, __C,
  1245. (__v2df)
  1246. _mm_setzero_pd (),
  1247. (__mmask8) __U, __R);
  1248. }
  1249. extern __inline __m128
  1250. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1251. _mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
  1252. {
  1253. return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
  1254. (__v4sf) __B, __C,
  1255. (__v4sf)
  1256. _mm_setzero_ps (),
  1257. (__mmask8) -1, __R);
  1258. }
  1259. extern __inline __m128
  1260. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1261. _mm_mask_range_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
  1262. int __C, const int __R)
  1263. {
  1264. return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
  1265. (__v4sf) __B, __C,
  1266. (__v4sf) __W,
  1267. (__mmask8) __U, __R);
  1268. }
  1269. extern __inline __m128
  1270. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1271. _mm_maskz_range_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C,
  1272. const int __R)
  1273. {
  1274. return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
  1275. (__v4sf) __B, __C,
  1276. (__v4sf)
  1277. _mm_setzero_ps (),
  1278. (__mmask8) __U, __R);
  1279. }
  1280. extern __inline __mmask8
  1281. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1282. _mm_fpclass_ss_mask (__m128 __A, const int __imm)
  1283. {
  1284. return (__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) __A, __imm,
  1285. (__mmask8) -1);
  1286. }
  1287. extern __inline __mmask8
  1288. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1289. _mm_fpclass_sd_mask (__m128d __A, const int __imm)
  1290. {
  1291. return (__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) __A, __imm,
  1292. (__mmask8) -1);
  1293. }
  1294. extern __inline __mmask8
  1295. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1296. _mm_mask_fpclass_ss_mask (__mmask8 __U, __m128 __A, const int __imm)
  1297. {
  1298. return (__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) __A, __imm, __U);
  1299. }
  1300. extern __inline __mmask8
  1301. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1302. _mm_mask_fpclass_sd_mask (__mmask8 __U, __m128d __A, const int __imm)
  1303. {
  1304. return (__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) __A, __imm, __U);
  1305. }
  1306. extern __inline __m512i
  1307. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1308. _mm512_cvtt_roundpd_epi64 (__m512d __A, const int __R)
  1309. {
  1310. return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
  1311. (__v8di)
  1312. _mm512_setzero_si512 (),
  1313. (__mmask8) -1,
  1314. __R);
  1315. }
  1316. extern __inline __m512i
  1317. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1318. _mm512_mask_cvtt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
  1319. const int __R)
  1320. {
  1321. return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
  1322. (__v8di) __W,
  1323. (__mmask8) __U,
  1324. __R);
  1325. }
  1326. extern __inline __m512i
  1327. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1328. _mm512_maskz_cvtt_roundpd_epi64 (__mmask8 __U, __m512d __A,
  1329. const int __R)
  1330. {
  1331. return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
  1332. (__v8di)
  1333. _mm512_setzero_si512 (),
  1334. (__mmask8) __U,
  1335. __R);
  1336. }
  1337. extern __inline __m512i
  1338. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1339. _mm512_cvtt_roundpd_epu64 (__m512d __A, const int __R)
  1340. {
  1341. return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
  1342. (__v8di)
  1343. _mm512_setzero_si512 (),
  1344. (__mmask8) -1,
  1345. __R);
  1346. }
  1347. extern __inline __m512i
  1348. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1349. _mm512_mask_cvtt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
  1350. const int __R)
  1351. {
  1352. return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
  1353. (__v8di) __W,
  1354. (__mmask8) __U,
  1355. __R);
  1356. }
  1357. extern __inline __m512i
  1358. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1359. _mm512_maskz_cvtt_roundpd_epu64 (__mmask8 __U, __m512d __A,
  1360. const int __R)
  1361. {
  1362. return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
  1363. (__v8di)
  1364. _mm512_setzero_si512 (),
  1365. (__mmask8) __U,
  1366. __R);
  1367. }
  1368. extern __inline __m512i
  1369. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1370. _mm512_cvtt_roundps_epi64 (__m256 __A, const int __R)
  1371. {
  1372. return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
  1373. (__v8di)
  1374. _mm512_setzero_si512 (),
  1375. (__mmask8) -1,
  1376. __R);
  1377. }
  1378. extern __inline __m512i
  1379. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1380. _mm512_mask_cvtt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
  1381. const int __R)
  1382. {
  1383. return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
  1384. (__v8di) __W,
  1385. (__mmask8) __U,
  1386. __R);
  1387. }
  1388. extern __inline __m512i
  1389. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1390. _mm512_maskz_cvtt_roundps_epi64 (__mmask8 __U, __m256 __A,
  1391. const int __R)
  1392. {
  1393. return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
  1394. (__v8di)
  1395. _mm512_setzero_si512 (),
  1396. (__mmask8) __U,
  1397. __R);
  1398. }
  1399. extern __inline __m512i
  1400. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1401. _mm512_cvtt_roundps_epu64 (__m256 __A, const int __R)
  1402. {
  1403. return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
  1404. (__v8di)
  1405. _mm512_setzero_si512 (),
  1406. (__mmask8) -1,
  1407. __R);
  1408. }
  1409. extern __inline __m512i
  1410. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1411. _mm512_mask_cvtt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
  1412. const int __R)
  1413. {
  1414. return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
  1415. (__v8di) __W,
  1416. (__mmask8) __U,
  1417. __R);
  1418. }
  1419. extern __inline __m512i
  1420. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1421. _mm512_maskz_cvtt_roundps_epu64 (__mmask8 __U, __m256 __A,
  1422. const int __R)
  1423. {
  1424. return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
  1425. (__v8di)
  1426. _mm512_setzero_si512 (),
  1427. (__mmask8) __U,
  1428. __R);
  1429. }
  1430. extern __inline __m512i
  1431. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1432. _mm512_cvt_roundpd_epi64 (__m512d __A, const int __R)
  1433. {
  1434. return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
  1435. (__v8di)
  1436. _mm512_setzero_si512 (),
  1437. (__mmask8) -1,
  1438. __R);
  1439. }
  1440. extern __inline __m512i
  1441. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1442. _mm512_mask_cvt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
  1443. const int __R)
  1444. {
  1445. return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
  1446. (__v8di) __W,
  1447. (__mmask8) __U,
  1448. __R);
  1449. }
  1450. extern __inline __m512i
  1451. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1452. _mm512_maskz_cvt_roundpd_epi64 (__mmask8 __U, __m512d __A,
  1453. const int __R)
  1454. {
  1455. return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
  1456. (__v8di)
  1457. _mm512_setzero_si512 (),
  1458. (__mmask8) __U,
  1459. __R);
  1460. }
  1461. extern __inline __m512i
  1462. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1463. _mm512_cvt_roundpd_epu64 (__m512d __A, const int __R)
  1464. {
  1465. return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
  1466. (__v8di)
  1467. _mm512_setzero_si512 (),
  1468. (__mmask8) -1,
  1469. __R);
  1470. }
  1471. extern __inline __m512i
  1472. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1473. _mm512_mask_cvt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
  1474. const int __R)
  1475. {
  1476. return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
  1477. (__v8di) __W,
  1478. (__mmask8) __U,
  1479. __R);
  1480. }
  1481. extern __inline __m512i
  1482. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1483. _mm512_maskz_cvt_roundpd_epu64 (__mmask8 __U, __m512d __A,
  1484. const int __R)
  1485. {
  1486. return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
  1487. (__v8di)
  1488. _mm512_setzero_si512 (),
  1489. (__mmask8) __U,
  1490. __R);
  1491. }
  1492. extern __inline __m512i
  1493. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1494. _mm512_cvt_roundps_epi64 (__m256 __A, const int __R)
  1495. {
  1496. return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
  1497. (__v8di)
  1498. _mm512_setzero_si512 (),
  1499. (__mmask8) -1,
  1500. __R);
  1501. }
  1502. extern __inline __m512i
  1503. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1504. _mm512_mask_cvt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
  1505. const int __R)
  1506. {
  1507. return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
  1508. (__v8di) __W,
  1509. (__mmask8) __U,
  1510. __R);
  1511. }
  1512. extern __inline __m512i
  1513. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1514. _mm512_maskz_cvt_roundps_epi64 (__mmask8 __U, __m256 __A,
  1515. const int __R)
  1516. {
  1517. return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
  1518. (__v8di)
  1519. _mm512_setzero_si512 (),
  1520. (__mmask8) __U,
  1521. __R);
  1522. }
  1523. extern __inline __m512i
  1524. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1525. _mm512_cvt_roundps_epu64 (__m256 __A, const int __R)
  1526. {
  1527. return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
  1528. (__v8di)
  1529. _mm512_setzero_si512 (),
  1530. (__mmask8) -1,
  1531. __R);
  1532. }
  1533. extern __inline __m512i
  1534. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1535. _mm512_mask_cvt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
  1536. const int __R)
  1537. {
  1538. return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
  1539. (__v8di) __W,
  1540. (__mmask8) __U,
  1541. __R);
  1542. }
  1543. extern __inline __m512i
  1544. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1545. _mm512_maskz_cvt_roundps_epu64 (__mmask8 __U, __m256 __A,
  1546. const int __R)
  1547. {
  1548. return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
  1549. (__v8di)
  1550. _mm512_setzero_si512 (),
  1551. (__mmask8) __U,
  1552. __R);
  1553. }
  1554. extern __inline __m256
  1555. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1556. _mm512_cvt_roundepi64_ps (__m512i __A, const int __R)
  1557. {
  1558. return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
  1559. (__v8sf)
  1560. _mm256_setzero_ps (),
  1561. (__mmask8) -1,
  1562. __R);
  1563. }
  1564. extern __inline __m256
  1565. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1566. _mm512_mask_cvt_roundepi64_ps (__m256 __W, __mmask8 __U, __m512i __A,
  1567. const int __R)
  1568. {
  1569. return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
  1570. (__v8sf) __W,
  1571. (__mmask8) __U,
  1572. __R);
  1573. }
  1574. extern __inline __m256
  1575. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1576. _mm512_maskz_cvt_roundepi64_ps (__mmask8 __U, __m512i __A,
  1577. const int __R)
  1578. {
  1579. return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
  1580. (__v8sf)
  1581. _mm256_setzero_ps (),
  1582. (__mmask8) __U,
  1583. __R);
  1584. }
  1585. extern __inline __m256
  1586. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1587. _mm512_cvt_roundepu64_ps (__m512i __A, const int __R)
  1588. {
  1589. return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
  1590. (__v8sf)
  1591. _mm256_setzero_ps (),
  1592. (__mmask8) -1,
  1593. __R);
  1594. }
  1595. extern __inline __m256
  1596. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1597. _mm512_mask_cvt_roundepu64_ps (__m256 __W, __mmask8 __U, __m512i __A,
  1598. const int __R)
  1599. {
  1600. return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
  1601. (__v8sf) __W,
  1602. (__mmask8) __U,
  1603. __R);
  1604. }
  1605. extern __inline __m256
  1606. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1607. _mm512_maskz_cvt_roundepu64_ps (__mmask8 __U, __m512i __A,
  1608. const int __R)
  1609. {
  1610. return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
  1611. (__v8sf)
  1612. _mm256_setzero_ps (),
  1613. (__mmask8) __U,
  1614. __R);
  1615. }
  1616. extern __inline __m512d
  1617. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1618. _mm512_cvt_roundepi64_pd (__m512i __A, const int __R)
  1619. {
  1620. return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
  1621. (__v8df)
  1622. _mm512_setzero_pd (),
  1623. (__mmask8) -1,
  1624. __R);
  1625. }
  1626. extern __inline __m512d
  1627. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1628. _mm512_mask_cvt_roundepi64_pd (__m512d __W, __mmask8 __U, __m512i __A,
  1629. const int __R)
  1630. {
  1631. return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
  1632. (__v8df) __W,
  1633. (__mmask8) __U,
  1634. __R);
  1635. }
  1636. extern __inline __m512d
  1637. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1638. _mm512_maskz_cvt_roundepi64_pd (__mmask8 __U, __m512i __A,
  1639. const int __R)
  1640. {
  1641. return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
  1642. (__v8df)
  1643. _mm512_setzero_pd (),
  1644. (__mmask8) __U,
  1645. __R);
  1646. }
  1647. extern __inline __m512d
  1648. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1649. _mm512_cvt_roundepu64_pd (__m512i __A, const int __R)
  1650. {
  1651. return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
  1652. (__v8df)
  1653. _mm512_setzero_pd (),
  1654. (__mmask8) -1,
  1655. __R);
  1656. }
  1657. extern __inline __m512d
  1658. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1659. _mm512_mask_cvt_roundepu64_pd (__m512d __W, __mmask8 __U, __m512i __A,
  1660. const int __R)
  1661. {
  1662. return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
  1663. (__v8df) __W,
  1664. (__mmask8) __U,
  1665. __R);
  1666. }
  1667. extern __inline __m512d
  1668. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1669. _mm512_maskz_cvt_roundepu64_pd (__mmask8 __U, __m512i __A,
  1670. const int __R)
  1671. {
  1672. return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
  1673. (__v8df)
  1674. _mm512_setzero_pd (),
  1675. (__mmask8) __U,
  1676. __R);
  1677. }
  1678. extern __inline __m512d
  1679. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1680. _mm512_reduce_pd (__m512d __A, int __B)
  1681. {
  1682. return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
  1683. (__v8df)
  1684. _mm512_setzero_pd (),
  1685. (__mmask8) -1);
  1686. }
  1687. extern __inline __m512d
  1688. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1689. _mm512_reduce_round_pd (__m512d __A, int __B, const int __R)
  1690. {
  1691. return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
  1692. __B,
  1693. (__v8df)
  1694. _mm512_setzero_pd (),
  1695. (__mmask8) -1, __R);
  1696. }
  1697. extern __inline __m512d
  1698. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1699. _mm512_mask_reduce_pd (__m512d __W, __mmask8 __U, __m512d __A, int __B)
  1700. {
  1701. return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
  1702. (__v8df) __W,
  1703. (__mmask8) __U);
  1704. }
  1705. extern __inline __m512d
  1706. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1707. _mm512_mask_reduce_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
  1708. int __B, const int __R)
  1709. {
  1710. return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
  1711. __B,
  1712. (__v8df) __W,
  1713. __U, __R);
  1714. }
  1715. extern __inline __m512d
  1716. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1717. _mm512_maskz_reduce_pd (__mmask8 __U, __m512d __A, int __B)
  1718. {
  1719. return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
  1720. (__v8df)
  1721. _mm512_setzero_pd (),
  1722. (__mmask8) __U);
  1723. }
  1724. extern __inline __m512d
  1725. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1726. _mm512_maskz_reduce_round_pd (__mmask8 __U, __m512d __A, int __B,
  1727. const int __R)
  1728. {
  1729. return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
  1730. __B,
  1731. (__v8df)
  1732. _mm512_setzero_pd (),
  1733. __U, __R);
  1734. }
  1735. extern __inline __m512
  1736. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1737. _mm512_reduce_ps (__m512 __A, int __B)
  1738. {
  1739. return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
  1740. (__v16sf)
  1741. _mm512_setzero_ps (),
  1742. (__mmask16) -1);
  1743. }
  1744. extern __inline __m512
  1745. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1746. _mm512_reduce_round_ps (__m512 __A, int __B, const int __R)
  1747. {
  1748. return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
  1749. __B,
  1750. (__v16sf)
  1751. _mm512_setzero_ps (),
  1752. (__mmask16) -1, __R);
  1753. }
  1754. extern __inline __m512
  1755. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1756. _mm512_mask_reduce_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B)
  1757. {
  1758. return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
  1759. (__v16sf) __W,
  1760. (__mmask16) __U);
  1761. }
  1762. extern __inline __m512
  1763. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1764. _mm512_mask_reduce_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B,
  1765. const int __R)
  1766. {
  1767. return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
  1768. __B,
  1769. (__v16sf) __W,
  1770. __U, __R);
  1771. }
  1772. extern __inline __m512
  1773. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1774. _mm512_maskz_reduce_ps (__mmask16 __U, __m512 __A, int __B)
  1775. {
  1776. return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
  1777. (__v16sf)
  1778. _mm512_setzero_ps (),
  1779. (__mmask16) __U);
  1780. }
  1781. extern __inline __m512
  1782. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1783. _mm512_maskz_reduce_round_ps (__mmask16 __U, __m512 __A, int __B,
  1784. const int __R)
  1785. {
  1786. return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
  1787. __B,
  1788. (__v16sf)
  1789. _mm512_setzero_ps (),
  1790. __U, __R);
  1791. }
  1792. extern __inline __m256
  1793. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1794. _mm512_extractf32x8_ps (__m512 __A, const int __imm)
  1795. {
  1796. return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
  1797. __imm,
  1798. (__v8sf)
  1799. _mm256_setzero_ps (),
  1800. (__mmask8) -1);
  1801. }
  1802. extern __inline __m256
  1803. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1804. _mm512_mask_extractf32x8_ps (__m256 __W, __mmask8 __U, __m512 __A,
  1805. const int __imm)
  1806. {
  1807. return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
  1808. __imm,
  1809. (__v8sf) __W,
  1810. (__mmask8) __U);
  1811. }
  1812. extern __inline __m256
  1813. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1814. _mm512_maskz_extractf32x8_ps (__mmask8 __U, __m512 __A,
  1815. const int __imm)
  1816. {
  1817. return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
  1818. __imm,
  1819. (__v8sf)
  1820. _mm256_setzero_ps (),
  1821. (__mmask8) __U);
  1822. }
  1823. extern __inline __m128d
  1824. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1825. _mm512_extractf64x2_pd (__m512d __A, const int __imm)
  1826. {
  1827. return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
  1828. __imm,
  1829. (__v2df)
  1830. _mm_setzero_pd (),
  1831. (__mmask8) -1);
  1832. }
  1833. extern __inline __m128d
  1834. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1835. _mm512_mask_extractf64x2_pd (__m128d __W, __mmask8 __U, __m512d __A,
  1836. const int __imm)
  1837. {
  1838. return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
  1839. __imm,
  1840. (__v2df) __W,
  1841. (__mmask8)
  1842. __U);
  1843. }
  1844. extern __inline __m128d
  1845. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1846. _mm512_maskz_extractf64x2_pd (__mmask8 __U, __m512d __A,
  1847. const int __imm)
  1848. {
  1849. return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
  1850. __imm,
  1851. (__v2df)
  1852. _mm_setzero_pd (),
  1853. (__mmask8)
  1854. __U);
  1855. }
  1856. extern __inline __m256i
  1857. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1858. _mm512_extracti32x8_epi32 (__m512i __A, const int __imm)
  1859. {
  1860. return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
  1861. __imm,
  1862. (__v8si)
  1863. _mm256_setzero_si256 (),
  1864. (__mmask8) -1);
  1865. }
  1866. extern __inline __m256i
  1867. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1868. _mm512_mask_extracti32x8_epi32 (__m256i __W, __mmask8 __U, __m512i __A,
  1869. const int __imm)
  1870. {
  1871. return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
  1872. __imm,
  1873. (__v8si) __W,
  1874. (__mmask8) __U);
  1875. }
  1876. extern __inline __m256i
  1877. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1878. _mm512_maskz_extracti32x8_epi32 (__mmask8 __U, __m512i __A,
  1879. const int __imm)
  1880. {
  1881. return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
  1882. __imm,
  1883. (__v8si)
  1884. _mm256_setzero_si256 (),
  1885. (__mmask8) __U);
  1886. }
  1887. extern __inline __m128i
  1888. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1889. _mm512_extracti64x2_epi64 (__m512i __A, const int __imm)
  1890. {
  1891. return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
  1892. __imm,
  1893. (__v2di)
  1894. _mm_setzero_si128 (),
  1895. (__mmask8) -1);
  1896. }
  1897. extern __inline __m128i
  1898. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1899. _mm512_mask_extracti64x2_epi64 (__m128i __W, __mmask8 __U, __m512i __A,
  1900. const int __imm)
  1901. {
  1902. return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
  1903. __imm,
  1904. (__v2di) __W,
  1905. (__mmask8)
  1906. __U);
  1907. }
  1908. extern __inline __m128i
  1909. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1910. _mm512_maskz_extracti64x2_epi64 (__mmask8 __U, __m512i __A,
  1911. const int __imm)
  1912. {
  1913. return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
  1914. __imm,
  1915. (__v2di)
  1916. _mm_setzero_si128 (),
  1917. (__mmask8)
  1918. __U);
  1919. }
  1920. extern __inline __m512d
  1921. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1922. _mm512_range_round_pd (__m512d __A, __m512d __B, int __C,
  1923. const int __R)
  1924. {
  1925. return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
  1926. (__v8df) __B, __C,
  1927. (__v8df)
  1928. _mm512_setzero_pd (),
  1929. (__mmask8) -1,
  1930. __R);
  1931. }
  1932. extern __inline __m512d
  1933. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1934. _mm512_mask_range_round_pd (__m512d __W, __mmask8 __U,
  1935. __m512d __A, __m512d __B, int __C,
  1936. const int __R)
  1937. {
  1938. return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
  1939. (__v8df) __B, __C,
  1940. (__v8df) __W,
  1941. (__mmask8) __U,
  1942. __R);
  1943. }
  1944. extern __inline __m512d
  1945. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1946. _mm512_maskz_range_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
  1947. int __C, const int __R)
  1948. {
  1949. return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
  1950. (__v8df) __B, __C,
  1951. (__v8df)
  1952. _mm512_setzero_pd (),
  1953. (__mmask8) __U,
  1954. __R);
  1955. }
  1956. extern __inline __m512
  1957. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1958. _mm512_range_round_ps (__m512 __A, __m512 __B, int __C, const int __R)
  1959. {
  1960. return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
  1961. (__v16sf) __B, __C,
  1962. (__v16sf)
  1963. _mm512_setzero_ps (),
  1964. (__mmask16) -1,
  1965. __R);
  1966. }
  1967. extern __inline __m512
  1968. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1969. _mm512_mask_range_round_ps (__m512 __W, __mmask16 __U,
  1970. __m512 __A, __m512 __B, int __C,
  1971. const int __R)
  1972. {
  1973. return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
  1974. (__v16sf) __B, __C,
  1975. (__v16sf) __W,
  1976. (__mmask16) __U,
  1977. __R);
  1978. }
  1979. extern __inline __m512
  1980. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1981. _mm512_maskz_range_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
  1982. int __C, const int __R)
  1983. {
  1984. return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
  1985. (__v16sf) __B, __C,
  1986. (__v16sf)
  1987. _mm512_setzero_ps (),
  1988. (__mmask16) __U,
  1989. __R);
  1990. }
  1991. extern __inline __m512i
  1992. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  1993. _mm512_inserti32x8 (__m512i __A, __m256i __B, const int __imm)
  1994. {
  1995. return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
  1996. (__v8si) __B,
  1997. __imm,
  1998. (__v16si)
  1999. _mm512_setzero_si512 (),
  2000. (__mmask16) -1);
  2001. }
  2002. extern __inline __m512i
  2003. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2004. _mm512_mask_inserti32x8 (__m512i __W, __mmask16 __U, __m512i __A,
  2005. __m256i __B, const int __imm)
  2006. {
  2007. return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
  2008. (__v8si) __B,
  2009. __imm,
  2010. (__v16si) __W,
  2011. (__mmask16) __U);
  2012. }
  2013. extern __inline __m512i
  2014. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2015. _mm512_maskz_inserti32x8 (__mmask16 __U, __m512i __A, __m256i __B,
  2016. const int __imm)
  2017. {
  2018. return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
  2019. (__v8si) __B,
  2020. __imm,
  2021. (__v16si)
  2022. _mm512_setzero_si512 (),
  2023. (__mmask16) __U);
  2024. }
  2025. extern __inline __m512
  2026. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2027. _mm512_insertf32x8 (__m512 __A, __m256 __B, const int __imm)
  2028. {
  2029. return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
  2030. (__v8sf) __B,
  2031. __imm,
  2032. (__v16sf)
  2033. _mm512_setzero_ps (),
  2034. (__mmask16) -1);
  2035. }
  2036. extern __inline __m512
  2037. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2038. _mm512_mask_insertf32x8 (__m512 __W, __mmask16 __U, __m512 __A,
  2039. __m256 __B, const int __imm)
  2040. {
  2041. return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
  2042. (__v8sf) __B,
  2043. __imm,
  2044. (__v16sf) __W,
  2045. (__mmask16) __U);
  2046. }
  2047. extern __inline __m512
  2048. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2049. _mm512_maskz_insertf32x8 (__mmask16 __U, __m512 __A, __m256 __B,
  2050. const int __imm)
  2051. {
  2052. return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
  2053. (__v8sf) __B,
  2054. __imm,
  2055. (__v16sf)
  2056. _mm512_setzero_ps (),
  2057. (__mmask16) __U);
  2058. }
  2059. extern __inline __m512i
  2060. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2061. _mm512_inserti64x2 (__m512i __A, __m128i __B, const int __imm)
  2062. {
  2063. return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
  2064. (__v2di) __B,
  2065. __imm,
  2066. (__v8di)
  2067. _mm512_setzero_si512 (),
  2068. (__mmask8) -1);
  2069. }
  2070. extern __inline __m512i
  2071. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2072. _mm512_mask_inserti64x2 (__m512i __W, __mmask8 __U, __m512i __A,
  2073. __m128i __B, const int __imm)
  2074. {
  2075. return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
  2076. (__v2di) __B,
  2077. __imm,
  2078. (__v8di) __W,
  2079. (__mmask8)
  2080. __U);
  2081. }
  2082. extern __inline __m512i
  2083. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2084. _mm512_maskz_inserti64x2 (__mmask8 __U, __m512i __A, __m128i __B,
  2085. const int __imm)
  2086. {
  2087. return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
  2088. (__v2di) __B,
  2089. __imm,
  2090. (__v8di)
  2091. _mm512_setzero_si512 (),
  2092. (__mmask8)
  2093. __U);
  2094. }
  2095. extern __inline __m512d
  2096. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2097. _mm512_insertf64x2 (__m512d __A, __m128d __B, const int __imm)
  2098. {
  2099. return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
  2100. (__v2df) __B,
  2101. __imm,
  2102. (__v8df)
  2103. _mm512_setzero_pd (),
  2104. (__mmask8) -1);
  2105. }
  2106. extern __inline __m512d
  2107. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2108. _mm512_mask_insertf64x2 (__m512d __W, __mmask8 __U, __m512d __A,
  2109. __m128d __B, const int __imm)
  2110. {
  2111. return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
  2112. (__v2df) __B,
  2113. __imm,
  2114. (__v8df) __W,
  2115. (__mmask8)
  2116. __U);
  2117. }
  2118. extern __inline __m512d
  2119. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2120. _mm512_maskz_insertf64x2 (__mmask8 __U, __m512d __A, __m128d __B,
  2121. const int __imm)
  2122. {
  2123. return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
  2124. (__v2df) __B,
  2125. __imm,
  2126. (__v8df)
  2127. _mm512_setzero_pd (),
  2128. (__mmask8)
  2129. __U);
  2130. }
  2131. extern __inline __mmask8
  2132. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2133. _mm512_mask_fpclass_pd_mask (__mmask8 __U, __m512d __A,
  2134. const int __imm)
  2135. {
  2136. return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
  2137. __imm, __U);
  2138. }
  2139. extern __inline __mmask8
  2140. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2141. _mm512_fpclass_pd_mask (__m512d __A, const int __imm)
  2142. {
  2143. return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
  2144. __imm,
  2145. (__mmask8) -1);
  2146. }
  2147. extern __inline __mmask16
  2148. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2149. _mm512_mask_fpclass_ps_mask (__mmask16 __U, __m512 __A,
  2150. const int __imm)
  2151. {
  2152. return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
  2153. __imm, __U);
  2154. }
  2155. extern __inline __mmask16
  2156. __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  2157. _mm512_fpclass_ps_mask (__m512 __A, const int __imm)
  2158. {
  2159. return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
  2160. __imm,
  2161. (__mmask16) -1);
  2162. }
  2163. #else
  2164. #define _kshiftli_mask8(X, Y) \
  2165. ((__mmask8) __builtin_ia32_kshiftliqi ((__mmask8)(X), (__mmask8)(Y)))
  2166. #define _kshiftri_mask8(X, Y) \
  2167. ((__mmask8) __builtin_ia32_kshiftriqi ((__mmask8)(X), (__mmask8)(Y)))
  2168. #define _mm_range_sd(A, B, C) \
  2169. ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
  2170. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2171. (__mmask8) -1, _MM_FROUND_CUR_DIRECTION))
  2172. #define _mm_mask_range_sd(W, U, A, B, C) \
  2173. ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
  2174. (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \
  2175. (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
  2176. #define _mm_maskz_range_sd(U, A, B, C) \
  2177. ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
  2178. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2179. (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
  2180. #define _mm_range_ss(A, B, C) \
  2181. ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
  2182. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2183. (__mmask8) -1, _MM_FROUND_CUR_DIRECTION))
  2184. #define _mm_mask_range_ss(W, U, A, B, C) \
  2185. ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
  2186. (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \
  2187. (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
  2188. #define _mm_maskz_range_ss(U, A, B, C) \
  2189. ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
  2190. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2191. (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
  2192. #define _mm_range_round_sd(A, B, C, R) \
  2193. ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
  2194. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2195. (__mmask8) -1, (R)))
  2196. #define _mm_mask_range_round_sd(W, U, A, B, C, R) \
  2197. ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
  2198. (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \
  2199. (__mmask8)(U), (R)))
  2200. #define _mm_maskz_range_round_sd(U, A, B, C, R) \
  2201. ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
  2202. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2203. (__mmask8)(U), (R)))
  2204. #define _mm_range_round_ss(A, B, C, R) \
  2205. ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
  2206. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2207. (__mmask8) -1, (R)))
  2208. #define _mm_mask_range_round_ss(W, U, A, B, C, R) \
  2209. ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
  2210. (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \
  2211. (__mmask8)(U), (R)))
  2212. #define _mm_maskz_range_round_ss(U, A, B, C, R) \
  2213. ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
  2214. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2215. (__mmask8)(U), (R)))
  2216. #define _mm512_cvtt_roundpd_epi64(A, B) \
  2217. ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di) \
  2218. _mm512_setzero_si512 (), \
  2219. -1, (B)))
  2220. #define _mm512_mask_cvtt_roundpd_epi64(W, U, A, B) \
  2221. ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di)(W), (U), (B)))
  2222. #define _mm512_maskz_cvtt_roundpd_epi64(U, A, B) \
  2223. ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2224. #define _mm512_cvtt_roundpd_epu64(A, B) \
  2225. ((__m512i)__builtin_ia32_cvttpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2226. #define _mm512_mask_cvtt_roundpd_epu64(W, U, A, B) \
  2227. ((__m512i)__builtin_ia32_cvttpd2uqq512_mask ((A), (__v8di)(W), (U), (B)))
  2228. #define _mm512_maskz_cvtt_roundpd_epu64(U, A, B) \
  2229. ((__m512i)__builtin_ia32_cvttpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2230. #define _mm512_cvtt_roundps_epi64(A, B) \
  2231. ((__m512i)__builtin_ia32_cvttps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2232. #define _mm512_mask_cvtt_roundps_epi64(W, U, A, B) \
  2233. ((__m512i)__builtin_ia32_cvttps2qq512_mask ((A), (__v8di)(W), (U), (B)))
  2234. #define _mm512_maskz_cvtt_roundps_epi64(U, A, B) \
  2235. ((__m512i)__builtin_ia32_cvttps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2236. #define _mm512_cvtt_roundps_epu64(A, B) \
  2237. ((__m512i)__builtin_ia32_cvttps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2238. #define _mm512_mask_cvtt_roundps_epu64(W, U, A, B) \
  2239. ((__m512i)__builtin_ia32_cvttps2uqq512_mask ((A), (__v8di)(W), (U), (B)))
  2240. #define _mm512_maskz_cvtt_roundps_epu64(U, A, B) \
  2241. ((__m512i)__builtin_ia32_cvttps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2242. #define _mm512_cvt_roundpd_epi64(A, B) \
  2243. ((__m512i)__builtin_ia32_cvtpd2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2244. #define _mm512_mask_cvt_roundpd_epi64(W, U, A, B) \
  2245. ((__m512i)__builtin_ia32_cvtpd2qq512_mask ((A), (__v8di)(W), (U), (B)))
  2246. #define _mm512_maskz_cvt_roundpd_epi64(U, A, B) \
  2247. ((__m512i)__builtin_ia32_cvtpd2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2248. #define _mm512_cvt_roundpd_epu64(A, B) \
  2249. ((__m512i)__builtin_ia32_cvtpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2250. #define _mm512_mask_cvt_roundpd_epu64(W, U, A, B) \
  2251. ((__m512i)__builtin_ia32_cvtpd2uqq512_mask ((A), (__v8di)(W), (U), (B)))
  2252. #define _mm512_maskz_cvt_roundpd_epu64(U, A, B) \
  2253. ((__m512i)__builtin_ia32_cvtpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2254. #define _mm512_cvt_roundps_epi64(A, B) \
  2255. ((__m512i)__builtin_ia32_cvtps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2256. #define _mm512_mask_cvt_roundps_epi64(W, U, A, B) \
  2257. ((__m512i)__builtin_ia32_cvtps2qq512_mask ((A), (__v8di)(W), (U), (B)))
  2258. #define _mm512_maskz_cvt_roundps_epi64(U, A, B) \
  2259. ((__m512i)__builtin_ia32_cvtps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2260. #define _mm512_cvt_roundps_epu64(A, B) \
  2261. ((__m512i)__builtin_ia32_cvtps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
  2262. #define _mm512_mask_cvt_roundps_epu64(W, U, A, B) \
  2263. ((__m512i)__builtin_ia32_cvtps2uqq512_mask ((A), (__v8di)(W), (U), (B)))
  2264. #define _mm512_maskz_cvt_roundps_epu64(U, A, B) \
  2265. ((__m512i)__builtin_ia32_cvtps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
  2266. #define _mm512_cvt_roundepi64_ps(A, B) \
  2267. ((__m256)__builtin_ia32_cvtqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), -1, (B)))
  2268. #define _mm512_mask_cvt_roundepi64_ps(W, U, A, B) \
  2269. ((__m256)__builtin_ia32_cvtqq2ps512_mask ((__v8di)(A), (W), (U), (B)))
  2270. #define _mm512_maskz_cvt_roundepi64_ps(U, A, B) \
  2271. ((__m256)__builtin_ia32_cvtqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), (U), (B)))
  2272. #define _mm512_cvt_roundepu64_ps(A, B) \
  2273. ((__m256)__builtin_ia32_cvtuqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), -1, (B)))
  2274. #define _mm512_mask_cvt_roundepu64_ps(W, U, A, B) \
  2275. ((__m256)__builtin_ia32_cvtuqq2ps512_mask ((__v8di)(A), (W), (U), (B)))
  2276. #define _mm512_maskz_cvt_roundepu64_ps(U, A, B) \
  2277. ((__m256)__builtin_ia32_cvtuqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), (U), (B)))
  2278. #define _mm512_cvt_roundepi64_pd(A, B) \
  2279. ((__m512d)__builtin_ia32_cvtqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), -1, (B)))
  2280. #define _mm512_mask_cvt_roundepi64_pd(W, U, A, B) \
  2281. ((__m512d)__builtin_ia32_cvtqq2pd512_mask ((__v8di)(A), (W), (U), (B)))
  2282. #define _mm512_maskz_cvt_roundepi64_pd(U, A, B) \
  2283. ((__m512d)__builtin_ia32_cvtqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), (U), (B)))
  2284. #define _mm512_cvt_roundepu64_pd(A, B) \
  2285. ((__m512d)__builtin_ia32_cvtuqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), -1, (B)))
  2286. #define _mm512_mask_cvt_roundepu64_pd(W, U, A, B) \
  2287. ((__m512d)__builtin_ia32_cvtuqq2pd512_mask ((__v8di)(A), (W), (U), (B)))
  2288. #define _mm512_maskz_cvt_roundepu64_pd(U, A, B) \
  2289. ((__m512d)__builtin_ia32_cvtuqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), (U), (B)))
  2290. #define _mm512_reduce_pd(A, B) \
  2291. ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A), \
  2292. (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)-1))
  2293. #define _mm512_reduce_round_pd(A, B, R) \
  2294. ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
  2295. (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)-1, (R)))
  2296. #define _mm512_mask_reduce_pd(W, U, A, B) \
  2297. ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A), \
  2298. (int)(B), (__v8df)(__m512d)(W), (__mmask8)(U)))
  2299. #define _mm512_mask_reduce_round_pd(W, U, A, B, R) \
  2300. ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
  2301. (int)(B), (__v8df)(__m512d)(W), (U), (R)))
  2302. #define _mm512_maskz_reduce_pd(U, A, B) \
  2303. ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A), \
  2304. (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)(U)))
  2305. #define _mm512_maskz_reduce_round_pd(U, A, B, R) \
  2306. ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
  2307. (int)(B), (__v8df)_mm512_setzero_pd (), (U), (R)))
  2308. #define _mm512_reduce_ps(A, B) \
  2309. ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A), \
  2310. (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)-1))
  2311. #define _mm512_reduce_round_ps(A, B, R) \
  2312. ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
  2313. (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, (R)))
  2314. #define _mm512_mask_reduce_ps(W, U, A, B) \
  2315. ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A), \
  2316. (int)(B), (__v16sf)(__m512)(W), (__mmask16)(U)))
  2317. #define _mm512_mask_reduce_round_ps(W, U, A, B, R) \
  2318. ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
  2319. (int)(B), (__v16sf)(__m512)(W), (U), (R)))
  2320. #define _mm512_maskz_reduce_ps(U, A, B) \
  2321. ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A), \
  2322. (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)(U)))
  2323. #define _mm512_maskz_reduce_round_ps(U, A, B, R) \
  2324. ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
  2325. (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), (R)))
  2326. #define _mm512_extractf32x8_ps(X, C) \
  2327. ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X), \
  2328. (int) (C), (__v8sf)(__m256) _mm256_setzero_ps (), (__mmask8)-1))
  2329. #define _mm512_mask_extractf32x8_ps(W, U, X, C) \
  2330. ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X), \
  2331. (int) (C), (__v8sf)(__m256) (W), (__mmask8) (U)))
  2332. #define _mm512_maskz_extractf32x8_ps(U, X, C) \
  2333. ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X), \
  2334. (int) (C), (__v8sf)(__m256) _mm256_setzero_ps (), (__mmask8) (U)))
  2335. #define _mm512_extractf64x2_pd(X, C) \
  2336. ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
  2337. (int) (C), (__v2df)(__m128d) _mm_setzero_pd (), (__mmask8)-1))
  2338. #define _mm512_mask_extractf64x2_pd(W, U, X, C) \
  2339. ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
  2340. (int) (C), (__v2df)(__m128d) (W), (__mmask8) (U)))
  2341. #define _mm512_maskz_extractf64x2_pd(U, X, C) \
  2342. ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
  2343. (int) (C), (__v2df)(__m128d) _mm_setzero_pd (), (__mmask8) (U)))
  2344. #define _mm512_extracti32x8_epi32(X, C) \
  2345. ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X), \
  2346. (int) (C), (__v8si)(__m256i) _mm256_setzero_si256 (), (__mmask8)-1))
  2347. #define _mm512_mask_extracti32x8_epi32(W, U, X, C) \
  2348. ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X), \
  2349. (int) (C), (__v8si)(__m256i) (W), (__mmask8) (U)))
  2350. #define _mm512_maskz_extracti32x8_epi32(U, X, C) \
  2351. ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X), \
  2352. (int) (C), (__v8si)(__m256i) _mm256_setzero_si256 (), (__mmask8) (U)))
  2353. #define _mm512_extracti64x2_epi64(X, C) \
  2354. ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
  2355. (int) (C), (__v2di)(__m128i) _mm_setzero_si128 (), (__mmask8)-1))
  2356. #define _mm512_mask_extracti64x2_epi64(W, U, X, C) \
  2357. ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
  2358. (int) (C), (__v2di)(__m128i) (W), (__mmask8) (U)))
  2359. #define _mm512_maskz_extracti64x2_epi64(U, X, C) \
  2360. ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
  2361. (int) (C), (__v2di)(__m128i) _mm_setzero_si128 (), (__mmask8) (U)))
  2362. #define _mm512_range_pd(A, B, C) \
  2363. ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
  2364. (__v8df)(__m512d)(B), (int)(C), \
  2365. (__v8df)_mm512_setzero_pd (), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
  2366. #define _mm512_mask_range_pd(W, U, A, B, C) \
  2367. ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
  2368. (__v8df)(__m512d)(B), (int)(C), \
  2369. (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
  2370. #define _mm512_maskz_range_pd(U, A, B, C) \
  2371. ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
  2372. (__v8df)(__m512d)(B), (int)(C), \
  2373. (__v8df)_mm512_setzero_pd (), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
  2374. #define _mm512_range_ps(A, B, C) \
  2375. ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
  2376. (__v16sf)(__m512)(B), (int)(C), \
  2377. (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
  2378. #define _mm512_mask_range_ps(W, U, A, B, C) \
  2379. ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
  2380. (__v16sf)(__m512)(B), (int)(C), \
  2381. (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
  2382. #define _mm512_maskz_range_ps(U, A, B, C) \
  2383. ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
  2384. (__v16sf)(__m512)(B), (int)(C), \
  2385. (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
  2386. #define _mm512_range_round_pd(A, B, C, R) \
  2387. ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
  2388. (__v8df)(__m512d)(B), (int)(C), \
  2389. (__v8df)_mm512_setzero_pd (), (__mmask8)-1, (R)))
  2390. #define _mm512_mask_range_round_pd(W, U, A, B, C, R) \
  2391. ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
  2392. (__v8df)(__m512d)(B), (int)(C), \
  2393. (__v8df)(__m512d)(W), (__mmask8)(U), (R)))
  2394. #define _mm512_maskz_range_round_pd(U, A, B, C, R) \
  2395. ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
  2396. (__v8df)(__m512d)(B), (int)(C), \
  2397. (__v8df)_mm512_setzero_pd (), (__mmask8)(U), (R)))
  2398. #define _mm512_range_round_ps(A, B, C, R) \
  2399. ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
  2400. (__v16sf)(__m512)(B), (int)(C), \
  2401. (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, (R)))
  2402. #define _mm512_mask_range_round_ps(W, U, A, B, C, R) \
  2403. ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
  2404. (__v16sf)(__m512)(B), (int)(C), \
  2405. (__v16sf)(__m512)(W), (__mmask16)(U), (R)))
  2406. #define _mm512_maskz_range_round_ps(U, A, B, C, R) \
  2407. ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
  2408. (__v16sf)(__m512)(B), (int)(C), \
  2409. (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), (R)))
  2410. #define _mm512_insertf64x2(X, Y, C) \
  2411. ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
  2412. (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (X), \
  2413. (__mmask8)-1))
  2414. #define _mm512_mask_insertf64x2(W, U, X, Y, C) \
  2415. ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
  2416. (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (W), \
  2417. (__mmask8) (U)))
  2418. #define _mm512_maskz_insertf64x2(U, X, Y, C) \
  2419. ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
  2420. (__v2df)(__m128d) (Y), (int) (C), \
  2421. (__v8df)(__m512d) _mm512_setzero_pd (), (__mmask8) (U)))
  2422. #define _mm512_inserti64x2(X, Y, C) \
  2423. ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
  2424. (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (X), (__mmask8)-1))
  2425. #define _mm512_mask_inserti64x2(W, U, X, Y, C) \
  2426. ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
  2427. (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (W), \
  2428. (__mmask8) (U)))
  2429. #define _mm512_maskz_inserti64x2(U, X, Y, C) \
  2430. ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
  2431. (__v2di)(__m128i) (Y), (int) (C), \
  2432. (__v8di)(__m512i) _mm512_setzero_si512 (), (__mmask8) (U)))
  2433. #define _mm512_insertf32x8(X, Y, C) \
  2434. ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X), \
  2435. (__v8sf)(__m256) (Y), (int) (C),\
  2436. (__v16sf)(__m512)_mm512_setzero_ps (),\
  2437. (__mmask16)-1))
  2438. #define _mm512_mask_insertf32x8(W, U, X, Y, C) \
  2439. ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X), \
  2440. (__v8sf)(__m256) (Y), (int) (C),\
  2441. (__v16sf)(__m512)(W),\
  2442. (__mmask16)(U)))
  2443. #define _mm512_maskz_insertf32x8(U, X, Y, C) \
  2444. ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X), \
  2445. (__v8sf)(__m256) (Y), (int) (C),\
  2446. (__v16sf)(__m512)_mm512_setzero_ps (),\
  2447. (__mmask16)(U)))
  2448. #define _mm512_inserti32x8(X, Y, C) \
  2449. ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X), \
  2450. (__v8si)(__m256i) (Y), (int) (C),\
  2451. (__v16si)(__m512i)_mm512_setzero_si512 (),\
  2452. (__mmask16)-1))
  2453. #define _mm512_mask_inserti32x8(W, U, X, Y, C) \
  2454. ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X), \
  2455. (__v8si)(__m256i) (Y), (int) (C),\
  2456. (__v16si)(__m512i)(W),\
  2457. (__mmask16)(U)))
  2458. #define _mm512_maskz_inserti32x8(U, X, Y, C) \
  2459. ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X), \
  2460. (__v8si)(__m256i) (Y), (int) (C),\
  2461. (__v16si)(__m512i)_mm512_setzero_si512 (),\
  2462. (__mmask16)(U)))
  2463. #define _mm_fpclass_ss_mask(X, C) \
  2464. ((__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) (__m128) (X), \
  2465. (int) (C), (__mmask8) (-1))) \
  2466. #define _mm_fpclass_sd_mask(X, C) \
  2467. ((__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) (__m128d) (X), \
  2468. (int) (C), (__mmask8) (-1))) \
  2469. #define _mm_mask_fpclass_ss_mask(X, C, U) \
  2470. ((__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) (__m128) (X), \
  2471. (int) (C), (__mmask8) (U)))
  2472. #define _mm_mask_fpclass_sd_mask(X, C, U) \
  2473. ((__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) (__m128d) (X), \
  2474. (int) (C), (__mmask8) (U)))
  2475. #define _mm512_mask_fpclass_pd_mask(u, X, C) \
  2476. ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
  2477. (int) (C), (__mmask8)(u)))
  2478. #define _mm512_mask_fpclass_ps_mask(u, x, c) \
  2479. ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
  2480. (int) (c),(__mmask16)(u)))
  2481. #define _mm512_fpclass_pd_mask(X, C) \
  2482. ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
  2483. (int) (C), (__mmask8)-1))
  2484. #define _mm512_fpclass_ps_mask(x, c) \
  2485. ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
  2486. (int) (c),(__mmask16)-1))
  2487. #define _mm_reduce_sd(A, B, C) \
  2488. ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A), \
  2489. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2490. (__mmask8)-1))
  2491. #define _mm_mask_reduce_sd(W, U, A, B, C) \
  2492. ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A), \
  2493. (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), (__mmask8)(U)))
  2494. #define _mm_maskz_reduce_sd(U, A, B, C) \
  2495. ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A), \
  2496. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2497. (__mmask8)(U)))
  2498. #define _mm_reduce_round_sd(A, B, C, R) \
  2499. ((__m128d) __builtin_ia32_reducesd_round ((__v2df)(__m128d)(A), \
  2500. (__v2df)(__m128d)(B), (int)(C), (__mmask8)(U), (int)(R)))
  2501. #define _mm_mask_reduce_round_sd(W, U, A, B, C, R) \
  2502. ((__m128d) __builtin_ia32_reducesd_mask_round ((__v2df)(__m128d)(A), \
  2503. (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \
  2504. (__mmask8)(U), (int)(R)))
  2505. #define _mm_maskz_reduce_round_sd(U, A, B, C, R) \
  2506. ((__m128d) __builtin_ia32_reducesd_mask_round ((__v2df)(__m128d)(A), \
  2507. (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_setzero_pd (), \
  2508. (__mmask8)(U), (int)(R)))
  2509. #define _mm_reduce_ss(A, B, C) \
  2510. ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A), \
  2511. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2512. (__mmask8)-1))
  2513. #define _mm_mask_reduce_ss(W, U, A, B, C) \
  2514. ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A), \
  2515. (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), (__mmask8)(U)))
  2516. #define _mm_maskz_reduce_ss(U, A, B, C) \
  2517. ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A), \
  2518. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2519. (__mmask8)(U)))
  2520. #define _mm_reduce_round_ss(A, B, C, R) \
  2521. ((__m128) __builtin_ia32_reducess_round ((__v4sf)(__m128)(A), \
  2522. (__v4sf)(__m128)(B), (int)(C), (__mmask8)(U), (int)(R)))
  2523. #define _mm_mask_reduce_round_ss(W, U, A, B, C, R) \
  2524. ((__m128) __builtin_ia32_reducess_mask_round ((__v4sf)(__m128)(A), \
  2525. (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \
  2526. (__mmask8)(U), (int)(R)))
  2527. #define _mm_maskz_reduce_round_ss(U, A, B, C, R) \
  2528. ((__m128) __builtin_ia32_reducesd_mask_round ((__v4sf)(__m128)(A), \
  2529. (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_setzero_ps (), \
  2530. (__mmask8)(U), (int)(R)))
  2531. #endif
  2532. #ifdef __DISABLE_AVX512DQ__
  2533. #undef __DISABLE_AVX512DQ__
  2534. #pragma GCC pop_options
  2535. #endif /* __DISABLE_AVX512DQ__ */
  2536. #endif /* _AVX512DQINTRIN_H_INCLUDED */