arm_fp16.h 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499
  1. /*===---- arm_fp16.h - ARM FP16 intrinsics ---------------------------------===
  2. *
  3. * Permission is hereby granted, free of charge, to any person obtaining a copy
  4. * of this software and associated documentation files (the "Software"), to deal
  5. * in the Software without restriction, including without limitation the rights
  6. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. * copies of the Software, and to permit persons to whom the Software is
  8. * furnished to do so, subject to the following conditions:
  9. *
  10. * The above copyright notice and this permission notice shall be included in
  11. * all copies or substantial portions of the Software.
  12. *
  13. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19. * THE SOFTWARE.
  20. *
  21. *===-----------------------------------------------------------------------===
  22. */
  23. #ifndef __ARM_FP16_H
  24. #define __ARM_FP16_H
  25. #include <stdint.h>
  26. typedef __fp16 float16_t;
  27. #define __ai static __inline__ __attribute__((__always_inline__, __nodebug__))
  28. #if defined(__ARM_FEATURE_FP16_SCALAR_ARITHMETIC) && defined(__aarch64__)
  29. #ifdef __LITTLE_ENDIAN__
  30. #define vabdh_f16(__p0, __p1) __extension__ ({ \
  31. float16_t __s0 = __p0; \
  32. float16_t __s1 = __p1; \
  33. float16_t __ret; \
  34. __ret = (float16_t) __builtin_neon_vabdh_f16(__s0, __s1); \
  35. __ret; \
  36. })
  37. #else
  38. #define vabdh_f16(__p0, __p1) __extension__ ({ \
  39. float16_t __s0 = __p0; \
  40. float16_t __s1 = __p1; \
  41. float16_t __ret; \
  42. __ret = (float16_t) __builtin_neon_vabdh_f16(__s0, __s1); \
  43. __ret; \
  44. })
  45. #endif
  46. #ifdef __LITTLE_ENDIAN__
  47. #define vabsh_f16(__p0) __extension__ ({ \
  48. float16_t __s0 = __p0; \
  49. float16_t __ret; \
  50. __ret = (float16_t) __builtin_neon_vabsh_f16(__s0); \
  51. __ret; \
  52. })
  53. #else
  54. #define vabsh_f16(__p0) __extension__ ({ \
  55. float16_t __s0 = __p0; \
  56. float16_t __ret; \
  57. __ret = (float16_t) __builtin_neon_vabsh_f16(__s0); \
  58. __ret; \
  59. })
  60. #endif
  61. #ifdef __LITTLE_ENDIAN__
  62. #define vaddh_f16(__p0, __p1) __extension__ ({ \
  63. float16_t __s0 = __p0; \
  64. float16_t __s1 = __p1; \
  65. float16_t __ret; \
  66. __ret = (float16_t) __builtin_neon_vaddh_f16(__s0, __s1); \
  67. __ret; \
  68. })
  69. #else
  70. #define vaddh_f16(__p0, __p1) __extension__ ({ \
  71. float16_t __s0 = __p0; \
  72. float16_t __s1 = __p1; \
  73. float16_t __ret; \
  74. __ret = (float16_t) __builtin_neon_vaddh_f16(__s0, __s1); \
  75. __ret; \
  76. })
  77. #endif
  78. #ifdef __LITTLE_ENDIAN__
  79. #define vcageh_f16(__p0, __p1) __extension__ ({ \
  80. float16_t __s0 = __p0; \
  81. float16_t __s1 = __p1; \
  82. uint16_t __ret; \
  83. __ret = (uint16_t) __builtin_neon_vcageh_f16(__s0, __s1); \
  84. __ret; \
  85. })
  86. #else
  87. #define vcageh_f16(__p0, __p1) __extension__ ({ \
  88. float16_t __s0 = __p0; \
  89. float16_t __s1 = __p1; \
  90. uint16_t __ret; \
  91. __ret = (uint16_t) __builtin_neon_vcageh_f16(__s0, __s1); \
  92. __ret; \
  93. })
  94. #endif
  95. #ifdef __LITTLE_ENDIAN__
  96. #define vcagth_f16(__p0, __p1) __extension__ ({ \
  97. float16_t __s0 = __p0; \
  98. float16_t __s1 = __p1; \
  99. uint16_t __ret; \
  100. __ret = (uint16_t) __builtin_neon_vcagth_f16(__s0, __s1); \
  101. __ret; \
  102. })
  103. #else
  104. #define vcagth_f16(__p0, __p1) __extension__ ({ \
  105. float16_t __s0 = __p0; \
  106. float16_t __s1 = __p1; \
  107. uint16_t __ret; \
  108. __ret = (uint16_t) __builtin_neon_vcagth_f16(__s0, __s1); \
  109. __ret; \
  110. })
  111. #endif
  112. #ifdef __LITTLE_ENDIAN__
  113. #define vcaleh_f16(__p0, __p1) __extension__ ({ \
  114. float16_t __s0 = __p0; \
  115. float16_t __s1 = __p1; \
  116. uint16_t __ret; \
  117. __ret = (uint16_t) __builtin_neon_vcaleh_f16(__s0, __s1); \
  118. __ret; \
  119. })
  120. #else
  121. #define vcaleh_f16(__p0, __p1) __extension__ ({ \
  122. float16_t __s0 = __p0; \
  123. float16_t __s1 = __p1; \
  124. uint16_t __ret; \
  125. __ret = (uint16_t) __builtin_neon_vcaleh_f16(__s0, __s1); \
  126. __ret; \
  127. })
  128. #endif
  129. #ifdef __LITTLE_ENDIAN__
  130. #define vcalth_f16(__p0, __p1) __extension__ ({ \
  131. float16_t __s0 = __p0; \
  132. float16_t __s1 = __p1; \
  133. uint16_t __ret; \
  134. __ret = (uint16_t) __builtin_neon_vcalth_f16(__s0, __s1); \
  135. __ret; \
  136. })
  137. #else
  138. #define vcalth_f16(__p0, __p1) __extension__ ({ \
  139. float16_t __s0 = __p0; \
  140. float16_t __s1 = __p1; \
  141. uint16_t __ret; \
  142. __ret = (uint16_t) __builtin_neon_vcalth_f16(__s0, __s1); \
  143. __ret; \
  144. })
  145. #endif
  146. #ifdef __LITTLE_ENDIAN__
  147. #define vceqh_f16(__p0, __p1) __extension__ ({ \
  148. float16_t __s0 = __p0; \
  149. float16_t __s1 = __p1; \
  150. uint16_t __ret; \
  151. __ret = (uint16_t) __builtin_neon_vceqh_f16(__s0, __s1); \
  152. __ret; \
  153. })
  154. #else
  155. #define vceqh_f16(__p0, __p1) __extension__ ({ \
  156. float16_t __s0 = __p0; \
  157. float16_t __s1 = __p1; \
  158. uint16_t __ret; \
  159. __ret = (uint16_t) __builtin_neon_vceqh_f16(__s0, __s1); \
  160. __ret; \
  161. })
  162. #endif
  163. #ifdef __LITTLE_ENDIAN__
  164. #define vceqzh_f16(__p0) __extension__ ({ \
  165. float16_t __s0 = __p0; \
  166. uint16_t __ret; \
  167. __ret = (uint16_t) __builtin_neon_vceqzh_f16(__s0); \
  168. __ret; \
  169. })
  170. #else
  171. #define vceqzh_f16(__p0) __extension__ ({ \
  172. float16_t __s0 = __p0; \
  173. uint16_t __ret; \
  174. __ret = (uint16_t) __builtin_neon_vceqzh_f16(__s0); \
  175. __ret; \
  176. })
  177. #endif
  178. #ifdef __LITTLE_ENDIAN__
  179. #define vcgeh_f16(__p0, __p1) __extension__ ({ \
  180. float16_t __s0 = __p0; \
  181. float16_t __s1 = __p1; \
  182. uint16_t __ret; \
  183. __ret = (uint16_t) __builtin_neon_vcgeh_f16(__s0, __s1); \
  184. __ret; \
  185. })
  186. #else
  187. #define vcgeh_f16(__p0, __p1) __extension__ ({ \
  188. float16_t __s0 = __p0; \
  189. float16_t __s1 = __p1; \
  190. uint16_t __ret; \
  191. __ret = (uint16_t) __builtin_neon_vcgeh_f16(__s0, __s1); \
  192. __ret; \
  193. })
  194. #endif
  195. #ifdef __LITTLE_ENDIAN__
  196. #define vcgezh_f16(__p0) __extension__ ({ \
  197. float16_t __s0 = __p0; \
  198. uint16_t __ret; \
  199. __ret = (uint16_t) __builtin_neon_vcgezh_f16(__s0); \
  200. __ret; \
  201. })
  202. #else
  203. #define vcgezh_f16(__p0) __extension__ ({ \
  204. float16_t __s0 = __p0; \
  205. uint16_t __ret; \
  206. __ret = (uint16_t) __builtin_neon_vcgezh_f16(__s0); \
  207. __ret; \
  208. })
  209. #endif
  210. #ifdef __LITTLE_ENDIAN__
  211. #define vcgth_f16(__p0, __p1) __extension__ ({ \
  212. float16_t __s0 = __p0; \
  213. float16_t __s1 = __p1; \
  214. uint16_t __ret; \
  215. __ret = (uint16_t) __builtin_neon_vcgth_f16(__s0, __s1); \
  216. __ret; \
  217. })
  218. #else
  219. #define vcgth_f16(__p0, __p1) __extension__ ({ \
  220. float16_t __s0 = __p0; \
  221. float16_t __s1 = __p1; \
  222. uint16_t __ret; \
  223. __ret = (uint16_t) __builtin_neon_vcgth_f16(__s0, __s1); \
  224. __ret; \
  225. })
  226. #endif
  227. #ifdef __LITTLE_ENDIAN__
  228. #define vcgtzh_f16(__p0) __extension__ ({ \
  229. float16_t __s0 = __p0; \
  230. uint16_t __ret; \
  231. __ret = (uint16_t) __builtin_neon_vcgtzh_f16(__s0); \
  232. __ret; \
  233. })
  234. #else
  235. #define vcgtzh_f16(__p0) __extension__ ({ \
  236. float16_t __s0 = __p0; \
  237. uint16_t __ret; \
  238. __ret = (uint16_t) __builtin_neon_vcgtzh_f16(__s0); \
  239. __ret; \
  240. })
  241. #endif
  242. #ifdef __LITTLE_ENDIAN__
  243. #define vcleh_f16(__p0, __p1) __extension__ ({ \
  244. float16_t __s0 = __p0; \
  245. float16_t __s1 = __p1; \
  246. uint16_t __ret; \
  247. __ret = (uint16_t) __builtin_neon_vcleh_f16(__s0, __s1); \
  248. __ret; \
  249. })
  250. #else
  251. #define vcleh_f16(__p0, __p1) __extension__ ({ \
  252. float16_t __s0 = __p0; \
  253. float16_t __s1 = __p1; \
  254. uint16_t __ret; \
  255. __ret = (uint16_t) __builtin_neon_vcleh_f16(__s0, __s1); \
  256. __ret; \
  257. })
  258. #endif
  259. #ifdef __LITTLE_ENDIAN__
  260. #define vclezh_f16(__p0) __extension__ ({ \
  261. float16_t __s0 = __p0; \
  262. uint16_t __ret; \
  263. __ret = (uint16_t) __builtin_neon_vclezh_f16(__s0); \
  264. __ret; \
  265. })
  266. #else
  267. #define vclezh_f16(__p0) __extension__ ({ \
  268. float16_t __s0 = __p0; \
  269. uint16_t __ret; \
  270. __ret = (uint16_t) __builtin_neon_vclezh_f16(__s0); \
  271. __ret; \
  272. })
  273. #endif
  274. #ifdef __LITTLE_ENDIAN__
  275. #define vclth_f16(__p0, __p1) __extension__ ({ \
  276. float16_t __s0 = __p0; \
  277. float16_t __s1 = __p1; \
  278. uint16_t __ret; \
  279. __ret = (uint16_t) __builtin_neon_vclth_f16(__s0, __s1); \
  280. __ret; \
  281. })
  282. #else
  283. #define vclth_f16(__p0, __p1) __extension__ ({ \
  284. float16_t __s0 = __p0; \
  285. float16_t __s1 = __p1; \
  286. uint16_t __ret; \
  287. __ret = (uint16_t) __builtin_neon_vclth_f16(__s0, __s1); \
  288. __ret; \
  289. })
  290. #endif
  291. #ifdef __LITTLE_ENDIAN__
  292. #define vcltzh_f16(__p0) __extension__ ({ \
  293. float16_t __s0 = __p0; \
  294. uint16_t __ret; \
  295. __ret = (uint16_t) __builtin_neon_vcltzh_f16(__s0); \
  296. __ret; \
  297. })
  298. #else
  299. #define vcltzh_f16(__p0) __extension__ ({ \
  300. float16_t __s0 = __p0; \
  301. uint16_t __ret; \
  302. __ret = (uint16_t) __builtin_neon_vcltzh_f16(__s0); \
  303. __ret; \
  304. })
  305. #endif
  306. #ifdef __LITTLE_ENDIAN__
  307. #define vcvth_n_s16_f16(__p0, __p1) __extension__ ({ \
  308. float16_t __s0 = __p0; \
  309. int16_t __ret; \
  310. __ret = (int16_t) __builtin_neon_vcvth_n_s16_f16(__s0, __p1); \
  311. __ret; \
  312. })
  313. #else
  314. #define vcvth_n_s16_f16(__p0, __p1) __extension__ ({ \
  315. float16_t __s0 = __p0; \
  316. int16_t __ret; \
  317. __ret = (int16_t) __builtin_neon_vcvth_n_s16_f16(__s0, __p1); \
  318. __ret; \
  319. })
  320. #endif
  321. #ifdef __LITTLE_ENDIAN__
  322. #define vcvth_n_s32_f16(__p0, __p1) __extension__ ({ \
  323. float16_t __s0 = __p0; \
  324. int32_t __ret; \
  325. __ret = (int32_t) __builtin_neon_vcvth_n_s32_f16(__s0, __p1); \
  326. __ret; \
  327. })
  328. #else
  329. #define vcvth_n_s32_f16(__p0, __p1) __extension__ ({ \
  330. float16_t __s0 = __p0; \
  331. int32_t __ret; \
  332. __ret = (int32_t) __builtin_neon_vcvth_n_s32_f16(__s0, __p1); \
  333. __ret; \
  334. })
  335. #endif
  336. #ifdef __LITTLE_ENDIAN__
  337. #define vcvth_n_s64_f16(__p0, __p1) __extension__ ({ \
  338. float16_t __s0 = __p0; \
  339. int64_t __ret; \
  340. __ret = (int64_t) __builtin_neon_vcvth_n_s64_f16(__s0, __p1); \
  341. __ret; \
  342. })
  343. #else
  344. #define vcvth_n_s64_f16(__p0, __p1) __extension__ ({ \
  345. float16_t __s0 = __p0; \
  346. int64_t __ret; \
  347. __ret = (int64_t) __builtin_neon_vcvth_n_s64_f16(__s0, __p1); \
  348. __ret; \
  349. })
  350. #endif
  351. #ifdef __LITTLE_ENDIAN__
  352. #define vcvth_n_u16_f16(__p0, __p1) __extension__ ({ \
  353. float16_t __s0 = __p0; \
  354. uint16_t __ret; \
  355. __ret = (uint16_t) __builtin_neon_vcvth_n_u16_f16(__s0, __p1); \
  356. __ret; \
  357. })
  358. #else
  359. #define vcvth_n_u16_f16(__p0, __p1) __extension__ ({ \
  360. float16_t __s0 = __p0; \
  361. uint16_t __ret; \
  362. __ret = (uint16_t) __builtin_neon_vcvth_n_u16_f16(__s0, __p1); \
  363. __ret; \
  364. })
  365. #endif
  366. #ifdef __LITTLE_ENDIAN__
  367. #define vcvth_n_u32_f16(__p0, __p1) __extension__ ({ \
  368. float16_t __s0 = __p0; \
  369. uint32_t __ret; \
  370. __ret = (uint32_t) __builtin_neon_vcvth_n_u32_f16(__s0, __p1); \
  371. __ret; \
  372. })
  373. #else
  374. #define vcvth_n_u32_f16(__p0, __p1) __extension__ ({ \
  375. float16_t __s0 = __p0; \
  376. uint32_t __ret; \
  377. __ret = (uint32_t) __builtin_neon_vcvth_n_u32_f16(__s0, __p1); \
  378. __ret; \
  379. })
  380. #endif
  381. #ifdef __LITTLE_ENDIAN__
  382. #define vcvth_n_u64_f16(__p0, __p1) __extension__ ({ \
  383. float16_t __s0 = __p0; \
  384. uint64_t __ret; \
  385. __ret = (uint64_t) __builtin_neon_vcvth_n_u64_f16(__s0, __p1); \
  386. __ret; \
  387. })
  388. #else
  389. #define vcvth_n_u64_f16(__p0, __p1) __extension__ ({ \
  390. float16_t __s0 = __p0; \
  391. uint64_t __ret; \
  392. __ret = (uint64_t) __builtin_neon_vcvth_n_u64_f16(__s0, __p1); \
  393. __ret; \
  394. })
  395. #endif
  396. #ifdef __LITTLE_ENDIAN__
  397. #define vcvth_s16_f16(__p0) __extension__ ({ \
  398. float16_t __s0 = __p0; \
  399. int16_t __ret; \
  400. __ret = (int16_t) __builtin_neon_vcvth_s16_f16(__s0); \
  401. __ret; \
  402. })
  403. #else
  404. #define vcvth_s16_f16(__p0) __extension__ ({ \
  405. float16_t __s0 = __p0; \
  406. int16_t __ret; \
  407. __ret = (int16_t) __builtin_neon_vcvth_s16_f16(__s0); \
  408. __ret; \
  409. })
  410. #endif
  411. #ifdef __LITTLE_ENDIAN__
  412. #define vcvth_s32_f16(__p0) __extension__ ({ \
  413. float16_t __s0 = __p0; \
  414. int32_t __ret; \
  415. __ret = (int32_t) __builtin_neon_vcvth_s32_f16(__s0); \
  416. __ret; \
  417. })
  418. #else
  419. #define vcvth_s32_f16(__p0) __extension__ ({ \
  420. float16_t __s0 = __p0; \
  421. int32_t __ret; \
  422. __ret = (int32_t) __builtin_neon_vcvth_s32_f16(__s0); \
  423. __ret; \
  424. })
  425. #endif
  426. #ifdef __LITTLE_ENDIAN__
  427. #define vcvth_s64_f16(__p0) __extension__ ({ \
  428. float16_t __s0 = __p0; \
  429. int64_t __ret; \
  430. __ret = (int64_t) __builtin_neon_vcvth_s64_f16(__s0); \
  431. __ret; \
  432. })
  433. #else
  434. #define vcvth_s64_f16(__p0) __extension__ ({ \
  435. float16_t __s0 = __p0; \
  436. int64_t __ret; \
  437. __ret = (int64_t) __builtin_neon_vcvth_s64_f16(__s0); \
  438. __ret; \
  439. })
  440. #endif
  441. #ifdef __LITTLE_ENDIAN__
  442. #define vcvth_u16_f16(__p0) __extension__ ({ \
  443. float16_t __s0 = __p0; \
  444. uint16_t __ret; \
  445. __ret = (uint16_t) __builtin_neon_vcvth_u16_f16(__s0); \
  446. __ret; \
  447. })
  448. #else
  449. #define vcvth_u16_f16(__p0) __extension__ ({ \
  450. float16_t __s0 = __p0; \
  451. uint16_t __ret; \
  452. __ret = (uint16_t) __builtin_neon_vcvth_u16_f16(__s0); \
  453. __ret; \
  454. })
  455. #endif
  456. #ifdef __LITTLE_ENDIAN__
  457. #define vcvth_u32_f16(__p0) __extension__ ({ \
  458. float16_t __s0 = __p0; \
  459. uint32_t __ret; \
  460. __ret = (uint32_t) __builtin_neon_vcvth_u32_f16(__s0); \
  461. __ret; \
  462. })
  463. #else
  464. #define vcvth_u32_f16(__p0) __extension__ ({ \
  465. float16_t __s0 = __p0; \
  466. uint32_t __ret; \
  467. __ret = (uint32_t) __builtin_neon_vcvth_u32_f16(__s0); \
  468. __ret; \
  469. })
  470. #endif
  471. #ifdef __LITTLE_ENDIAN__
  472. #define vcvth_u64_f16(__p0) __extension__ ({ \
  473. float16_t __s0 = __p0; \
  474. uint64_t __ret; \
  475. __ret = (uint64_t) __builtin_neon_vcvth_u64_f16(__s0); \
  476. __ret; \
  477. })
  478. #else
  479. #define vcvth_u64_f16(__p0) __extension__ ({ \
  480. float16_t __s0 = __p0; \
  481. uint64_t __ret; \
  482. __ret = (uint64_t) __builtin_neon_vcvth_u64_f16(__s0); \
  483. __ret; \
  484. })
  485. #endif
  486. #ifdef __LITTLE_ENDIAN__
  487. #define vcvtah_s16_f16(__p0) __extension__ ({ \
  488. float16_t __s0 = __p0; \
  489. int16_t __ret; \
  490. __ret = (int16_t) __builtin_neon_vcvtah_s16_f16(__s0); \
  491. __ret; \
  492. })
  493. #else
  494. #define vcvtah_s16_f16(__p0) __extension__ ({ \
  495. float16_t __s0 = __p0; \
  496. int16_t __ret; \
  497. __ret = (int16_t) __builtin_neon_vcvtah_s16_f16(__s0); \
  498. __ret; \
  499. })
  500. #endif
  501. #ifdef __LITTLE_ENDIAN__
  502. #define vcvtah_s32_f16(__p0) __extension__ ({ \
  503. float16_t __s0 = __p0; \
  504. int32_t __ret; \
  505. __ret = (int32_t) __builtin_neon_vcvtah_s32_f16(__s0); \
  506. __ret; \
  507. })
  508. #else
  509. #define vcvtah_s32_f16(__p0) __extension__ ({ \
  510. float16_t __s0 = __p0; \
  511. int32_t __ret; \
  512. __ret = (int32_t) __builtin_neon_vcvtah_s32_f16(__s0); \
  513. __ret; \
  514. })
  515. #endif
  516. #ifdef __LITTLE_ENDIAN__
  517. #define vcvtah_s64_f16(__p0) __extension__ ({ \
  518. float16_t __s0 = __p0; \
  519. int64_t __ret; \
  520. __ret = (int64_t) __builtin_neon_vcvtah_s64_f16(__s0); \
  521. __ret; \
  522. })
  523. #else
  524. #define vcvtah_s64_f16(__p0) __extension__ ({ \
  525. float16_t __s0 = __p0; \
  526. int64_t __ret; \
  527. __ret = (int64_t) __builtin_neon_vcvtah_s64_f16(__s0); \
  528. __ret; \
  529. })
  530. #endif
  531. #ifdef __LITTLE_ENDIAN__
  532. #define vcvtah_u16_f16(__p0) __extension__ ({ \
  533. float16_t __s0 = __p0; \
  534. uint16_t __ret; \
  535. __ret = (uint16_t) __builtin_neon_vcvtah_u16_f16(__s0); \
  536. __ret; \
  537. })
  538. #else
  539. #define vcvtah_u16_f16(__p0) __extension__ ({ \
  540. float16_t __s0 = __p0; \
  541. uint16_t __ret; \
  542. __ret = (uint16_t) __builtin_neon_vcvtah_u16_f16(__s0); \
  543. __ret; \
  544. })
  545. #endif
  546. #ifdef __LITTLE_ENDIAN__
  547. #define vcvtah_u32_f16(__p0) __extension__ ({ \
  548. float16_t __s0 = __p0; \
  549. uint32_t __ret; \
  550. __ret = (uint32_t) __builtin_neon_vcvtah_u32_f16(__s0); \
  551. __ret; \
  552. })
  553. #else
  554. #define vcvtah_u32_f16(__p0) __extension__ ({ \
  555. float16_t __s0 = __p0; \
  556. uint32_t __ret; \
  557. __ret = (uint32_t) __builtin_neon_vcvtah_u32_f16(__s0); \
  558. __ret; \
  559. })
  560. #endif
  561. #ifdef __LITTLE_ENDIAN__
  562. #define vcvtah_u64_f16(__p0) __extension__ ({ \
  563. float16_t __s0 = __p0; \
  564. uint64_t __ret; \
  565. __ret = (uint64_t) __builtin_neon_vcvtah_u64_f16(__s0); \
  566. __ret; \
  567. })
  568. #else
  569. #define vcvtah_u64_f16(__p0) __extension__ ({ \
  570. float16_t __s0 = __p0; \
  571. uint64_t __ret; \
  572. __ret = (uint64_t) __builtin_neon_vcvtah_u64_f16(__s0); \
  573. __ret; \
  574. })
  575. #endif
  576. #ifdef __LITTLE_ENDIAN__
  577. __ai float16_t vcvth_f16_u32(uint32_t __p0) {
  578. float16_t __ret;
  579. __ret = (float16_t) __builtin_neon_vcvth_f16_u32(__p0);
  580. return __ret;
  581. }
  582. #else
  583. __ai float16_t vcvth_f16_u32(uint32_t __p0) {
  584. float16_t __ret;
  585. __ret = (float16_t) __builtin_neon_vcvth_f16_u32(__p0);
  586. return __ret;
  587. }
  588. #endif
  589. #ifdef __LITTLE_ENDIAN__
  590. __ai float16_t vcvth_f16_u64(uint64_t __p0) {
  591. float16_t __ret;
  592. __ret = (float16_t) __builtin_neon_vcvth_f16_u64(__p0);
  593. return __ret;
  594. }
  595. #else
  596. __ai float16_t vcvth_f16_u64(uint64_t __p0) {
  597. float16_t __ret;
  598. __ret = (float16_t) __builtin_neon_vcvth_f16_u64(__p0);
  599. return __ret;
  600. }
  601. #endif
  602. #ifdef __LITTLE_ENDIAN__
  603. __ai float16_t vcvth_f16_u16(uint16_t __p0) {
  604. float16_t __ret;
  605. __ret = (float16_t) __builtin_neon_vcvth_f16_u16(__p0);
  606. return __ret;
  607. }
  608. #else
  609. __ai float16_t vcvth_f16_u16(uint16_t __p0) {
  610. float16_t __ret;
  611. __ret = (float16_t) __builtin_neon_vcvth_f16_u16(__p0);
  612. return __ret;
  613. }
  614. #endif
  615. #ifdef __LITTLE_ENDIAN__
  616. __ai float16_t vcvth_f16_s32(int32_t __p0) {
  617. float16_t __ret;
  618. __ret = (float16_t) __builtin_neon_vcvth_f16_s32(__p0);
  619. return __ret;
  620. }
  621. #else
  622. __ai float16_t vcvth_f16_s32(int32_t __p0) {
  623. float16_t __ret;
  624. __ret = (float16_t) __builtin_neon_vcvth_f16_s32(__p0);
  625. return __ret;
  626. }
  627. #endif
  628. #ifdef __LITTLE_ENDIAN__
  629. __ai float16_t vcvth_f16_s64(int64_t __p0) {
  630. float16_t __ret;
  631. __ret = (float16_t) __builtin_neon_vcvth_f16_s64(__p0);
  632. return __ret;
  633. }
  634. #else
  635. __ai float16_t vcvth_f16_s64(int64_t __p0) {
  636. float16_t __ret;
  637. __ret = (float16_t) __builtin_neon_vcvth_f16_s64(__p0);
  638. return __ret;
  639. }
  640. #endif
  641. #ifdef __LITTLE_ENDIAN__
  642. __ai float16_t vcvth_f16_s16(int16_t __p0) {
  643. float16_t __ret;
  644. __ret = (float16_t) __builtin_neon_vcvth_f16_s16(__p0);
  645. return __ret;
  646. }
  647. #else
  648. __ai float16_t vcvth_f16_s16(int16_t __p0) {
  649. float16_t __ret;
  650. __ret = (float16_t) __builtin_neon_vcvth_f16_s16(__p0);
  651. return __ret;
  652. }
  653. #endif
  654. #ifdef __LITTLE_ENDIAN__
  655. #define vcvth_n_f16_u32(__p0, __p1) __extension__ ({ \
  656. uint32_t __s0 = __p0; \
  657. float16_t __ret; \
  658. __ret = (float16_t) __builtin_neon_vcvth_n_f16_u32(__s0, __p1); \
  659. __ret; \
  660. })
  661. #else
  662. #define vcvth_n_f16_u32(__p0, __p1) __extension__ ({ \
  663. uint32_t __s0 = __p0; \
  664. float16_t __ret; \
  665. __ret = (float16_t) __builtin_neon_vcvth_n_f16_u32(__s0, __p1); \
  666. __ret; \
  667. })
  668. #endif
  669. #ifdef __LITTLE_ENDIAN__
  670. #define vcvth_n_f16_u64(__p0, __p1) __extension__ ({ \
  671. uint64_t __s0 = __p0; \
  672. float16_t __ret; \
  673. __ret = (float16_t) __builtin_neon_vcvth_n_f16_u64(__s0, __p1); \
  674. __ret; \
  675. })
  676. #else
  677. #define vcvth_n_f16_u64(__p0, __p1) __extension__ ({ \
  678. uint64_t __s0 = __p0; \
  679. float16_t __ret; \
  680. __ret = (float16_t) __builtin_neon_vcvth_n_f16_u64(__s0, __p1); \
  681. __ret; \
  682. })
  683. #endif
  684. #ifdef __LITTLE_ENDIAN__
  685. #define vcvth_n_f16_u16(__p0, __p1) __extension__ ({ \
  686. uint16_t __s0 = __p0; \
  687. float16_t __ret; \
  688. __ret = (float16_t) __builtin_neon_vcvth_n_f16_u16(__s0, __p1); \
  689. __ret; \
  690. })
  691. #else
  692. #define vcvth_n_f16_u16(__p0, __p1) __extension__ ({ \
  693. uint16_t __s0 = __p0; \
  694. float16_t __ret; \
  695. __ret = (float16_t) __builtin_neon_vcvth_n_f16_u16(__s0, __p1); \
  696. __ret; \
  697. })
  698. #endif
  699. #ifdef __LITTLE_ENDIAN__
  700. #define vcvth_n_f16_s32(__p0, __p1) __extension__ ({ \
  701. int32_t __s0 = __p0; \
  702. float16_t __ret; \
  703. __ret = (float16_t) __builtin_neon_vcvth_n_f16_s32(__s0, __p1); \
  704. __ret; \
  705. })
  706. #else
  707. #define vcvth_n_f16_s32(__p0, __p1) __extension__ ({ \
  708. int32_t __s0 = __p0; \
  709. float16_t __ret; \
  710. __ret = (float16_t) __builtin_neon_vcvth_n_f16_s32(__s0, __p1); \
  711. __ret; \
  712. })
  713. #endif
  714. #ifdef __LITTLE_ENDIAN__
  715. #define vcvth_n_f16_s64(__p0, __p1) __extension__ ({ \
  716. int64_t __s0 = __p0; \
  717. float16_t __ret; \
  718. __ret = (float16_t) __builtin_neon_vcvth_n_f16_s64(__s0, __p1); \
  719. __ret; \
  720. })
  721. #else
  722. #define vcvth_n_f16_s64(__p0, __p1) __extension__ ({ \
  723. int64_t __s0 = __p0; \
  724. float16_t __ret; \
  725. __ret = (float16_t) __builtin_neon_vcvth_n_f16_s64(__s0, __p1); \
  726. __ret; \
  727. })
  728. #endif
  729. #ifdef __LITTLE_ENDIAN__
  730. #define vcvth_n_f16_s16(__p0, __p1) __extension__ ({ \
  731. int16_t __s0 = __p0; \
  732. float16_t __ret; \
  733. __ret = (float16_t) __builtin_neon_vcvth_n_f16_s16(__s0, __p1); \
  734. __ret; \
  735. })
  736. #else
  737. #define vcvth_n_f16_s16(__p0, __p1) __extension__ ({ \
  738. int16_t __s0 = __p0; \
  739. float16_t __ret; \
  740. __ret = (float16_t) __builtin_neon_vcvth_n_f16_s16(__s0, __p1); \
  741. __ret; \
  742. })
  743. #endif
  744. #ifdef __LITTLE_ENDIAN__
  745. #define vcvtmh_s16_f16(__p0) __extension__ ({ \
  746. float16_t __s0 = __p0; \
  747. int16_t __ret; \
  748. __ret = (int16_t) __builtin_neon_vcvtmh_s16_f16(__s0); \
  749. __ret; \
  750. })
  751. #else
  752. #define vcvtmh_s16_f16(__p0) __extension__ ({ \
  753. float16_t __s0 = __p0; \
  754. int16_t __ret; \
  755. __ret = (int16_t) __builtin_neon_vcvtmh_s16_f16(__s0); \
  756. __ret; \
  757. })
  758. #endif
  759. #ifdef __LITTLE_ENDIAN__
  760. #define vcvtmh_s32_f16(__p0) __extension__ ({ \
  761. float16_t __s0 = __p0; \
  762. int32_t __ret; \
  763. __ret = (int32_t) __builtin_neon_vcvtmh_s32_f16(__s0); \
  764. __ret; \
  765. })
  766. #else
  767. #define vcvtmh_s32_f16(__p0) __extension__ ({ \
  768. float16_t __s0 = __p0; \
  769. int32_t __ret; \
  770. __ret = (int32_t) __builtin_neon_vcvtmh_s32_f16(__s0); \
  771. __ret; \
  772. })
  773. #endif
  774. #ifdef __LITTLE_ENDIAN__
  775. #define vcvtmh_s64_f16(__p0) __extension__ ({ \
  776. float16_t __s0 = __p0; \
  777. int64_t __ret; \
  778. __ret = (int64_t) __builtin_neon_vcvtmh_s64_f16(__s0); \
  779. __ret; \
  780. })
  781. #else
  782. #define vcvtmh_s64_f16(__p0) __extension__ ({ \
  783. float16_t __s0 = __p0; \
  784. int64_t __ret; \
  785. __ret = (int64_t) __builtin_neon_vcvtmh_s64_f16(__s0); \
  786. __ret; \
  787. })
  788. #endif
  789. #ifdef __LITTLE_ENDIAN__
  790. #define vcvtmh_u16_f16(__p0) __extension__ ({ \
  791. float16_t __s0 = __p0; \
  792. uint16_t __ret; \
  793. __ret = (uint16_t) __builtin_neon_vcvtmh_u16_f16(__s0); \
  794. __ret; \
  795. })
  796. #else
  797. #define vcvtmh_u16_f16(__p0) __extension__ ({ \
  798. float16_t __s0 = __p0; \
  799. uint16_t __ret; \
  800. __ret = (uint16_t) __builtin_neon_vcvtmh_u16_f16(__s0); \
  801. __ret; \
  802. })
  803. #endif
  804. #ifdef __LITTLE_ENDIAN__
  805. #define vcvtmh_u32_f16(__p0) __extension__ ({ \
  806. float16_t __s0 = __p0; \
  807. uint32_t __ret; \
  808. __ret = (uint32_t) __builtin_neon_vcvtmh_u32_f16(__s0); \
  809. __ret; \
  810. })
  811. #else
  812. #define vcvtmh_u32_f16(__p0) __extension__ ({ \
  813. float16_t __s0 = __p0; \
  814. uint32_t __ret; \
  815. __ret = (uint32_t) __builtin_neon_vcvtmh_u32_f16(__s0); \
  816. __ret; \
  817. })
  818. #endif
  819. #ifdef __LITTLE_ENDIAN__
  820. #define vcvtmh_u64_f16(__p0) __extension__ ({ \
  821. float16_t __s0 = __p0; \
  822. uint64_t __ret; \
  823. __ret = (uint64_t) __builtin_neon_vcvtmh_u64_f16(__s0); \
  824. __ret; \
  825. })
  826. #else
  827. #define vcvtmh_u64_f16(__p0) __extension__ ({ \
  828. float16_t __s0 = __p0; \
  829. uint64_t __ret; \
  830. __ret = (uint64_t) __builtin_neon_vcvtmh_u64_f16(__s0); \
  831. __ret; \
  832. })
  833. #endif
  834. #ifdef __LITTLE_ENDIAN__
  835. #define vcvtnh_s16_f16(__p0) __extension__ ({ \
  836. float16_t __s0 = __p0; \
  837. int16_t __ret; \
  838. __ret = (int16_t) __builtin_neon_vcvtnh_s16_f16(__s0); \
  839. __ret; \
  840. })
  841. #else
  842. #define vcvtnh_s16_f16(__p0) __extension__ ({ \
  843. float16_t __s0 = __p0; \
  844. int16_t __ret; \
  845. __ret = (int16_t) __builtin_neon_vcvtnh_s16_f16(__s0); \
  846. __ret; \
  847. })
  848. #endif
  849. #ifdef __LITTLE_ENDIAN__
  850. #define vcvtnh_s32_f16(__p0) __extension__ ({ \
  851. float16_t __s0 = __p0; \
  852. int32_t __ret; \
  853. __ret = (int32_t) __builtin_neon_vcvtnh_s32_f16(__s0); \
  854. __ret; \
  855. })
  856. #else
  857. #define vcvtnh_s32_f16(__p0) __extension__ ({ \
  858. float16_t __s0 = __p0; \
  859. int32_t __ret; \
  860. __ret = (int32_t) __builtin_neon_vcvtnh_s32_f16(__s0); \
  861. __ret; \
  862. })
  863. #endif
  864. #ifdef __LITTLE_ENDIAN__
  865. #define vcvtnh_s64_f16(__p0) __extension__ ({ \
  866. float16_t __s0 = __p0; \
  867. int64_t __ret; \
  868. __ret = (int64_t) __builtin_neon_vcvtnh_s64_f16(__s0); \
  869. __ret; \
  870. })
  871. #else
  872. #define vcvtnh_s64_f16(__p0) __extension__ ({ \
  873. float16_t __s0 = __p0; \
  874. int64_t __ret; \
  875. __ret = (int64_t) __builtin_neon_vcvtnh_s64_f16(__s0); \
  876. __ret; \
  877. })
  878. #endif
  879. #ifdef __LITTLE_ENDIAN__
  880. #define vcvtnh_u16_f16(__p0) __extension__ ({ \
  881. float16_t __s0 = __p0; \
  882. uint16_t __ret; \
  883. __ret = (uint16_t) __builtin_neon_vcvtnh_u16_f16(__s0); \
  884. __ret; \
  885. })
  886. #else
  887. #define vcvtnh_u16_f16(__p0) __extension__ ({ \
  888. float16_t __s0 = __p0; \
  889. uint16_t __ret; \
  890. __ret = (uint16_t) __builtin_neon_vcvtnh_u16_f16(__s0); \
  891. __ret; \
  892. })
  893. #endif
  894. #ifdef __LITTLE_ENDIAN__
  895. #define vcvtnh_u32_f16(__p0) __extension__ ({ \
  896. float16_t __s0 = __p0; \
  897. uint32_t __ret; \
  898. __ret = (uint32_t) __builtin_neon_vcvtnh_u32_f16(__s0); \
  899. __ret; \
  900. })
  901. #else
  902. #define vcvtnh_u32_f16(__p0) __extension__ ({ \
  903. float16_t __s0 = __p0; \
  904. uint32_t __ret; \
  905. __ret = (uint32_t) __builtin_neon_vcvtnh_u32_f16(__s0); \
  906. __ret; \
  907. })
  908. #endif
  909. #ifdef __LITTLE_ENDIAN__
  910. #define vcvtnh_u64_f16(__p0) __extension__ ({ \
  911. float16_t __s0 = __p0; \
  912. uint64_t __ret; \
  913. __ret = (uint64_t) __builtin_neon_vcvtnh_u64_f16(__s0); \
  914. __ret; \
  915. })
  916. #else
  917. #define vcvtnh_u64_f16(__p0) __extension__ ({ \
  918. float16_t __s0 = __p0; \
  919. uint64_t __ret; \
  920. __ret = (uint64_t) __builtin_neon_vcvtnh_u64_f16(__s0); \
  921. __ret; \
  922. })
  923. #endif
  924. #ifdef __LITTLE_ENDIAN__
  925. #define vcvtph_s16_f16(__p0) __extension__ ({ \
  926. float16_t __s0 = __p0; \
  927. int16_t __ret; \
  928. __ret = (int16_t) __builtin_neon_vcvtph_s16_f16(__s0); \
  929. __ret; \
  930. })
  931. #else
  932. #define vcvtph_s16_f16(__p0) __extension__ ({ \
  933. float16_t __s0 = __p0; \
  934. int16_t __ret; \
  935. __ret = (int16_t) __builtin_neon_vcvtph_s16_f16(__s0); \
  936. __ret; \
  937. })
  938. #endif
  939. #ifdef __LITTLE_ENDIAN__
  940. #define vcvtph_s32_f16(__p0) __extension__ ({ \
  941. float16_t __s0 = __p0; \
  942. int32_t __ret; \
  943. __ret = (int32_t) __builtin_neon_vcvtph_s32_f16(__s0); \
  944. __ret; \
  945. })
  946. #else
  947. #define vcvtph_s32_f16(__p0) __extension__ ({ \
  948. float16_t __s0 = __p0; \
  949. int32_t __ret; \
  950. __ret = (int32_t) __builtin_neon_vcvtph_s32_f16(__s0); \
  951. __ret; \
  952. })
  953. #endif
  954. #ifdef __LITTLE_ENDIAN__
  955. #define vcvtph_s64_f16(__p0) __extension__ ({ \
  956. float16_t __s0 = __p0; \
  957. int64_t __ret; \
  958. __ret = (int64_t) __builtin_neon_vcvtph_s64_f16(__s0); \
  959. __ret; \
  960. })
  961. #else
  962. #define vcvtph_s64_f16(__p0) __extension__ ({ \
  963. float16_t __s0 = __p0; \
  964. int64_t __ret; \
  965. __ret = (int64_t) __builtin_neon_vcvtph_s64_f16(__s0); \
  966. __ret; \
  967. })
  968. #endif
  969. #ifdef __LITTLE_ENDIAN__
  970. #define vcvtph_u16_f16(__p0) __extension__ ({ \
  971. float16_t __s0 = __p0; \
  972. uint16_t __ret; \
  973. __ret = (uint16_t) __builtin_neon_vcvtph_u16_f16(__s0); \
  974. __ret; \
  975. })
  976. #else
  977. #define vcvtph_u16_f16(__p0) __extension__ ({ \
  978. float16_t __s0 = __p0; \
  979. uint16_t __ret; \
  980. __ret = (uint16_t) __builtin_neon_vcvtph_u16_f16(__s0); \
  981. __ret; \
  982. })
  983. #endif
  984. #ifdef __LITTLE_ENDIAN__
  985. #define vcvtph_u32_f16(__p0) __extension__ ({ \
  986. float16_t __s0 = __p0; \
  987. uint32_t __ret; \
  988. __ret = (uint32_t) __builtin_neon_vcvtph_u32_f16(__s0); \
  989. __ret; \
  990. })
  991. #else
  992. #define vcvtph_u32_f16(__p0) __extension__ ({ \
  993. float16_t __s0 = __p0; \
  994. uint32_t __ret; \
  995. __ret = (uint32_t) __builtin_neon_vcvtph_u32_f16(__s0); \
  996. __ret; \
  997. })
  998. #endif
  999. #ifdef __LITTLE_ENDIAN__
  1000. #define vcvtph_u64_f16(__p0) __extension__ ({ \
  1001. float16_t __s0 = __p0; \
  1002. uint64_t __ret; \
  1003. __ret = (uint64_t) __builtin_neon_vcvtph_u64_f16(__s0); \
  1004. __ret; \
  1005. })
  1006. #else
  1007. #define vcvtph_u64_f16(__p0) __extension__ ({ \
  1008. float16_t __s0 = __p0; \
  1009. uint64_t __ret; \
  1010. __ret = (uint64_t) __builtin_neon_vcvtph_u64_f16(__s0); \
  1011. __ret; \
  1012. })
  1013. #endif
  1014. #ifdef __LITTLE_ENDIAN__
  1015. #define vdivh_f16(__p0, __p1) __extension__ ({ \
  1016. float16_t __s0 = __p0; \
  1017. float16_t __s1 = __p1; \
  1018. float16_t __ret; \
  1019. __ret = (float16_t) __builtin_neon_vdivh_f16(__s0, __s1); \
  1020. __ret; \
  1021. })
  1022. #else
  1023. #define vdivh_f16(__p0, __p1) __extension__ ({ \
  1024. float16_t __s0 = __p0; \
  1025. float16_t __s1 = __p1; \
  1026. float16_t __ret; \
  1027. __ret = (float16_t) __builtin_neon_vdivh_f16(__s0, __s1); \
  1028. __ret; \
  1029. })
  1030. #endif
  1031. #ifdef __LITTLE_ENDIAN__
  1032. #define vfmah_f16(__p0, __p1, __p2) __extension__ ({ \
  1033. float16_t __s0 = __p0; \
  1034. float16_t __s1 = __p1; \
  1035. float16_t __s2 = __p2; \
  1036. float16_t __ret; \
  1037. __ret = (float16_t) __builtin_neon_vfmah_f16(__s0, __s1, __s2); \
  1038. __ret; \
  1039. })
  1040. #else
  1041. #define vfmah_f16(__p0, __p1, __p2) __extension__ ({ \
  1042. float16_t __s0 = __p0; \
  1043. float16_t __s1 = __p1; \
  1044. float16_t __s2 = __p2; \
  1045. float16_t __ret; \
  1046. __ret = (float16_t) __builtin_neon_vfmah_f16(__s0, __s1, __s2); \
  1047. __ret; \
  1048. })
  1049. #endif
  1050. #ifdef __LITTLE_ENDIAN__
  1051. #define vfmsh_f16(__p0, __p1, __p2) __extension__ ({ \
  1052. float16_t __s0 = __p0; \
  1053. float16_t __s1 = __p1; \
  1054. float16_t __s2 = __p2; \
  1055. float16_t __ret; \
  1056. __ret = (float16_t) __builtin_neon_vfmsh_f16(__s0, __s1, __s2); \
  1057. __ret; \
  1058. })
  1059. #else
  1060. #define vfmsh_f16(__p0, __p1, __p2) __extension__ ({ \
  1061. float16_t __s0 = __p0; \
  1062. float16_t __s1 = __p1; \
  1063. float16_t __s2 = __p2; \
  1064. float16_t __ret; \
  1065. __ret = (float16_t) __builtin_neon_vfmsh_f16(__s0, __s1, __s2); \
  1066. __ret; \
  1067. })
  1068. #endif
  1069. #ifdef __LITTLE_ENDIAN__
  1070. #define vmaxh_f16(__p0, __p1) __extension__ ({ \
  1071. float16_t __s0 = __p0; \
  1072. float16_t __s1 = __p1; \
  1073. float16_t __ret; \
  1074. __ret = (float16_t) __builtin_neon_vmaxh_f16(__s0, __s1); \
  1075. __ret; \
  1076. })
  1077. #else
  1078. #define vmaxh_f16(__p0, __p1) __extension__ ({ \
  1079. float16_t __s0 = __p0; \
  1080. float16_t __s1 = __p1; \
  1081. float16_t __ret; \
  1082. __ret = (float16_t) __builtin_neon_vmaxh_f16(__s0, __s1); \
  1083. __ret; \
  1084. })
  1085. #endif
  1086. #ifdef __LITTLE_ENDIAN__
  1087. #define vmaxnmh_f16(__p0, __p1) __extension__ ({ \
  1088. float16_t __s0 = __p0; \
  1089. float16_t __s1 = __p1; \
  1090. float16_t __ret; \
  1091. __ret = (float16_t) __builtin_neon_vmaxnmh_f16(__s0, __s1); \
  1092. __ret; \
  1093. })
  1094. #else
  1095. #define vmaxnmh_f16(__p0, __p1) __extension__ ({ \
  1096. float16_t __s0 = __p0; \
  1097. float16_t __s1 = __p1; \
  1098. float16_t __ret; \
  1099. __ret = (float16_t) __builtin_neon_vmaxnmh_f16(__s0, __s1); \
  1100. __ret; \
  1101. })
  1102. #endif
  1103. #ifdef __LITTLE_ENDIAN__
  1104. #define vminh_f16(__p0, __p1) __extension__ ({ \
  1105. float16_t __s0 = __p0; \
  1106. float16_t __s1 = __p1; \
  1107. float16_t __ret; \
  1108. __ret = (float16_t) __builtin_neon_vminh_f16(__s0, __s1); \
  1109. __ret; \
  1110. })
  1111. #else
  1112. #define vminh_f16(__p0, __p1) __extension__ ({ \
  1113. float16_t __s0 = __p0; \
  1114. float16_t __s1 = __p1; \
  1115. float16_t __ret; \
  1116. __ret = (float16_t) __builtin_neon_vminh_f16(__s0, __s1); \
  1117. __ret; \
  1118. })
  1119. #endif
  1120. #ifdef __LITTLE_ENDIAN__
  1121. #define vminnmh_f16(__p0, __p1) __extension__ ({ \
  1122. float16_t __s0 = __p0; \
  1123. float16_t __s1 = __p1; \
  1124. float16_t __ret; \
  1125. __ret = (float16_t) __builtin_neon_vminnmh_f16(__s0, __s1); \
  1126. __ret; \
  1127. })
  1128. #else
  1129. #define vminnmh_f16(__p0, __p1) __extension__ ({ \
  1130. float16_t __s0 = __p0; \
  1131. float16_t __s1 = __p1; \
  1132. float16_t __ret; \
  1133. __ret = (float16_t) __builtin_neon_vminnmh_f16(__s0, __s1); \
  1134. __ret; \
  1135. })
  1136. #endif
  1137. #ifdef __LITTLE_ENDIAN__
  1138. #define vmulh_f16(__p0, __p1) __extension__ ({ \
  1139. float16_t __s0 = __p0; \
  1140. float16_t __s1 = __p1; \
  1141. float16_t __ret; \
  1142. __ret = (float16_t) __builtin_neon_vmulh_f16(__s0, __s1); \
  1143. __ret; \
  1144. })
  1145. #else
  1146. #define vmulh_f16(__p0, __p1) __extension__ ({ \
  1147. float16_t __s0 = __p0; \
  1148. float16_t __s1 = __p1; \
  1149. float16_t __ret; \
  1150. __ret = (float16_t) __builtin_neon_vmulh_f16(__s0, __s1); \
  1151. __ret; \
  1152. })
  1153. #endif
  1154. #ifdef __LITTLE_ENDIAN__
  1155. #define vmulxh_f16(__p0, __p1) __extension__ ({ \
  1156. float16_t __s0 = __p0; \
  1157. float16_t __s1 = __p1; \
  1158. float16_t __ret; \
  1159. __ret = (float16_t) __builtin_neon_vmulxh_f16(__s0, __s1); \
  1160. __ret; \
  1161. })
  1162. #else
  1163. #define vmulxh_f16(__p0, __p1) __extension__ ({ \
  1164. float16_t __s0 = __p0; \
  1165. float16_t __s1 = __p1; \
  1166. float16_t __ret; \
  1167. __ret = (float16_t) __builtin_neon_vmulxh_f16(__s0, __s1); \
  1168. __ret; \
  1169. })
  1170. #endif
  1171. #ifdef __LITTLE_ENDIAN__
  1172. #define vnegh_f16(__p0) __extension__ ({ \
  1173. float16_t __s0 = __p0; \
  1174. float16_t __ret; \
  1175. __ret = (float16_t) __builtin_neon_vnegh_f16(__s0); \
  1176. __ret; \
  1177. })
  1178. #else
  1179. #define vnegh_f16(__p0) __extension__ ({ \
  1180. float16_t __s0 = __p0; \
  1181. float16_t __ret; \
  1182. __ret = (float16_t) __builtin_neon_vnegh_f16(__s0); \
  1183. __ret; \
  1184. })
  1185. #endif
  1186. #ifdef __LITTLE_ENDIAN__
  1187. #define vrecpeh_f16(__p0) __extension__ ({ \
  1188. float16_t __s0 = __p0; \
  1189. float16_t __ret; \
  1190. __ret = (float16_t) __builtin_neon_vrecpeh_f16(__s0); \
  1191. __ret; \
  1192. })
  1193. #else
  1194. #define vrecpeh_f16(__p0) __extension__ ({ \
  1195. float16_t __s0 = __p0; \
  1196. float16_t __ret; \
  1197. __ret = (float16_t) __builtin_neon_vrecpeh_f16(__s0); \
  1198. __ret; \
  1199. })
  1200. #endif
  1201. #ifdef __LITTLE_ENDIAN__
  1202. #define vrecpsh_f16(__p0, __p1) __extension__ ({ \
  1203. float16_t __s0 = __p0; \
  1204. float16_t __s1 = __p1; \
  1205. float16_t __ret; \
  1206. __ret = (float16_t) __builtin_neon_vrecpsh_f16(__s0, __s1); \
  1207. __ret; \
  1208. })
  1209. #else
  1210. #define vrecpsh_f16(__p0, __p1) __extension__ ({ \
  1211. float16_t __s0 = __p0; \
  1212. float16_t __s1 = __p1; \
  1213. float16_t __ret; \
  1214. __ret = (float16_t) __builtin_neon_vrecpsh_f16(__s0, __s1); \
  1215. __ret; \
  1216. })
  1217. #endif
  1218. #ifdef __LITTLE_ENDIAN__
  1219. #define vrecpxh_f16(__p0) __extension__ ({ \
  1220. float16_t __s0 = __p0; \
  1221. float16_t __ret; \
  1222. __ret = (float16_t) __builtin_neon_vrecpxh_f16(__s0); \
  1223. __ret; \
  1224. })
  1225. #else
  1226. #define vrecpxh_f16(__p0) __extension__ ({ \
  1227. float16_t __s0 = __p0; \
  1228. float16_t __ret; \
  1229. __ret = (float16_t) __builtin_neon_vrecpxh_f16(__s0); \
  1230. __ret; \
  1231. })
  1232. #endif
  1233. #ifdef __LITTLE_ENDIAN__
  1234. #define vrndh_f16(__p0) __extension__ ({ \
  1235. float16_t __s0 = __p0; \
  1236. float16_t __ret; \
  1237. __ret = (float16_t) __builtin_neon_vrndh_f16(__s0); \
  1238. __ret; \
  1239. })
  1240. #else
  1241. #define vrndh_f16(__p0) __extension__ ({ \
  1242. float16_t __s0 = __p0; \
  1243. float16_t __ret; \
  1244. __ret = (float16_t) __builtin_neon_vrndh_f16(__s0); \
  1245. __ret; \
  1246. })
  1247. #endif
  1248. #ifdef __LITTLE_ENDIAN__
  1249. #define vrndah_f16(__p0) __extension__ ({ \
  1250. float16_t __s0 = __p0; \
  1251. float16_t __ret; \
  1252. __ret = (float16_t) __builtin_neon_vrndah_f16(__s0); \
  1253. __ret; \
  1254. })
  1255. #else
  1256. #define vrndah_f16(__p0) __extension__ ({ \
  1257. float16_t __s0 = __p0; \
  1258. float16_t __ret; \
  1259. __ret = (float16_t) __builtin_neon_vrndah_f16(__s0); \
  1260. __ret; \
  1261. })
  1262. #endif
  1263. #ifdef __LITTLE_ENDIAN__
  1264. #define vrndih_f16(__p0) __extension__ ({ \
  1265. float16_t __s0 = __p0; \
  1266. float16_t __ret; \
  1267. __ret = (float16_t) __builtin_neon_vrndih_f16(__s0); \
  1268. __ret; \
  1269. })
  1270. #else
  1271. #define vrndih_f16(__p0) __extension__ ({ \
  1272. float16_t __s0 = __p0; \
  1273. float16_t __ret; \
  1274. __ret = (float16_t) __builtin_neon_vrndih_f16(__s0); \
  1275. __ret; \
  1276. })
  1277. #endif
  1278. #ifdef __LITTLE_ENDIAN__
  1279. #define vrndmh_f16(__p0) __extension__ ({ \
  1280. float16_t __s0 = __p0; \
  1281. float16_t __ret; \
  1282. __ret = (float16_t) __builtin_neon_vrndmh_f16(__s0); \
  1283. __ret; \
  1284. })
  1285. #else
  1286. #define vrndmh_f16(__p0) __extension__ ({ \
  1287. float16_t __s0 = __p0; \
  1288. float16_t __ret; \
  1289. __ret = (float16_t) __builtin_neon_vrndmh_f16(__s0); \
  1290. __ret; \
  1291. })
  1292. #endif
  1293. #ifdef __LITTLE_ENDIAN__
  1294. #define vrndnh_f16(__p0) __extension__ ({ \
  1295. float16_t __s0 = __p0; \
  1296. float16_t __ret; \
  1297. __ret = (float16_t) __builtin_neon_vrndnh_f16(__s0); \
  1298. __ret; \
  1299. })
  1300. #else
  1301. #define vrndnh_f16(__p0) __extension__ ({ \
  1302. float16_t __s0 = __p0; \
  1303. float16_t __ret; \
  1304. __ret = (float16_t) __builtin_neon_vrndnh_f16(__s0); \
  1305. __ret; \
  1306. })
  1307. #endif
  1308. #ifdef __LITTLE_ENDIAN__
  1309. #define vrndph_f16(__p0) __extension__ ({ \
  1310. float16_t __s0 = __p0; \
  1311. float16_t __ret; \
  1312. __ret = (float16_t) __builtin_neon_vrndph_f16(__s0); \
  1313. __ret; \
  1314. })
  1315. #else
  1316. #define vrndph_f16(__p0) __extension__ ({ \
  1317. float16_t __s0 = __p0; \
  1318. float16_t __ret; \
  1319. __ret = (float16_t) __builtin_neon_vrndph_f16(__s0); \
  1320. __ret; \
  1321. })
  1322. #endif
  1323. #ifdef __LITTLE_ENDIAN__
  1324. #define vrndxh_f16(__p0) __extension__ ({ \
  1325. float16_t __s0 = __p0; \
  1326. float16_t __ret; \
  1327. __ret = (float16_t) __builtin_neon_vrndxh_f16(__s0); \
  1328. __ret; \
  1329. })
  1330. #else
  1331. #define vrndxh_f16(__p0) __extension__ ({ \
  1332. float16_t __s0 = __p0; \
  1333. float16_t __ret; \
  1334. __ret = (float16_t) __builtin_neon_vrndxh_f16(__s0); \
  1335. __ret; \
  1336. })
  1337. #endif
  1338. #ifdef __LITTLE_ENDIAN__
  1339. #define vrsqrteh_f16(__p0) __extension__ ({ \
  1340. float16_t __s0 = __p0; \
  1341. float16_t __ret; \
  1342. __ret = (float16_t) __builtin_neon_vrsqrteh_f16(__s0); \
  1343. __ret; \
  1344. })
  1345. #else
  1346. #define vrsqrteh_f16(__p0) __extension__ ({ \
  1347. float16_t __s0 = __p0; \
  1348. float16_t __ret; \
  1349. __ret = (float16_t) __builtin_neon_vrsqrteh_f16(__s0); \
  1350. __ret; \
  1351. })
  1352. #endif
  1353. #ifdef __LITTLE_ENDIAN__
  1354. #define vrsqrtsh_f16(__p0, __p1) __extension__ ({ \
  1355. float16_t __s0 = __p0; \
  1356. float16_t __s1 = __p1; \
  1357. float16_t __ret; \
  1358. __ret = (float16_t) __builtin_neon_vrsqrtsh_f16(__s0, __s1); \
  1359. __ret; \
  1360. })
  1361. #else
  1362. #define vrsqrtsh_f16(__p0, __p1) __extension__ ({ \
  1363. float16_t __s0 = __p0; \
  1364. float16_t __s1 = __p1; \
  1365. float16_t __ret; \
  1366. __ret = (float16_t) __builtin_neon_vrsqrtsh_f16(__s0, __s1); \
  1367. __ret; \
  1368. })
  1369. #endif
  1370. #ifdef __LITTLE_ENDIAN__
  1371. #define vsqrth_f16(__p0) __extension__ ({ \
  1372. float16_t __s0 = __p0; \
  1373. float16_t __ret; \
  1374. __ret = (float16_t) __builtin_neon_vsqrth_f16(__s0); \
  1375. __ret; \
  1376. })
  1377. #else
  1378. #define vsqrth_f16(__p0) __extension__ ({ \
  1379. float16_t __s0 = __p0; \
  1380. float16_t __ret; \
  1381. __ret = (float16_t) __builtin_neon_vsqrth_f16(__s0); \
  1382. __ret; \
  1383. })
  1384. #endif
  1385. #ifdef __LITTLE_ENDIAN__
  1386. #define vsubh_f16(__p0, __p1) __extension__ ({ \
  1387. float16_t __s0 = __p0; \
  1388. float16_t __s1 = __p1; \
  1389. float16_t __ret; \
  1390. __ret = (float16_t) __builtin_neon_vsubh_f16(__s0, __s1); \
  1391. __ret; \
  1392. })
  1393. #else
  1394. #define vsubh_f16(__p0, __p1) __extension__ ({ \
  1395. float16_t __s0 = __p0; \
  1396. float16_t __s1 = __p1; \
  1397. float16_t __ret; \
  1398. __ret = (float16_t) __builtin_neon_vsubh_f16(__s0, __s1); \
  1399. __ret; \
  1400. })
  1401. #endif
  1402. #endif
  1403. #undef __ai
  1404. #endif /* __ARM_FP16_H */