@nativescript/linux 0.0.0-stage → 0.1.0-alpha.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 (238) hide show
  1. package/framework/App_Resources/Linux/app.desktop +8 -0
  2. package/framework/App_Resources/Linux/app.metainfo.xml +15 -0
  3. package/framework/App_Resources/Linux/icon.png +0 -0
  4. package/framework/App_Resources/Linux/images/.gitkeep +0 -0
  5. package/framework/__PROJECT_NAME__/app/.gitkeep +0 -0
  6. package/framework/runtime/x64/metadata-x86_64.bin +0 -0
  7. package/framework/runtime/x64/ns-linux +4 -0
  8. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_builtin_vars.h +121 -0
  9. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_cmath.h +512 -0
  10. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_complex_builtins.h +285 -0
  11. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_device_functions.h +1558 -0
  12. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_intrinsics.h +709 -0
  13. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_libdevice_declares.h +468 -0
  14. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_math.h +348 -0
  15. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_math_forward_declares.h +284 -0
  16. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_runtime_wrapper.h +503 -0
  17. package/framework/tools/x64/lib/clang/17/include/__clang_cuda_texture_intrinsics.h +742 -0
  18. package/framework/tools/x64/lib/clang/17/include/__clang_hip_cmath.h +842 -0
  19. package/framework/tools/x64/lib/clang/17/include/__clang_hip_libdevice_declares.h +353 -0
  20. package/framework/tools/x64/lib/clang/17/include/__clang_hip_math.h +1303 -0
  21. package/framework/tools/x64/lib/clang/17/include/__clang_hip_runtime_wrapper.h +151 -0
  22. package/framework/tools/x64/lib/clang/17/include/__clang_hip_stdlib.h +43 -0
  23. package/framework/tools/x64/lib/clang/17/include/__stddef_max_align_t.h +27 -0
  24. package/framework/tools/x64/lib/clang/17/include/__wmmintrin_aes.h +140 -0
  25. package/framework/tools/x64/lib/clang/17/include/__wmmintrin_pclmul.h +48 -0
  26. package/framework/tools/x64/lib/clang/17/include/adxintrin.h +227 -0
  27. package/framework/tools/x64/lib/clang/17/include/altivec.h +19342 -0
  28. package/framework/tools/x64/lib/clang/17/include/ammintrin.h +183 -0
  29. package/framework/tools/x64/lib/clang/17/include/amxcomplexintrin.h +169 -0
  30. package/framework/tools/x64/lib/clang/17/include/amxfp16intrin.h +58 -0
  31. package/framework/tools/x64/lib/clang/17/include/amxintrin.h +524 -0
  32. package/framework/tools/x64/lib/clang/17/include/arm64intr.h +35 -0
  33. package/framework/tools/x64/lib/clang/17/include/arm_acle.h +782 -0
  34. package/framework/tools/x64/lib/clang/17/include/arm_bf16.h +20 -0
  35. package/framework/tools/x64/lib/clang/17/include/arm_cde.h +410 -0
  36. package/framework/tools/x64/lib/clang/17/include/arm_cmse.h +217 -0
  37. package/framework/tools/x64/lib/clang/17/include/arm_fp16.h +596 -0
  38. package/framework/tools/x64/lib/clang/17/include/arm_mve.h +19187 -0
  39. package/framework/tools/x64/lib/clang/17/include/arm_neon.h +69885 -0
  40. package/framework/tools/x64/lib/clang/17/include/arm_neon_sve_bridge.h +182 -0
  41. package/framework/tools/x64/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +642 -0
  42. package/framework/tools/x64/lib/clang/17/include/arm_sve.h +23950 -0
  43. package/framework/tools/x64/lib/clang/17/include/armintr.h +31 -0
  44. package/framework/tools/x64/lib/clang/17/include/avx2intrin.h +5263 -0
  45. package/framework/tools/x64/lib/clang/17/include/avx512bf16intrin.h +282 -0
  46. package/framework/tools/x64/lib/clang/17/include/avx512bitalgintrin.h +83 -0
  47. package/framework/tools/x64/lib/clang/17/include/avx512bwintrin.h +2024 -0
  48. package/framework/tools/x64/lib/clang/17/include/avx512cdintrin.h +123 -0
  49. package/framework/tools/x64/lib/clang/17/include/avx512dqintrin.h +1377 -0
  50. package/framework/tools/x64/lib/clang/17/include/avx512erintrin.h +271 -0
  51. package/framework/tools/x64/lib/clang/17/include/avx512fintrin.h +9775 -0
  52. package/framework/tools/x64/lib/clang/17/include/avx512fp16intrin.h +3350 -0
  53. package/framework/tools/x64/lib/clang/17/include/avx512ifmaintrin.h +68 -0
  54. package/framework/tools/x64/lib/clang/17/include/avx512ifmavlintrin.h +105 -0
  55. package/framework/tools/x64/lib/clang/17/include/avx512pfintrin.h +97 -0
  56. package/framework/tools/x64/lib/clang/17/include/avx512vbmi2intrin.h +357 -0
  57. package/framework/tools/x64/lib/clang/17/include/avx512vbmiintrin.h +105 -0
  58. package/framework/tools/x64/lib/clang/17/include/avx512vbmivlintrin.h +188 -0
  59. package/framework/tools/x64/lib/clang/17/include/avx512vlbf16intrin.h +515 -0
  60. package/framework/tools/x64/lib/clang/17/include/avx512vlbitalgintrin.h +145 -0
  61. package/framework/tools/x64/lib/clang/17/include/avx512vlbwintrin.h +3161 -0
  62. package/framework/tools/x64/lib/clang/17/include/avx512vlcdintrin.h +225 -0
  63. package/framework/tools/x64/lib/clang/17/include/avx512vldqintrin.h +1167 -0
  64. package/framework/tools/x64/lib/clang/17/include/avx512vlfp16intrin.h +2071 -0
  65. package/framework/tools/x64/lib/clang/17/include/avx512vlintrin.h +8431 -0
  66. package/framework/tools/x64/lib/clang/17/include/avx512vlvbmi2intrin.h +689 -0
  67. package/framework/tools/x64/lib/clang/17/include/avx512vlvnniintrin.h +304 -0
  68. package/framework/tools/x64/lib/clang/17/include/avx512vlvp2intersectintrin.h +121 -0
  69. package/framework/tools/x64/lib/clang/17/include/avx512vnniintrin.h +115 -0
  70. package/framework/tools/x64/lib/clang/17/include/avx512vp2intersectintrin.h +77 -0
  71. package/framework/tools/x64/lib/clang/17/include/avx512vpopcntdqintrin.h +54 -0
  72. package/framework/tools/x64/lib/clang/17/include/avx512vpopcntdqvlintrin.h +91 -0
  73. package/framework/tools/x64/lib/clang/17/include/avxifmaintrin.h +177 -0
  74. package/framework/tools/x64/lib/clang/17/include/avxintrin.h +5108 -0
  75. package/framework/tools/x64/lib/clang/17/include/avxneconvertintrin.h +484 -0
  76. package/framework/tools/x64/lib/clang/17/include/avxvnniint16intrin.h +473 -0
  77. package/framework/tools/x64/lib/clang/17/include/avxvnniint8intrin.h +471 -0
  78. package/framework/tools/x64/lib/clang/17/include/avxvnniintrin.h +225 -0
  79. package/framework/tools/x64/lib/clang/17/include/bmi2intrin.h +255 -0
  80. package/framework/tools/x64/lib/clang/17/include/bmiintrin.h +431 -0
  81. package/framework/tools/x64/lib/clang/17/include/builtins.h +16 -0
  82. package/framework/tools/x64/lib/clang/17/include/cet.h +66 -0
  83. package/framework/tools/x64/lib/clang/17/include/cetintrin.h +115 -0
  84. package/framework/tools/x64/lib/clang/17/include/cldemoteintrin.h +36 -0
  85. package/framework/tools/x64/lib/clang/17/include/clflushoptintrin.h +36 -0
  86. package/framework/tools/x64/lib/clang/17/include/clwbintrin.h +38 -0
  87. package/framework/tools/x64/lib/clang/17/include/clzerointrin.h +38 -0
  88. package/framework/tools/x64/lib/clang/17/include/cmpccxaddintrin.h +70 -0
  89. package/framework/tools/x64/lib/clang/17/include/cpuid.h +331 -0
  90. package/framework/tools/x64/lib/clang/17/include/crc32intrin.h +100 -0
  91. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/algorithm +116 -0
  92. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/bits/basic_string.h +9 -0
  93. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  94. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  95. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/cmath +90 -0
  96. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/complex +90 -0
  97. package/framework/tools/x64/lib/clang/17/include/cuda_wrappers/new +106 -0
  98. package/framework/tools/x64/lib/clang/17/include/emmintrin.h +4775 -0
  99. package/framework/tools/x64/lib/clang/17/include/enqcmdintrin.h +63 -0
  100. package/framework/tools/x64/lib/clang/17/include/f16cintrin.h +162 -0
  101. package/framework/tools/x64/lib/clang/17/include/float.h +168 -0
  102. package/framework/tools/x64/lib/clang/17/include/fma4intrin.h +218 -0
  103. package/framework/tools/x64/lib/clang/17/include/fmaintrin.h +780 -0
  104. package/framework/tools/x64/lib/clang/17/include/fxsrintrin.h +91 -0
  105. package/framework/tools/x64/lib/clang/17/include/gfniintrin.h +194 -0
  106. package/framework/tools/x64/lib/clang/17/include/hexagon_circ_brev_intrinsics.h +298 -0
  107. package/framework/tools/x64/lib/clang/17/include/hexagon_protos.h +8439 -0
  108. package/framework/tools/x64/lib/clang/17/include/hexagon_types.h +2621 -0
  109. package/framework/tools/x64/lib/clang/17/include/hresetintrin.h +49 -0
  110. package/framework/tools/x64/lib/clang/17/include/htmintrin.h +212 -0
  111. package/framework/tools/x64/lib/clang/17/include/htmxlintrin.h +345 -0
  112. package/framework/tools/x64/lib/clang/17/include/hvx_hexagon_protos.h +5183 -0
  113. package/framework/tools/x64/lib/clang/17/include/ia32intrin.h +441 -0
  114. package/framework/tools/x64/lib/clang/17/include/immintrin.h +758 -0
  115. package/framework/tools/x64/lib/clang/17/include/intrin.h +620 -0
  116. package/framework/tools/x64/lib/clang/17/include/inttypes.h +97 -0
  117. package/framework/tools/x64/lib/clang/17/include/invpcidintrin.h +23 -0
  118. package/framework/tools/x64/lib/clang/17/include/iso646.h +27 -0
  119. package/framework/tools/x64/lib/clang/17/include/keylockerintrin.h +530 -0
  120. package/framework/tools/x64/lib/clang/17/include/larchintrin.h +234 -0
  121. package/framework/tools/x64/lib/clang/17/include/limits.h +127 -0
  122. package/framework/tools/x64/lib/clang/17/include/llvm_libc_wrappers/ctype.h +85 -0
  123. package/framework/tools/x64/lib/clang/17/include/llvm_libc_wrappers/inttypes.h +34 -0
  124. package/framework/tools/x64/lib/clang/17/include/llvm_libc_wrappers/stdio.h +34 -0
  125. package/framework/tools/x64/lib/clang/17/include/llvm_libc_wrappers/stdlib.h +42 -0
  126. package/framework/tools/x64/lib/clang/17/include/llvm_libc_wrappers/string.h +37 -0
  127. package/framework/tools/x64/lib/clang/17/include/lwpintrin.h +136 -0
  128. package/framework/tools/x64/lib/clang/17/include/lzcntintrin.h +104 -0
  129. package/framework/tools/x64/lib/clang/17/include/mm3dnow.h +157 -0
  130. package/framework/tools/x64/lib/clang/17/include/mm_malloc.h +67 -0
  131. package/framework/tools/x64/lib/clang/17/include/mmintrin.h +1562 -0
  132. package/framework/tools/x64/lib/clang/17/include/module.modulemap +164 -0
  133. package/framework/tools/x64/lib/clang/17/include/movdirintrin.h +49 -0
  134. package/framework/tools/x64/lib/clang/17/include/msa.h +573 -0
  135. package/framework/tools/x64/lib/clang/17/include/mwaitxintrin.h +62 -0
  136. package/framework/tools/x64/lib/clang/17/include/nmmintrin.h +20 -0
  137. package/framework/tools/x64/lib/clang/17/include/opencl-c-base.h +820 -0
  138. package/framework/tools/x64/lib/clang/17/include/opencl-c.h +18356 -0
  139. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/__clang_openmp_device_functions.h +105 -0
  140. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/cmath +132 -0
  141. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/complex +55 -0
  142. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/complex.h +35 -0
  143. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/complex_cmath.h +388 -0
  144. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/math.h +61 -0
  145. package/framework/tools/x64/lib/clang/17/include/openmp_wrappers/new +48 -0
  146. package/framework/tools/x64/lib/clang/17/include/pconfigintrin.h +40 -0
  147. package/framework/tools/x64/lib/clang/17/include/pkuintrin.h +34 -0
  148. package/framework/tools/x64/lib/clang/17/include/pmmintrin.h +300 -0
  149. package/framework/tools/x64/lib/clang/17/include/popcntintrin.h +59 -0
  150. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/bmi2intrin.h +134 -0
  151. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/bmiintrin.h +165 -0
  152. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/emmintrin.h +2269 -0
  153. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/immintrin.h +27 -0
  154. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/mm_malloc.h +45 -0
  155. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/mmintrin.h +1453 -0
  156. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/pmmintrin.h +145 -0
  157. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/smmintrin.h +663 -0
  158. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/tmmintrin.h +453 -0
  159. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/x86gprintrin.h +17 -0
  160. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/x86intrin.h +28 -0
  161. package/framework/tools/x64/lib/clang/17/include/ppc_wrappers/xmmintrin.h +1827 -0
  162. package/framework/tools/x64/lib/clang/17/include/prfchiintrin.h +61 -0
  163. package/framework/tools/x64/lib/clang/17/include/prfchwintrin.h +58 -0
  164. package/framework/tools/x64/lib/clang/17/include/ptwriteintrin.h +37 -0
  165. package/framework/tools/x64/lib/clang/17/include/raointintrin.h +203 -0
  166. package/framework/tools/x64/lib/clang/17/include/rdpruintrin.h +57 -0
  167. package/framework/tools/x64/lib/clang/17/include/rdseedintrin.h +105 -0
  168. package/framework/tools/x64/lib/clang/17/include/riscv_ntlh.h +28 -0
  169. package/framework/tools/x64/lib/clang/17/include/rtmintrin.h +45 -0
  170. package/framework/tools/x64/lib/clang/17/include/s390intrin.h +25 -0
  171. package/framework/tools/x64/lib/clang/17/include/serializeintrin.h +30 -0
  172. package/framework/tools/x64/lib/clang/17/include/sgxintrin.h +60 -0
  173. package/framework/tools/x64/lib/clang/17/include/sha512intrin.h +200 -0
  174. package/framework/tools/x64/lib/clang/17/include/shaintrin.h +189 -0
  175. package/framework/tools/x64/lib/clang/17/include/sifive_vector.h +16 -0
  176. package/framework/tools/x64/lib/clang/17/include/sm3intrin.h +238 -0
  177. package/framework/tools/x64/lib/clang/17/include/sm4intrin.h +269 -0
  178. package/framework/tools/x64/lib/clang/17/include/smmintrin.h +2328 -0
  179. package/framework/tools/x64/lib/clang/17/include/stdalign.h +26 -0
  180. package/framework/tools/x64/lib/clang/17/include/stdarg.h +51 -0
  181. package/framework/tools/x64/lib/clang/17/include/stdatomic.h +196 -0
  182. package/framework/tools/x64/lib/clang/17/include/stdbool.h +34 -0
  183. package/framework/tools/x64/lib/clang/17/include/stddef.h +133 -0
  184. package/framework/tools/x64/lib/clang/17/include/stdint.h +979 -0
  185. package/framework/tools/x64/lib/clang/17/include/stdnoreturn.h +29 -0
  186. package/framework/tools/x64/lib/clang/17/include/tbmintrin.h +140 -0
  187. package/framework/tools/x64/lib/clang/17/include/tgmath.h +1368 -0
  188. package/framework/tools/x64/lib/clang/17/include/tmmintrin.h +775 -0
  189. package/framework/tools/x64/lib/clang/17/include/tsxldtrkintrin.h +56 -0
  190. package/framework/tools/x64/lib/clang/17/include/uintrintrin.h +157 -0
  191. package/framework/tools/x64/lib/clang/17/include/unwind.h +332 -0
  192. package/framework/tools/x64/lib/clang/17/include/vadefs.h +51 -0
  193. package/framework/tools/x64/lib/clang/17/include/vaesintrin.h +85 -0
  194. package/framework/tools/x64/lib/clang/17/include/varargs.h +12 -0
  195. package/framework/tools/x64/lib/clang/17/include/vecintrin.h +11127 -0
  196. package/framework/tools/x64/lib/clang/17/include/velintrin.h +71 -0
  197. package/framework/tools/x64/lib/clang/17/include/velintrin_approx.h +120 -0
  198. package/framework/tools/x64/lib/clang/17/include/velintrin_gen.h +1257 -0
  199. package/framework/tools/x64/lib/clang/17/include/vpclmulqdqintrin.h +30 -0
  200. package/framework/tools/x64/lib/clang/17/include/waitpkgintrin.h +42 -0
  201. package/framework/tools/x64/lib/clang/17/include/wasm_simd128.h +1997 -0
  202. package/framework/tools/x64/lib/clang/17/include/wbnoinvdintrin.h +24 -0
  203. package/framework/tools/x64/lib/clang/17/include/wmmintrin.h +23 -0
  204. package/framework/tools/x64/lib/clang/17/include/x86gprintrin.h +65 -0
  205. package/framework/tools/x64/lib/clang/17/include/x86intrin.h +67 -0
  206. package/framework/tools/x64/lib/clang/17/include/xmmintrin.h +3017 -0
  207. package/framework/tools/x64/lib/clang/17/include/xopintrin.h +770 -0
  208. package/framework/tools/x64/lib/clang/17/include/xsavecintrin.h +84 -0
  209. package/framework/tools/x64/lib/clang/17/include/xsaveintrin.h +63 -0
  210. package/framework/tools/x64/lib/clang/17/include/xsaveoptintrin.h +34 -0
  211. package/framework/tools/x64/lib/clang/17/include/xsavesintrin.h +44 -0
  212. package/framework/tools/x64/lib/clang/17/include/xtestintrin.h +27 -0
  213. package/framework/tools/x64/metadata-generator +4 -0
  214. package/framework/tools/x64/ns-bundle +0 -0
  215. package/framework/tools/x64/ns-metadata-filter +0 -0
  216. package/framework/typings/c!EGL.d.ts +431 -0
  217. package/framework/typings/c!GLES.d.ts +5002 -0
  218. package/framework/typings/c!GLib.d.ts +14488 -0
  219. package/framework/typings/c!Gtk.d.ts +17630 -0
  220. package/framework/typings/c!X11.d.ts +7054 -0
  221. package/framework/typings/c!_Builtin_intrinsics.d.ts +106 -0
  222. package/framework/typings/c!_Builtin_stddef_max_align_t.d.ts +6 -0
  223. package/framework/typings/c!cairo.d.ts +1248 -0
  224. package/framework/typings/c!fontconfig.d.ts +819 -0
  225. package/framework/typings/c!freetype.d.ts +1068 -0
  226. package/framework/typings/c!gdk_pixbuf.d.ts +326 -0
  227. package/framework/typings/c!graphene.d.ts +320 -0
  228. package/framework/typings/c!harfbuzz.d.ts +1292 -0
  229. package/framework/typings/c!icu.d.ts +3330 -0
  230. package/framework/typings/c!libc.d.ts +11639 -0
  231. package/framework/typings/c!libxml2.d.ts +7029 -0
  232. package/framework/typings/c!pango.d.ts +2225 -0
  233. package/framework/typings/c!uuid.d.ts +68 -0
  234. package/framework/typings/c!zlib.d.ts +276 -0
  235. package/framework/typings/index.d.ts +10 -0
  236. package/framework/typings/linux-runtime.d.ts +90 -0
  237. package/package.json +9 -4
  238. package/README.md +0 -3
@@ -0,0 +1,775 @@
1
+ /*===---- tmmintrin.h - SSSE3 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 __TMMINTRIN_H
11
+ #define __TMMINTRIN_H
12
+
13
+ #if !defined(__i386__) && !defined(__x86_64__)
14
+ #error "This header is only meant to be used on x86 and x64 architecture"
15
+ #endif
16
+
17
+ #include <pmmintrin.h>
18
+
19
+ /* Define the default attributes for the functions in this file. */
20
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("ssse3"), __min_vector_width__(64)))
21
+ #define __DEFAULT_FN_ATTRS_MMX __attribute__((__always_inline__, __nodebug__, __target__("mmx,ssse3"), __min_vector_width__(64)))
22
+
23
+ /// Computes the absolute value of each of the packed 8-bit signed
24
+ /// integers in the source operand and stores the 8-bit unsigned integer
25
+ /// results in the destination.
26
+ ///
27
+ /// \headerfile <x86intrin.h>
28
+ ///
29
+ /// This intrinsic corresponds to the \c PABSB instruction.
30
+ ///
31
+ /// \param __a
32
+ /// A 64-bit vector of [8 x i8].
33
+ /// \returns A 64-bit integer vector containing the absolute values of the
34
+ /// elements in the operand.
35
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
36
+ _mm_abs_pi8(__m64 __a)
37
+ {
38
+ return (__m64)__builtin_ia32_pabsb((__v8qi)__a);
39
+ }
40
+
41
+ /// Computes the absolute value of each of the packed 8-bit signed
42
+ /// integers in the source operand and stores the 8-bit unsigned integer
43
+ /// results in the destination.
44
+ ///
45
+ /// \headerfile <x86intrin.h>
46
+ ///
47
+ /// This intrinsic corresponds to the \c VPABSB instruction.
48
+ ///
49
+ /// \param __a
50
+ /// A 128-bit vector of [16 x i8].
51
+ /// \returns A 128-bit integer vector containing the absolute values of the
52
+ /// elements in the operand.
53
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
54
+ _mm_abs_epi8(__m128i __a)
55
+ {
56
+ return (__m128i)__builtin_elementwise_abs((__v16qs)__a);
57
+ }
58
+
59
+ /// Computes the absolute value of each of the packed 16-bit signed
60
+ /// integers in the source operand and stores the 16-bit unsigned integer
61
+ /// results in the destination.
62
+ ///
63
+ /// \headerfile <x86intrin.h>
64
+ ///
65
+ /// This intrinsic corresponds to the \c PABSW instruction.
66
+ ///
67
+ /// \param __a
68
+ /// A 64-bit vector of [4 x i16].
69
+ /// \returns A 64-bit integer vector containing the absolute values of the
70
+ /// elements in the operand.
71
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
72
+ _mm_abs_pi16(__m64 __a)
73
+ {
74
+ return (__m64)__builtin_ia32_pabsw((__v4hi)__a);
75
+ }
76
+
77
+ /// Computes the absolute value of each of the packed 16-bit signed
78
+ /// integers in the source operand and stores the 16-bit unsigned integer
79
+ /// results in the destination.
80
+ ///
81
+ /// \headerfile <x86intrin.h>
82
+ ///
83
+ /// This intrinsic corresponds to the \c VPABSW instruction.
84
+ ///
85
+ /// \param __a
86
+ /// A 128-bit vector of [8 x i16].
87
+ /// \returns A 128-bit integer vector containing the absolute values of the
88
+ /// elements in the operand.
89
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
90
+ _mm_abs_epi16(__m128i __a)
91
+ {
92
+ return (__m128i)__builtin_elementwise_abs((__v8hi)__a);
93
+ }
94
+
95
+ /// Computes the absolute value of each of the packed 32-bit signed
96
+ /// integers in the source operand and stores the 32-bit unsigned integer
97
+ /// results in the destination.
98
+ ///
99
+ /// \headerfile <x86intrin.h>
100
+ ///
101
+ /// This intrinsic corresponds to the \c PABSD instruction.
102
+ ///
103
+ /// \param __a
104
+ /// A 64-bit vector of [2 x i32].
105
+ /// \returns A 64-bit integer vector containing the absolute values of the
106
+ /// elements in the operand.
107
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
108
+ _mm_abs_pi32(__m64 __a)
109
+ {
110
+ return (__m64)__builtin_ia32_pabsd((__v2si)__a);
111
+ }
112
+
113
+ /// Computes the absolute value of each of the packed 32-bit signed
114
+ /// integers in the source operand and stores the 32-bit unsigned integer
115
+ /// results in the destination.
116
+ ///
117
+ /// \headerfile <x86intrin.h>
118
+ ///
119
+ /// This intrinsic corresponds to the \c VPABSD instruction.
120
+ ///
121
+ /// \param __a
122
+ /// A 128-bit vector of [4 x i32].
123
+ /// \returns A 128-bit integer vector containing the absolute values of the
124
+ /// elements in the operand.
125
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
126
+ _mm_abs_epi32(__m128i __a)
127
+ {
128
+ return (__m128i)__builtin_elementwise_abs((__v4si)__a);
129
+ }
130
+
131
+ /// Concatenates the two 128-bit integer vector operands, and
132
+ /// right-shifts the result by the number of bytes specified in the immediate
133
+ /// operand.
134
+ ///
135
+ /// \headerfile <x86intrin.h>
136
+ ///
137
+ /// \code
138
+ /// __m128i _mm_alignr_epi8(__m128i a, __m128i b, const int n);
139
+ /// \endcode
140
+ ///
141
+ /// This intrinsic corresponds to the \c PALIGNR instruction.
142
+ ///
143
+ /// \param a
144
+ /// A 128-bit vector of [16 x i8] containing one of the source operands.
145
+ /// \param b
146
+ /// A 128-bit vector of [16 x i8] containing one of the source operands.
147
+ /// \param n
148
+ /// An immediate operand specifying how many bytes to right-shift the result.
149
+ /// \returns A 128-bit integer vector containing the concatenated right-shifted
150
+ /// value.
151
+ #define _mm_alignr_epi8(a, b, n) \
152
+ ((__m128i)__builtin_ia32_palignr128((__v16qi)(__m128i)(a), \
153
+ (__v16qi)(__m128i)(b), (n)))
154
+
155
+ /// Concatenates the two 64-bit integer vector operands, and right-shifts
156
+ /// the result by the number of bytes specified in the immediate operand.
157
+ ///
158
+ /// \headerfile <x86intrin.h>
159
+ ///
160
+ /// \code
161
+ /// __m64 _mm_alignr_pi8(__m64 a, __m64 b, const int n);
162
+ /// \endcode
163
+ ///
164
+ /// This intrinsic corresponds to the \c PALIGNR instruction.
165
+ ///
166
+ /// \param a
167
+ /// A 64-bit vector of [8 x i8] containing one of the source operands.
168
+ /// \param b
169
+ /// A 64-bit vector of [8 x i8] containing one of the source operands.
170
+ /// \param n
171
+ /// An immediate operand specifying how many bytes to right-shift the result.
172
+ /// \returns A 64-bit integer vector containing the concatenated right-shifted
173
+ /// value.
174
+ #define _mm_alignr_pi8(a, b, n) \
175
+ ((__m64)__builtin_ia32_palignr((__v8qi)(__m64)(a), (__v8qi)(__m64)(b), (n)))
176
+
177
+ /// Horizontally adds the adjacent pairs of values contained in 2 packed
178
+ /// 128-bit vectors of [8 x i16].
179
+ ///
180
+ /// \headerfile <x86intrin.h>
181
+ ///
182
+ /// This intrinsic corresponds to the \c VPHADDW instruction.
183
+ ///
184
+ /// \param __a
185
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
186
+ /// horizontal sums of the values are stored in the lower bits of the
187
+ /// destination.
188
+ /// \param __b
189
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
190
+ /// horizontal sums of the values are stored in the upper bits of the
191
+ /// destination.
192
+ /// \returns A 128-bit vector of [8 x i16] containing the horizontal sums of
193
+ /// both operands.
194
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
195
+ _mm_hadd_epi16(__m128i __a, __m128i __b)
196
+ {
197
+ return (__m128i)__builtin_ia32_phaddw128((__v8hi)__a, (__v8hi)__b);
198
+ }
199
+
200
+ /// Horizontally adds the adjacent pairs of values contained in 2 packed
201
+ /// 128-bit vectors of [4 x i32].
202
+ ///
203
+ /// \headerfile <x86intrin.h>
204
+ ///
205
+ /// This intrinsic corresponds to the \c VPHADDD instruction.
206
+ ///
207
+ /// \param __a
208
+ /// A 128-bit vector of [4 x i32] containing one of the source operands. The
209
+ /// horizontal sums of the values are stored in the lower bits of the
210
+ /// destination.
211
+ /// \param __b
212
+ /// A 128-bit vector of [4 x i32] containing one of the source operands. The
213
+ /// horizontal sums of the values are stored in the upper bits of the
214
+ /// destination.
215
+ /// \returns A 128-bit vector of [4 x i32] containing the horizontal sums of
216
+ /// both operands.
217
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
218
+ _mm_hadd_epi32(__m128i __a, __m128i __b)
219
+ {
220
+ return (__m128i)__builtin_ia32_phaddd128((__v4si)__a, (__v4si)__b);
221
+ }
222
+
223
+ /// Horizontally adds the adjacent pairs of values contained in 2 packed
224
+ /// 64-bit vectors of [4 x i16].
225
+ ///
226
+ /// \headerfile <x86intrin.h>
227
+ ///
228
+ /// This intrinsic corresponds to the \c PHADDW instruction.
229
+ ///
230
+ /// \param __a
231
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
232
+ /// horizontal sums of the values are stored in the lower bits of the
233
+ /// destination.
234
+ /// \param __b
235
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
236
+ /// horizontal sums of the values are stored in the upper bits of the
237
+ /// destination.
238
+ /// \returns A 64-bit vector of [4 x i16] containing the horizontal sums of both
239
+ /// operands.
240
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
241
+ _mm_hadd_pi16(__m64 __a, __m64 __b)
242
+ {
243
+ return (__m64)__builtin_ia32_phaddw((__v4hi)__a, (__v4hi)__b);
244
+ }
245
+
246
+ /// Horizontally adds the adjacent pairs of values contained in 2 packed
247
+ /// 64-bit vectors of [2 x i32].
248
+ ///
249
+ /// \headerfile <x86intrin.h>
250
+ ///
251
+ /// This intrinsic corresponds to the \c PHADDD instruction.
252
+ ///
253
+ /// \param __a
254
+ /// A 64-bit vector of [2 x i32] containing one of the source operands. The
255
+ /// horizontal sums of the values are stored in the lower bits of the
256
+ /// destination.
257
+ /// \param __b
258
+ /// A 64-bit vector of [2 x i32] containing one of the source operands. The
259
+ /// horizontal sums of the values are stored in the upper bits of the
260
+ /// destination.
261
+ /// \returns A 64-bit vector of [2 x i32] containing the horizontal sums of both
262
+ /// operands.
263
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
264
+ _mm_hadd_pi32(__m64 __a, __m64 __b)
265
+ {
266
+ return (__m64)__builtin_ia32_phaddd((__v2si)__a, (__v2si)__b);
267
+ }
268
+
269
+ /// Horizontally adds the adjacent pairs of values contained in 2 packed
270
+ /// 128-bit vectors of [8 x i16]. Positive sums greater than 0x7FFF are
271
+ /// saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
272
+ /// 0x8000.
273
+ ///
274
+ /// \headerfile <x86intrin.h>
275
+ ///
276
+ /// This intrinsic corresponds to the \c VPHADDSW instruction.
277
+ ///
278
+ /// \param __a
279
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
280
+ /// horizontal sums of the values are stored in the lower bits of the
281
+ /// destination.
282
+ /// \param __b
283
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
284
+ /// horizontal sums of the values are stored in the upper bits of the
285
+ /// destination.
286
+ /// \returns A 128-bit vector of [8 x i16] containing the horizontal saturated
287
+ /// sums of both operands.
288
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
289
+ _mm_hadds_epi16(__m128i __a, __m128i __b)
290
+ {
291
+ return (__m128i)__builtin_ia32_phaddsw128((__v8hi)__a, (__v8hi)__b);
292
+ }
293
+
294
+ /// Horizontally adds the adjacent pairs of values contained in 2 packed
295
+ /// 64-bit vectors of [4 x i16]. Positive sums greater than 0x7FFF are
296
+ /// saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
297
+ /// 0x8000.
298
+ ///
299
+ /// \headerfile <x86intrin.h>
300
+ ///
301
+ /// This intrinsic corresponds to the \c PHADDSW instruction.
302
+ ///
303
+ /// \param __a
304
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
305
+ /// horizontal sums of the values are stored in the lower bits of the
306
+ /// destination.
307
+ /// \param __b
308
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
309
+ /// horizontal sums of the values are stored in the upper bits of the
310
+ /// destination.
311
+ /// \returns A 64-bit vector of [4 x i16] containing the horizontal saturated
312
+ /// sums of both operands.
313
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
314
+ _mm_hadds_pi16(__m64 __a, __m64 __b)
315
+ {
316
+ return (__m64)__builtin_ia32_phaddsw((__v4hi)__a, (__v4hi)__b);
317
+ }
318
+
319
+ /// Horizontally subtracts the adjacent pairs of values contained in 2
320
+ /// packed 128-bit vectors of [8 x i16].
321
+ ///
322
+ /// \headerfile <x86intrin.h>
323
+ ///
324
+ /// This intrinsic corresponds to the \c VPHSUBW instruction.
325
+ ///
326
+ /// \param __a
327
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
328
+ /// horizontal differences between the values are stored in the lower bits of
329
+ /// the destination.
330
+ /// \param __b
331
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
332
+ /// horizontal differences between the values are stored in the upper bits of
333
+ /// the destination.
334
+ /// \returns A 128-bit vector of [8 x i16] containing the horizontal differences
335
+ /// of both operands.
336
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
337
+ _mm_hsub_epi16(__m128i __a, __m128i __b)
338
+ {
339
+ return (__m128i)__builtin_ia32_phsubw128((__v8hi)__a, (__v8hi)__b);
340
+ }
341
+
342
+ /// Horizontally subtracts the adjacent pairs of values contained in 2
343
+ /// packed 128-bit vectors of [4 x i32].
344
+ ///
345
+ /// \headerfile <x86intrin.h>
346
+ ///
347
+ /// This intrinsic corresponds to the \c VPHSUBD instruction.
348
+ ///
349
+ /// \param __a
350
+ /// A 128-bit vector of [4 x i32] containing one of the source operands. The
351
+ /// horizontal differences between the values are stored in the lower bits of
352
+ /// the destination.
353
+ /// \param __b
354
+ /// A 128-bit vector of [4 x i32] containing one of the source operands. The
355
+ /// horizontal differences between the values are stored in the upper bits of
356
+ /// the destination.
357
+ /// \returns A 128-bit vector of [4 x i32] containing the horizontal differences
358
+ /// of both operands.
359
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
360
+ _mm_hsub_epi32(__m128i __a, __m128i __b)
361
+ {
362
+ return (__m128i)__builtin_ia32_phsubd128((__v4si)__a, (__v4si)__b);
363
+ }
364
+
365
+ /// Horizontally subtracts the adjacent pairs of values contained in 2
366
+ /// packed 64-bit vectors of [4 x i16].
367
+ ///
368
+ /// \headerfile <x86intrin.h>
369
+ ///
370
+ /// This intrinsic corresponds to the \c PHSUBW instruction.
371
+ ///
372
+ /// \param __a
373
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
374
+ /// horizontal differences between the values are stored in the lower bits of
375
+ /// the destination.
376
+ /// \param __b
377
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
378
+ /// horizontal differences between the values are stored in the upper bits of
379
+ /// the destination.
380
+ /// \returns A 64-bit vector of [4 x i16] containing the horizontal differences
381
+ /// of both operands.
382
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
383
+ _mm_hsub_pi16(__m64 __a, __m64 __b)
384
+ {
385
+ return (__m64)__builtin_ia32_phsubw((__v4hi)__a, (__v4hi)__b);
386
+ }
387
+
388
+ /// Horizontally subtracts the adjacent pairs of values contained in 2
389
+ /// packed 64-bit vectors of [2 x i32].
390
+ ///
391
+ /// \headerfile <x86intrin.h>
392
+ ///
393
+ /// This intrinsic corresponds to the \c PHSUBD instruction.
394
+ ///
395
+ /// \param __a
396
+ /// A 64-bit vector of [2 x i32] containing one of the source operands. The
397
+ /// horizontal differences between the values are stored in the lower bits of
398
+ /// the destination.
399
+ /// \param __b
400
+ /// A 64-bit vector of [2 x i32] containing one of the source operands. The
401
+ /// horizontal differences between the values are stored in the upper bits of
402
+ /// the destination.
403
+ /// \returns A 64-bit vector of [2 x i32] containing the horizontal differences
404
+ /// of both operands.
405
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
406
+ _mm_hsub_pi32(__m64 __a, __m64 __b)
407
+ {
408
+ return (__m64)__builtin_ia32_phsubd((__v2si)__a, (__v2si)__b);
409
+ }
410
+
411
+ /// Horizontally subtracts the adjacent pairs of values contained in 2
412
+ /// packed 128-bit vectors of [8 x i16]. Positive differences greater than
413
+ /// 0x7FFF are saturated to 0x7FFF. Negative differences less than 0x8000 are
414
+ /// saturated to 0x8000.
415
+ ///
416
+ /// \headerfile <x86intrin.h>
417
+ ///
418
+ /// This intrinsic corresponds to the \c VPHSUBSW instruction.
419
+ ///
420
+ /// \param __a
421
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
422
+ /// horizontal differences between the values are stored in the lower bits of
423
+ /// the destination.
424
+ /// \param __b
425
+ /// A 128-bit vector of [8 x i16] containing one of the source operands. The
426
+ /// horizontal differences between the values are stored in the upper bits of
427
+ /// the destination.
428
+ /// \returns A 128-bit vector of [8 x i16] containing the horizontal saturated
429
+ /// differences of both operands.
430
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
431
+ _mm_hsubs_epi16(__m128i __a, __m128i __b)
432
+ {
433
+ return (__m128i)__builtin_ia32_phsubsw128((__v8hi)__a, (__v8hi)__b);
434
+ }
435
+
436
+ /// Horizontally subtracts the adjacent pairs of values contained in 2
437
+ /// packed 64-bit vectors of [4 x i16]. Positive differences greater than
438
+ /// 0x7FFF are saturated to 0x7FFF. Negative differences less than 0x8000 are
439
+ /// saturated to 0x8000.
440
+ ///
441
+ /// \headerfile <x86intrin.h>
442
+ ///
443
+ /// This intrinsic corresponds to the \c PHSUBSW instruction.
444
+ ///
445
+ /// \param __a
446
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
447
+ /// horizontal differences between the values are stored in the lower bits of
448
+ /// the destination.
449
+ /// \param __b
450
+ /// A 64-bit vector of [4 x i16] containing one of the source operands. The
451
+ /// horizontal differences between the values are stored in the upper bits of
452
+ /// the destination.
453
+ /// \returns A 64-bit vector of [4 x i16] containing the horizontal saturated
454
+ /// differences of both operands.
455
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
456
+ _mm_hsubs_pi16(__m64 __a, __m64 __b)
457
+ {
458
+ return (__m64)__builtin_ia32_phsubsw((__v4hi)__a, (__v4hi)__b);
459
+ }
460
+
461
+ /// Multiplies corresponding pairs of packed 8-bit unsigned integer
462
+ /// values contained in the first source operand and packed 8-bit signed
463
+ /// integer values contained in the second source operand, adds pairs of
464
+ /// contiguous products with signed saturation, and writes the 16-bit sums to
465
+ /// the corresponding bits in the destination.
466
+ ///
467
+ /// For example, bits [7:0] of both operands are multiplied, bits [15:8] of
468
+ /// both operands are multiplied, and the sum of both results is written to
469
+ /// bits [15:0] of the destination.
470
+ ///
471
+ /// \headerfile <x86intrin.h>
472
+ ///
473
+ /// This intrinsic corresponds to the \c VPMADDUBSW instruction.
474
+ ///
475
+ /// \param __a
476
+ /// A 128-bit integer vector containing the first source operand.
477
+ /// \param __b
478
+ /// A 128-bit integer vector containing the second source operand.
479
+ /// \returns A 128-bit integer vector containing the sums of products of both
480
+ /// operands: \n
481
+ /// \a R0 := (\a __a0 * \a __b0) + (\a __a1 * \a __b1) \n
482
+ /// \a R1 := (\a __a2 * \a __b2) + (\a __a3 * \a __b3) \n
483
+ /// \a R2 := (\a __a4 * \a __b4) + (\a __a5 * \a __b5) \n
484
+ /// \a R3 := (\a __a6 * \a __b6) + (\a __a7 * \a __b7) \n
485
+ /// \a R4 := (\a __a8 * \a __b8) + (\a __a9 * \a __b9) \n
486
+ /// \a R5 := (\a __a10 * \a __b10) + (\a __a11 * \a __b11) \n
487
+ /// \a R6 := (\a __a12 * \a __b12) + (\a __a13 * \a __b13) \n
488
+ /// \a R7 := (\a __a14 * \a __b14) + (\a __a15 * \a __b15)
489
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
490
+ _mm_maddubs_epi16(__m128i __a, __m128i __b)
491
+ {
492
+ return (__m128i)__builtin_ia32_pmaddubsw128((__v16qi)__a, (__v16qi)__b);
493
+ }
494
+
495
+ /// Multiplies corresponding pairs of packed 8-bit unsigned integer
496
+ /// values contained in the first source operand and packed 8-bit signed
497
+ /// integer values contained in the second source operand, adds pairs of
498
+ /// contiguous products with signed saturation, and writes the 16-bit sums to
499
+ /// the corresponding bits in the destination.
500
+ ///
501
+ /// For example, bits [7:0] of both operands are multiplied, bits [15:8] of
502
+ /// both operands are multiplied, and the sum of both results is written to
503
+ /// bits [15:0] of the destination.
504
+ ///
505
+ /// \headerfile <x86intrin.h>
506
+ ///
507
+ /// This intrinsic corresponds to the \c PMADDUBSW instruction.
508
+ ///
509
+ /// \param __a
510
+ /// A 64-bit integer vector containing the first source operand.
511
+ /// \param __b
512
+ /// A 64-bit integer vector containing the second source operand.
513
+ /// \returns A 64-bit integer vector containing the sums of products of both
514
+ /// operands: \n
515
+ /// \a R0 := (\a __a0 * \a __b0) + (\a __a1 * \a __b1) \n
516
+ /// \a R1 := (\a __a2 * \a __b2) + (\a __a3 * \a __b3) \n
517
+ /// \a R2 := (\a __a4 * \a __b4) + (\a __a5 * \a __b5) \n
518
+ /// \a R3 := (\a __a6 * \a __b6) + (\a __a7 * \a __b7)
519
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
520
+ _mm_maddubs_pi16(__m64 __a, __m64 __b)
521
+ {
522
+ return (__m64)__builtin_ia32_pmaddubsw((__v8qi)__a, (__v8qi)__b);
523
+ }
524
+
525
+ /// Multiplies packed 16-bit signed integer values, truncates the 32-bit
526
+ /// products to the 18 most significant bits by right-shifting, rounds the
527
+ /// truncated value by adding 1, and writes bits [16:1] to the destination.
528
+ ///
529
+ /// \headerfile <x86intrin.h>
530
+ ///
531
+ /// This intrinsic corresponds to the \c VPMULHRSW instruction.
532
+ ///
533
+ /// \param __a
534
+ /// A 128-bit vector of [8 x i16] containing one of the source operands.
535
+ /// \param __b
536
+ /// A 128-bit vector of [8 x i16] containing one of the source operands.
537
+ /// \returns A 128-bit vector of [8 x i16] containing the rounded and scaled
538
+ /// products of both operands.
539
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
540
+ _mm_mulhrs_epi16(__m128i __a, __m128i __b)
541
+ {
542
+ return (__m128i)__builtin_ia32_pmulhrsw128((__v8hi)__a, (__v8hi)__b);
543
+ }
544
+
545
+ /// Multiplies packed 16-bit signed integer values, truncates the 32-bit
546
+ /// products to the 18 most significant bits by right-shifting, rounds the
547
+ /// truncated value by adding 1, and writes bits [16:1] to the destination.
548
+ ///
549
+ /// \headerfile <x86intrin.h>
550
+ ///
551
+ /// This intrinsic corresponds to the \c PMULHRSW instruction.
552
+ ///
553
+ /// \param __a
554
+ /// A 64-bit vector of [4 x i16] containing one of the source operands.
555
+ /// \param __b
556
+ /// A 64-bit vector of [4 x i16] containing one of the source operands.
557
+ /// \returns A 64-bit vector of [4 x i16] containing the rounded and scaled
558
+ /// products of both operands.
559
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
560
+ _mm_mulhrs_pi16(__m64 __a, __m64 __b)
561
+ {
562
+ return (__m64)__builtin_ia32_pmulhrsw((__v4hi)__a, (__v4hi)__b);
563
+ }
564
+
565
+ /// Copies the 8-bit integers from a 128-bit integer vector to the
566
+ /// destination or clears 8-bit values in the destination, as specified by
567
+ /// the second source operand.
568
+ ///
569
+ /// \headerfile <x86intrin.h>
570
+ ///
571
+ /// This intrinsic corresponds to the \c VPSHUFB instruction.
572
+ ///
573
+ /// \param __a
574
+ /// A 128-bit integer vector containing the values to be copied.
575
+ /// \param __b
576
+ /// A 128-bit integer vector containing control bytes corresponding to
577
+ /// positions in the destination:
578
+ /// Bit 7: \n
579
+ /// 1: Clear the corresponding byte in the destination. \n
580
+ /// 0: Copy the selected source byte to the corresponding byte in the
581
+ /// destination. \n
582
+ /// Bits [6:4] Reserved. \n
583
+ /// Bits [3:0] select the source byte to be copied.
584
+ /// \returns A 128-bit integer vector containing the copied or cleared values.
585
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
586
+ _mm_shuffle_epi8(__m128i __a, __m128i __b)
587
+ {
588
+ return (__m128i)__builtin_ia32_pshufb128((__v16qi)__a, (__v16qi)__b);
589
+ }
590
+
591
+ /// Copies the 8-bit integers from a 64-bit integer vector to the
592
+ /// destination or clears 8-bit values in the destination, as specified by
593
+ /// the second source operand.
594
+ ///
595
+ /// \headerfile <x86intrin.h>
596
+ ///
597
+ /// This intrinsic corresponds to the \c PSHUFB instruction.
598
+ ///
599
+ /// \param __a
600
+ /// A 64-bit integer vector containing the values to be copied.
601
+ /// \param __b
602
+ /// A 64-bit integer vector containing control bytes corresponding to
603
+ /// positions in the destination:
604
+ /// Bit 7: \n
605
+ /// 1: Clear the corresponding byte in the destination. \n
606
+ /// 0: Copy the selected source byte to the corresponding byte in the
607
+ /// destination. \n
608
+ /// Bits [3:0] select the source byte to be copied.
609
+ /// \returns A 64-bit integer vector containing the copied or cleared values.
610
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
611
+ _mm_shuffle_pi8(__m64 __a, __m64 __b)
612
+ {
613
+ return (__m64)__builtin_ia32_pshufb((__v8qi)__a, (__v8qi)__b);
614
+ }
615
+
616
+ /// For each 8-bit integer in the first source operand, perform one of
617
+ /// the following actions as specified by the second source operand.
618
+ ///
619
+ /// If the byte in the second source is negative, calculate the two's
620
+ /// complement of the corresponding byte in the first source, and write that
621
+ /// value to the destination. If the byte in the second source is positive,
622
+ /// copy the corresponding byte from the first source to the destination. If
623
+ /// the byte in the second source is zero, clear the corresponding byte in
624
+ /// the destination.
625
+ ///
626
+ /// \headerfile <x86intrin.h>
627
+ ///
628
+ /// This intrinsic corresponds to the \c VPSIGNB instruction.
629
+ ///
630
+ /// \param __a
631
+ /// A 128-bit integer vector containing the values to be copied.
632
+ /// \param __b
633
+ /// A 128-bit integer vector containing control bytes corresponding to
634
+ /// positions in the destination.
635
+ /// \returns A 128-bit integer vector containing the resultant values.
636
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
637
+ _mm_sign_epi8(__m128i __a, __m128i __b)
638
+ {
639
+ return (__m128i)__builtin_ia32_psignb128((__v16qi)__a, (__v16qi)__b);
640
+ }
641
+
642
+ /// For each 16-bit integer in the first source operand, perform one of
643
+ /// the following actions as specified by the second source operand.
644
+ ///
645
+ /// If the word in the second source is negative, calculate the two's
646
+ /// complement of the corresponding word in the first source, and write that
647
+ /// value to the destination. If the word in the second source is positive,
648
+ /// copy the corresponding word from the first source to the destination. If
649
+ /// the word in the second source is zero, clear the corresponding word in
650
+ /// the destination.
651
+ ///
652
+ /// \headerfile <x86intrin.h>
653
+ ///
654
+ /// This intrinsic corresponds to the \c VPSIGNW instruction.
655
+ ///
656
+ /// \param __a
657
+ /// A 128-bit integer vector containing the values to be copied.
658
+ /// \param __b
659
+ /// A 128-bit integer vector containing control words corresponding to
660
+ /// positions in the destination.
661
+ /// \returns A 128-bit integer vector containing the resultant values.
662
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
663
+ _mm_sign_epi16(__m128i __a, __m128i __b)
664
+ {
665
+ return (__m128i)__builtin_ia32_psignw128((__v8hi)__a, (__v8hi)__b);
666
+ }
667
+
668
+ /// For each 32-bit integer in the first source operand, perform one of
669
+ /// the following actions as specified by the second source operand.
670
+ ///
671
+ /// If the doubleword in the second source is negative, calculate the two's
672
+ /// complement of the corresponding word in the first source, and write that
673
+ /// value to the destination. If the doubleword in the second source is
674
+ /// positive, copy the corresponding word from the first source to the
675
+ /// destination. If the doubleword in the second source is zero, clear the
676
+ /// corresponding word in the destination.
677
+ ///
678
+ /// \headerfile <x86intrin.h>
679
+ ///
680
+ /// This intrinsic corresponds to the \c VPSIGND instruction.
681
+ ///
682
+ /// \param __a
683
+ /// A 128-bit integer vector containing the values to be copied.
684
+ /// \param __b
685
+ /// A 128-bit integer vector containing control doublewords corresponding to
686
+ /// positions in the destination.
687
+ /// \returns A 128-bit integer vector containing the resultant values.
688
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
689
+ _mm_sign_epi32(__m128i __a, __m128i __b)
690
+ {
691
+ return (__m128i)__builtin_ia32_psignd128((__v4si)__a, (__v4si)__b);
692
+ }
693
+
694
+ /// For each 8-bit integer in the first source operand, perform one of
695
+ /// the following actions as specified by the second source operand.
696
+ ///
697
+ /// If the byte in the second source is negative, calculate the two's
698
+ /// complement of the corresponding byte in the first source, and write that
699
+ /// value to the destination. If the byte in the second source is positive,
700
+ /// copy the corresponding byte from the first source to the destination. If
701
+ /// the byte in the second source is zero, clear the corresponding byte in
702
+ /// the destination.
703
+ ///
704
+ /// \headerfile <x86intrin.h>
705
+ ///
706
+ /// This intrinsic corresponds to the \c PSIGNB instruction.
707
+ ///
708
+ /// \param __a
709
+ /// A 64-bit integer vector containing the values to be copied.
710
+ /// \param __b
711
+ /// A 64-bit integer vector containing control bytes corresponding to
712
+ /// positions in the destination.
713
+ /// \returns A 64-bit integer vector containing the resultant values.
714
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
715
+ _mm_sign_pi8(__m64 __a, __m64 __b)
716
+ {
717
+ return (__m64)__builtin_ia32_psignb((__v8qi)__a, (__v8qi)__b);
718
+ }
719
+
720
+ /// For each 16-bit integer in the first source operand, perform one of
721
+ /// the following actions as specified by the second source operand.
722
+ ///
723
+ /// If the word in the second source is negative, calculate the two's
724
+ /// complement of the corresponding word in the first source, and write that
725
+ /// value to the destination. If the word in the second source is positive,
726
+ /// copy the corresponding word from the first source to the destination. If
727
+ /// the word in the second source is zero, clear the corresponding word in
728
+ /// the destination.
729
+ ///
730
+ /// \headerfile <x86intrin.h>
731
+ ///
732
+ /// This intrinsic corresponds to the \c PSIGNW instruction.
733
+ ///
734
+ /// \param __a
735
+ /// A 64-bit integer vector containing the values to be copied.
736
+ /// \param __b
737
+ /// A 64-bit integer vector containing control words corresponding to
738
+ /// positions in the destination.
739
+ /// \returns A 64-bit integer vector containing the resultant values.
740
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
741
+ _mm_sign_pi16(__m64 __a, __m64 __b)
742
+ {
743
+ return (__m64)__builtin_ia32_psignw((__v4hi)__a, (__v4hi)__b);
744
+ }
745
+
746
+ /// For each 32-bit integer in the first source operand, perform one of
747
+ /// the following actions as specified by the second source operand.
748
+ ///
749
+ /// If the doubleword in the second source is negative, calculate the two's
750
+ /// complement of the corresponding doubleword in the first source, and
751
+ /// write that value to the destination. If the doubleword in the second
752
+ /// source is positive, copy the corresponding doubleword from the first
753
+ /// source to the destination. If the doubleword in the second source is
754
+ /// zero, clear the corresponding doubleword in the destination.
755
+ ///
756
+ /// \headerfile <x86intrin.h>
757
+ ///
758
+ /// This intrinsic corresponds to the \c PSIGND instruction.
759
+ ///
760
+ /// \param __a
761
+ /// A 64-bit integer vector containing the values to be copied.
762
+ /// \param __b
763
+ /// A 64-bit integer vector containing two control doublewords corresponding
764
+ /// to positions in the destination.
765
+ /// \returns A 64-bit integer vector containing the resultant values.
766
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
767
+ _mm_sign_pi32(__m64 __a, __m64 __b)
768
+ {
769
+ return (__m64)__builtin_ia32_psignd((__v2si)__a, (__v2si)__b);
770
+ }
771
+
772
+ #undef __DEFAULT_FN_ATTRS
773
+ #undef __DEFAULT_FN_ATTRS_MMX
774
+
775
+ #endif /* __TMMINTRIN_H */