@cpp-linter/clang-tidy-darwin-arm64 18.1.5 → 19.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{18 → 19}/include/__clang_cuda_intrinsics.h +1 -3
  4. package/lib/clang/19/include/__stdarg_header_macro.h +12 -0
  5. package/lib/clang/19/include/__stddef_header_macro.h +12 -0
  6. package/lib/clang/{18 → 19}/include/arm_acle.h +31 -5
  7. package/lib/clang/{18 → 19}/include/arm_fp16.h +1 -1
  8. package/lib/clang/{18 → 19}/include/arm_neon.h +43796 -43801
  9. package/lib/clang/{18 → 19}/include/arm_sme.h +408 -1
  10. package/lib/clang/{18 → 19}/include/arm_sve.h +27266 -27714
  11. package/lib/clang/{18 → 19}/include/arm_vector_types.h +5 -5
  12. package/lib/clang/{18 → 19}/include/avx512fp16intrin.h +38 -38
  13. package/lib/clang/{18 → 19}/include/avxintrin.h +58 -44
  14. package/lib/clang/{18 → 19}/include/bmiintrin.h +2 -4
  15. package/lib/clang/{18 → 19}/include/builtins.h +3 -0
  16. package/lib/clang/{18 → 19}/include/cpuid.h +23 -3
  17. package/lib/clang/{18 → 19}/include/cuda_wrappers/algorithm +1 -1
  18. package/lib/clang/{18 → 19}/include/emmintrin.h +301 -170
  19. package/lib/clang/{18 → 19}/include/float.h +28 -0
  20. package/lib/clang/{18 → 19}/include/fmaintrin.h +32 -16
  21. package/lib/clang/{18 → 19}/include/hlsl/hlsl_basic_types.h +10 -3
  22. package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +1697 -0
  23. package/lib/clang/{18 → 19}/include/ia32intrin.h +36 -36
  24. package/lib/clang/{18 → 19}/include/immintrin.h +85 -159
  25. package/lib/clang/{18 → 19}/include/intrin.h +48 -224
  26. package/lib/clang/19/include/intrin0.h +247 -0
  27. package/lib/clang/{18 → 19}/include/inttypes.h +4 -0
  28. package/lib/clang/{18 → 19}/include/iso646.h +4 -0
  29. package/lib/clang/{18 → 19}/include/keylockerintrin.h +5 -8
  30. package/lib/clang/{18 → 19}/include/limits.h +5 -0
  31. package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/assert.h +1 -1
  32. package/lib/clang/19/include/mm3dnow.h +22 -0
  33. package/lib/clang/{18 → 19}/include/mmintrin.h +76 -84
  34. package/lib/clang/{18 → 19}/include/module.modulemap +14 -1
  35. package/lib/clang/{18 → 19}/include/opencl-c-base.h +4 -0
  36. package/lib/clang/{18 → 19}/include/opencl-c.h +15 -0
  37. package/lib/clang/{18 → 19}/include/prfchwintrin.h +10 -8
  38. package/lib/clang/19/include/ptrauth.h +330 -0
  39. package/lib/clang/{18 → 19}/include/riscv_vector.h +0 -4
  40. package/lib/clang/19/include/sifive_vector.h +118 -0
  41. package/lib/clang/{18 → 19}/include/smmintrin.h +12 -12
  42. package/lib/clang/{18 → 19}/include/stdalign.h +5 -0
  43. package/lib/clang/{18 → 19}/include/stdarg.h +15 -19
  44. package/lib/clang/{18 → 19}/include/stdatomic.h +11 -1
  45. package/lib/clang/{18 → 19}/include/stdbool.h +5 -0
  46. package/lib/clang/{18 → 19}/include/stddef.h +38 -22
  47. package/lib/clang/{18 → 19}/include/stdint.h +5 -0
  48. package/lib/clang/{18 → 19}/include/stdnoreturn.h +6 -0
  49. package/lib/clang/{18 → 19}/include/tmmintrin.h +20 -16
  50. package/lib/clang/{18 → 19}/include/varargs.h +5 -1
  51. package/lib/clang/{18 → 19}/include/x86gprintrin.h +7 -14
  52. package/lib/clang/19/include/x86intrin.h +53 -0
  53. package/lib/clang/{18 → 19}/include/xmmintrin.h +285 -99
  54. package/lib/clang/19/include/yvals_core.h +25 -0
  55. package/lib/clang/19/include/zos_wrappers/builtins.h +18 -0
  56. package/package.json +6 -6
  57. package/lib/clang/18/include/avx512erintrin.h +0 -271
  58. package/lib/clang/18/include/avx512pfintrin.h +0 -92
  59. package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +0 -624
  60. package/lib/clang/18/include/mm3dnow.h +0 -157
  61. package/lib/clang/18/include/sifive_vector.h +0 -16
  62. package/lib/clang/18/include/x86intrin.h +0 -67
  63. /package/lib/clang/{18 → 19}/include/__clang_cuda_builtin_vars.h +0 -0
  64. /package/lib/clang/{18 → 19}/include/__clang_cuda_cmath.h +0 -0
  65. /package/lib/clang/{18 → 19}/include/__clang_cuda_complex_builtins.h +0 -0
  66. /package/lib/clang/{18 → 19}/include/__clang_cuda_device_functions.h +0 -0
  67. /package/lib/clang/{18 → 19}/include/__clang_cuda_libdevice_declares.h +0 -0
  68. /package/lib/clang/{18 → 19}/include/__clang_cuda_math.h +0 -0
  69. /package/lib/clang/{18 → 19}/include/__clang_cuda_math_forward_declares.h +0 -0
  70. /package/lib/clang/{18 → 19}/include/__clang_cuda_runtime_wrapper.h +0 -0
  71. /package/lib/clang/{18 → 19}/include/__clang_cuda_texture_intrinsics.h +0 -0
  72. /package/lib/clang/{18 → 19}/include/__clang_hip_cmath.h +0 -0
  73. /package/lib/clang/{18 → 19}/include/__clang_hip_libdevice_declares.h +0 -0
  74. /package/lib/clang/{18 → 19}/include/__clang_hip_math.h +0 -0
  75. /package/lib/clang/{18 → 19}/include/__clang_hip_runtime_wrapper.h +0 -0
  76. /package/lib/clang/{18 → 19}/include/__clang_hip_stdlib.h +0 -0
  77. /package/lib/clang/{18 → 19}/include/__stdarg___gnuc_va_list.h +0 -0
  78. /package/lib/clang/{18 → 19}/include/__stdarg___va_copy.h +0 -0
  79. /package/lib/clang/{18 → 19}/include/__stdarg_va_arg.h +0 -0
  80. /package/lib/clang/{18 → 19}/include/__stdarg_va_copy.h +0 -0
  81. /package/lib/clang/{18 → 19}/include/__stdarg_va_list.h +0 -0
  82. /package/lib/clang/{18 → 19}/include/__stddef_max_align_t.h +0 -0
  83. /package/lib/clang/{18 → 19}/include/__stddef_null.h +0 -0
  84. /package/lib/clang/{18 → 19}/include/__stddef_nullptr_t.h +0 -0
  85. /package/lib/clang/{18 → 19}/include/__stddef_offsetof.h +0 -0
  86. /package/lib/clang/{18 → 19}/include/__stddef_ptrdiff_t.h +0 -0
  87. /package/lib/clang/{18 → 19}/include/__stddef_rsize_t.h +0 -0
  88. /package/lib/clang/{18 → 19}/include/__stddef_size_t.h +0 -0
  89. /package/lib/clang/{18 → 19}/include/__stddef_unreachable.h +0 -0
  90. /package/lib/clang/{18 → 19}/include/__stddef_wchar_t.h +0 -0
  91. /package/lib/clang/{18 → 19}/include/__stddef_wint_t.h +0 -0
  92. /package/lib/clang/{18 → 19}/include/__wmmintrin_aes.h +0 -0
  93. /package/lib/clang/{18 → 19}/include/__wmmintrin_pclmul.h +0 -0
  94. /package/lib/clang/{18 → 19}/include/adcintrin.h +0 -0
  95. /package/lib/clang/{18 → 19}/include/adxintrin.h +0 -0
  96. /package/lib/clang/{18 → 19}/include/altivec.h +0 -0
  97. /package/lib/clang/{18 → 19}/include/ammintrin.h +0 -0
  98. /package/lib/clang/{18 → 19}/include/amxcomplexintrin.h +0 -0
  99. /package/lib/clang/{18 → 19}/include/amxfp16intrin.h +0 -0
  100. /package/lib/clang/{18 → 19}/include/amxintrin.h +0 -0
  101. /package/lib/clang/{18 → 19}/include/arm64intr.h +0 -0
  102. /package/lib/clang/{18 → 19}/include/arm_bf16.h +0 -0
  103. /package/lib/clang/{18 → 19}/include/arm_cde.h +0 -0
  104. /package/lib/clang/{18 → 19}/include/arm_cmse.h +0 -0
  105. /package/lib/clang/{18 → 19}/include/arm_mve.h +0 -0
  106. /package/lib/clang/{18 → 19}/include/arm_neon_sve_bridge.h +0 -0
  107. /package/lib/clang/{18 → 19}/include/armintr.h +0 -0
  108. /package/lib/clang/{18 → 19}/include/avx2intrin.h +0 -0
  109. /package/lib/clang/{18 → 19}/include/avx512bf16intrin.h +0 -0
  110. /package/lib/clang/{18 → 19}/include/avx512bitalgintrin.h +0 -0
  111. /package/lib/clang/{18 → 19}/include/avx512bwintrin.h +0 -0
  112. /package/lib/clang/{18 → 19}/include/avx512cdintrin.h +0 -0
  113. /package/lib/clang/{18 → 19}/include/avx512dqintrin.h +0 -0
  114. /package/lib/clang/{18 → 19}/include/avx512fintrin.h +0 -0
  115. /package/lib/clang/{18 → 19}/include/avx512ifmaintrin.h +0 -0
  116. /package/lib/clang/{18 → 19}/include/avx512ifmavlintrin.h +0 -0
  117. /package/lib/clang/{18 → 19}/include/avx512vbmi2intrin.h +0 -0
  118. /package/lib/clang/{18 → 19}/include/avx512vbmiintrin.h +0 -0
  119. /package/lib/clang/{18 → 19}/include/avx512vbmivlintrin.h +0 -0
  120. /package/lib/clang/{18 → 19}/include/avx512vlbf16intrin.h +0 -0
  121. /package/lib/clang/{18 → 19}/include/avx512vlbitalgintrin.h +0 -0
  122. /package/lib/clang/{18 → 19}/include/avx512vlbwintrin.h +0 -0
  123. /package/lib/clang/{18 → 19}/include/avx512vlcdintrin.h +0 -0
  124. /package/lib/clang/{18 → 19}/include/avx512vldqintrin.h +0 -0
  125. /package/lib/clang/{18 → 19}/include/avx512vlfp16intrin.h +0 -0
  126. /package/lib/clang/{18 → 19}/include/avx512vlintrin.h +0 -0
  127. /package/lib/clang/{18 → 19}/include/avx512vlvbmi2intrin.h +0 -0
  128. /package/lib/clang/{18 → 19}/include/avx512vlvnniintrin.h +0 -0
  129. /package/lib/clang/{18 → 19}/include/avx512vlvp2intersectintrin.h +0 -0
  130. /package/lib/clang/{18 → 19}/include/avx512vnniintrin.h +0 -0
  131. /package/lib/clang/{18 → 19}/include/avx512vp2intersectintrin.h +0 -0
  132. /package/lib/clang/{18 → 19}/include/avx512vpopcntdqintrin.h +0 -0
  133. /package/lib/clang/{18 → 19}/include/avx512vpopcntdqvlintrin.h +0 -0
  134. /package/lib/clang/{18 → 19}/include/avxifmaintrin.h +0 -0
  135. /package/lib/clang/{18 → 19}/include/avxneconvertintrin.h +0 -0
  136. /package/lib/clang/{18 → 19}/include/avxvnniint16intrin.h +0 -0
  137. /package/lib/clang/{18 → 19}/include/avxvnniint8intrin.h +0 -0
  138. /package/lib/clang/{18 → 19}/include/avxvnniintrin.h +0 -0
  139. /package/lib/clang/{18 → 19}/include/bmi2intrin.h +0 -0
  140. /package/lib/clang/{18 → 19}/include/cet.h +0 -0
  141. /package/lib/clang/{18 → 19}/include/cetintrin.h +0 -0
  142. /package/lib/clang/{18 → 19}/include/cldemoteintrin.h +0 -0
  143. /package/lib/clang/{18 → 19}/include/clflushoptintrin.h +0 -0
  144. /package/lib/clang/{18 → 19}/include/clwbintrin.h +0 -0
  145. /package/lib/clang/{18 → 19}/include/clzerointrin.h +0 -0
  146. /package/lib/clang/{18 → 19}/include/cmpccxaddintrin.h +0 -0
  147. /package/lib/clang/{18 → 19}/include/crc32intrin.h +0 -0
  148. /package/lib/clang/{18 → 19}/include/cuda_wrappers/bits/basic_string.h +0 -0
  149. /package/lib/clang/{18 → 19}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  150. /package/lib/clang/{18 → 19}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  151. /package/lib/clang/{18 → 19}/include/cuda_wrappers/cmath +0 -0
  152. /package/lib/clang/{18 → 19}/include/cuda_wrappers/complex +0 -0
  153. /package/lib/clang/{18 → 19}/include/cuda_wrappers/new +0 -0
  154. /package/lib/clang/{18 → 19}/include/enqcmdintrin.h +0 -0
  155. /package/lib/clang/{18 → 19}/include/f16cintrin.h +0 -0
  156. /package/lib/clang/{18 → 19}/include/fma4intrin.h +0 -0
  157. /package/lib/clang/{18 → 19}/include/fxsrintrin.h +0 -0
  158. /package/lib/clang/{18 → 19}/include/gfniintrin.h +0 -0
  159. /package/lib/clang/{18 → 19}/include/hexagon_circ_brev_intrinsics.h +0 -0
  160. /package/lib/clang/{18 → 19}/include/hexagon_protos.h +0 -0
  161. /package/lib/clang/{18 → 19}/include/hexagon_types.h +0 -0
  162. /package/lib/clang/{18 → 19}/include/hlsl.h +0 -0
  163. /package/lib/clang/{18 → 19}/include/hresetintrin.h +0 -0
  164. /package/lib/clang/{18 → 19}/include/htmintrin.h +0 -0
  165. /package/lib/clang/{18 → 19}/include/htmxlintrin.h +0 -0
  166. /package/lib/clang/{18 → 19}/include/hvx_hexagon_protos.h +0 -0
  167. /package/lib/clang/{18 → 19}/include/invpcidintrin.h +0 -0
  168. /package/lib/clang/{18 → 19}/include/larchintrin.h +0 -0
  169. /package/lib/clang/{18 → 19}/include/lasxintrin.h +0 -0
  170. /package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/ctype.h +0 -0
  171. /package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/inttypes.h +0 -0
  172. /package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/stdio.h +0 -0
  173. /package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/stdlib.h +0 -0
  174. /package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/string.h +0 -0
  175. /package/lib/clang/{18 → 19}/include/llvm_libc_wrappers/time.h +0 -0
  176. /package/lib/clang/{18 → 19}/include/lsxintrin.h +0 -0
  177. /package/lib/clang/{18 → 19}/include/lwpintrin.h +0 -0
  178. /package/lib/clang/{18 → 19}/include/lzcntintrin.h +0 -0
  179. /package/lib/clang/{18 → 19}/include/mm_malloc.h +0 -0
  180. /package/lib/clang/{18 → 19}/include/movdirintrin.h +0 -0
  181. /package/lib/clang/{18 → 19}/include/msa.h +0 -0
  182. /package/lib/clang/{18 → 19}/include/mwaitxintrin.h +0 -0
  183. /package/lib/clang/{18 → 19}/include/nmmintrin.h +0 -0
  184. /package/lib/clang/{18 → 19}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  185. /package/lib/clang/{18 → 19}/include/openmp_wrappers/cmath +0 -0
  186. /package/lib/clang/{18 → 19}/include/openmp_wrappers/complex +0 -0
  187. /package/lib/clang/{18 → 19}/include/openmp_wrappers/complex.h +0 -0
  188. /package/lib/clang/{18 → 19}/include/openmp_wrappers/complex_cmath.h +0 -0
  189. /package/lib/clang/{18 → 19}/include/openmp_wrappers/math.h +0 -0
  190. /package/lib/clang/{18 → 19}/include/openmp_wrappers/new +0 -0
  191. /package/lib/clang/{18 → 19}/include/pconfigintrin.h +0 -0
  192. /package/lib/clang/{18 → 19}/include/pkuintrin.h +0 -0
  193. /package/lib/clang/{18 → 19}/include/pmmintrin.h +0 -0
  194. /package/lib/clang/{18 → 19}/include/popcntintrin.h +0 -0
  195. /package/lib/clang/{18 → 19}/include/ppc_wrappers/bmi2intrin.h +0 -0
  196. /package/lib/clang/{18 → 19}/include/ppc_wrappers/bmiintrin.h +0 -0
  197. /package/lib/clang/{18 → 19}/include/ppc_wrappers/emmintrin.h +0 -0
  198. /package/lib/clang/{18 → 19}/include/ppc_wrappers/immintrin.h +0 -0
  199. /package/lib/clang/{18 → 19}/include/ppc_wrappers/mm_malloc.h +0 -0
  200. /package/lib/clang/{18 → 19}/include/ppc_wrappers/mmintrin.h +0 -0
  201. /package/lib/clang/{18 → 19}/include/ppc_wrappers/nmmintrin.h +0 -0
  202. /package/lib/clang/{18 → 19}/include/ppc_wrappers/pmmintrin.h +0 -0
  203. /package/lib/clang/{18 → 19}/include/ppc_wrappers/smmintrin.h +0 -0
  204. /package/lib/clang/{18 → 19}/include/ppc_wrappers/tmmintrin.h +0 -0
  205. /package/lib/clang/{18 → 19}/include/ppc_wrappers/x86gprintrin.h +0 -0
  206. /package/lib/clang/{18 → 19}/include/ppc_wrappers/x86intrin.h +0 -0
  207. /package/lib/clang/{18 → 19}/include/ppc_wrappers/xmmintrin.h +0 -0
  208. /package/lib/clang/{18 → 19}/include/prfchiintrin.h +0 -0
  209. /package/lib/clang/{18 → 19}/include/ptwriteintrin.h +0 -0
  210. /package/lib/clang/{18 → 19}/include/raointintrin.h +0 -0
  211. /package/lib/clang/{18 → 19}/include/rdpruintrin.h +0 -0
  212. /package/lib/clang/{18 → 19}/include/rdseedintrin.h +0 -0
  213. /package/lib/clang/{18 → 19}/include/riscv_bitmanip.h +0 -0
  214. /package/lib/clang/{18 → 19}/include/riscv_crypto.h +0 -0
  215. /package/lib/clang/{18 → 19}/include/riscv_ntlh.h +0 -0
  216. /package/lib/clang/{18 → 19}/include/rtmintrin.h +0 -0
  217. /package/lib/clang/{18 → 19}/include/s390intrin.h +0 -0
  218. /package/lib/clang/{18 → 19}/include/serializeintrin.h +0 -0
  219. /package/lib/clang/{18 → 19}/include/sgxintrin.h +0 -0
  220. /package/lib/clang/{18 → 19}/include/sha512intrin.h +0 -0
  221. /package/lib/clang/{18 → 19}/include/shaintrin.h +0 -0
  222. /package/lib/clang/{18 → 19}/include/sm3intrin.h +0 -0
  223. /package/lib/clang/{18 → 19}/include/sm4intrin.h +0 -0
  224. /package/lib/clang/{18 → 19}/include/stdckdint.h +0 -0
  225. /package/lib/clang/{18 → 19}/include/tbmintrin.h +0 -0
  226. /package/lib/clang/{18 → 19}/include/tgmath.h +0 -0
  227. /package/lib/clang/{18 → 19}/include/tsxldtrkintrin.h +0 -0
  228. /package/lib/clang/{18 → 19}/include/uintrintrin.h +0 -0
  229. /package/lib/clang/{18 → 19}/include/unwind.h +0 -0
  230. /package/lib/clang/{18 → 19}/include/usermsrintrin.h +0 -0
  231. /package/lib/clang/{18 → 19}/include/vadefs.h +0 -0
  232. /package/lib/clang/{18 → 19}/include/vaesintrin.h +0 -0
  233. /package/lib/clang/{18 → 19}/include/vecintrin.h +0 -0
  234. /package/lib/clang/{18 → 19}/include/velintrin.h +0 -0
  235. /package/lib/clang/{18 → 19}/include/velintrin_approx.h +0 -0
  236. /package/lib/clang/{18 → 19}/include/velintrin_gen.h +0 -0
  237. /package/lib/clang/{18 → 19}/include/vpclmulqdqintrin.h +0 -0
  238. /package/lib/clang/{18 → 19}/include/waitpkgintrin.h +0 -0
  239. /package/lib/clang/{18 → 19}/include/wasm_simd128.h +0 -0
  240. /package/lib/clang/{18 → 19}/include/wbnoinvdintrin.h +0 -0
  241. /package/lib/clang/{18 → 19}/include/wmmintrin.h +0 -0
  242. /package/lib/clang/{18 → 19}/include/xopintrin.h +0 -0
  243. /package/lib/clang/{18 → 19}/include/xsavecintrin.h +0 -0
  244. /package/lib/clang/{18 → 19}/include/xsaveintrin.h +0 -0
  245. /package/lib/clang/{18 → 19}/include/xsaveoptintrin.h +0 -0
  246. /package/lib/clang/{18 → 19}/include/xsavesintrin.h +0 -0
  247. /package/lib/clang/{18 → 19}/include/xtestintrin.h +0 -0
@@ -259,6 +259,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sqrt_pd(__m128d __a) {
259
259
  /// result. The upper 64 bits of the result are copied from the upper
260
260
  /// double-precision value of the first operand.
261
261
  ///
262
+ /// If either value in a comparison is NaN, returns the value from \a __b.
263
+ ///
262
264
  /// \headerfile <x86intrin.h>
263
265
  ///
264
266
  /// This intrinsic corresponds to the <c> VMINSD / MINSD </c> instruction.
@@ -278,9 +280,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_min_sd(__m128d __a,
278
280
  }
279
281
 
280
282
  /// Performs element-by-element comparison of the two 128-bit vectors of
281
- /// [2 x double] and returns the vector containing the lesser of each pair of
283
+ /// [2 x double] and returns a vector containing the lesser of each pair of
282
284
  /// values.
283
285
  ///
286
+ /// If either value in a comparison is NaN, returns the value from \a __b.
287
+ ///
284
288
  /// \headerfile <x86intrin.h>
285
289
  ///
286
290
  /// This intrinsic corresponds to the <c> VMINPD / MINPD </c> instruction.
@@ -301,6 +305,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_min_pd(__m128d __a,
301
305
  /// result. The upper 64 bits of the result are copied from the upper
302
306
  /// double-precision value of the first operand.
303
307
  ///
308
+ /// If either value in a comparison is NaN, returns the value from \a __b.
309
+ ///
304
310
  /// \headerfile <x86intrin.h>
305
311
  ///
306
312
  /// This intrinsic corresponds to the <c> VMAXSD / MAXSD </c> instruction.
@@ -320,9 +326,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_max_sd(__m128d __a,
320
326
  }
321
327
 
322
328
  /// Performs element-by-element comparison of the two 128-bit vectors of
323
- /// [2 x double] and returns the vector containing the greater of each pair
329
+ /// [2 x double] and returns a vector containing the greater of each pair
324
330
  /// of values.
325
331
  ///
332
+ /// If either value in a comparison is NaN, returns the value from \a __b.
333
+ ///
326
334
  /// \headerfile <x86intrin.h>
327
335
  ///
328
336
  /// This intrinsic corresponds to the <c> VMAXPD / MAXPD </c> instruction.
@@ -410,8 +418,10 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_xor_pd(__m128d __a,
410
418
  }
411
419
 
412
420
  /// Compares each of the corresponding double-precision values of the
413
- /// 128-bit vectors of [2 x double] for equality. Each comparison yields 0x0
414
- /// for false, 0xFFFFFFFFFFFFFFFF for true.
421
+ /// 128-bit vectors of [2 x double] for equality.
422
+ ///
423
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
424
+ /// If either value in a comparison is NaN, returns false.
415
425
  ///
416
426
  /// \headerfile <x86intrin.h>
417
427
  ///
@@ -429,8 +439,10 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpeq_pd(__m128d __a,
429
439
 
430
440
  /// Compares each of the corresponding double-precision values of the
431
441
  /// 128-bit vectors of [2 x double] to determine if the values in the first
432
- /// operand are less than those in the second operand. Each comparison
433
- /// yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
442
+ /// operand are less than those in the second operand.
443
+ ///
444
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
445
+ /// If either value in a comparison is NaN, returns false.
434
446
  ///
435
447
  /// \headerfile <x86intrin.h>
436
448
  ///
@@ -450,7 +462,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmplt_pd(__m128d __a,
450
462
  /// 128-bit vectors of [2 x double] to determine if the values in the first
451
463
  /// operand are less than or equal to those in the second operand.
452
464
  ///
453
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
465
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
466
+ /// If either value in a comparison is NaN, returns false.
454
467
  ///
455
468
  /// \headerfile <x86intrin.h>
456
469
  ///
@@ -470,7 +483,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmple_pd(__m128d __a,
470
483
  /// 128-bit vectors of [2 x double] to determine if the values in the first
471
484
  /// operand are greater than those in the second operand.
472
485
  ///
473
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
486
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
487
+ /// If either value in a comparison is NaN, returns false.
474
488
  ///
475
489
  /// \headerfile <x86intrin.h>
476
490
  ///
@@ -490,7 +504,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpgt_pd(__m128d __a,
490
504
  /// 128-bit vectors of [2 x double] to determine if the values in the first
491
505
  /// operand are greater than or equal to those in the second operand.
492
506
  ///
493
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
507
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
508
+ /// If either value in a comparison is NaN, returns false.
494
509
  ///
495
510
  /// \headerfile <x86intrin.h>
496
511
  ///
@@ -510,8 +525,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpge_pd(__m128d __a,
510
525
  /// 128-bit vectors of [2 x double] to determine if the values in the first
511
526
  /// operand are ordered with respect to those in the second operand.
512
527
  ///
513
- /// A pair of double-precision values are "ordered" with respect to each
514
- /// other if neither value is a NaN. Each comparison yields 0x0 for false,
528
+ /// A pair of double-precision values are ordered with respect to each
529
+ /// other if neither value is a NaN. Each comparison returns 0x0 for false,
515
530
  /// 0xFFFFFFFFFFFFFFFF for true.
516
531
  ///
517
532
  /// \headerfile <x86intrin.h>
@@ -532,8 +547,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpord_pd(__m128d __a,
532
547
  /// 128-bit vectors of [2 x double] to determine if the values in the first
533
548
  /// operand are unordered with respect to those in the second operand.
534
549
  ///
535
- /// A pair of double-precision values are "unordered" with respect to each
536
- /// other if one or both values are NaN. Each comparison yields 0x0 for
550
+ /// A pair of double-precision values are unordered with respect to each
551
+ /// other if one or both values are NaN. Each comparison returns 0x0 for
537
552
  /// false, 0xFFFFFFFFFFFFFFFF for true.
538
553
  ///
539
554
  /// \headerfile <x86intrin.h>
@@ -555,7 +570,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpunord_pd(__m128d __a,
555
570
  /// 128-bit vectors of [2 x double] to determine if the values in the first
556
571
  /// operand are unequal to those in the second operand.
557
572
  ///
558
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
573
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
574
+ /// If either value in a comparison is NaN, returns true.
559
575
  ///
560
576
  /// \headerfile <x86intrin.h>
561
577
  ///
@@ -575,7 +591,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpneq_pd(__m128d __a,
575
591
  /// 128-bit vectors of [2 x double] to determine if the values in the first
576
592
  /// operand are not less than those in the second operand.
577
593
  ///
578
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
594
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
595
+ /// If either value in a comparison is NaN, returns true.
579
596
  ///
580
597
  /// \headerfile <x86intrin.h>
581
598
  ///
@@ -595,7 +612,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnlt_pd(__m128d __a,
595
612
  /// 128-bit vectors of [2 x double] to determine if the values in the first
596
613
  /// operand are not less than or equal to those in the second operand.
597
614
  ///
598
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
615
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
616
+ /// If either value in a comparison is NaN, returns true.
599
617
  ///
600
618
  /// \headerfile <x86intrin.h>
601
619
  ///
@@ -615,7 +633,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnle_pd(__m128d __a,
615
633
  /// 128-bit vectors of [2 x double] to determine if the values in the first
616
634
  /// operand are not greater than those in the second operand.
617
635
  ///
618
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
636
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
637
+ /// If either value in a comparison is NaN, returns true.
619
638
  ///
620
639
  /// \headerfile <x86intrin.h>
621
640
  ///
@@ -635,7 +654,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpngt_pd(__m128d __a,
635
654
  /// 128-bit vectors of [2 x double] to determine if the values in the first
636
655
  /// operand are not greater than or equal to those in the second operand.
637
656
  ///
638
- /// Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
657
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
658
+ /// If either value in a comparison is NaN, returns true.
639
659
  ///
640
660
  /// \headerfile <x86intrin.h>
641
661
  ///
@@ -654,7 +674,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnge_pd(__m128d __a,
654
674
  /// Compares the lower double-precision floating-point values in each of
655
675
  /// the two 128-bit floating-point vectors of [2 x double] for equality.
656
676
  ///
657
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
677
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
678
+ /// If either value in a comparison is NaN, returns false.
658
679
  ///
659
680
  /// \headerfile <x86intrin.h>
660
681
  ///
@@ -678,7 +699,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpeq_sd(__m128d __a,
678
699
  /// the value in the first parameter is less than the corresponding value in
679
700
  /// the second parameter.
680
701
  ///
681
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
702
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
703
+ /// If either value in a comparison is NaN, returns false.
682
704
  ///
683
705
  /// \headerfile <x86intrin.h>
684
706
  ///
@@ -702,7 +724,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmplt_sd(__m128d __a,
702
724
  /// the value in the first parameter is less than or equal to the
703
725
  /// corresponding value in the second parameter.
704
726
  ///
705
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
727
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
728
+ /// If either value in a comparison is NaN, returns false.
706
729
  ///
707
730
  /// \headerfile <x86intrin.h>
708
731
  ///
@@ -726,7 +749,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmple_sd(__m128d __a,
726
749
  /// the value in the first parameter is greater than the corresponding value
727
750
  /// in the second parameter.
728
751
  ///
729
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
752
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
753
+ /// If either value in a comparison is NaN, returns false.
730
754
  ///
731
755
  /// \headerfile <x86intrin.h>
732
756
  ///
@@ -751,7 +775,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpgt_sd(__m128d __a,
751
775
  /// the value in the first parameter is greater than or equal to the
752
776
  /// corresponding value in the second parameter.
753
777
  ///
754
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
778
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
779
+ /// If either value in a comparison is NaN, returns false.
755
780
  ///
756
781
  /// \headerfile <x86intrin.h>
757
782
  ///
@@ -773,11 +798,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpge_sd(__m128d __a,
773
798
 
774
799
  /// Compares the lower double-precision floating-point values in each of
775
800
  /// the two 128-bit floating-point vectors of [2 x double] to determine if
776
- /// the value in the first parameter is "ordered" with respect to the
801
+ /// the value in the first parameter is ordered with respect to the
777
802
  /// corresponding value in the second parameter.
778
803
  ///
779
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
780
- /// of double-precision values are "ordered" with respect to each other if
804
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
805
+ /// of double-precision values are ordered with respect to each other if
781
806
  /// neither value is a NaN.
782
807
  ///
783
808
  /// \headerfile <x86intrin.h>
@@ -799,11 +824,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpord_sd(__m128d __a,
799
824
 
800
825
  /// Compares the lower double-precision floating-point values in each of
801
826
  /// the two 128-bit floating-point vectors of [2 x double] to determine if
802
- /// the value in the first parameter is "unordered" with respect to the
827
+ /// the value in the first parameter is unordered with respect to the
803
828
  /// corresponding value in the second parameter.
804
829
  ///
805
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
806
- /// of double-precision values are "unordered" with respect to each other if
830
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
831
+ /// of double-precision values are unordered with respect to each other if
807
832
  /// one or both values are NaN.
808
833
  ///
809
834
  /// \headerfile <x86intrin.h>
@@ -829,7 +854,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpunord_sd(__m128d __a,
829
854
  /// the value in the first parameter is unequal to the corresponding value in
830
855
  /// the second parameter.
831
856
  ///
832
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
857
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
858
+ /// If either value in a comparison is NaN, returns true.
833
859
  ///
834
860
  /// \headerfile <x86intrin.h>
835
861
  ///
@@ -853,7 +879,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpneq_sd(__m128d __a,
853
879
  /// the value in the first parameter is not less than the corresponding
854
880
  /// value in the second parameter.
855
881
  ///
856
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
882
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
883
+ /// If either value in a comparison is NaN, returns true.
857
884
  ///
858
885
  /// \headerfile <x86intrin.h>
859
886
  ///
@@ -877,7 +904,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnlt_sd(__m128d __a,
877
904
  /// the value in the first parameter is not less than or equal to the
878
905
  /// corresponding value in the second parameter.
879
906
  ///
880
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
907
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
908
+ /// If either value in a comparison is NaN, returns true.
881
909
  ///
882
910
  /// \headerfile <x86intrin.h>
883
911
  ///
@@ -901,7 +929,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnle_sd(__m128d __a,
901
929
  /// the value in the first parameter is not greater than the corresponding
902
930
  /// value in the second parameter.
903
931
  ///
904
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
932
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
933
+ /// If either value in a comparison is NaN, returns true.
905
934
  ///
906
935
  /// \headerfile <x86intrin.h>
907
936
  ///
@@ -926,7 +955,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpngt_sd(__m128d __a,
926
955
  /// the value in the first parameter is not greater than or equal to the
927
956
  /// corresponding value in the second parameter.
928
957
  ///
929
- /// The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
958
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
959
+ /// If either value in a comparison is NaN, returns true.
930
960
  ///
931
961
  /// \headerfile <x86intrin.h>
932
962
  ///
@@ -949,8 +979,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnge_sd(__m128d __a,
949
979
  /// Compares the lower double-precision floating-point values in each of
950
980
  /// the two 128-bit floating-point vectors of [2 x double] for equality.
951
981
  ///
952
- /// The comparison yields 0 for false, 1 for true. If either of the two
953
- /// lower double-precision values is NaN, 0 is returned.
982
+ /// The comparison returns 0 for false, 1 for true. If either value in a
983
+ /// comparison is NaN, returns 0.
954
984
  ///
955
985
  /// \headerfile <x86intrin.h>
956
986
  ///
@@ -962,8 +992,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cmpnge_sd(__m128d __a,
962
992
  /// \param __b
963
993
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
964
994
  /// compared to the lower double-precision value of \a __a.
965
- /// \returns An integer containing the comparison results. If either of the two
966
- /// lower double-precision values is NaN, 0 is returned.
995
+ /// \returns An integer containing the comparison results.
967
996
  static __inline__ int __DEFAULT_FN_ATTRS _mm_comieq_sd(__m128d __a,
968
997
  __m128d __b) {
969
998
  return __builtin_ia32_comisdeq((__v2df)__a, (__v2df)__b);
@@ -974,8 +1003,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comieq_sd(__m128d __a,
974
1003
  /// the value in the first parameter is less than the corresponding value in
975
1004
  /// the second parameter.
976
1005
  ///
977
- /// The comparison yields 0 for false, 1 for true. If either of the two
978
- /// lower double-precision values is NaN, 0 is returned.
1006
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1007
+ /// comparison is NaN, returns 0.
979
1008
  ///
980
1009
  /// \headerfile <x86intrin.h>
981
1010
  ///
@@ -987,8 +1016,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comieq_sd(__m128d __a,
987
1016
  /// \param __b
988
1017
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
989
1018
  /// compared to the lower double-precision value of \a __a.
990
- /// \returns An integer containing the comparison results. If either of the two
991
- /// lower double-precision values is NaN, 0 is returned.
1019
+ /// \returns An integer containing the comparison results.
992
1020
  static __inline__ int __DEFAULT_FN_ATTRS _mm_comilt_sd(__m128d __a,
993
1021
  __m128d __b) {
994
1022
  return __builtin_ia32_comisdlt((__v2df)__a, (__v2df)__b);
@@ -999,8 +1027,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comilt_sd(__m128d __a,
999
1027
  /// the value in the first parameter is less than or equal to the
1000
1028
  /// corresponding value in the second parameter.
1001
1029
  ///
1002
- /// The comparison yields 0 for false, 1 for true. If either of the two
1003
- /// lower double-precision values is NaN, 0 is returned.
1030
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1031
+ /// comparison is NaN, returns 0.
1004
1032
  ///
1005
1033
  /// \headerfile <x86intrin.h>
1006
1034
  ///
@@ -1012,8 +1040,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comilt_sd(__m128d __a,
1012
1040
  /// \param __b
1013
1041
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1014
1042
  /// compared to the lower double-precision value of \a __a.
1015
- /// \returns An integer containing the comparison results. If either of the two
1016
- /// lower double-precision values is NaN, 0 is returned.
1043
+ /// \returns An integer containing the comparison results.
1017
1044
  static __inline__ int __DEFAULT_FN_ATTRS _mm_comile_sd(__m128d __a,
1018
1045
  __m128d __b) {
1019
1046
  return __builtin_ia32_comisdle((__v2df)__a, (__v2df)__b);
@@ -1024,8 +1051,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comile_sd(__m128d __a,
1024
1051
  /// the value in the first parameter is greater than the corresponding value
1025
1052
  /// in the second parameter.
1026
1053
  ///
1027
- /// The comparison yields 0 for false, 1 for true. If either of the two
1028
- /// lower double-precision values is NaN, 0 is returned.
1054
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1055
+ /// comparison is NaN, returns 0.
1029
1056
  ///
1030
1057
  /// \headerfile <x86intrin.h>
1031
1058
  ///
@@ -1037,8 +1064,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comile_sd(__m128d __a,
1037
1064
  /// \param __b
1038
1065
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1039
1066
  /// compared to the lower double-precision value of \a __a.
1040
- /// \returns An integer containing the comparison results. If either of the two
1041
- /// lower double-precision values is NaN, 0 is returned.
1067
+ /// \returns An integer containing the comparison results.
1042
1068
  static __inline__ int __DEFAULT_FN_ATTRS _mm_comigt_sd(__m128d __a,
1043
1069
  __m128d __b) {
1044
1070
  return __builtin_ia32_comisdgt((__v2df)__a, (__v2df)__b);
@@ -1049,8 +1075,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comigt_sd(__m128d __a,
1049
1075
  /// the value in the first parameter is greater than or equal to the
1050
1076
  /// corresponding value in the second parameter.
1051
1077
  ///
1052
- /// The comparison yields 0 for false, 1 for true. If either of the two
1053
- /// lower double-precision values is NaN, 0 is returned.
1078
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1079
+ /// comparison is NaN, returns 0.
1054
1080
  ///
1055
1081
  /// \headerfile <x86intrin.h>
1056
1082
  ///
@@ -1062,8 +1088,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comigt_sd(__m128d __a,
1062
1088
  /// \param __b
1063
1089
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1064
1090
  /// compared to the lower double-precision value of \a __a.
1065
- /// \returns An integer containing the comparison results. If either of the two
1066
- /// lower double-precision values is NaN, 0 is returned.
1091
+ /// \returns An integer containing the comparison results.
1067
1092
  static __inline__ int __DEFAULT_FN_ATTRS _mm_comige_sd(__m128d __a,
1068
1093
  __m128d __b) {
1069
1094
  return __builtin_ia32_comisdge((__v2df)__a, (__v2df)__b);
@@ -1074,8 +1099,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comige_sd(__m128d __a,
1074
1099
  /// the value in the first parameter is unequal to the corresponding value in
1075
1100
  /// the second parameter.
1076
1101
  ///
1077
- /// The comparison yields 0 for false, 1 for true. If either of the two
1078
- /// lower double-precision values is NaN, 1 is returned.
1102
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1103
+ /// comparison is NaN, returns 1.
1079
1104
  ///
1080
1105
  /// \headerfile <x86intrin.h>
1081
1106
  ///
@@ -1087,18 +1112,17 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comige_sd(__m128d __a,
1087
1112
  /// \param __b
1088
1113
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1089
1114
  /// compared to the lower double-precision value of \a __a.
1090
- /// \returns An integer containing the comparison results. If either of the two
1091
- /// lower double-precision values is NaN, 1 is returned.
1115
+ /// \returns An integer containing the comparison results.
1092
1116
  static __inline__ int __DEFAULT_FN_ATTRS _mm_comineq_sd(__m128d __a,
1093
1117
  __m128d __b) {
1094
1118
  return __builtin_ia32_comisdneq((__v2df)__a, (__v2df)__b);
1095
1119
  }
1096
1120
 
1097
1121
  /// Compares the lower double-precision floating-point values in each of
1098
- /// the two 128-bit floating-point vectors of [2 x double] for equality. The
1099
- /// comparison yields 0 for false, 1 for true.
1122
+ /// the two 128-bit floating-point vectors of [2 x double] for equality.
1100
1123
  ///
1101
- /// If either of the two lower double-precision values is NaN, 0 is returned.
1124
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1125
+ /// comparison is NaN, returns 0.
1102
1126
  ///
1103
1127
  /// \headerfile <x86intrin.h>
1104
1128
  ///
@@ -1110,8 +1134,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_comineq_sd(__m128d __a,
1110
1134
  /// \param __b
1111
1135
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1112
1136
  /// compared to the lower double-precision value of \a __a.
1113
- /// \returns An integer containing the comparison results. If either of the two
1114
- /// lower double-precision values is NaN, 0 is returned.
1137
+ /// \returns An integer containing the comparison results.
1115
1138
  static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomieq_sd(__m128d __a,
1116
1139
  __m128d __b) {
1117
1140
  return __builtin_ia32_ucomisdeq((__v2df)__a, (__v2df)__b);
@@ -1122,8 +1145,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomieq_sd(__m128d __a,
1122
1145
  /// the value in the first parameter is less than the corresponding value in
1123
1146
  /// the second parameter.
1124
1147
  ///
1125
- /// The comparison yields 0 for false, 1 for true. If either of the two lower
1126
- /// double-precision values is NaN, 0 is returned.
1148
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1149
+ /// comparison is NaN, returns 0.
1127
1150
  ///
1128
1151
  /// \headerfile <x86intrin.h>
1129
1152
  ///
@@ -1135,8 +1158,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomieq_sd(__m128d __a,
1135
1158
  /// \param __b
1136
1159
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1137
1160
  /// compared to the lower double-precision value of \a __a.
1138
- /// \returns An integer containing the comparison results. If either of the two
1139
- /// lower double-precision values is NaN, 0 is returned.
1161
+ /// \returns An integer containing the comparison results.
1140
1162
  static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomilt_sd(__m128d __a,
1141
1163
  __m128d __b) {
1142
1164
  return __builtin_ia32_ucomisdlt((__v2df)__a, (__v2df)__b);
@@ -1147,8 +1169,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomilt_sd(__m128d __a,
1147
1169
  /// the value in the first parameter is less than or equal to the
1148
1170
  /// corresponding value in the second parameter.
1149
1171
  ///
1150
- /// The comparison yields 0 for false, 1 for true. If either of the two lower
1151
- /// double-precision values is NaN, 0 is returned.
1172
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1173
+ /// comparison is NaN, returns 0.
1152
1174
  ///
1153
1175
  /// \headerfile <x86intrin.h>
1154
1176
  ///
@@ -1160,8 +1182,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomilt_sd(__m128d __a,
1160
1182
  /// \param __b
1161
1183
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1162
1184
  /// compared to the lower double-precision value of \a __a.
1163
- /// \returns An integer containing the comparison results. If either of the two
1164
- /// lower double-precision values is NaN, 0 is returned.
1185
+ /// \returns An integer containing the comparison results.
1165
1186
  static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomile_sd(__m128d __a,
1166
1187
  __m128d __b) {
1167
1188
  return __builtin_ia32_ucomisdle((__v2df)__a, (__v2df)__b);
@@ -1172,8 +1193,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomile_sd(__m128d __a,
1172
1193
  /// the value in the first parameter is greater than the corresponding value
1173
1194
  /// in the second parameter.
1174
1195
  ///
1175
- /// The comparison yields 0 for false, 1 for true. If either of the two lower
1176
- /// double-precision values is NaN, 0 is returned.
1196
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1197
+ /// comparison is NaN, returns 0.
1177
1198
  ///
1178
1199
  /// \headerfile <x86intrin.h>
1179
1200
  ///
@@ -1185,8 +1206,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomile_sd(__m128d __a,
1185
1206
  /// \param __b
1186
1207
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1187
1208
  /// compared to the lower double-precision value of \a __a.
1188
- /// \returns An integer containing the comparison results. If either of the two
1189
- /// lower double-precision values is NaN, 0 is returned.
1209
+ /// \returns An integer containing the comparison results.
1190
1210
  static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomigt_sd(__m128d __a,
1191
1211
  __m128d __b) {
1192
1212
  return __builtin_ia32_ucomisdgt((__v2df)__a, (__v2df)__b);
@@ -1197,8 +1217,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomigt_sd(__m128d __a,
1197
1217
  /// the value in the first parameter is greater than or equal to the
1198
1218
  /// corresponding value in the second parameter.
1199
1219
  ///
1200
- /// The comparison yields 0 for false, 1 for true. If either of the two
1201
- /// lower double-precision values is NaN, 0 is returned.
1220
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1221
+ /// comparison is NaN, returns 0.
1202
1222
  ///
1203
1223
  /// \headerfile <x86intrin.h>
1204
1224
  ///
@@ -1210,8 +1230,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomigt_sd(__m128d __a,
1210
1230
  /// \param __b
1211
1231
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1212
1232
  /// compared to the lower double-precision value of \a __a.
1213
- /// \returns An integer containing the comparison results. If either of the two
1214
- /// lower double-precision values is NaN, 0 is returned.
1233
+ /// \returns An integer containing the comparison results.
1215
1234
  static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomige_sd(__m128d __a,
1216
1235
  __m128d __b) {
1217
1236
  return __builtin_ia32_ucomisdge((__v2df)__a, (__v2df)__b);
@@ -1222,8 +1241,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomige_sd(__m128d __a,
1222
1241
  /// the value in the first parameter is unequal to the corresponding value in
1223
1242
  /// the second parameter.
1224
1243
  ///
1225
- /// The comparison yields 0 for false, 1 for true. If either of the two lower
1226
- /// double-precision values is NaN, 1 is returned.
1244
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1245
+ /// comparison is NaN, returns 1.
1227
1246
  ///
1228
1247
  /// \headerfile <x86intrin.h>
1229
1248
  ///
@@ -1235,8 +1254,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomige_sd(__m128d __a,
1235
1254
  /// \param __b
1236
1255
  /// A 128-bit vector of [2 x double]. The lower double-precision value is
1237
1256
  /// compared to the lower double-precision value of \a __a.
1238
- /// \returns An integer containing the comparison result. If either of the two
1239
- /// lower double-precision values is NaN, 1 is returned.
1257
+ /// \returns An integer containing the comparison result.
1240
1258
  static __inline__ int __DEFAULT_FN_ATTRS _mm_ucomineq_sd(__m128d __a,
1241
1259
  __m128d __b) {
1242
1260
  return __builtin_ia32_ucomisdneq((__v2df)__a, (__v2df)__b);
@@ -1304,6 +1322,10 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtepi32_pd(__m128i __a) {
1304
1322
  /// returned in the lower 64 bits of a 128-bit vector of [4 x i32]. The upper
1305
1323
  /// 64 bits of the result vector are set to zero.
1306
1324
  ///
1325
+ /// If a converted value does not fit in a 32-bit integer, raises a
1326
+ /// floating-point invalid exception. If the exception is masked, returns
1327
+ /// the most negative integer.
1328
+ ///
1307
1329
  /// \headerfile <x86intrin.h>
1308
1330
  ///
1309
1331
  /// This intrinsic corresponds to the <c> VCVTPD2DQ / CVTPD2DQ </c> instruction.
@@ -1319,6 +1341,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtpd_epi32(__m128d __a) {
1319
1341
  /// Converts the low-order element of a 128-bit vector of [2 x double]
1320
1342
  /// into a 32-bit signed integer value.
1321
1343
  ///
1344
+ /// If the converted value does not fit in a 32-bit integer, raises a
1345
+ /// floating-point invalid exception. If the exception is masked, returns
1346
+ /// the most negative integer.
1347
+ ///
1322
1348
  /// \headerfile <x86intrin.h>
1323
1349
  ///
1324
1350
  /// This intrinsic corresponds to the <c> VCVTSD2SI / CVTSD2SI </c> instruction.
@@ -1404,12 +1430,13 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtss_sd(__m128d __a,
1404
1430
  }
1405
1431
 
1406
1432
  /// Converts the two double-precision floating-point elements of a
1407
- /// 128-bit vector of [2 x double] into two signed 32-bit integer values,
1408
- /// returned in the lower 64 bits of a 128-bit vector of [4 x i32].
1433
+ /// 128-bit vector of [2 x double] into two signed truncated (rounded
1434
+ /// toward zero) 32-bit integer values, returned in the lower 64 bits
1435
+ /// of a 128-bit vector of [4 x i32].
1409
1436
  ///
1410
- /// If the result of either conversion is inexact, the result is truncated
1411
- /// (rounded towards zero) regardless of the current MXCSR setting. The upper
1412
- /// 64 bits of the result vector are set to zero.
1437
+ /// If a converted value does not fit in a 32-bit integer, raises a
1438
+ /// floating-point invalid exception. If the exception is masked, returns
1439
+ /// the most negative integer.
1413
1440
  ///
1414
1441
  /// \headerfile <x86intrin.h>
1415
1442
  ///
@@ -1425,7 +1452,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttpd_epi32(__m128d __a) {
1425
1452
  }
1426
1453
 
1427
1454
  /// Converts the low-order element of a [2 x double] vector into a 32-bit
1428
- /// signed integer value, truncating the result when it is inexact.
1455
+ /// signed truncated (rounded toward zero) integer value.
1456
+ ///
1457
+ /// If the converted value does not fit in a 32-bit integer, raises a
1458
+ /// floating-point invalid exception. If the exception is masked, returns
1459
+ /// the most negative integer.
1429
1460
  ///
1430
1461
  /// \headerfile <x86intrin.h>
1431
1462
  ///
@@ -1444,6 +1475,10 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_cvttsd_si32(__m128d __a) {
1444
1475
  /// 128-bit vector of [2 x double] into two signed 32-bit integer values,
1445
1476
  /// returned in a 64-bit vector of [2 x i32].
1446
1477
  ///
1478
+ /// If a converted value does not fit in a 32-bit integer, raises a
1479
+ /// floating-point invalid exception. If the exception is masked, returns
1480
+ /// the most negative integer.
1481
+ ///
1447
1482
  /// \headerfile <x86intrin.h>
1448
1483
  ///
1449
1484
  /// This intrinsic corresponds to the <c> CVTPD2PI </c> instruction.
@@ -1456,11 +1491,12 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvtpd_pi32(__m128d __a) {
1456
1491
  }
1457
1492
 
1458
1493
  /// Converts the two double-precision floating-point elements of a
1459
- /// 128-bit vector of [2 x double] into two signed 32-bit integer values,
1460
- /// returned in a 64-bit vector of [2 x i32].
1494
+ /// 128-bit vector of [2 x double] into two signed truncated (rounded toward
1495
+ /// zero) 32-bit integer values, returned in a 64-bit vector of [2 x i32].
1461
1496
  ///
1462
- /// If the result of either conversion is inexact, the result is truncated
1463
- /// (rounded towards zero) regardless of the current MXCSR setting.
1497
+ /// If a converted value does not fit in a 32-bit integer, raises a
1498
+ /// floating-point invalid exception. If the exception is masked, returns
1499
+ /// the most negative integer.
1464
1500
  ///
1465
1501
  /// \headerfile <x86intrin.h>
1466
1502
  ///
@@ -1735,7 +1771,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_undefined_pd(void) {
1735
1771
  /// lower 64 bits contain the value of the parameter. The upper 64 bits are
1736
1772
  /// set to zero.
1737
1773
  static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_sd(double __w) {
1738
- return __extension__(__m128d){__w, 0};
1774
+ return __extension__(__m128d){__w, 0.0};
1739
1775
  }
1740
1776
 
1741
1777
  /// Constructs a 128-bit floating-point vector of [2 x double], with each
@@ -2099,9 +2135,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi64(__m128i __a,
2099
2135
  }
2100
2136
 
2101
2137
  /// Adds, with saturation, the corresponding elements of two 128-bit
2102
- /// signed [16 x i8] vectors, saving each sum in the corresponding element of
2103
- /// a 128-bit result vector of [16 x i8]. Positive sums greater than 0x7F are
2104
- /// saturated to 0x7F. Negative sums less than 0x80 are saturated to 0x80.
2138
+ /// signed [16 x i8] vectors, saving each sum in the corresponding element
2139
+ /// of a 128-bit result vector of [16 x i8].
2140
+ ///
2141
+ /// Positive sums greater than 0x7F are saturated to 0x7F. Negative sums
2142
+ /// less than 0x80 are saturated to 0x80.
2105
2143
  ///
2106
2144
  /// \headerfile <x86intrin.h>
2107
2145
  ///
@@ -2119,10 +2157,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi8(__m128i __a,
2119
2157
  }
2120
2158
 
2121
2159
  /// Adds, with saturation, the corresponding elements of two 128-bit
2122
- /// signed [8 x i16] vectors, saving each sum in the corresponding element of
2123
- /// a 128-bit result vector of [8 x i16]. Positive sums greater than 0x7FFF
2124
- /// are saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
2125
- /// 0x8000.
2160
+ /// signed [8 x i16] vectors, saving each sum in the corresponding element
2161
+ /// of a 128-bit result vector of [8 x i16].
2162
+ ///
2163
+ /// Positive sums greater than 0x7FFF are saturated to 0x7FFF. Negative sums
2164
+ /// less than 0x8000 are saturated to 0x8000.
2126
2165
  ///
2127
2166
  /// \headerfile <x86intrin.h>
2128
2167
  ///
@@ -2141,8 +2180,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epi16(__m128i __a,
2141
2180
 
2142
2181
  /// Adds, with saturation, the corresponding elements of two 128-bit
2143
2182
  /// unsigned [16 x i8] vectors, saving each sum in the corresponding element
2144
- /// of a 128-bit result vector of [16 x i8]. Positive sums greater than 0xFF
2145
- /// are saturated to 0xFF. Negative sums are saturated to 0x00.
2183
+ /// of a 128-bit result vector of [16 x i8].
2184
+ ///
2185
+ /// Positive sums greater than 0xFF are saturated to 0xFF. Negative sums are
2186
+ /// saturated to 0x00.
2146
2187
  ///
2147
2188
  /// \headerfile <x86intrin.h>
2148
2189
  ///
@@ -2161,8 +2202,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_adds_epu8(__m128i __a,
2161
2202
 
2162
2203
  /// Adds, with saturation, the corresponding elements of two 128-bit
2163
2204
  /// unsigned [8 x i16] vectors, saving each sum in the corresponding element
2164
- /// of a 128-bit result vector of [8 x i16]. Positive sums greater than
2165
- /// 0xFFFF are saturated to 0xFFFF. Negative sums are saturated to 0x0000.
2205
+ /// of a 128-bit result vector of [8 x i16].
2206
+ ///
2207
+ /// Positive sums greater than 0xFFFF are saturated to 0xFFFF. Negative sums
2208
+ /// are saturated to 0x0000.
2166
2209
  ///
2167
2210
  /// \headerfile <x86intrin.h>
2168
2211
  ///
@@ -2518,10 +2561,12 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi64(__m128i __a,
2518
2561
  return (__m128i)((__v2du)__a - (__v2du)__b);
2519
2562
  }
2520
2563
 
2521
- /// Subtracts corresponding 8-bit signed integer values in the input and
2522
- /// returns the differences in the corresponding bytes in the destination.
2523
- /// Differences greater than 0x7F are saturated to 0x7F, and differences less
2524
- /// than 0x80 are saturated to 0x80.
2564
+ /// Subtracts, with saturation, corresponding 8-bit signed integer values in
2565
+ /// the input and returns the differences in the corresponding bytes in the
2566
+ /// destination.
2567
+ ///
2568
+ /// Differences greater than 0x7F are saturated to 0x7F, and differences
2569
+ /// less than 0x80 are saturated to 0x80.
2525
2570
  ///
2526
2571
  /// \headerfile <x86intrin.h>
2527
2572
  ///
@@ -2538,8 +2583,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi8(__m128i __a,
2538
2583
  return (__m128i)__builtin_elementwise_sub_sat((__v16qs)__a, (__v16qs)__b);
2539
2584
  }
2540
2585
 
2541
- /// Subtracts corresponding 16-bit signed integer values in the input and
2542
- /// returns the differences in the corresponding bytes in the destination.
2586
+ /// Subtracts, with saturation, corresponding 16-bit signed integer values in
2587
+ /// the input and returns the differences in the corresponding bytes in the
2588
+ /// destination.
2589
+ ///
2543
2590
  /// Differences greater than 0x7FFF are saturated to 0x7FFF, and values less
2544
2591
  /// than 0x8000 are saturated to 0x8000.
2545
2592
  ///
@@ -2558,9 +2605,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epi16(__m128i __a,
2558
2605
  return (__m128i)__builtin_elementwise_sub_sat((__v8hi)__a, (__v8hi)__b);
2559
2606
  }
2560
2607
 
2561
- /// Subtracts corresponding 8-bit unsigned integer values in the input
2562
- /// and returns the differences in the corresponding bytes in the
2563
- /// destination. Differences less than 0x00 are saturated to 0x00.
2608
+ /// Subtracts, with saturation, corresponding 8-bit unsigned integer values in
2609
+ /// the input and returns the differences in the corresponding bytes in the
2610
+ /// destination.
2611
+ ///
2612
+ /// Differences less than 0x00 are saturated to 0x00.
2564
2613
  ///
2565
2614
  /// \headerfile <x86intrin.h>
2566
2615
  ///
@@ -2577,9 +2626,11 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_subs_epu8(__m128i __a,
2577
2626
  return (__m128i)__builtin_elementwise_sub_sat((__v16qu)__a, (__v16qu)__b);
2578
2627
  }
2579
2628
 
2580
- /// Subtracts corresponding 16-bit unsigned integer values in the input
2581
- /// and returns the differences in the corresponding bytes in the
2582
- /// destination. Differences less than 0x0000 are saturated to 0x0000.
2629
+ /// Subtracts, with saturation, corresponding 16-bit unsigned integer values in
2630
+ /// the input and returns the differences in the corresponding bytes in the
2631
+ /// destination.
2632
+ ///
2633
+ /// Differences less than 0x0000 are saturated to 0x0000.
2583
2634
  ///
2584
2635
  /// \headerfile <x86intrin.h>
2585
2636
  ///
@@ -3008,8 +3059,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_srl_epi64(__m128i __a,
3008
3059
  }
3009
3060
 
3010
3061
  /// Compares each of the corresponding 8-bit values of the 128-bit
3011
- /// integer vectors for equality. Each comparison yields 0x0 for false, 0xFF
3012
- /// for true.
3062
+ /// integer vectors for equality.
3063
+ ///
3064
+ /// Each comparison returns 0x0 for false, 0xFF for true.
3013
3065
  ///
3014
3066
  /// \headerfile <x86intrin.h>
3015
3067
  ///
@@ -3026,8 +3078,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi8(__m128i __a,
3026
3078
  }
3027
3079
 
3028
3080
  /// Compares each of the corresponding 16-bit values of the 128-bit
3029
- /// integer vectors for equality. Each comparison yields 0x0 for false,
3030
- /// 0xFFFF for true.
3081
+ /// integer vectors for equality.
3082
+ ///
3083
+ /// Each comparison returns 0x0 for false, 0xFFFF for true.
3031
3084
  ///
3032
3085
  /// \headerfile <x86intrin.h>
3033
3086
  ///
@@ -3044,8 +3097,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi16(__m128i __a,
3044
3097
  }
3045
3098
 
3046
3099
  /// Compares each of the corresponding 32-bit values of the 128-bit
3047
- /// integer vectors for equality. Each comparison yields 0x0 for false,
3048
- /// 0xFFFFFFFF for true.
3100
+ /// integer vectors for equality.
3101
+ ///
3102
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
3049
3103
  ///
3050
3104
  /// \headerfile <x86intrin.h>
3051
3105
  ///
@@ -3063,8 +3117,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi32(__m128i __a,
3063
3117
 
3064
3118
  /// Compares each of the corresponding signed 8-bit values of the 128-bit
3065
3119
  /// integer vectors to determine if the values in the first operand are
3066
- /// greater than those in the second operand. Each comparison yields 0x0 for
3067
- /// false, 0xFF for true.
3120
+ /// greater than those in the second operand.
3121
+ ///
3122
+ /// Each comparison returns 0x0 for false, 0xFF for true.
3068
3123
  ///
3069
3124
  /// \headerfile <x86intrin.h>
3070
3125
  ///
@@ -3086,7 +3141,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi8(__m128i __a,
3086
3141
  /// 128-bit integer vectors to determine if the values in the first operand
3087
3142
  /// are greater than those in the second operand.
3088
3143
  ///
3089
- /// Each comparison yields 0x0 for false, 0xFFFF for true.
3144
+ /// Each comparison returns 0x0 for false, 0xFFFF for true.
3090
3145
  ///
3091
3146
  /// \headerfile <x86intrin.h>
3092
3147
  ///
@@ -3106,7 +3161,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi16(__m128i __a,
3106
3161
  /// 128-bit integer vectors to determine if the values in the first operand
3107
3162
  /// are greater than those in the second operand.
3108
3163
  ///
3109
- /// Each comparison yields 0x0 for false, 0xFFFFFFFF for true.
3164
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
3110
3165
  ///
3111
3166
  /// \headerfile <x86intrin.h>
3112
3167
  ///
@@ -3126,7 +3181,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi32(__m128i __a,
3126
3181
  /// integer vectors to determine if the values in the first operand are less
3127
3182
  /// than those in the second operand.
3128
3183
  ///
3129
- /// Each comparison yields 0x0 for false, 0xFF for true.
3184
+ /// Each comparison returns 0x0 for false, 0xFF for true.
3130
3185
  ///
3131
3186
  /// \headerfile <x86intrin.h>
3132
3187
  ///
@@ -3146,7 +3201,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi8(__m128i __a,
3146
3201
  /// 128-bit integer vectors to determine if the values in the first operand
3147
3202
  /// are less than those in the second operand.
3148
3203
  ///
3149
- /// Each comparison yields 0x0 for false, 0xFFFF for true.
3204
+ /// Each comparison returns 0x0 for false, 0xFFFF for true.
3150
3205
  ///
3151
3206
  /// \headerfile <x86intrin.h>
3152
3207
  ///
@@ -3166,7 +3221,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi16(__m128i __a,
3166
3221
  /// 128-bit integer vectors to determine if the values in the first operand
3167
3222
  /// are less than those in the second operand.
3168
3223
  ///
3169
- /// Each comparison yields 0x0 for false, 0xFFFFFFFF for true.
3224
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
3170
3225
  ///
3171
3226
  /// \headerfile <x86intrin.h>
3172
3227
  ///
@@ -3207,7 +3262,11 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi64_sd(__m128d __a,
3207
3262
  }
3208
3263
 
3209
3264
  /// Converts the first (lower) element of a vector of [2 x double] into a
3210
- /// 64-bit signed integer value, according to the current rounding mode.
3265
+ /// 64-bit signed integer value.
3266
+ ///
3267
+ /// If the converted value does not fit in a 64-bit integer, raises a
3268
+ /// floating-point invalid exception. If the exception is masked, returns
3269
+ /// the most negative integer.
3211
3270
  ///
3212
3271
  /// \headerfile <x86intrin.h>
3213
3272
  ///
@@ -3222,7 +3281,11 @@ static __inline__ long long __DEFAULT_FN_ATTRS _mm_cvtsd_si64(__m128d __a) {
3222
3281
  }
3223
3282
 
3224
3283
  /// Converts the first (lower) element of a vector of [2 x double] into a
3225
- /// 64-bit signed integer value, truncating the result when it is inexact.
3284
+ /// 64-bit signed truncated (rounded toward zero) integer value.
3285
+ ///
3286
+ /// If a converted value does not fit in a 64-bit integer, raises a
3287
+ /// floating-point invalid exception. If the exception is masked, returns
3288
+ /// the most negative integer.
3226
3289
  ///
3227
3290
  /// \headerfile <x86intrin.h>
3228
3291
  ///
@@ -3253,6 +3316,10 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtepi32_ps(__m128i __a) {
3253
3316
 
3254
3317
  /// Converts a vector of [4 x float] into a vector of [4 x i32].
3255
3318
  ///
3319
+ /// If a converted value does not fit in a 32-bit integer, raises a
3320
+ /// floating-point invalid exception. If the exception is masked, returns
3321
+ /// the most negative integer.
3322
+ ///
3256
3323
  /// \headerfile <x86intrin.h>
3257
3324
  ///
3258
3325
  /// This intrinsic corresponds to the <c> VCVTPS2DQ / CVTPS2DQ </c> instruction.
@@ -3265,8 +3332,12 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtps_epi32(__m128 __a) {
3265
3332
  return (__m128i)__builtin_ia32_cvtps2dq((__v4sf)__a);
3266
3333
  }
3267
3334
 
3268
- /// Converts a vector of [4 x float] into a vector of [4 x i32],
3269
- /// truncating the result when it is inexact.
3335
+ /// Converts a vector of [4 x float] into four signed truncated (rounded toward
3336
+ /// zero) 32-bit integers, returned in a vector of [4 x i32].
3337
+ ///
3338
+ /// If a converted value does not fit in a 32-bit integer, raises a
3339
+ /// floating-point invalid exception. If the exception is masked, returns
3340
+ /// the most negative integer.
3270
3341
  ///
3271
3342
  /// \headerfile <x86intrin.h>
3272
3343
  ///
@@ -4050,26 +4121,22 @@ void _mm_mfence(void);
4050
4121
  } // extern "C"
4051
4122
  #endif
4052
4123
 
4053
- /// Converts 16-bit signed integers from both 128-bit integer vector
4054
- /// operands into 8-bit signed integers, and packs the results into the
4055
- /// destination. Positive values greater than 0x7F are saturated to 0x7F.
4056
- /// Negative values less than 0x80 are saturated to 0x80.
4124
+ /// Converts, with saturation, 16-bit signed integers from both 128-bit integer
4125
+ /// vector operands into 8-bit signed integers, and packs the results into
4126
+ /// the destination.
4127
+ ///
4128
+ /// Positive values greater than 0x7F are saturated to 0x7F. Negative values
4129
+ /// less than 0x80 are saturated to 0x80.
4057
4130
  ///
4058
4131
  /// \headerfile <x86intrin.h>
4059
4132
  ///
4060
4133
  /// This intrinsic corresponds to the <c> VPACKSSWB / PACKSSWB </c> instruction.
4061
4134
  ///
4062
4135
  /// \param __a
4063
- /// A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
4064
- /// a signed integer and is converted to a 8-bit signed integer with
4065
- /// saturation. Values greater than 0x7F are saturated to 0x7F. Values less
4066
- /// than 0x80 are saturated to 0x80. The converted [8 x i8] values are
4136
+ /// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
4067
4137
  /// written to the lower 64 bits of the result.
4068
4138
  /// \param __b
4069
- /// A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
4070
- /// a signed integer and is converted to a 8-bit signed integer with
4071
- /// saturation. Values greater than 0x7F are saturated to 0x7F. Values less
4072
- /// than 0x80 are saturated to 0x80. The converted [8 x i8] values are
4139
+ /// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
4073
4140
  /// written to the higher 64 bits of the result.
4074
4141
  /// \returns A 128-bit vector of [16 x i8] containing the converted values.
4075
4142
  static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi16(__m128i __a,
@@ -4077,26 +4144,22 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi16(__m128i __a,
4077
4144
  return (__m128i)__builtin_ia32_packsswb128((__v8hi)__a, (__v8hi)__b);
4078
4145
  }
4079
4146
 
4080
- /// Converts 32-bit signed integers from both 128-bit integer vector
4081
- /// operands into 16-bit signed integers, and packs the results into the
4082
- /// destination. Positive values greater than 0x7FFF are saturated to 0x7FFF.
4083
- /// Negative values less than 0x8000 are saturated to 0x8000.
4147
+ /// Converts, with saturation, 32-bit signed integers from both 128-bit integer
4148
+ /// vector operands into 16-bit signed integers, and packs the results into
4149
+ /// the destination.
4150
+ ///
4151
+ /// Positive values greater than 0x7FFF are saturated to 0x7FFF. Negative
4152
+ /// values less than 0x8000 are saturated to 0x8000.
4084
4153
  ///
4085
4154
  /// \headerfile <x86intrin.h>
4086
4155
  ///
4087
4156
  /// This intrinsic corresponds to the <c> VPACKSSDW / PACKSSDW </c> instruction.
4088
4157
  ///
4089
4158
  /// \param __a
4090
- /// A 128-bit integer vector of [4 x i32]. Each 32-bit element is treated as
4091
- /// a signed integer and is converted to a 16-bit signed integer with
4092
- /// saturation. Values greater than 0x7FFF are saturated to 0x7FFF. Values
4093
- /// less than 0x8000 are saturated to 0x8000. The converted [4 x i16] values
4159
+ /// A 128-bit integer vector of [4 x i32]. The converted [4 x i16] values
4094
4160
  /// are written to the lower 64 bits of the result.
4095
4161
  /// \param __b
4096
- /// A 128-bit integer vector of [4 x i32]. Each 32-bit element is treated as
4097
- /// a signed integer and is converted to a 16-bit signed integer with
4098
- /// saturation. Values greater than 0x7FFF are saturated to 0x7FFF. Values
4099
- /// less than 0x8000 are saturated to 0x8000. The converted [4 x i16] values
4162
+ /// A 128-bit integer vector of [4 x i32]. The converted [4 x i16] values
4100
4163
  /// are written to the higher 64 bits of the result.
4101
4164
  /// \returns A 128-bit vector of [8 x i16] containing the converted values.
4102
4165
  static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi32(__m128i __a,
@@ -4104,26 +4167,22 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packs_epi32(__m128i __a,
4104
4167
  return (__m128i)__builtin_ia32_packssdw128((__v4si)__a, (__v4si)__b);
4105
4168
  }
4106
4169
 
4107
- /// Converts 16-bit signed integers from both 128-bit integer vector
4108
- /// operands into 8-bit unsigned integers, and packs the results into the
4109
- /// destination. Values greater than 0xFF are saturated to 0xFF. Values less
4110
- /// than 0x00 are saturated to 0x00.
4170
+ /// Converts, with saturation, 16-bit signed integers from both 128-bit integer
4171
+ /// vector operands into 8-bit unsigned integers, and packs the results into
4172
+ /// the destination.
4173
+ ///
4174
+ /// Values greater than 0xFF are saturated to 0xFF. Values less than 0x00
4175
+ /// are saturated to 0x00.
4111
4176
  ///
4112
4177
  /// \headerfile <x86intrin.h>
4113
4178
  ///
4114
4179
  /// This intrinsic corresponds to the <c> VPACKUSWB / PACKUSWB </c> instruction.
4115
4180
  ///
4116
4181
  /// \param __a
4117
- /// A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
4118
- /// a signed integer and is converted to an 8-bit unsigned integer with
4119
- /// saturation. Values greater than 0xFF are saturated to 0xFF. Values less
4120
- /// than 0x00 are saturated to 0x00. The converted [8 x i8] values are
4182
+ /// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
4121
4183
  /// written to the lower 64 bits of the result.
4122
4184
  /// \param __b
4123
- /// A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
4124
- /// a signed integer and is converted to an 8-bit unsigned integer with
4125
- /// saturation. Values greater than 0xFF are saturated to 0xFF. Values less
4126
- /// than 0x00 are saturated to 0x00. The converted [8 x i8] values are
4185
+ /// A 128-bit integer vector of [8 x i16]. The converted [8 x i8] values are
4127
4186
  /// written to the higher 64 bits of the result.
4128
4187
  /// \returns A 128-bit vector of [16 x i8] containing the converted values.
4129
4188
  static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packus_epi16(__m128i __a,
@@ -4742,6 +4801,78 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_castsi128_pd(__m128i __a) {
4742
4801
  return (__m128d)__a;
4743
4802
  }
4744
4803
 
4804
+ /// Compares each of the corresponding double-precision values of two
4805
+ /// 128-bit vectors of [2 x double], using the operation specified by the
4806
+ /// immediate integer operand.
4807
+ ///
4808
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
4809
+ /// If either value in a comparison is NaN, comparisons that are ordered
4810
+ /// return false, and comparisons that are unordered return true.
4811
+ ///
4812
+ /// \headerfile <x86intrin.h>
4813
+ ///
4814
+ /// \code
4815
+ /// __m128d _mm_cmp_pd(__m128d a, __m128d b, const int c);
4816
+ /// \endcode
4817
+ ///
4818
+ /// This intrinsic corresponds to the <c> (V)CMPPD </c> instruction.
4819
+ ///
4820
+ /// \param a
4821
+ /// A 128-bit vector of [2 x double].
4822
+ /// \param b
4823
+ /// A 128-bit vector of [2 x double].
4824
+ /// \param c
4825
+ /// An immediate integer operand, with bits [4:0] specifying which comparison
4826
+ /// operation to use: \n
4827
+ /// 0x00: Equal (ordered, non-signaling) \n
4828
+ /// 0x01: Less-than (ordered, signaling) \n
4829
+ /// 0x02: Less-than-or-equal (ordered, signaling) \n
4830
+ /// 0x03: Unordered (non-signaling) \n
4831
+ /// 0x04: Not-equal (unordered, non-signaling) \n
4832
+ /// 0x05: Not-less-than (unordered, signaling) \n
4833
+ /// 0x06: Not-less-than-or-equal (unordered, signaling) \n
4834
+ /// 0x07: Ordered (non-signaling) \n
4835
+ /// \returns A 128-bit vector of [2 x double] containing the comparison results.
4836
+ #define _mm_cmp_pd(a, b, c) \
4837
+ ((__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), (__v2df)(__m128d)(b), \
4838
+ (c)))
4839
+
4840
+ /// Compares each of the corresponding scalar double-precision values of
4841
+ /// two 128-bit vectors of [2 x double], using the operation specified by the
4842
+ /// immediate integer operand.
4843
+ ///
4844
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
4845
+ /// If either value in a comparison is NaN, comparisons that are ordered
4846
+ /// return false, and comparisons that are unordered return true.
4847
+ ///
4848
+ /// \headerfile <x86intrin.h>
4849
+ ///
4850
+ /// \code
4851
+ /// __m128d _mm_cmp_sd(__m128d a, __m128d b, const int c);
4852
+ /// \endcode
4853
+ ///
4854
+ /// This intrinsic corresponds to the <c> (V)CMPSD </c> instruction.
4855
+ ///
4856
+ /// \param a
4857
+ /// A 128-bit vector of [2 x double].
4858
+ /// \param b
4859
+ /// A 128-bit vector of [2 x double].
4860
+ /// \param c
4861
+ /// An immediate integer operand, with bits [4:0] specifying which comparison
4862
+ /// operation to use: \n
4863
+ /// 0x00: Equal (ordered, non-signaling) \n
4864
+ /// 0x01: Less-than (ordered, signaling) \n
4865
+ /// 0x02: Less-than-or-equal (ordered, signaling) \n
4866
+ /// 0x03: Unordered (non-signaling) \n
4867
+ /// 0x04: Not-equal (unordered, non-signaling) \n
4868
+ /// 0x05: Not-less-than (unordered, signaling) \n
4869
+ /// 0x06: Not-less-than-or-equal (unordered, signaling) \n
4870
+ /// 0x07: Ordered (non-signaling) \n
4871
+ /// \returns A 128-bit vector of [2 x double] containing the comparison results.
4872
+ #define _mm_cmp_sd(a, b, c) \
4873
+ ((__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), (__v2df)(__m128d)(b), \
4874
+ (c)))
4875
+
4745
4876
  #if defined(__cplusplus)
4746
4877
  extern "C" {
4747
4878
  #endif