llvm-runtime-resources-darwin 0.0.0 → 22.1.8

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 (350) 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 +229 -0
  6. package/include/__clang_cuda_device_functions.h +1572 -0
  7. package/include/__clang_cuda_intrinsics.h +994 -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 +284 -0
  11. package/include/__clang_cuda_runtime_wrapper.h +522 -0
  12. package/include/__clang_cuda_texture_intrinsics.h +1177 -0
  13. package/include/__clang_hip_cmath.h +848 -0
  14. package/include/__clang_hip_libdevice_declares.h +340 -0
  15. package/include/__clang_hip_math.h +1405 -0
  16. package/include/__clang_hip_runtime_wrapper.h +165 -0
  17. package/include/__clang_hip_stdlib.h +43 -0
  18. package/include/__clang_spirv_builtins.h +217 -0
  19. package/include/__float_float.h +176 -0
  20. package/include/__float_header_macro.h +12 -0
  21. package/include/__float_infinity_nan.h +20 -0
  22. package/include/__stdarg___gnuc_va_list.h +13 -0
  23. package/include/__stdarg___va_copy.h +12 -0
  24. package/include/__stdarg_header_macro.h +12 -0
  25. package/include/__stdarg_va_arg.h +22 -0
  26. package/include/__stdarg_va_copy.h +12 -0
  27. package/include/__stdarg_va_list.h +13 -0
  28. package/include/__stddef_header_macro.h +12 -0
  29. package/include/__stddef_max_align_t.h +27 -0
  30. package/include/__stddef_null.h +29 -0
  31. package/include/__stddef_nullptr_t.h +29 -0
  32. package/include/__stddef_offsetof.h +17 -0
  33. package/include/__stddef_ptrdiff_t.h +20 -0
  34. package/include/__stddef_rsize_t.h +20 -0
  35. package/include/__stddef_size_t.h +20 -0
  36. package/include/__stddef_unreachable.h +21 -0
  37. package/include/__stddef_wchar_t.h +28 -0
  38. package/include/__stddef_wint_t.h +15 -0
  39. package/include/__wmmintrin_aes.h +140 -0
  40. package/include/__wmmintrin_pclmul.h +48 -0
  41. package/include/adcintrin.h +165 -0
  42. package/include/adxintrin.h +107 -0
  43. package/include/altivec.h +19364 -0
  44. package/include/amdgpuintrin.h +191 -0
  45. package/include/ammintrin.h +183 -0
  46. package/include/amo.h +131 -0
  47. package/include/amxavx512intrin.h +596 -0
  48. package/include/amxcomplexintrin.h +167 -0
  49. package/include/amxfp16intrin.h +93 -0
  50. package/include/amxfp8intrin.h +230 -0
  51. package/include/amxintrin.h +492 -0
  52. package/include/amxmovrsintrin.h +48 -0
  53. package/include/amxtf32intrin.h +108 -0
  54. package/include/andes_vector.h +16 -0
  55. package/include/arm64intr.h +35 -0
  56. package/include/arm_acle.h +865 -0
  57. package/include/arm_bf16.h +20 -0
  58. package/include/arm_cde.h +410 -0
  59. package/include/arm_cmse.h +217 -0
  60. package/include/arm_fp16.h +596 -0
  61. package/include/arm_mve.h +19187 -0
  62. package/include/arm_neon.h +74183 -0
  63. package/include/arm_neon_sve_bridge.h +182 -0
  64. package/include/arm_sme.h +3741 -0
  65. package/include/arm_sve.h +32278 -0
  66. package/include/arm_vector_types.h +432 -0
  67. package/include/armintr.h +31 -0
  68. package/include/avx10_2_512bf16intrin.h +568 -0
  69. package/include/avx10_2_512convertintrin.h +322 -0
  70. package/include/avx10_2_512minmaxintrin.h +127 -0
  71. package/include/avx10_2_512niintrin.h +314 -0
  72. package/include/avx10_2_512satcvtdsintrin.h +307 -0
  73. package/include/avx10_2_512satcvtintrin.h +301 -0
  74. package/include/avx10_2bf16intrin.h +1094 -0
  75. package/include/avx10_2convertintrin.h +3257 -0
  76. package/include/avx10_2copyintrin.h +66 -0
  77. package/include/avx10_2minmaxintrin.h +232 -0
  78. package/include/avx10_2niintrin.h +409 -0
  79. package/include/avx10_2satcvtdsintrin.h +376 -0
  80. package/include/avx10_2satcvtintrin.h +312 -0
  81. package/include/avx2intrin.h +5191 -0
  82. package/include/avx512bf16intrin.h +292 -0
  83. package/include/avx512bitalgintrin.h +75 -0
  84. package/include/avx512bwintrin.h +1895 -0
  85. package/include/avx512cdintrin.h +112 -0
  86. package/include/avx512dqintrin.h +1350 -0
  87. package/include/avx512fintrin.h +9378 -0
  88. package/include/avx512fp16intrin.h +3355 -0
  89. package/include/avx512ifmaintrin.h +68 -0
  90. package/include/avx512ifmavlintrin.h +138 -0
  91. package/include/avx512vbmi2intrin.h +368 -0
  92. package/include/avx512vbmiintrin.h +98 -0
  93. package/include/avx512vbmivlintrin.h +179 -0
  94. package/include/avx512vlbf16intrin.h +527 -0
  95. package/include/avx512vlbitalgintrin.h +135 -0
  96. package/include/avx512vlbwintrin.h +3064 -0
  97. package/include/avx512vlcdintrin.h +202 -0
  98. package/include/avx512vldqintrin.h +1156 -0
  99. package/include/avx512vlfp16intrin.h +2090 -0
  100. package/include/avx512vlintrin.h +8083 -0
  101. package/include/avx512vlvbmi2intrin.h +710 -0
  102. package/include/avx512vlvnniintrin.h +313 -0
  103. package/include/avx512vlvp2intersectintrin.h +123 -0
  104. package/include/avx512vnniintrin.h +116 -0
  105. package/include/avx512vp2intersectintrin.h +77 -0
  106. package/include/avx512vpopcntdqintrin.h +62 -0
  107. package/include/avx512vpopcntdqvlintrin.h +105 -0
  108. package/include/avxifmaintrin.h +193 -0
  109. package/include/avxintrin.h +5064 -0
  110. package/include/avxneconvertintrin.h +484 -0
  111. package/include/avxvnniint16intrin.h +451 -0
  112. package/include/avxvnniint8intrin.h +454 -0
  113. package/include/avxvnniintrin.h +233 -0
  114. package/include/bmi2intrin.h +253 -0
  115. package/include/bmiintrin.h +604 -0
  116. package/include/builtins.h +19 -0
  117. package/include/cet.h +66 -0
  118. package/include/cetintrin.h +115 -0
  119. package/include/cldemoteintrin.h +36 -0
  120. package/include/clflushoptintrin.h +36 -0
  121. package/include/clwbintrin.h +38 -0
  122. package/include/clzerointrin.h +38 -0
  123. package/include/cmpccxaddintrin.h +70 -0
  124. package/include/cpuid.h +451 -0
  125. package/include/crc32intrin.h +100 -0
  126. package/include/cuda_wrappers/__utility/declval.h +28 -0
  127. package/include/cuda_wrappers/algorithm +116 -0
  128. package/include/cuda_wrappers/bits/basic_string.h +9 -0
  129. package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  130. package/include/cuda_wrappers/bits/c++config.h +61 -0
  131. package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  132. package/include/cuda_wrappers/cmath +44 -0
  133. package/include/cuda_wrappers/complex +90 -0
  134. package/include/cuda_wrappers/new +108 -0
  135. package/include/emmintrin.h +4940 -0
  136. package/include/enqcmdintrin.h +63 -0
  137. package/include/f16cintrin.h +176 -0
  138. package/include/float.h +48 -0
  139. package/include/fma4intrin.h +220 -0
  140. package/include/fmaintrin.h +826 -0
  141. package/include/fuzzer/FuzzedDataProvider.h +397 -0
  142. package/include/fxsrintrin.h +91 -0
  143. package/include/gfniintrin.h +238 -0
  144. package/include/gpuintrin.h +330 -0
  145. package/include/hexagon_circ_brev_intrinsics.h +298 -0
  146. package/include/hexagon_protos.h +8439 -0
  147. package/include/hexagon_types.h +2628 -0
  148. package/include/hresetintrin.h +49 -0
  149. package/include/htmintrin.h +212 -0
  150. package/include/htmxlintrin.h +345 -0
  151. package/include/hvx_hexagon_protos.h +5399 -0
  152. package/include/ia32intrin.h +863 -0
  153. package/include/immintrin.h +595 -0
  154. package/include/intrin.h +491 -0
  155. package/include/intrin0.h +256 -0
  156. package/include/inttypes.h +101 -0
  157. package/include/invpcidintrin.h +23 -0
  158. package/include/iso646.h +31 -0
  159. package/include/keylockerintrin.h +518 -0
  160. package/include/larchintrin.h +260 -0
  161. package/include/lasxintrin.h +3999 -0
  162. package/include/limits.h +133 -0
  163. package/include/llvm_libc_wrappers/assert.h +32 -0
  164. package/include/llvm_libc_wrappers/ctype.h +28 -0
  165. package/include/llvm_libc_wrappers/inttypes.h +32 -0
  166. package/include/llvm_libc_wrappers/stdio.h +52 -0
  167. package/include/llvm_libc_wrappers/stdlib.h +32 -0
  168. package/include/llvm_libc_wrappers/string.h +28 -0
  169. package/include/llvm_libc_wrappers/time.h +28 -0
  170. package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  171. package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  172. package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  173. package/include/lsxintrin.h +3752 -0
  174. package/include/lwpintrin.h +136 -0
  175. package/include/lzcntintrin.h +109 -0
  176. package/include/mm3dnow.h +22 -0
  177. package/include/mm_malloc.h +67 -0
  178. package/include/mmintrin.h +1541 -0
  179. package/include/module.modulemap +360 -0
  180. package/include/movdirintrin.h +49 -0
  181. package/include/movrs_avx10_2_512intrin.h +98 -0
  182. package/include/movrs_avx10_2intrin.h +174 -0
  183. package/include/movrsintrin.h +59 -0
  184. package/include/msa.h +573 -0
  185. package/include/mwaitxintrin.h +62 -0
  186. package/include/nmmintrin.h +20 -0
  187. package/include/nvptxintrin.h +219 -0
  188. package/include/opencl-c-base.h +758 -0
  189. package/include/opencl-c.h +18676 -0
  190. package/include/openmp_wrappers/__clang_openmp_device_functions.h +104 -0
  191. package/include/openmp_wrappers/cmath +132 -0
  192. package/include/openmp_wrappers/complex +55 -0
  193. package/include/openmp_wrappers/complex.h +35 -0
  194. package/include/openmp_wrappers/complex_cmath.h +393 -0
  195. package/include/openmp_wrappers/math.h +61 -0
  196. package/include/openmp_wrappers/new +48 -0
  197. package/include/pconfigintrin.h +40 -0
  198. package/include/pkuintrin.h +34 -0
  199. package/include/pmmintrin.h +302 -0
  200. package/include/popcntintrin.h +59 -0
  201. package/include/ppc_wrappers/bmi2intrin.h +134 -0
  202. package/include/ppc_wrappers/bmiintrin.h +165 -0
  203. package/include/ppc_wrappers/emmintrin.h +2269 -0
  204. package/include/ppc_wrappers/immintrin.h +27 -0
  205. package/include/ppc_wrappers/mm_malloc.h +45 -0
  206. package/include/ppc_wrappers/mmintrin.h +1453 -0
  207. package/include/ppc_wrappers/nmmintrin.h +26 -0
  208. package/include/ppc_wrappers/pmmintrin.h +145 -0
  209. package/include/ppc_wrappers/smmintrin.h +683 -0
  210. package/include/ppc_wrappers/tmmintrin.h +453 -0
  211. package/include/ppc_wrappers/x86gprintrin.h +17 -0
  212. package/include/ppc_wrappers/x86intrin.h +28 -0
  213. package/include/ppc_wrappers/xmmintrin.h +1827 -0
  214. package/include/prfchiintrin.h +61 -0
  215. package/include/prfchwintrin.h +57 -0
  216. package/include/profile/InstrProfData.inc +1001 -0
  217. package/include/profile/instr_prof_interface.h +88 -0
  218. package/include/ptrauth.h +407 -0
  219. package/include/ptwriteintrin.h +37 -0
  220. package/include/raointintrin.h +203 -0
  221. package/include/rdpruintrin.h +57 -0
  222. package/include/rdseedintrin.h +105 -0
  223. package/include/riscv_bitmanip.h +195 -0
  224. package/include/riscv_corev_alu.h +128 -0
  225. package/include/riscv_crypto.h +170 -0
  226. package/include/riscv_mips.h +34 -0
  227. package/include/riscv_nds.h +89 -0
  228. package/include/riscv_ntlh.h +26 -0
  229. package/include/riscv_vector.h +422 -0
  230. package/include/rtmintrin.h +45 -0
  231. package/include/s390intrin.h +25 -0
  232. package/include/sanitizer/allocator_interface.h +106 -0
  233. package/include/sanitizer/asan_interface.h +348 -0
  234. package/include/sanitizer/common_interface_defs.h +544 -0
  235. package/include/sanitizer/coverage_interface.h +36 -0
  236. package/include/sanitizer/dfsan_interface.h +220 -0
  237. package/include/sanitizer/hwasan_interface.h +109 -0
  238. package/include/sanitizer/linux_syscall_hooks.h +3112 -0
  239. package/include/sanitizer/lsan_interface.h +89 -0
  240. package/include/sanitizer/msan_interface.h +135 -0
  241. package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
  242. package/include/sanitizer/rtsan_interface.h +75 -0
  243. package/include/sanitizer/scudo_interface.h +38 -0
  244. package/include/sanitizer/tsan_interface.h +316 -0
  245. package/include/sanitizer/tsan_interface_atomic.h +223 -0
  246. package/include/sanitizer/ubsan_interface.h +34 -0
  247. package/include/serializeintrin.h +30 -0
  248. package/include/sgxintrin.h +60 -0
  249. package/include/sha512intrin.h +200 -0
  250. package/include/shaintrin.h +190 -0
  251. package/include/sifive_vector.h +174 -0
  252. package/include/sm3intrin.h +238 -0
  253. package/include/sm4evexintrin.h +32 -0
  254. package/include/sm4intrin.h +269 -0
  255. package/include/smmintrin.h +2352 -0
  256. package/include/spirvintrin.h +194 -0
  257. package/include/stdalign.h +24 -0
  258. package/include/stdarg.h +75 -0
  259. package/include/stdatomic.h +204 -0
  260. package/include/stdbool.h +39 -0
  261. package/include/stdckdint.h +42 -0
  262. package/include/stdcountof.h +15 -0
  263. package/include/stddef.h +139 -0
  264. package/include/stddefer.h +19 -0
  265. package/include/stdint.h +844 -0
  266. package/include/stdnoreturn.h +35 -0
  267. package/include/tbmintrin.h +128 -0
  268. package/include/tgmath.h +1368 -0
  269. package/include/tmmintrin.h +779 -0
  270. package/include/tsxldtrkintrin.h +56 -0
  271. package/include/uintrintrin.h +157 -0
  272. package/include/unwind.h +332 -0
  273. package/include/usermsrintrin.h +51 -0
  274. package/include/vadefs.h +51 -0
  275. package/include/vaesintrin.h +86 -0
  276. package/include/varargs.h +16 -0
  277. package/include/vecintrin.h +12868 -0
  278. package/include/velintrin.h +71 -0
  279. package/include/velintrin_approx.h +120 -0
  280. package/include/velintrin_gen.h +1257 -0
  281. package/include/vpclmulqdqintrin.h +30 -0
  282. package/include/waitpkgintrin.h +42 -0
  283. package/include/wasm_simd128.h +2143 -0
  284. package/include/wbnoinvdintrin.h +24 -0
  285. package/include/wmmintrin.h +23 -0
  286. package/include/x86gprintrin.h +49 -0
  287. package/include/x86intrin.h +35 -0
  288. package/include/xmmintrin.h +3175 -0
  289. package/include/xopintrin.h +780 -0
  290. package/include/xsavecintrin.h +84 -0
  291. package/include/xsaveintrin.h +63 -0
  292. package/include/xsaveoptintrin.h +34 -0
  293. package/include/xsavesintrin.h +44 -0
  294. package/include/xtestintrin.h +27 -0
  295. package/include/yvals_core.h +25 -0
  296. package/include/zos_wrappers/builtins.h +18 -0
  297. package/index.js +5 -0
  298. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  299. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  300. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  301. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  302. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  303. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  304. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  305. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  306. package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
  307. package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
  308. package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
  309. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  310. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  311. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  312. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  313. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  314. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  315. package/lib/darwin/libclang_rt.ios.a +0 -0
  316. package/lib/darwin/libclang_rt.iossim.a +0 -0
  317. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  318. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  319. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  320. package/lib/darwin/libclang_rt.osx.a +0 -0
  321. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  322. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  323. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  324. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  325. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  326. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  327. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  328. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  329. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  330. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  331. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  332. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  333. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  334. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  335. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  336. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  337. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  338. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  339. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  340. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  341. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  342. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  343. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  344. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  345. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  346. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  347. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  348. package/package.json +40 -1
  349. package/share/asan_ignorelist.txt +14 -0
  350. package/share/cfi_ignorelist.txt +17 -0
@@ -0,0 +1,826 @@
1
+ /*===---- fmaintrin.h - FMA 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 <fmaintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __FMAINTRIN_H
15
+ #define __FMAINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS128 \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("fma"), \
20
+ __min_vector_width__(128)))
21
+ #define __DEFAULT_FN_ATTRS256 \
22
+ __attribute__((__always_inline__, __nodebug__, __target__("fma"), \
23
+ __min_vector_width__(256)))
24
+
25
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
26
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
27
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
28
+ #else
29
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
30
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
31
+ #endif
32
+
33
+ /// Computes a multiply-add of 128-bit vectors of [4 x float].
34
+ /// For each element, computes <c> (__A * __B) + __C </c>.
35
+ ///
36
+ /// \headerfile <immintrin.h>
37
+ ///
38
+ /// This intrinsic corresponds to the \c VFMADD213PS instruction.
39
+ ///
40
+ /// \param __A
41
+ /// A 128-bit vector of [4 x float] containing the multiplicand.
42
+ /// \param __B
43
+ /// A 128-bit vector of [4 x float] containing the multiplier.
44
+ /// \param __C
45
+ /// A 128-bit vector of [4 x float] containing the addend.
46
+ /// \returns A 128-bit vector of [4 x float] containing the result.
47
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
48
+ _mm_fmadd_ps(__m128 __A, __m128 __B, __m128 __C)
49
+ {
50
+ return (__m128)__builtin_elementwise_fma((__v4sf)__A, (__v4sf)__B,
51
+ (__v4sf)__C);
52
+ }
53
+
54
+ /// Computes a multiply-add of 128-bit vectors of [2 x double].
55
+ /// For each element, computes <c> (__A * __B) + __C </c>.
56
+ ///
57
+ /// \headerfile <immintrin.h>
58
+ ///
59
+ /// This intrinsic corresponds to the \c VFMADD213PD instruction.
60
+ ///
61
+ /// \param __A
62
+ /// A 128-bit vector of [2 x double] containing the multiplicand.
63
+ /// \param __B
64
+ /// A 128-bit vector of [2 x double] containing the multiplier.
65
+ /// \param __C
66
+ /// A 128-bit vector of [2 x double] containing the addend.
67
+ /// \returns A 128-bit [2 x double] vector containing the result.
68
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
69
+ _mm_fmadd_pd(__m128d __A, __m128d __B, __m128d __C)
70
+ {
71
+ return (__m128d)__builtin_elementwise_fma((__v2df)__A, (__v2df)__B,
72
+ (__v2df)__C);
73
+ }
74
+
75
+ /// Computes a scalar multiply-add of the single-precision values in the
76
+ /// low 32 bits of 128-bit vectors of [4 x float].
77
+ ///
78
+ /// \code{.operation}
79
+ /// result[31:0] = (__A[31:0] * __B[31:0]) + __C[31:0]
80
+ /// result[127:32] = __A[127:32]
81
+ /// \endcode
82
+ ///
83
+ /// \headerfile <immintrin.h>
84
+ ///
85
+ /// This intrinsic corresponds to the \c VFMADD213SS instruction.
86
+ ///
87
+ /// \param __A
88
+ /// A 128-bit vector of [4 x float] containing the multiplicand in the low
89
+ /// 32 bits.
90
+ /// \param __B
91
+ /// A 128-bit vector of [4 x float] containing the multiplier in the low
92
+ /// 32 bits.
93
+ /// \param __C
94
+ /// A 128-bit vector of [4 x float] containing the addend in the low
95
+ /// 32 bits.
96
+ /// \returns A 128-bit vector of [4 x float] containing the result in the low
97
+ /// 32 bits and a copy of \a __A[127:32] in the upper 96 bits.
98
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
99
+ _mm_fmadd_ss(__m128 __A, __m128 __B, __m128 __C) {
100
+ __A[0] = __builtin_elementwise_fma(__A[0], __B[0], __C[0]);
101
+ return __A;
102
+ }
103
+
104
+ /// Computes a scalar multiply-add of the double-precision values in the
105
+ /// low 64 bits of 128-bit vectors of [2 x double].
106
+ ///
107
+ /// \code{.operation}
108
+ /// result[63:0] = (__A[63:0] * __B[63:0]) + __C[63:0]
109
+ /// result[127:64] = __A[127:64]
110
+ /// \endcode
111
+ ///
112
+ /// \headerfile <immintrin.h>
113
+ ///
114
+ /// This intrinsic corresponds to the \c VFMADD213SD instruction.
115
+ ///
116
+ /// \param __A
117
+ /// A 128-bit vector of [2 x double] containing the multiplicand in the low
118
+ /// 64 bits.
119
+ /// \param __B
120
+ /// A 128-bit vector of [2 x double] containing the multiplier in the low
121
+ /// 64 bits.
122
+ /// \param __C
123
+ /// A 128-bit vector of [2 x double] containing the addend in the low
124
+ /// 64 bits.
125
+ /// \returns A 128-bit vector of [2 x double] containing the result in the low
126
+ /// 64 bits and a copy of \a __A[127:64] in the upper 64 bits.
127
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
128
+ _mm_fmadd_sd(__m128d __A, __m128d __B, __m128d __C) {
129
+ __A[0] = __builtin_elementwise_fma(__A[0], __B[0], __C[0]);
130
+ return __A;
131
+ }
132
+
133
+ /// Computes a multiply-subtract of 128-bit vectors of [4 x float].
134
+ /// For each element, computes <c> (__A * __B) - __C </c>.
135
+ ///
136
+ /// \headerfile <immintrin.h>
137
+ ///
138
+ /// This intrinsic corresponds to the \c VFMSUB213PS instruction.
139
+ ///
140
+ /// \param __A
141
+ /// A 128-bit vector of [4 x float] containing the multiplicand.
142
+ /// \param __B
143
+ /// A 128-bit vector of [4 x float] containing the multiplier.
144
+ /// \param __C
145
+ /// A 128-bit vector of [4 x float] containing the subtrahend.
146
+ /// \returns A 128-bit vector of [4 x float] containing the result.
147
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
148
+ _mm_fmsub_ps(__m128 __A, __m128 __B, __m128 __C)
149
+ {
150
+ return (__m128)__builtin_elementwise_fma((__v4sf)__A, (__v4sf)__B,
151
+ -(__v4sf)__C);
152
+ }
153
+
154
+ /// Computes a multiply-subtract of 128-bit vectors of [2 x double].
155
+ /// For each element, computes <c> (__A * __B) - __C </c>.
156
+ ///
157
+ /// \headerfile <immintrin.h>
158
+ ///
159
+ /// This intrinsic corresponds to the \c VFMSUB213PD instruction.
160
+ ///
161
+ /// \param __A
162
+ /// A 128-bit vector of [2 x double] containing the multiplicand.
163
+ /// \param __B
164
+ /// A 128-bit vector of [2 x double] containing the multiplier.
165
+ /// \param __C
166
+ /// A 128-bit vector of [2 x double] containing the addend.
167
+ /// \returns A 128-bit vector of [2 x double] containing the result.
168
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
169
+ _mm_fmsub_pd(__m128d __A, __m128d __B, __m128d __C)
170
+ {
171
+ return (__m128d)__builtin_elementwise_fma((__v2df)__A, (__v2df)__B,
172
+ -(__v2df)__C);
173
+ }
174
+
175
+ /// Computes a scalar multiply-subtract of the single-precision values in
176
+ /// the low 32 bits of 128-bit vectors of [4 x float].
177
+ ///
178
+ /// \code{.operation}
179
+ /// result[31:0] = (__A[31:0] * __B[31:0]) - __C[31:0]
180
+ /// result[127:32] = __A[127:32]
181
+ /// \endcode
182
+ ///
183
+ /// \headerfile <immintrin.h>
184
+ ///
185
+ /// This intrinsic corresponds to the \c VFMSUB213SS instruction.
186
+ ///
187
+ /// \param __A
188
+ /// A 128-bit vector of [4 x float] containing the multiplicand in the low
189
+ /// 32 bits.
190
+ /// \param __B
191
+ /// A 128-bit vector of [4 x float] containing the multiplier in the low
192
+ /// 32 bits.
193
+ /// \param __C
194
+ /// A 128-bit vector of [4 x float] containing the subtrahend in the low
195
+ /// 32 bits.
196
+ /// \returns A 128-bit vector of [4 x float] containing the result in the low
197
+ /// 32 bits, and a copy of \a __A[127:32] in the upper 96 bits.
198
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
199
+ _mm_fmsub_ss(__m128 __A, __m128 __B, __m128 __C) {
200
+ __A[0] = __builtin_elementwise_fma(__A[0], __B[0], -__C[0]);
201
+ return __A;
202
+ }
203
+
204
+ /// Computes a scalar multiply-subtract of the double-precision values in
205
+ /// the low 64 bits of 128-bit vectors of [2 x double].
206
+ ///
207
+ /// \code{.operation}
208
+ /// result[63:0] = (__A[63:0] * __B[63:0]) - __C[63:0]
209
+ /// result[127:64] = __A[127:64]
210
+ /// \endcode
211
+ ///
212
+ /// \headerfile <immintrin.h>
213
+ ///
214
+ /// This intrinsic corresponds to the \c VFMSUB213SD instruction.
215
+ ///
216
+ /// \param __A
217
+ /// A 128-bit vector of [2 x double] containing the multiplicand in the low
218
+ /// 64 bits.
219
+ /// \param __B
220
+ /// A 128-bit vector of [2 x double] containing the multiplier in the low
221
+ /// 64 bits.
222
+ /// \param __C
223
+ /// A 128-bit vector of [2 x double] containing the subtrahend in the low
224
+ /// 64 bits.
225
+ /// \returns A 128-bit vector of [2 x double] containing the result in the low
226
+ /// 64 bits, and a copy of \a __A[127:64] in the upper 64 bits.
227
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
228
+ _mm_fmsub_sd(__m128d __A, __m128d __B, __m128d __C) {
229
+ __A[0] = __builtin_elementwise_fma(__A[0], __B[0], -__C[0]);
230
+ return __A;
231
+ }
232
+
233
+ /// Computes a negated multiply-add of 128-bit vectors of [4 x float].
234
+ /// For each element, computes <c> -(__A * __B) + __C </c>.
235
+ ///
236
+ /// \headerfile <immintrin.h>
237
+ ///
238
+ /// This intrinsic corresponds to the \c VFNMADD213DPS instruction.
239
+ ///
240
+ /// \param __A
241
+ /// A 128-bit vector of [4 x float] containing the multiplicand.
242
+ /// \param __B
243
+ /// A 128-bit vector of [4 x float] containing the multiplier.
244
+ /// \param __C
245
+ /// A 128-bit vector of [4 x float] containing the addend.
246
+ /// \returns A 128-bit [4 x float] vector containing the result.
247
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
248
+ _mm_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C)
249
+ {
250
+ return (__m128)__builtin_elementwise_fma(-(__v4sf)__A, (__v4sf)__B,
251
+ (__v4sf)__C);
252
+ }
253
+
254
+ /// Computes a negated multiply-add of 128-bit vectors of [2 x double].
255
+ /// For each element, computes <c> -(__A * __B) + __C </c>.
256
+ ///
257
+ /// \headerfile <immintrin.h>
258
+ ///
259
+ /// This intrinsic corresponds to the \c VFNMADD213PD instruction.
260
+ ///
261
+ /// \param __A
262
+ /// A 128-bit vector of [2 x double] containing the multiplicand.
263
+ /// \param __B
264
+ /// A 128-bit vector of [2 x double] containing the multiplier.
265
+ /// \param __C
266
+ /// A 128-bit vector of [2 x double] containing the addend.
267
+ /// \returns A 128-bit vector of [2 x double] containing the result.
268
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
269
+ _mm_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C)
270
+ {
271
+ return (__m128d)__builtin_elementwise_fma(-(__v2df)__A, (__v2df)__B,
272
+ (__v2df)__C);
273
+ }
274
+
275
+ /// Computes a scalar negated multiply-add of the single-precision values in
276
+ /// the low 32 bits of 128-bit vectors of [4 x float].
277
+ ///
278
+ /// \code{.operation}
279
+ /// result[31:0] = -(__A[31:0] * __B[31:0]) + __C[31:0]
280
+ /// result[127:32] = __A[127:32]
281
+ /// \endcode
282
+ ///
283
+ /// \headerfile <immintrin.h>
284
+ ///
285
+ /// This intrinsic corresponds to the \c VFNMADD213SS instruction.
286
+ ///
287
+ /// \param __A
288
+ /// A 128-bit vector of [4 x float] containing the multiplicand in the low
289
+ /// 32 bits.
290
+ /// \param __B
291
+ /// A 128-bit vector of [4 x float] containing the multiplier in the low
292
+ /// 32 bits.
293
+ /// \param __C
294
+ /// A 128-bit vector of [4 x float] containing the addend in the low
295
+ /// 32 bits.
296
+ /// \returns A 128-bit vector of [4 x float] containing the result in the low
297
+ /// 32 bits, and a copy of \a __A[127:32] in the upper 96 bits.
298
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
299
+ _mm_fnmadd_ss(__m128 __A, __m128 __B, __m128 __C) {
300
+ __A[0] = __builtin_elementwise_fma(__A[0], -__B[0], __C[0]);
301
+ return __A;
302
+ }
303
+
304
+ /// Computes a scalar negated multiply-add of the double-precision values
305
+ /// in the low 64 bits of 128-bit vectors of [2 x double].
306
+ ///
307
+ /// \code{.operation}
308
+ /// result[63:0] = -(__A[63:0] * __B[63:0]) + __C[63:0]
309
+ /// result[127:64] = __A[127:64]
310
+ /// \endcode
311
+ ///
312
+ /// \headerfile <immintrin.h>
313
+ ///
314
+ /// This intrinsic corresponds to the \c VFNMADD213SD instruction.
315
+ ///
316
+ /// \param __A
317
+ /// A 128-bit vector of [2 x double] containing the multiplicand in the low
318
+ /// 64 bits.
319
+ /// \param __B
320
+ /// A 128-bit vector of [2 x double] containing the multiplier in the low
321
+ /// 64 bits.
322
+ /// \param __C
323
+ /// A 128-bit vector of [2 x double] containing the addend in the low
324
+ /// 64 bits.
325
+ /// \returns A 128-bit vector of [2 x double] containing the result in the low
326
+ /// 64 bits, and a copy of \a __A[127:64] in the upper 64 bits.
327
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
328
+ _mm_fnmadd_sd(__m128d __A, __m128d __B, __m128d __C) {
329
+ __A[0] = __builtin_elementwise_fma(__A[0], -__B[0], __C[0]);
330
+ return __A;
331
+ }
332
+
333
+ /// Computes a negated multiply-subtract of 128-bit vectors of [4 x float].
334
+ /// For each element, computes <c> -(__A * __B) - __C </c>.
335
+ ///
336
+ /// \headerfile <immintrin.h>
337
+ ///
338
+ /// This intrinsic corresponds to the \c VFNMSUB213PS instruction.
339
+ ///
340
+ /// \param __A
341
+ /// A 128-bit vector of [4 x float] containing the multiplicand.
342
+ /// \param __B
343
+ /// A 128-bit vector of [4 x float] containing the multiplier.
344
+ /// \param __C
345
+ /// A 128-bit vector of [4 x float] containing the subtrahend.
346
+ /// \returns A 128-bit vector of [4 x float] containing the result.
347
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
348
+ _mm_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C)
349
+ {
350
+ return (__m128)__builtin_elementwise_fma(-(__v4sf)__A, (__v4sf)__B,
351
+ -(__v4sf)__C);
352
+ }
353
+
354
+ /// Computes a negated multiply-subtract of 128-bit vectors of [2 x double].
355
+ /// For each element, computes <c> -(__A * __B) - __C </c>.
356
+ ///
357
+ /// \headerfile <immintrin.h>
358
+ ///
359
+ /// This intrinsic corresponds to the \c VFNMSUB213PD instruction.
360
+ ///
361
+ /// \param __A
362
+ /// A 128-bit vector of [2 x double] containing the multiplicand.
363
+ /// \param __B
364
+ /// A 128-bit vector of [2 x double] containing the multiplier.
365
+ /// \param __C
366
+ /// A 128-bit vector of [2 x double] containing the subtrahend.
367
+ /// \returns A 128-bit vector of [2 x double] containing the result.
368
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
369
+ _mm_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C)
370
+ {
371
+ return (__m128d)__builtin_elementwise_fma(-(__v2df)__A, (__v2df)__B,
372
+ -(__v2df)__C);
373
+ }
374
+
375
+ /// Computes a scalar negated multiply-subtract of the single-precision
376
+ /// values in the low 32 bits of 128-bit vectors of [4 x float].
377
+ ///
378
+ /// \code{.operation}
379
+ /// result[31:0] = -(__A[31:0] * __B[31:0]) - __C[31:0]
380
+ /// result[127:32] = __A[127:32]
381
+ /// \endcode
382
+ ///
383
+ /// \headerfile <immintrin.h>
384
+ ///
385
+ /// This intrinsic corresponds to the \c VFNMSUB213SS instruction.
386
+ ///
387
+ /// \param __A
388
+ /// A 128-bit vector of [4 x float] containing the multiplicand in the low
389
+ /// 32 bits.
390
+ /// \param __B
391
+ /// A 128-bit vector of [4 x float] containing the multiplier in the low
392
+ /// 32 bits.
393
+ /// \param __C
394
+ /// A 128-bit vector of [4 x float] containing the subtrahend in the low
395
+ /// 32 bits.
396
+ /// \returns A 128-bit vector of [4 x float] containing the result in the low
397
+ /// 32 bits, and a copy of \a __A[127:32] in the upper 96 bits.
398
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
399
+ _mm_fnmsub_ss(__m128 __A, __m128 __B, __m128 __C) {
400
+ __A[0] = __builtin_elementwise_fma(__A[0], -__B[0], -__C[0]);
401
+ return __A;
402
+ }
403
+
404
+ /// Computes a scalar negated multiply-subtract of the double-precision
405
+ /// values in the low 64 bits of 128-bit vectors of [2 x double].
406
+ ///
407
+ /// \code{.operation}
408
+ /// result[63:0] = -(__A[63:0] * __B[63:0]) - __C[63:0]
409
+ /// result[127:64] = __A[127:64]
410
+ /// \endcode
411
+ ///
412
+ /// \headerfile <immintrin.h>
413
+ ///
414
+ /// This intrinsic corresponds to the \c VFNMSUB213SD instruction.
415
+ ///
416
+ /// \param __A
417
+ /// A 128-bit vector of [2 x double] containing the multiplicand in the low
418
+ /// 64 bits.
419
+ /// \param __B
420
+ /// A 128-bit vector of [2 x double] containing the multiplier in the low
421
+ /// 64 bits.
422
+ /// \param __C
423
+ /// A 128-bit vector of [2 x double] containing the subtrahend in the low
424
+ /// 64 bits.
425
+ /// \returns A 128-bit vector of [2 x double] containing the result in the low
426
+ /// 64 bits, and a copy of \a __A[127:64] in the upper 64 bits.
427
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
428
+ _mm_fnmsub_sd(__m128d __A, __m128d __B, __m128d __C) {
429
+ __A[0] = __builtin_elementwise_fma(__A[0], -__B[0], -__C[0]);
430
+ return __A;
431
+ }
432
+
433
+ /// Computes a multiply with alternating add/subtract of 128-bit vectors of
434
+ /// [4 x float].
435
+ ///
436
+ /// \code{.operation}
437
+ /// result[31:0] = (__A[31:0] * __B[31:0]) - __C[31:0]
438
+ /// result[63:32] = (__A[63:32] * __B[63:32]) + __C[63:32]
439
+ /// result[95:64] = (__A[95:64] * __B[95:64]) - __C[95:64]
440
+ /// result[127:96] = (__A[127:96] * __B[127:96]) + __C[127:96]
441
+ /// \endcode
442
+ ///
443
+ /// \headerfile <immintrin.h>
444
+ ///
445
+ /// This intrinsic corresponds to the \c VFMADDSUB213PS instruction.
446
+ ///
447
+ /// \param __A
448
+ /// A 128-bit vector of [4 x float] containing the multiplicand.
449
+ /// \param __B
450
+ /// A 128-bit vector of [4 x float] containing the multiplier.
451
+ /// \param __C
452
+ /// A 128-bit vector of [4 x float] containing the addend/subtrahend.
453
+ /// \returns A 128-bit vector of [4 x float] containing the result.
454
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
455
+ _mm_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C)
456
+ {
457
+ return (__m128)__builtin_ia32_vfmaddsubps((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
458
+ }
459
+
460
+ /// Computes a multiply with alternating add/subtract of 128-bit vectors of
461
+ /// [2 x double].
462
+ ///
463
+ /// \code{.operation}
464
+ /// result[63:0] = (__A[63:0] * __B[63:0]) - __C[63:0]
465
+ /// result[127:64] = (__A[127:64] * __B[127:64]) + __C[127:64]
466
+ /// \endcode
467
+ ///
468
+ /// \headerfile <immintrin.h>
469
+ ///
470
+ /// This intrinsic corresponds to the \c VFMADDSUB213PD instruction.
471
+ ///
472
+ /// \param __A
473
+ /// A 128-bit vector of [2 x double] containing the multiplicand.
474
+ /// \param __B
475
+ /// A 128-bit vector of [2 x double] containing the multiplier.
476
+ /// \param __C
477
+ /// A 128-bit vector of [2 x double] containing the addend/subtrahend.
478
+ /// \returns A 128-bit vector of [2 x double] containing the result.
479
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128
480
+ _mm_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C)
481
+ {
482
+ return (__m128d)__builtin_ia32_vfmaddsubpd((__v2df)__A, (__v2df)__B, (__v2df)__C);
483
+ }
484
+
485
+ /// Computes a multiply with alternating add/subtract of 128-bit vectors of
486
+ /// [4 x float].
487
+ ///
488
+ /// \code{.operation}
489
+ /// result[31:0] = (__A[31:0] * __B[31:0]) + __C[31:0]
490
+ /// result[63:32] = (__A[63:32] * __B[63:32]) - __C[63:32]
491
+ /// result[95:64] = (__A[95:64] * __B[95:64]) + __C[95:64]
492
+ /// result[127:96 = (__A[127:96] * __B[127:96]) - __C[127:96]
493
+ /// \endcode
494
+ ///
495
+ /// \headerfile <immintrin.h>
496
+ ///
497
+ /// This intrinsic corresponds to the \c VFMSUBADD213PS instruction.
498
+ ///
499
+ /// \param __A
500
+ /// A 128-bit vector of [4 x float] containing the multiplicand.
501
+ /// \param __B
502
+ /// A 128-bit vector of [4 x float] containing the multiplier.
503
+ /// \param __C
504
+ /// A 128-bit vector of [4 x float] containing the addend/subtrahend.
505
+ /// \returns A 128-bit vector of [4 x float] containing the result.
506
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
507
+ _mm_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C)
508
+ {
509
+ return (__m128)__builtin_ia32_vfmaddsubps((__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
510
+ }
511
+
512
+ /// Computes a multiply with alternating add/subtract of 128-bit vectors of
513
+ /// [2 x double].
514
+ ///
515
+ /// \code{.operation}
516
+ /// result[63:0] = (__A[63:0] * __B[63:0]) + __C[63:0]
517
+ /// result[127:64] = (__A[127:64] * __B[127:64]) - __C[127:64]
518
+ /// \endcode
519
+ ///
520
+ /// \headerfile <immintrin.h>
521
+ ///
522
+ /// This intrinsic corresponds to the \c VFMADDSUB213PD instruction.
523
+ ///
524
+ /// \param __A
525
+ /// A 128-bit vector of [2 x double] containing the multiplicand.
526
+ /// \param __B
527
+ /// A 128-bit vector of [2 x double] containing the multiplier.
528
+ /// \param __C
529
+ /// A 128-bit vector of [2 x double] containing the addend/subtrahend.
530
+ /// \returns A 128-bit vector of [2 x double] containing the result.
531
+ static __inline__ __m128d __DEFAULT_FN_ATTRS128
532
+ _mm_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C)
533
+ {
534
+ return (__m128d)__builtin_ia32_vfmaddsubpd((__v2df)__A, (__v2df)__B, -(__v2df)__C);
535
+ }
536
+
537
+ /// Computes a multiply-add of 256-bit vectors of [8 x float].
538
+ /// For each element, computes <c> (__A * __B) + __C </c>.
539
+ ///
540
+ /// \headerfile <immintrin.h>
541
+ ///
542
+ /// This intrinsic corresponds to the \c VFMADD213PS instruction.
543
+ ///
544
+ /// \param __A
545
+ /// A 256-bit vector of [8 x float] containing the multiplicand.
546
+ /// \param __B
547
+ /// A 256-bit vector of [8 x float] containing the multiplier.
548
+ /// \param __C
549
+ /// A 256-bit vector of [8 x float] containing the addend.
550
+ /// \returns A 256-bit vector of [8 x float] containing the result.
551
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
552
+ _mm256_fmadd_ps(__m256 __A, __m256 __B, __m256 __C)
553
+ {
554
+ return (__m256)__builtin_elementwise_fma((__v8sf)__A, (__v8sf)__B,
555
+ (__v8sf)__C);
556
+ }
557
+
558
+ /// Computes a multiply-add of 256-bit vectors of [4 x double].
559
+ /// For each element, computes <c> (__A * __B) + __C </c>.
560
+ ///
561
+ /// \headerfile <immintrin.h>
562
+ ///
563
+ /// This intrinsic corresponds to the \c VFMADD213PD instruction.
564
+ ///
565
+ /// \param __A
566
+ /// A 256-bit vector of [4 x double] containing the multiplicand.
567
+ /// \param __B
568
+ /// A 256-bit vector of [4 x double] containing the multiplier.
569
+ /// \param __C
570
+ /// A 256-bit vector of [4 x double] containing the addend.
571
+ /// \returns A 256-bit vector of [4 x double] containing the result.
572
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
573
+ _mm256_fmadd_pd(__m256d __A, __m256d __B, __m256d __C)
574
+ {
575
+ return (__m256d)__builtin_elementwise_fma((__v4df)__A, (__v4df)__B,
576
+ (__v4df)__C);
577
+ }
578
+
579
+ /// Computes a multiply-subtract of 256-bit vectors of [8 x float].
580
+ /// For each element, computes <c> (__A * __B) - __C </c>.
581
+ ///
582
+ /// \headerfile <immintrin.h>
583
+ ///
584
+ /// This intrinsic corresponds to the \c VFMSUB213PS instruction.
585
+ ///
586
+ /// \param __A
587
+ /// A 256-bit vector of [8 x float] containing the multiplicand.
588
+ /// \param __B
589
+ /// A 256-bit vector of [8 x float] containing the multiplier.
590
+ /// \param __C
591
+ /// A 256-bit vector of [8 x float] containing the subtrahend.
592
+ /// \returns A 256-bit vector of [8 x float] containing the result.
593
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
594
+ _mm256_fmsub_ps(__m256 __A, __m256 __B, __m256 __C)
595
+ {
596
+ return (__m256)__builtin_elementwise_fma((__v8sf)__A, (__v8sf)__B,
597
+ -(__v8sf)__C);
598
+ }
599
+
600
+ /// Computes a multiply-subtract of 256-bit vectors of [4 x double].
601
+ /// For each element, computes <c> (__A * __B) - __C </c>.
602
+ ///
603
+ /// \headerfile <immintrin.h>
604
+ ///
605
+ /// This intrinsic corresponds to the \c VFMSUB213PD instruction.
606
+ ///
607
+ /// \param __A
608
+ /// A 256-bit vector of [4 x double] containing the multiplicand.
609
+ /// \param __B
610
+ /// A 256-bit vector of [4 x double] containing the multiplier.
611
+ /// \param __C
612
+ /// A 256-bit vector of [4 x double] containing the subtrahend.
613
+ /// \returns A 256-bit vector of [4 x double] containing the result.
614
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
615
+ _mm256_fmsub_pd(__m256d __A, __m256d __B, __m256d __C)
616
+ {
617
+ return (__m256d)__builtin_elementwise_fma((__v4df)__A, (__v4df)__B,
618
+ -(__v4df)__C);
619
+ }
620
+
621
+ /// Computes a negated multiply-add of 256-bit vectors of [8 x float].
622
+ /// For each element, computes <c> -(__A * __B) + __C </c>.
623
+ ///
624
+ /// \headerfile <immintrin.h>
625
+ ///
626
+ /// This intrinsic corresponds to the \c VFNMADD213PS instruction.
627
+ ///
628
+ /// \param __A
629
+ /// A 256-bit vector of [8 x float] containing the multiplicand.
630
+ /// \param __B
631
+ /// A 256-bit vector of [8 x float] containing the multiplier.
632
+ /// \param __C
633
+ /// A 256-bit vector of [8 x float] containing the addend.
634
+ /// \returns A 256-bit vector of [8 x float] containing the result.
635
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
636
+ _mm256_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C)
637
+ {
638
+ return (__m256)__builtin_elementwise_fma(-(__v8sf)__A, (__v8sf)__B,
639
+ (__v8sf)__C);
640
+ }
641
+
642
+ /// Computes a negated multiply-add of 256-bit vectors of [4 x double].
643
+ /// For each element, computes <c> -(__A * __B) + __C </c>.
644
+ ///
645
+ /// \headerfile <immintrin.h>
646
+ ///
647
+ /// This intrinsic corresponds to the \c VFNMADD213PD instruction.
648
+ ///
649
+ /// \param __A
650
+ /// A 256-bit vector of [4 x double] containing the multiplicand.
651
+ /// \param __B
652
+ /// A 256-bit vector of [4 x double] containing the multiplier.
653
+ /// \param __C
654
+ /// A 256-bit vector of [4 x double] containing the addend.
655
+ /// \returns A 256-bit vector of [4 x double] containing the result.
656
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
657
+ _mm256_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C)
658
+ {
659
+ return (__m256d)__builtin_elementwise_fma(-(__v4df)__A, (__v4df)__B,
660
+ (__v4df)__C);
661
+ }
662
+
663
+ /// Computes a negated multiply-subtract of 256-bit vectors of [8 x float].
664
+ /// For each element, computes <c> -(__A * __B) - __C </c>.
665
+ ///
666
+ /// \headerfile <immintrin.h>
667
+ ///
668
+ /// This intrinsic corresponds to the \c VFNMSUB213PS instruction.
669
+ ///
670
+ /// \param __A
671
+ /// A 256-bit vector of [8 x float] containing the multiplicand.
672
+ /// \param __B
673
+ /// A 256-bit vector of [8 x float] containing the multiplier.
674
+ /// \param __C
675
+ /// A 256-bit vector of [8 x float] containing the subtrahend.
676
+ /// \returns A 256-bit vector of [8 x float] containing the result.
677
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
678
+ _mm256_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C)
679
+ {
680
+ return (__m256)__builtin_elementwise_fma(-(__v8sf)__A, (__v8sf)__B,
681
+ -(__v8sf)__C);
682
+ }
683
+
684
+ /// Computes a negated multiply-subtract of 256-bit vectors of [4 x double].
685
+ /// For each element, computes <c> -(__A * __B) - __C </c>.
686
+ ///
687
+ /// \headerfile <immintrin.h>
688
+ ///
689
+ /// This intrinsic corresponds to the \c VFNMSUB213PD instruction.
690
+ ///
691
+ /// \param __A
692
+ /// A 256-bit vector of [4 x double] containing the multiplicand.
693
+ /// \param __B
694
+ /// A 256-bit vector of [4 x double] containing the multiplier.
695
+ /// \param __C
696
+ /// A 256-bit vector of [4 x double] containing the subtrahend.
697
+ /// \returns A 256-bit vector of [4 x double] containing the result.
698
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
699
+ _mm256_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C)
700
+ {
701
+ return (__m256d)__builtin_elementwise_fma(-(__v4df)__A, (__v4df)__B,
702
+ -(__v4df)__C);
703
+ }
704
+
705
+ /// Computes a multiply with alternating add/subtract of 256-bit vectors of
706
+ /// [8 x float].
707
+ ///
708
+ /// \code{.operation}
709
+ /// result[31:0] = (__A[31:0] * __B[31:0]) - __C[31:0]
710
+ /// result[63:32] = (__A[63:32] * __B[63:32]) + __C[63:32]
711
+ /// result[95:64] = (__A[95:64] * __B[95:64]) - __C[95:64]
712
+ /// result[127:96] = (__A[127:96] * __B[127:96]) + __C[127:96]
713
+ /// result[159:128] = (__A[159:128] * __B[159:128]) - __C[159:128]
714
+ /// result[191:160] = (__A[191:160] * __B[191:160]) + __C[191:160]
715
+ /// result[223:192] = (__A[223:192] * __B[223:192]) - __C[223:192]
716
+ /// result[255:224] = (__A[255:224] * __B[255:224]) + __C[255:224]
717
+ /// \endcode
718
+ ///
719
+ /// \headerfile <immintrin.h>
720
+ ///
721
+ /// This intrinsic corresponds to the \c VFMADDSUB213PS instruction.
722
+ ///
723
+ /// \param __A
724
+ /// A 256-bit vector of [8 x float] containing the multiplicand.
725
+ /// \param __B
726
+ /// A 256-bit vector of [8 x float] containing the multiplier.
727
+ /// \param __C
728
+ /// A 256-bit vector of [8 x float] containing the addend/subtrahend.
729
+ /// \returns A 256-bit vector of [8 x float] containing the result.
730
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
731
+ _mm256_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C)
732
+ {
733
+ return (__m256)__builtin_ia32_vfmaddsubps256((__v8sf)__A, (__v8sf)__B, (__v8sf)__C);
734
+ }
735
+
736
+ /// Computes a multiply with alternating add/subtract of 256-bit vectors of
737
+ /// [4 x double].
738
+ ///
739
+ /// \code{.operation}
740
+ /// result[63:0] = (__A[63:0] * __B[63:0]) - __C[63:0]
741
+ /// result[127:64] = (__A[127:64] * __B[127:64]) + __C[127:64]
742
+ /// result[191:128] = (__A[191:128] * __B[191:128]) - __C[191:128]
743
+ /// result[255:192] = (__A[255:192] * __B[255:192]) + __C[255:192]
744
+ /// \endcode
745
+ ///
746
+ /// \headerfile <immintrin.h>
747
+ ///
748
+ /// This intrinsic corresponds to the \c VFMADDSUB213PD instruction.
749
+ ///
750
+ /// \param __A
751
+ /// A 256-bit vector of [4 x double] containing the multiplicand.
752
+ /// \param __B
753
+ /// A 256-bit vector of [4 x double] containing the multiplier.
754
+ /// \param __C
755
+ /// A 256-bit vector of [4 x double] containing the addend/subtrahend.
756
+ /// \returns A 256-bit vector of [4 x double] containing the result.
757
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256
758
+ _mm256_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C)
759
+ {
760
+ return (__m256d)__builtin_ia32_vfmaddsubpd256((__v4df)__A, (__v4df)__B, (__v4df)__C);
761
+ }
762
+
763
+ /// Computes a vector multiply with alternating add/subtract of 256-bit
764
+ /// vectors of [8 x float].
765
+ ///
766
+ /// \code{.operation}
767
+ /// result[31:0] = (__A[31:0] * __B[31:0]) + __C[31:0]
768
+ /// result[63:32] = (__A[63:32] * __B[63:32]) - __C[63:32]
769
+ /// result[95:64] = (__A[95:64] * __B[95:64]) + __C[95:64]
770
+ /// result[127:96] = (__A[127:96] * __B[127:96]) - __C[127:96]
771
+ /// result[159:128] = (__A[159:128] * __B[159:128]) + __C[159:128]
772
+ /// result[191:160] = (__A[191:160] * __B[191:160]) - __C[191:160]
773
+ /// result[223:192] = (__A[223:192] * __B[223:192]) + __C[223:192]
774
+ /// result[255:224] = (__A[255:224] * __B[255:224]) - __C[255:224]
775
+ /// \endcode
776
+ ///
777
+ /// \headerfile <immintrin.h>
778
+ ///
779
+ /// This intrinsic corresponds to the \c VFMSUBADD213PS instruction.
780
+ ///
781
+ /// \param __A
782
+ /// A 256-bit vector of [8 x float] containing the multiplicand.
783
+ /// \param __B
784
+ /// A 256-bit vector of [8 x float] containing the multiplier.
785
+ /// \param __C
786
+ /// A 256-bit vector of [8 x float] containing the addend/subtrahend.
787
+ /// \returns A 256-bit vector of [8 x float] containing the result.
788
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
789
+ _mm256_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C)
790
+ {
791
+ return (__m256)__builtin_ia32_vfmaddsubps256((__v8sf)__A, (__v8sf)__B, -(__v8sf)__C);
792
+ }
793
+
794
+ /// Computes a vector multiply with alternating add/subtract of 256-bit
795
+ /// vectors of [4 x double].
796
+ ///
797
+ /// \code{.operation}
798
+ /// result[63:0] = (__A[63:0] * __B[63:0]) + __C[63:0]
799
+ /// result[127:64] = (__A[127:64] * __B[127:64]) - __C[127:64]
800
+ /// result[191:128] = (__A[191:128] * __B[191:128]) + __C[191:128]
801
+ /// result[255:192] = (__A[255:192] * __B[255:192]) - __C[255:192]
802
+ /// \endcode
803
+ ///
804
+ /// \headerfile <immintrin.h>
805
+ ///
806
+ /// This intrinsic corresponds to the \c VFMSUBADD213PD instruction.
807
+ ///
808
+ /// \param __A
809
+ /// A 256-bit vector of [4 x double] containing the multiplicand.
810
+ /// \param __B
811
+ /// A 256-bit vector of [4 x double] containing the multiplier.
812
+ /// \param __C
813
+ /// A 256-bit vector of [4 x double] containing the addend/subtrahend.
814
+ /// \returns A 256-bit vector of [4 x double] containing the result.
815
+ static __inline__ __m256d __DEFAULT_FN_ATTRS256
816
+ _mm256_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C)
817
+ {
818
+ return (__m256d)__builtin_ia32_vfmaddsubpd256((__v4df)__A, (__v4df)__B, -(__v4df)__C);
819
+ }
820
+
821
+ #undef __DEFAULT_FN_ATTRS128
822
+ #undef __DEFAULT_FN_ATTRS256
823
+ #undef __DEFAULT_FN_ATTRS128_CONSTEXPR
824
+ #undef __DEFAULT_FN_ATTRS256_CONSTEXPR
825
+
826
+ #endif /* __FMAINTRIN_H */