llvm-runtime-resources-darwin 0.0.0 → 23.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +33 -0
  3. package/include/__clang_cuda_builtin_vars.h +121 -0
  4. package/include/__clang_cuda_cmath.h +512 -0
  5. package/include/__clang_cuda_complex_builtins.h +236 -0
  6. package/include/__clang_cuda_device_functions.h +1572 -0
  7. package/include/__clang_cuda_intrinsics.h +975 -0
  8. package/include/__clang_cuda_libdevice_declares.h +468 -0
  9. package/include/__clang_cuda_math.h +353 -0
  10. package/include/__clang_cuda_math_forward_declares.h +289 -0
  11. package/include/__clang_cuda_runtime_wrapper.h +526 -0
  12. package/include/__clang_cuda_texture_intrinsics.h +1177 -0
  13. package/include/__clang_gpu_builtin_vars.h +71 -0
  14. package/include/__clang_gpu_device_functions.h +411 -0
  15. package/include/__clang_gpu_intrinsics.h +242 -0
  16. package/include/__clang_hip_cmath.h +848 -0
  17. package/include/__clang_hip_libdevice_declares.h +238 -0
  18. package/include/__clang_hip_math.h +1405 -0
  19. package/include/__clang_hip_runtime_wrapper.h +170 -0
  20. package/include/__clang_hip_stdlib.h +43 -0
  21. package/include/__clang_spirv_builtins.h +217 -0
  22. package/include/__clang_spirv_libdevice_declares.h +170 -0
  23. package/include/__clang_spirv_math.h +719 -0
  24. package/include/__float_float.h +176 -0
  25. package/include/__float_header_macro.h +12 -0
  26. package/include/__float_infinity_nan.h +20 -0
  27. package/include/__stdarg___gnuc_va_list.h +13 -0
  28. package/include/__stdarg___va_copy.h +12 -0
  29. package/include/__stdarg_header_macro.h +12 -0
  30. package/include/__stdarg_va_arg.h +22 -0
  31. package/include/__stdarg_va_copy.h +12 -0
  32. package/include/__stdarg_va_list.h +13 -0
  33. package/include/__stddef_header_macro.h +12 -0
  34. package/include/__stddef_max_align_t.h +27 -0
  35. package/include/__stddef_null.h +29 -0
  36. package/include/__stddef_nullptr_t.h +29 -0
  37. package/include/__stddef_offsetof.h +17 -0
  38. package/include/__stddef_ptrdiff_t.h +20 -0
  39. package/include/__stddef_rsize_t.h +20 -0
  40. package/include/__stddef_size_t.h +20 -0
  41. package/include/__stddef_unreachable.h +21 -0
  42. package/include/__stddef_wchar_t.h +28 -0
  43. package/include/__stddef_wint_t.h +15 -0
  44. package/include/__wmmintrin_aes.h +140 -0
  45. package/include/__wmmintrin_pclmul.h +48 -0
  46. package/include/adcintrin.h +165 -0
  47. package/include/adxintrin.h +107 -0
  48. package/include/altivec.h +19434 -0
  49. package/include/amdgpuintrin.h +164 -0
  50. package/include/amdhsa_abi.h +83 -0
  51. package/include/ammintrin.h +183 -0
  52. package/include/amo.h +220 -0
  53. package/include/amxavx512intrin.h +596 -0
  54. package/include/amxcomplexintrin.h +167 -0
  55. package/include/amxfp16intrin.h +93 -0
  56. package/include/amxfp8intrin.h +230 -0
  57. package/include/amxintrin.h +492 -0
  58. package/include/amxmovrsintrin.h +48 -0
  59. package/include/andes_vector.h +21 -0
  60. package/include/arm64_neon.h +21 -0
  61. package/include/arm64intr.h +45 -0
  62. package/include/arm_acle.h +866 -0
  63. package/include/arm_bf16.h +20 -0
  64. package/include/arm_cde.h +410 -0
  65. package/include/arm_cmse.h +217 -0
  66. package/include/arm_fp16.h +596 -0
  67. package/include/arm_mve.h +19187 -0
  68. package/include/arm_neon.h +74351 -0
  69. package/include/arm_neon_sve_bridge.h +182 -0
  70. package/include/arm_sme.h +3753 -0
  71. package/include/arm_sve.h +32698 -0
  72. package/include/arm_vector_types.h +432 -0
  73. package/include/armintr.h +31 -0
  74. package/include/avx10_2_512bf16intrin.h +568 -0
  75. package/include/avx10_2_512convertintrin.h +322 -0
  76. package/include/avx10_2_512minmaxintrin.h +127 -0
  77. package/include/avx10_2_512niintrin.h +314 -0
  78. package/include/avx10_2_512satcvtdsintrin.h +307 -0
  79. package/include/avx10_2_512satcvtintrin.h +301 -0
  80. package/include/avx10_2bf16intrin.h +1094 -0
  81. package/include/avx10_2convertintrin.h +3257 -0
  82. package/include/avx10_2copyintrin.h +66 -0
  83. package/include/avx10_2minmaxintrin.h +232 -0
  84. package/include/avx10_2niintrin.h +409 -0
  85. package/include/avx10_2satcvtdsintrin.h +376 -0
  86. package/include/avx10_2satcvtintrin.h +312 -0
  87. package/include/avx2intrin.h +5190 -0
  88. package/include/avx512bf16intrin.h +292 -0
  89. package/include/avx512bitalgintrin.h +75 -0
  90. package/include/avx512bmmintrin.h +174 -0
  91. package/include/avx512bmmvlintrin.h +245 -0
  92. package/include/avx512bwintrin.h +1885 -0
  93. package/include/avx512cdintrin.h +112 -0
  94. package/include/avx512dqintrin.h +1350 -0
  95. package/include/avx512fintrin.h +9351 -0
  96. package/include/avx512fp16intrin.h +3349 -0
  97. package/include/avx512ifmaintrin.h +68 -0
  98. package/include/avx512ifmavlintrin.h +138 -0
  99. package/include/avx512vbmi2intrin.h +364 -0
  100. package/include/avx512vbmiintrin.h +98 -0
  101. package/include/avx512vbmivlintrin.h +179 -0
  102. package/include/avx512vlbf16intrin.h +527 -0
  103. package/include/avx512vlbitalgintrin.h +135 -0
  104. package/include/avx512vlbwintrin.h +3052 -0
  105. package/include/avx512vlcdintrin.h +202 -0
  106. package/include/avx512vldqintrin.h +1156 -0
  107. package/include/avx512vlfp16intrin.h +2090 -0
  108. package/include/avx512vlintrin.h +8067 -0
  109. package/include/avx512vlvbmi2intrin.h +702 -0
  110. package/include/avx512vlvnniintrin.h +308 -0
  111. package/include/avx512vlvp2intersectintrin.h +123 -0
  112. package/include/avx512vnniintrin.h +113 -0
  113. package/include/avx512vp2intersectintrin.h +77 -0
  114. package/include/avx512vpopcntdqintrin.h +62 -0
  115. package/include/avx512vpopcntdqvlintrin.h +105 -0
  116. package/include/avxifmaintrin.h +193 -0
  117. package/include/avxintrin.h +5064 -0
  118. package/include/avxneconvertintrin.h +484 -0
  119. package/include/avxvnniint16intrin.h +451 -0
  120. package/include/avxvnniint8intrin.h +454 -0
  121. package/include/avxvnniintrin.h +238 -0
  122. package/include/bmi2intrin.h +253 -0
  123. package/include/bmiintrin.h +604 -0
  124. package/include/builtins.h +19 -0
  125. package/include/cet.h +66 -0
  126. package/include/cetintrin.h +115 -0
  127. package/include/cldemoteintrin.h +36 -0
  128. package/include/clflushoptintrin.h +36 -0
  129. package/include/clwbintrin.h +38 -0
  130. package/include/clzerointrin.h +38 -0
  131. package/include/cmpccxaddintrin.h +70 -0
  132. package/include/cpuid.h +451 -0
  133. package/include/crc32intrin.h +102 -0
  134. package/include/cuda_wrappers/__utility/declval.h +28 -0
  135. package/include/cuda_wrappers/algorithm +116 -0
  136. package/include/cuda_wrappers/bits/basic_string.h +9 -0
  137. package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  138. package/include/cuda_wrappers/bits/c++config.h +61 -0
  139. package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  140. package/include/cuda_wrappers/cmath +44 -0
  141. package/include/cuda_wrappers/complex +90 -0
  142. package/include/cuda_wrappers/new +108 -0
  143. package/include/emmintrin.h +4940 -0
  144. package/include/endian.h +91 -0
  145. package/include/enqcmdintrin.h +63 -0
  146. package/include/f16cintrin.h +176 -0
  147. package/include/float.h +48 -0
  148. package/include/fma4intrin.h +220 -0
  149. package/include/fmaintrin.h +826 -0
  150. package/include/fuzzer/FuzzedDataProvider.h +397 -0
  151. package/include/fxsrintrin.h +91 -0
  152. package/include/gfniintrin.h +238 -0
  153. package/include/gpuintrin.h +348 -0
  154. package/include/hexagon_circ_brev_intrinsics.h +298 -0
  155. package/include/hexagon_protos.h +8439 -0
  156. package/include/hexagon_types.h +2628 -0
  157. package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
  158. package/include/hlsl_inline_intrinsics_gen.inc +546 -0
  159. package/include/hresetintrin.h +49 -0
  160. package/include/htmintrin.h +212 -0
  161. package/include/htmxlintrin.h +345 -0
  162. package/include/hvx_hexagon_protos.h +5421 -0
  163. package/include/ia32intrin.h +863 -0
  164. package/include/immintrin.h +597 -0
  165. package/include/intrin.h +501 -0
  166. package/include/intrin0.h +256 -0
  167. package/include/inttypes.h +101 -0
  168. package/include/invpcidintrin.h +23 -0
  169. package/include/iso646.h +31 -0
  170. package/include/keylockerintrin.h +518 -0
  171. package/include/larchintrin.h +262 -0
  172. package/include/lasxintrin.h +3999 -0
  173. package/include/limits.h +133 -0
  174. package/include/llvm_libc_wrappers/assert.h +32 -0
  175. package/include/llvm_libc_wrappers/ctype.h +29 -0
  176. package/include/llvm_libc_wrappers/inttypes.h +32 -0
  177. package/include/llvm_libc_wrappers/stdio.h +52 -0
  178. package/include/llvm_libc_wrappers/stdlib.h +32 -0
  179. package/include/llvm_libc_wrappers/string.h +29 -0
  180. package/include/llvm_libc_wrappers/time.h +28 -0
  181. package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  182. package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  183. package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  184. package/include/lsxintrin.h +3752 -0
  185. package/include/lwpintrin.h +136 -0
  186. package/include/lzcntintrin.h +109 -0
  187. package/include/mm3dnow.h +22 -0
  188. package/include/mm_malloc.h +67 -0
  189. package/include/mmintrin.h +1541 -0
  190. package/include/module.modulemap +375 -0
  191. package/include/movdirintrin.h +49 -0
  192. package/include/movrs_avx10_2_512intrin.h +98 -0
  193. package/include/movrs_avx10_2intrin.h +174 -0
  194. package/include/movrsintrin.h +59 -0
  195. package/include/msa.h +573 -0
  196. package/include/mwaitxintrin.h +62 -0
  197. package/include/nmmintrin.h +20 -0
  198. package/include/nvptxintrin.h +208 -0
  199. package/include/opencl-c-base.h +765 -0
  200. package/include/opencl-c.h +18737 -0
  201. package/include/openmp_wrappers/__clang_openmp_device_functions.h +118 -0
  202. package/include/openmp_wrappers/cmath +132 -0
  203. package/include/openmp_wrappers/complex +61 -0
  204. package/include/openmp_wrappers/complex.h +41 -0
  205. package/include/openmp_wrappers/complex_cmath.h +393 -0
  206. package/include/openmp_wrappers/math.h +71 -0
  207. package/include/openmp_wrappers/new +48 -0
  208. package/include/pconfigintrin.h +40 -0
  209. package/include/pkuintrin.h +34 -0
  210. package/include/pmmintrin.h +302 -0
  211. package/include/popcntintrin.h +59 -0
  212. package/include/ppc_wrappers/bmi2intrin.h +134 -0
  213. package/include/ppc_wrappers/bmiintrin.h +165 -0
  214. package/include/ppc_wrappers/emmintrin.h +2269 -0
  215. package/include/ppc_wrappers/immintrin.h +27 -0
  216. package/include/ppc_wrappers/mm_malloc.h +45 -0
  217. package/include/ppc_wrappers/mmintrin.h +1453 -0
  218. package/include/ppc_wrappers/nmmintrin.h +26 -0
  219. package/include/ppc_wrappers/pmmintrin.h +145 -0
  220. package/include/ppc_wrappers/smmintrin.h +683 -0
  221. package/include/ppc_wrappers/tmmintrin.h +453 -0
  222. package/include/ppc_wrappers/x86gprintrin.h +17 -0
  223. package/include/ppc_wrappers/x86intrin.h +28 -0
  224. package/include/ppc_wrappers/xmmintrin.h +1827 -0
  225. package/include/prfchiintrin.h +61 -0
  226. package/include/prfchwintrin.h +57 -0
  227. package/include/profile/InstrProfData.inc +1063 -0
  228. package/include/profile/instr_prof_interface.h +88 -0
  229. package/include/ptrauth.h +485 -0
  230. package/include/ptwriteintrin.h +37 -0
  231. package/include/raointintrin.h +203 -0
  232. package/include/rdpruintrin.h +57 -0
  233. package/include/rdseedintrin.h +105 -0
  234. package/include/riscv_bitmanip.h +202 -0
  235. package/include/riscv_corev_alu.h +130 -0
  236. package/include/riscv_crypto.h +178 -0
  237. package/include/riscv_mips.h +36 -0
  238. package/include/riscv_nds.h +92 -0
  239. package/include/riscv_ntlh.h +28 -0
  240. package/include/riscv_packed_simd.h +644 -0
  241. package/include/riscv_vector.h +465 -0
  242. package/include/rtmintrin.h +45 -0
  243. package/include/s390intrin.h +25 -0
  244. package/include/sanitizer/allocator_interface.h +106 -0
  245. package/include/sanitizer/asan_interface.h +398 -0
  246. package/include/sanitizer/common_interface_defs.h +507 -0
  247. package/include/sanitizer/coverage_interface.h +36 -0
  248. package/include/sanitizer/dfsan_interface.h +220 -0
  249. package/include/sanitizer/hwasan_interface.h +109 -0
  250. package/include/sanitizer/linux_syscall_hooks.h +3112 -0
  251. package/include/sanitizer/lsan_interface.h +89 -0
  252. package/include/sanitizer/msan_interface.h +135 -0
  253. package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
  254. package/include/sanitizer/rtsan_interface.h +75 -0
  255. package/include/sanitizer/safestack_interface.h +50 -0
  256. package/include/sanitizer/scudo_interface.h +38 -0
  257. package/include/sanitizer/tsan_interface.h +316 -0
  258. package/include/sanitizer/tsan_interface_atomic.h +223 -0
  259. package/include/sanitizer/tysan_interface.h +36 -0
  260. package/include/sanitizer/ubsan_interface.h +64 -0
  261. package/include/serializeintrin.h +30 -0
  262. package/include/sgxintrin.h +60 -0
  263. package/include/sha512intrin.h +200 -0
  264. package/include/shaintrin.h +190 -0
  265. package/include/sifive_vector.h +192 -0
  266. package/include/sm3intrin.h +238 -0
  267. package/include/sm4evexintrin.h +32 -0
  268. package/include/sm4intrin.h +269 -0
  269. package/include/smmintrin.h +2352 -0
  270. package/include/spirvintrin.h +167 -0
  271. package/include/stdalign.h +24 -0
  272. package/include/stdarg.h +75 -0
  273. package/include/stdatomic.h +204 -0
  274. package/include/stdbool.h +39 -0
  275. package/include/stdckdint.h +42 -0
  276. package/include/stdcountof.h +15 -0
  277. package/include/stddef.h +139 -0
  278. package/include/stddefer.h +19 -0
  279. package/include/stdint.h +835 -0
  280. package/include/stdnoreturn.h +35 -0
  281. package/include/tbmintrin.h +128 -0
  282. package/include/tgmath.h +1368 -0
  283. package/include/tmmintrin.h +779 -0
  284. package/include/tsxldtrkintrin.h +56 -0
  285. package/include/uintrintrin.h +157 -0
  286. package/include/unwind.h +332 -0
  287. package/include/usermsrintrin.h +51 -0
  288. package/include/vadefs.h +51 -0
  289. package/include/vaesintrin.h +86 -0
  290. package/include/varargs.h +16 -0
  291. package/include/vecintrin.h +12868 -0
  292. package/include/velintrin.h +71 -0
  293. package/include/velintrin_approx.h +120 -0
  294. package/include/velintrin_gen.h +1257 -0
  295. package/include/vpclmulqdqintrin.h +30 -0
  296. package/include/waitpkgintrin.h +42 -0
  297. package/include/wasm_simd128.h +2160 -0
  298. package/include/wbnoinvdintrin.h +24 -0
  299. package/include/wmmintrin.h +23 -0
  300. package/include/x86gprintrin.h +49 -0
  301. package/include/x86intrin.h +35 -0
  302. package/include/xmmintrin.h +3176 -0
  303. package/include/xopintrin.h +780 -0
  304. package/include/xsavecintrin.h +84 -0
  305. package/include/xsaveintrin.h +63 -0
  306. package/include/xsaveoptintrin.h +34 -0
  307. package/include/xsavesintrin.h +44 -0
  308. package/include/xtestintrin.h +27 -0
  309. package/include/yvals_core.h +25 -0
  310. package/include/zos_wrappers/builtins.h +18 -0
  311. package/include/zos_wrappers/grp.h +19 -0
  312. package/include/zos_wrappers/locale.h +19 -0
  313. package/include/zos_wrappers/math.h +31 -0
  314. package/include/zos_wrappers/poll.h +19 -0
  315. package/include/zos_wrappers/stdlib.h +20 -0
  316. package/include/zos_wrappers/string.h +19 -0
  317. package/include/zos_wrappers/time.h +19 -0
  318. package/include/zos_wrappers/variant.h +19 -0
  319. package/index.js +5 -0
  320. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  321. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  322. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  323. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  324. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  325. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  326. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  327. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  328. package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
  329. package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
  330. package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
  331. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  332. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  333. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  334. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  335. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  336. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  337. package/lib/darwin/libclang_rt.ios.a +0 -0
  338. package/lib/darwin/libclang_rt.iossim.a +0 -0
  339. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  340. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  341. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  342. package/lib/darwin/libclang_rt.osx.a +0 -0
  343. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  344. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  345. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  346. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  347. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  348. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  349. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  350. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  351. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  352. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  353. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  354. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  355. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  356. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  357. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  358. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  359. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  360. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  361. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  362. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  363. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  364. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  365. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  366. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  367. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  368. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  369. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  370. package/package.json +40 -1
  371. package/share/asan_ignorelist.txt +14 -0
  372. package/share/cfi_ignorelist.txt +17 -0
@@ -0,0 +1,91 @@
1
+ //===-- Definition of macros from endian.h --------------------------------===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #ifndef __CLANG_ENDIAN_H
10
+ #define __CLANG_ENDIAN_H
11
+
12
+ // If the system has an endian.h, let's use that instead.
13
+ #if __has_include_next(<endian.h>)
14
+ #include_next <endian.h>
15
+ #else
16
+
17
+ #include <stdint.h>
18
+
19
+ // Implementation taken from llvm libc endian-macros.h.
20
+ #ifdef __cplusplus
21
+ #define __CLANG_ENDIAN_CAST(cast, type, value) (cast<type>(value))
22
+ #else
23
+ #define __CLANG_ENDIAN_CAST(cast, type, value) ((type)(value))
24
+ #endif
25
+
26
+ #define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
27
+ #define BIG_ENDIAN __ORDER_BIG_ENDIAN__
28
+ #define PDP_ENDIAN __ORDER_PDP_ENDIAN__
29
+ #define BYTE_ORDER __BYTE_ORDER__
30
+
31
+ // Define some compatibility macros if they are not defined.
32
+ #ifndef __BYTE_ORDER
33
+ #define __BYTE_ORDER BYTE_ORDER
34
+ #endif
35
+ #ifndef __LITTLE_ENDIAN
36
+ #define __LITTLE_ENDIAN LITTLE_ENDIAN
37
+ #endif
38
+ #ifndef __BIG_ENDIAN
39
+ #define __BIG_ENDIAN BIG_ENDIAN
40
+ #endif
41
+ #ifndef __PDP_ENDIAN
42
+ #define __PDP_ENDIAN PDP_ENDIAN
43
+ #endif
44
+
45
+ #if BYTE_ORDER == LITTLE_ENDIAN
46
+
47
+ #define htobe16(x) \
48
+ __builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
49
+ #define htobe32(x) \
50
+ __builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
51
+ #define htobe64(x) \
52
+ __builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
53
+ #define htole16(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
54
+ #define htole32(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
55
+ #define htole64(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
56
+ #define be16toh(x) \
57
+ __builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
58
+ #define be32toh(x) \
59
+ __builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
60
+ #define be64toh(x) \
61
+ __builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
62
+ #define le16toh(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
63
+ #define le32toh(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
64
+ #define le64toh(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
65
+
66
+ #elif BYTE_ORDER == BIG_ENDIAN
67
+
68
+ #define htobe16(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
69
+ #define htobe32(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
70
+ #define htobe64(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
71
+ #define htole16(x) \
72
+ __builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
73
+ #define htole32(x) \
74
+ __builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
75
+ #define htole64(x) \
76
+ __builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
77
+ #define be16toh(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
78
+ #define be32toh(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
79
+ #define be64toh(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
80
+ #define le16toh(x) \
81
+ __builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
82
+ #define le32toh(x) \
83
+ __builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
84
+ #define le64toh(x) \
85
+ __builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
86
+
87
+ #else
88
+ #error "Unsupported endianness"
89
+ #endif
90
+ #endif // __has_include_next
91
+ #endif // __CLANG_ENDIAN_H
@@ -0,0 +1,63 @@
1
+ /*===------------------ enqcmdintrin.h - enqcmd intrinsics -----------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <enqcmdintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __ENQCMDINTRIN_H
15
+ #define __ENQCMDINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file */
18
+ #define _DEFAULT_FN_ATTRS \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("enqcmd")))
20
+
21
+ /// Reads 64-byte command pointed by \a __src, formats 64-byte enqueue store
22
+ /// data, and performs 64-byte enqueue store to memory pointed by \a __dst.
23
+ /// This intrinsics may only be used in User mode.
24
+ ///
25
+ /// \headerfile <x86intrin.h>
26
+ ///
27
+ /// This intrinsics corresponds to the <c> ENQCMD </c> instruction.
28
+ ///
29
+ /// \param __dst
30
+ /// Pointer to the destination of the enqueue store.
31
+ /// \param __src
32
+ /// Pointer to 64-byte command data.
33
+ /// \returns If the command data is successfully written to \a __dst then 0 is
34
+ /// returned. Otherwise 1 is returned.
35
+ static __inline__ int _DEFAULT_FN_ATTRS
36
+ _enqcmd (void *__dst, const void *__src)
37
+ {
38
+ return __builtin_ia32_enqcmd(__dst, __src);
39
+ }
40
+
41
+ /// Reads 64-byte command pointed by \a __src, formats 64-byte enqueue store
42
+ /// data, and performs 64-byte enqueue store to memory pointed by \a __dst
43
+ /// This intrinsic may only be used in Privileged mode.
44
+ ///
45
+ /// \headerfile <x86intrin.h>
46
+ ///
47
+ /// This intrinsics corresponds to the <c> ENQCMDS </c> instruction.
48
+ ///
49
+ /// \param __dst
50
+ /// Pointer to the destination of the enqueue store.
51
+ /// \param __src
52
+ /// Pointer to 64-byte command data.
53
+ /// \returns If the command data is successfully written to \a __dst then 0 is
54
+ /// returned. Otherwise 1 is returned.
55
+ static __inline__ int _DEFAULT_FN_ATTRS
56
+ _enqcmds (void *__dst, const void *__src)
57
+ {
58
+ return __builtin_ia32_enqcmds(__dst, __src);
59
+ }
60
+
61
+ #undef _DEFAULT_FN_ATTRS
62
+
63
+ #endif /* __ENQCMDINTRIN_H */
@@ -0,0 +1,176 @@
1
+ /*===---- f16cintrin.h - F16C intrinsics -----------------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #if !defined __IMMINTRIN_H
11
+ #error "Never use <f16cintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __F16CINTRIN_H
15
+ #define __F16CINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
19
+ #define __DEFAULT_FN_ATTRS128 \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
21
+ __min_vector_width__(128))) constexpr
22
+ #define __DEFAULT_FN_ATTRS256 \
23
+ __attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
24
+ __min_vector_width__(256))) constexpr
25
+ #else
26
+ #define __DEFAULT_FN_ATTRS128 \
27
+ __attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
28
+ __min_vector_width__(128)))
29
+ #define __DEFAULT_FN_ATTRS256 \
30
+ __attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
31
+ __min_vector_width__(256)))
32
+ #endif
33
+
34
+ /* NOTE: Intel documents the 128-bit versions of these as being in emmintrin.h,
35
+ * but that's because icc can emulate these without f16c using a library call.
36
+ * Since we don't do that let's leave these in f16cintrin.h.
37
+ */
38
+
39
+ /// Converts a 16-bit half-precision float value into a 32-bit float
40
+ /// value.
41
+ ///
42
+ /// \headerfile <x86intrin.h>
43
+ ///
44
+ /// This intrinsic corresponds to the <c> VCVTPH2PS </c> instruction.
45
+ ///
46
+ /// \param __a
47
+ /// A 16-bit half-precision float value.
48
+ /// \returns The converted 32-bit float value.
49
+ static __inline float __DEFAULT_FN_ATTRS128
50
+ _cvtsh_ss(unsigned short __a)
51
+ {
52
+ return (float)__builtin_bit_cast(__fp16, __a);
53
+ }
54
+
55
+ /// Converts a 32-bit single-precision float value to a 16-bit
56
+ /// half-precision float value.
57
+ ///
58
+ /// \headerfile <x86intrin.h>
59
+ ///
60
+ /// \code
61
+ /// unsigned short _cvtss_sh(float a, const int imm);
62
+ /// \endcode
63
+ ///
64
+ /// This intrinsic corresponds to the <c> VCVTPS2PH </c> instruction.
65
+ ///
66
+ /// \param a
67
+ /// A 32-bit single-precision float value to be converted to a 16-bit
68
+ /// half-precision float value.
69
+ /// \param imm
70
+ /// An immediate value controlling rounding using bits [2:0]: \n
71
+ /// 000: Nearest \n
72
+ /// 001: Down \n
73
+ /// 010: Up \n
74
+ /// 011: Truncate \n
75
+ /// 1XX: Use MXCSR.RC for rounding
76
+ /// \returns The converted 16-bit half-precision float value.
77
+ #define _cvtss_sh(a, imm) __extension__ ({ \
78
+ (unsigned short)(((__v8hi)__builtin_ia32_vcvtps2ph((__v4sf){a, 0, 0, 0}, \
79
+ (imm)))[0]); })
80
+
81
+ /// Converts a 128-bit vector containing 32-bit float values into a
82
+ /// 128-bit vector containing 16-bit half-precision float values.
83
+ ///
84
+ /// \headerfile <x86intrin.h>
85
+ ///
86
+ /// \code
87
+ /// __m128i _mm_cvtps_ph(__m128 a, const int imm);
88
+ /// \endcode
89
+ ///
90
+ /// This intrinsic corresponds to the <c> VCVTPS2PH </c> instruction.
91
+ ///
92
+ /// \param a
93
+ /// A 128-bit vector containing 32-bit float values.
94
+ /// \param imm
95
+ /// An immediate value controlling rounding using bits [2:0]: \n
96
+ /// 000: Nearest \n
97
+ /// 001: Down \n
98
+ /// 010: Up \n
99
+ /// 011: Truncate \n
100
+ /// 1XX: Use MXCSR.RC for rounding
101
+ /// \returns A 128-bit vector containing converted 16-bit half-precision float
102
+ /// values. The lower 64 bits are used to store the converted 16-bit
103
+ /// half-precision floating-point values.
104
+ #define _mm_cvtps_ph(a, imm) \
105
+ ((__m128i)__builtin_ia32_vcvtps2ph((__v4sf)(__m128)(a), (imm)))
106
+
107
+ /// Converts a 128-bit vector containing 16-bit half-precision float
108
+ /// values into a 128-bit vector containing 32-bit float values.
109
+ ///
110
+ /// \headerfile <x86intrin.h>
111
+ ///
112
+ /// This intrinsic corresponds to the <c> VCVTPH2PS </c> instruction.
113
+ ///
114
+ /// \param __a
115
+ /// A 128-bit vector containing 16-bit half-precision float values. The lower
116
+ /// 64 bits are used in the conversion.
117
+ /// \returns A 128-bit vector of [4 x float] containing converted float values.
118
+ static __inline __m128 __DEFAULT_FN_ATTRS128
119
+ _mm_cvtph_ps(__m128i __a)
120
+ {
121
+ typedef __fp16 __v4fp16 __attribute__((__vector_size__(8)));
122
+
123
+ __v4hi __v = __builtin_shufflevector((__v8hi)__a, (__v8hi)__a, 0, 1, 2, 3);
124
+ return (__m128) __builtin_convertvector((__v4fp16)__v, __v4sf);
125
+ }
126
+
127
+ /// Converts a 256-bit vector of [8 x float] into a 128-bit vector
128
+ /// containing 16-bit half-precision float values.
129
+ ///
130
+ /// \headerfile <x86intrin.h>
131
+ ///
132
+ /// \code
133
+ /// __m128i _mm256_cvtps_ph(__m256 a, const int imm);
134
+ /// \endcode
135
+ ///
136
+ /// This intrinsic corresponds to the <c> VCVTPS2PH </c> instruction.
137
+ ///
138
+ /// \param a
139
+ /// A 256-bit vector containing 32-bit single-precision float values to be
140
+ /// converted to 16-bit half-precision float values.
141
+ /// \param imm
142
+ /// An immediate value controlling rounding using bits [2:0]: \n
143
+ /// 000: Nearest \n
144
+ /// 001: Down \n
145
+ /// 010: Up \n
146
+ /// 011: Truncate \n
147
+ /// 1XX: Use MXCSR.RC for rounding
148
+ /// \returns A 128-bit vector containing the converted 16-bit half-precision
149
+ /// float values.
150
+ #define _mm256_cvtps_ph(a, imm) \
151
+ ((__m128i)__builtin_ia32_vcvtps2ph256((__v8sf)(__m256)(a), (imm)))
152
+
153
+ /// Converts a 128-bit vector containing 16-bit half-precision float
154
+ /// values into a 256-bit vector of [8 x float].
155
+ ///
156
+ /// \headerfile <x86intrin.h>
157
+ ///
158
+ /// This intrinsic corresponds to the <c> VCVTPH2PS </c> instruction.
159
+ ///
160
+ /// \param __a
161
+ /// A 128-bit vector containing 16-bit half-precision float values to be
162
+ /// converted to 32-bit single-precision float values.
163
+ /// \returns A vector of [8 x float] containing the converted 32-bit
164
+ /// single-precision float values.
165
+ static __inline __m256 __DEFAULT_FN_ATTRS256
166
+ _mm256_cvtph_ps(__m128i __a)
167
+ {
168
+ typedef __fp16 __v8fp16 __attribute__((__vector_size__(16), __aligned__(16)));
169
+
170
+ return (__m256) __builtin_convertvector((__v8fp16)__a, __v8sf);
171
+ }
172
+
173
+ #undef __DEFAULT_FN_ATTRS128
174
+ #undef __DEFAULT_FN_ATTRS256
175
+
176
+ #endif /* __F16CINTRIN_H */
@@ -0,0 +1,48 @@
1
+ /*===---- float.h - Characteristics of floating point types ----------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #if defined(__MVS__) && __has_include_next(<float.h>)
11
+ #include <__float_header_macro.h>
12
+ #include_next <float.h>
13
+ #else
14
+
15
+ #if !defined(__need_infinity_nan)
16
+ #define __need_float_float
17
+ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || \
18
+ !defined(__STRICT_ANSI__)
19
+ #define __need_infinity_nan
20
+ #endif
21
+ #include <__float_header_macro.h>
22
+ #endif
23
+
24
+ #ifdef __need_float_float
25
+ /* If we're on MinGW, fall back to the system's float.h, which might have
26
+ * additional definitions provided for Windows.
27
+ * For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx
28
+ *
29
+ * Also fall back on AIX to allow additional definitions and
30
+ * implementation-defined values.
31
+ */
32
+ #if (defined(__MINGW32__) || defined(_MSC_VER) || defined(_AIX)) && \
33
+ __STDC_HOSTED__ && __has_include_next(<float.h>)
34
+
35
+ # include_next <float.h>
36
+
37
+ #endif
38
+
39
+ #include <__float_float.h>
40
+ #undef __need_float_float
41
+ #endif
42
+
43
+ #ifdef __need_infinity_nan
44
+ #include <__float_infinity_nan.h>
45
+ #undef __need_infinity_nan
46
+ #endif
47
+
48
+ #endif /* __MVS__ */
@@ -0,0 +1,220 @@
1
+ /*===---- fma4intrin.h - FMA4 intrinsics -----------------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef __X86INTRIN_H
11
+ #error "Never use <fma4intrin.h> directly; include <x86intrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __FMA4INTRIN_H
15
+ #define __FMA4INTRIN_H
16
+
17
+ #include <pmmintrin.h>
18
+
19
+ /* Define the default attributes for the functions in this file. */
20
+ #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("fma4"), __min_vector_width__(128)))
21
+ #define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("fma4"), __min_vector_width__(256)))
22
+
23
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
24
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
25
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
26
+ #else
27
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
28
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
29
+ #endif
30
+
31
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
32
+ _mm_macc_ps(__m128 __A, __m128 __B, __m128 __C) {
33
+ return (__m128)__builtin_elementwise_fma((__v4sf)__A, (__v4sf)__B,
34
+ (__v4sf)__C);
35
+ }
36
+
37
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
38
+ _mm_macc_pd(__m128d __A, __m128d __B, __m128d __C) {
39
+ return (__m128d)__builtin_elementwise_fma((__v2df)__A, (__v2df)__B,
40
+ (__v2df)__C);
41
+ }
42
+
43
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
44
+ _mm_macc_ss(__m128 __A, __m128 __B, __m128 __C) {
45
+ return _mm_set_ss(__builtin_elementwise_fma(__A[0], __B[0], __C[0]));
46
+ }
47
+
48
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
49
+ _mm_macc_sd(__m128d __A, __m128d __B, __m128d __C) {
50
+ return _mm_set_sd(__builtin_elementwise_fma(__A[0], __B[0], __C[0]));
51
+ }
52
+
53
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
54
+ _mm_msub_ps(__m128 __A, __m128 __B, __m128 __C) {
55
+ return (__m128)__builtin_elementwise_fma((__v4sf)__A, (__v4sf)__B,
56
+ -(__v4sf)__C);
57
+ }
58
+
59
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
60
+ _mm_msub_pd(__m128d __A, __m128d __B, __m128d __C) {
61
+ return (__m128d)__builtin_elementwise_fma((__v2df)__A, (__v2df)__B,
62
+ -(__v2df)__C);
63
+ }
64
+
65
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
66
+ _mm_msub_ss(__m128 __A, __m128 __B, __m128 __C) {
67
+ return _mm_set_ss(__builtin_elementwise_fma(__A[0], __B[0], -__C[0]));
68
+ }
69
+
70
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
71
+ _mm_msub_sd(__m128d __A, __m128d __B, __m128d __C) {
72
+ return _mm_set_sd(__builtin_elementwise_fma(__A[0], __B[0], -__C[0]));
73
+ }
74
+
75
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
76
+ _mm_nmacc_ps(__m128 __A, __m128 __B, __m128 __C) {
77
+ return (__m128)__builtin_elementwise_fma(-(__v4sf)__A, (__v4sf)__B,
78
+ (__v4sf)__C);
79
+ }
80
+
81
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
82
+ _mm_nmacc_pd(__m128d __A, __m128d __B, __m128d __C) {
83
+ return (__m128d)__builtin_elementwise_fma(-(__v2df)__A, (__v2df)__B,
84
+ (__v2df)__C);
85
+ }
86
+
87
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
88
+ _mm_nmacc_ss(__m128 __A, __m128 __B, __m128 __C) {
89
+ return _mm_set_ss(__builtin_elementwise_fma(-__A[0], __B[0], __C[0]));
90
+ }
91
+
92
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
93
+ _mm_nmacc_sd(__m128d __A, __m128d __B, __m128d __C) {
94
+ return _mm_set_sd(__builtin_elementwise_fma(-__A[0], __B[0], __C[0]));
95
+ }
96
+
97
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
98
+ _mm_nmsub_ps(__m128 __A, __m128 __B, __m128 __C) {
99
+ return (__m128)__builtin_elementwise_fma(-(__v4sf)__A, (__v4sf)__B,
100
+ -(__v4sf)__C);
101
+ }
102
+
103
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
104
+ _mm_nmsub_pd(__m128d __A, __m128d __B, __m128d __C) {
105
+ return (__m128d)__builtin_elementwise_fma(-(__v2df)__A, (__v2df)__B,
106
+ -(__v2df)__C);
107
+ }
108
+
109
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
110
+ _mm_nmsub_ss(__m128 __A, __m128 __B, __m128 __C) {
111
+ return _mm_set_ss(__builtin_elementwise_fma(-__A[0], __B[0], -__C[0]));
112
+ }
113
+
114
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
115
+ _mm_nmsub_sd(__m128d __A, __m128d __B, __m128d __C) {
116
+ return _mm_set_sd(__builtin_elementwise_fma(-__A[0], __B[0], -__C[0]));
117
+ }
118
+
119
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
120
+ _mm_maddsub_ps(__m128 __A, __m128 __B, __m128 __C)
121
+ {
122
+ return (__m128)__builtin_ia32_vfmaddsubps((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
123
+ }
124
+
125
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128
126
+ _mm_maddsub_pd(__m128d __A, __m128d __B, __m128d __C)
127
+ {
128
+ return (__m128d)__builtin_ia32_vfmaddsubpd((__v2df)__A, (__v2df)__B, (__v2df)__C);
129
+ }
130
+
131
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
132
+ _mm_msubadd_ps(__m128 __A, __m128 __B, __m128 __C)
133
+ {
134
+ return (__m128)__builtin_ia32_vfmaddsubps((__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
135
+ }
136
+
137
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128
138
+ _mm_msubadd_pd(__m128d __A, __m128d __B, __m128d __C)
139
+ {
140
+ return (__m128d)__builtin_ia32_vfmaddsubpd((__v2df)__A, (__v2df)__B, -(__v2df)__C);
141
+ }
142
+
143
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
144
+ _mm256_macc_ps(__m256 __A, __m256 __B, __m256 __C) {
145
+ return (__m256)__builtin_elementwise_fma((__v8sf)__A, (__v8sf)__B,
146
+ (__v8sf)__C);
147
+ }
148
+
149
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
150
+ _mm256_macc_pd(__m256d __A, __m256d __B, __m256d __C) {
151
+ return (__m256d)__builtin_elementwise_fma((__v4df)__A, (__v4df)__B,
152
+ (__v4df)__C);
153
+ }
154
+
155
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
156
+ _mm256_msub_ps(__m256 __A, __m256 __B, __m256 __C) {
157
+ return (__m256)__builtin_elementwise_fma((__v8sf)__A, (__v8sf)__B,
158
+ -(__v8sf)__C);
159
+ }
160
+
161
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
162
+ _mm256_msub_pd(__m256d __A, __m256d __B, __m256d __C) {
163
+ return (__m256d)__builtin_elementwise_fma((__v4df)__A, (__v4df)__B,
164
+ -(__v4df)__C);
165
+ }
166
+
167
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
168
+ _mm256_nmacc_ps(__m256 __A, __m256 __B, __m256 __C) {
169
+ return (__m256)__builtin_elementwise_fma(-(__v8sf)__A, (__v8sf)__B,
170
+ (__v8sf)__C);
171
+ }
172
+
173
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
174
+ _mm256_nmacc_pd(__m256d __A, __m256d __B, __m256d __C) {
175
+ return (__m256d)__builtin_elementwise_fma(-(__v4df)__A, (__v4df)__B,
176
+ (__v4df)__C);
177
+ }
178
+
179
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
180
+ _mm256_nmsub_ps(__m256 __A, __m256 __B, __m256 __C) {
181
+ return (__m256)__builtin_elementwise_fma(-(__v8sf)__A, (__v8sf)__B,
182
+ -(__v8sf)__C);
183
+ }
184
+
185
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
186
+ _mm256_nmsub_pd(__m256d __A, __m256d __B, __m256d __C) {
187
+ return (__m256d)__builtin_elementwise_fma(-(__v4df)__A, (__v4df)__B,
188
+ -(__v4df)__C);
189
+ }
190
+
191
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
192
+ _mm256_maddsub_ps(__m256 __A, __m256 __B, __m256 __C)
193
+ {
194
+ return (__m256)__builtin_ia32_vfmaddsubps256((__v8sf)__A, (__v8sf)__B, (__v8sf)__C);
195
+ }
196
+
197
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256
198
+ _mm256_maddsub_pd(__m256d __A, __m256d __B, __m256d __C)
199
+ {
200
+ return (__m256d)__builtin_ia32_vfmaddsubpd256((__v4df)__A, (__v4df)__B, (__v4df)__C);
201
+ }
202
+
203
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
204
+ _mm256_msubadd_ps(__m256 __A, __m256 __B, __m256 __C)
205
+ {
206
+ return (__m256)__builtin_ia32_vfmaddsubps256((__v8sf)__A, (__v8sf)__B, -(__v8sf)__C);
207
+ }
208
+
209
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256
210
+ _mm256_msubadd_pd(__m256d __A, __m256d __B, __m256d __C)
211
+ {
212
+ return (__m256d)__builtin_ia32_vfmaddsubpd256((__v4df)__A, (__v4df)__B, -(__v4df)__C);
213
+ }
214
+
215
+ #undef __DEFAULT_FN_ATTRS128
216
+ #undef __DEFAULT_FN_ATTRS256
217
+ #undef __DEFAULT_FN_ATTRS128_CONSTEXPR
218
+ #undef __DEFAULT_FN_ATTRS256_CONSTEXPR
219
+
220
+ #endif /* __FMA4INTRIN_H */