@cpp-linter/clang-tidy-darwin-x64 17.0.6 → 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 (252) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{17 → 19}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{17 → 19}/include/__clang_cuda_intrinsics.h +1 -3
  5. package/lib/clang/{17 → 19}/include/__clang_cuda_libdevice_declares.h +2 -2
  6. package/lib/clang/{17 → 19}/include/__clang_cuda_math.h +2 -2
  7. package/lib/clang/{17 → 19}/include/__clang_cuda_runtime_wrapper.h +2 -2
  8. package/lib/clang/{17 → 19}/include/__clang_hip_math.h +192 -171
  9. package/lib/clang/{17 → 19}/include/__clang_hip_runtime_wrapper.h +34 -26
  10. package/lib/clang/19/include/__stdarg___gnuc_va_list.h +13 -0
  11. package/lib/clang/19/include/__stdarg___va_copy.h +12 -0
  12. package/lib/clang/19/include/__stdarg_header_macro.h +12 -0
  13. package/lib/clang/19/include/__stdarg_va_arg.h +22 -0
  14. package/lib/clang/19/include/__stdarg_va_copy.h +12 -0
  15. package/lib/clang/19/include/__stdarg_va_list.h +13 -0
  16. package/lib/clang/19/include/__stddef_header_macro.h +12 -0
  17. package/lib/clang/{17 → 19}/include/__stddef_max_align_t.h +1 -1
  18. package/lib/clang/19/include/__stddef_null.h +29 -0
  19. package/lib/clang/19/include/__stddef_nullptr_t.h +29 -0
  20. package/lib/clang/19/include/__stddef_offsetof.h +17 -0
  21. package/lib/clang/19/include/__stddef_ptrdiff_t.h +20 -0
  22. package/lib/clang/19/include/__stddef_rsize_t.h +20 -0
  23. package/lib/clang/19/include/__stddef_size_t.h +20 -0
  24. package/lib/clang/19/include/__stddef_unreachable.h +21 -0
  25. package/lib/clang/19/include/__stddef_wchar_t.h +28 -0
  26. package/lib/clang/19/include/__stddef_wint_t.h +15 -0
  27. package/lib/clang/{17/include/adxintrin.h → 19/include/adcintrin.h} +27 -94
  28. package/lib/clang/19/include/adxintrin.h +102 -0
  29. package/lib/clang/{17 → 19}/include/altivec.h +31 -12
  30. package/lib/clang/{17 → 19}/include/ammintrin.h +4 -4
  31. package/lib/clang/{17 → 19}/include/arm_acle.h +138 -32
  32. package/lib/clang/{17 → 19}/include/arm_fp16.h +1 -1
  33. package/lib/clang/{17 → 19}/include/arm_neon.h +43361 -43608
  34. package/lib/clang/19/include/arm_sme.h +2819 -0
  35. package/lib/clang/{17 → 19}/include/arm_sve.h +30202 -23615
  36. package/lib/clang/19/include/arm_vector_types.h +345 -0
  37. package/lib/clang/{17 → 19}/include/avx2intrin.h +24 -3
  38. package/lib/clang/{17 → 19}/include/avx512bf16intrin.h +3 -2
  39. package/lib/clang/{17 → 19}/include/avx512bitalgintrin.h +4 -1
  40. package/lib/clang/{17 → 19}/include/avx512bwintrin.h +28 -38
  41. package/lib/clang/{17 → 19}/include/avx512cdintrin.h +3 -1
  42. package/lib/clang/{17 → 19}/include/avx512dqintrin.h +4 -2
  43. package/lib/clang/{17 → 19}/include/avx512fintrin.h +7 -3
  44. package/lib/clang/{17 → 19}/include/avx512fp16intrin.h +44 -42
  45. package/lib/clang/{17 → 19}/include/avx512ifmaintrin.h +3 -1
  46. package/lib/clang/{17 → 19}/include/avx512ifmavlintrin.h +8 -2
  47. package/lib/clang/{17 → 19}/include/avx512vbmi2intrin.h +1 -1
  48. package/lib/clang/{17 → 19}/include/avx512vbmiintrin.h +3 -2
  49. package/lib/clang/{17 → 19}/include/avx512vbmivlintrin.h +8 -3
  50. package/lib/clang/{17 → 19}/include/avx512vlbf16intrin.h +8 -6
  51. package/lib/clang/{17 → 19}/include/avx512vlbitalgintrin.h +8 -2
  52. package/lib/clang/{17 → 19}/include/avx512vlbwintrin.h +8 -2
  53. package/lib/clang/{17 → 19}/include/avx512vlcdintrin.h +8 -3
  54. package/lib/clang/{17 → 19}/include/avx512vldqintrin.h +8 -2
  55. package/lib/clang/{17 → 19}/include/avx512vlfp16intrin.h +2 -2
  56. package/lib/clang/{17 → 19}/include/avx512vlintrin.h +8 -2
  57. package/lib/clang/{17 → 19}/include/avx512vlvbmi2intrin.h +8 -2
  58. package/lib/clang/{17 → 19}/include/avx512vlvnniintrin.h +8 -2
  59. package/lib/clang/{17 → 19}/include/avx512vlvp2intersectintrin.h +6 -4
  60. package/lib/clang/{17 → 19}/include/avx512vnniintrin.h +3 -2
  61. package/lib/clang/{17 → 19}/include/avx512vp2intersectintrin.h +3 -2
  62. package/lib/clang/{17 → 19}/include/avx512vpopcntdqintrin.h +3 -1
  63. package/lib/clang/{17 → 19}/include/avx512vpopcntdqvlintrin.h +6 -2
  64. package/lib/clang/{17 → 19}/include/avxintrin.h +67 -49
  65. package/lib/clang/{17 → 19}/include/bmiintrin.h +233 -50
  66. package/lib/clang/{17 → 19}/include/builtins.h +3 -0
  67. package/lib/clang/{17 → 19}/include/cpuid.h +23 -3
  68. package/lib/clang/{17 → 19}/include/cuda_wrappers/algorithm +1 -1
  69. package/lib/clang/{17 → 19}/include/emmintrin.h +311 -180
  70. package/lib/clang/{17 → 19}/include/float.h +28 -0
  71. package/lib/clang/{17 → 19}/include/fmaintrin.h +32 -16
  72. package/lib/clang/{17 → 19}/include/gfniintrin.h +23 -6
  73. package/lib/clang/{17 → 19}/include/hlsl/hlsl_basic_types.h +10 -3
  74. package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +1697 -0
  75. package/lib/clang/19/include/ia32intrin.h +863 -0
  76. package/lib/clang/{17 → 19}/include/immintrin.h +149 -160
  77. package/lib/clang/{17 → 19}/include/intrin.h +61 -221
  78. package/lib/clang/19/include/intrin0.h +247 -0
  79. package/lib/clang/{17 → 19}/include/inttypes.h +4 -0
  80. package/lib/clang/{17 → 19}/include/iso646.h +4 -0
  81. package/lib/clang/{17 → 19}/include/keylockerintrin.h +5 -8
  82. package/lib/clang/{17 → 19}/include/larchintrin.h +13 -1
  83. package/lib/clang/19/include/lasxintrin.h +3884 -0
  84. package/lib/clang/{17 → 19}/include/limits.h +7 -4
  85. package/lib/clang/{17/include/llvm_libc_wrappers/stdio.h → 19/include/llvm_libc_wrappers/assert.h} +7 -7
  86. package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/ctype.h +17 -0
  87. package/lib/clang/19/include/llvm_libc_wrappers/stdio.h +80 -0
  88. package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/stdlib.h +4 -1
  89. package/lib/clang/19/include/llvm_libc_wrappers/string.h +96 -0
  90. package/lib/clang/{17/include/llvm_libc_wrappers/string.h → 19/include/llvm_libc_wrappers/time.h} +9 -12
  91. package/lib/clang/19/include/lsxintrin.h +3750 -0
  92. package/lib/clang/19/include/mm3dnow.h +22 -0
  93. package/lib/clang/{17 → 19}/include/mmintrin.h +83 -89
  94. package/lib/clang/19/include/module.modulemap +330 -0
  95. package/lib/clang/{17 → 19}/include/opencl-c-base.h +9 -0
  96. package/lib/clang/{17 → 19}/include/opencl-c.h +15 -0
  97. package/lib/clang/{17 → 19}/include/openmp_wrappers/cmath +1 -1
  98. package/lib/clang/{17 → 19}/include/pmmintrin.h +3 -2
  99. package/lib/clang/19/include/ppc_wrappers/nmmintrin.h +26 -0
  100. package/lib/clang/{17 → 19}/include/ppc_wrappers/smmintrin.h +35 -15
  101. package/lib/clang/{17 → 19}/include/prfchwintrin.h +10 -8
  102. package/lib/clang/19/include/ptrauth.h +330 -0
  103. package/lib/clang/19/include/riscv_bitmanip.h +195 -0
  104. package/lib/clang/19/include/riscv_crypto.h +170 -0
  105. package/lib/clang/{17 → 19}/include/riscv_ntlh.h +3 -5
  106. package/lib/clang/{17 → 19}/include/riscv_vector.h +31 -4
  107. package/lib/clang/19/include/sifive_vector.h +118 -0
  108. package/lib/clang/{17 → 19}/include/smmintrin.h +15 -15
  109. package/lib/clang/{17 → 19}/include/stdalign.h +6 -3
  110. package/lib/clang/19/include/stdarg.h +75 -0
  111. package/lib/clang/{17 → 19}/include/stdatomic.h +14 -6
  112. package/lib/clang/{17 → 19}/include/stdbool.h +5 -0
  113. package/lib/clang/19/include/stdckdint.h +42 -0
  114. package/lib/clang/19/include/stddef.h +139 -0
  115. package/lib/clang/{17 → 19}/include/stdint.h +24 -48
  116. package/lib/clang/{17 → 19}/include/stdnoreturn.h +8 -2
  117. package/lib/clang/{17 → 19}/include/tmmintrin.h +27 -18
  118. package/lib/clang/19/include/usermsrintrin.h +51 -0
  119. package/lib/clang/{17 → 19}/include/vaesintrin.h +4 -2
  120. package/lib/clang/{17 → 19}/include/varargs.h +5 -1
  121. package/lib/clang/{17 → 19}/include/vecintrin.h +217 -199
  122. package/lib/clang/{17 → 19}/include/x86gprintrin.h +10 -12
  123. package/lib/clang/19/include/x86intrin.h +53 -0
  124. package/lib/clang/{17 → 19}/include/xmmintrin.h +294 -104
  125. package/lib/clang/19/include/yvals_core.h +25 -0
  126. package/lib/clang/19/include/zos_wrappers/builtins.h +18 -0
  127. package/package.json +6 -6
  128. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +0 -642
  129. package/lib/clang/17/include/avx512erintrin.h +0 -271
  130. package/lib/clang/17/include/avx512pfintrin.h +0 -97
  131. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +0 -480
  132. package/lib/clang/17/include/ia32intrin.h +0 -441
  133. package/lib/clang/17/include/mm3dnow.h +0 -157
  134. package/lib/clang/17/include/module.modulemap +0 -164
  135. package/lib/clang/17/include/sifive_vector.h +0 -16
  136. package/lib/clang/17/include/stdarg.h +0 -51
  137. package/lib/clang/17/include/stddef.h +0 -133
  138. package/lib/clang/17/include/x86intrin.h +0 -67
  139. /package/lib/clang/{17 → 19}/include/__clang_cuda_builtin_vars.h +0 -0
  140. /package/lib/clang/{17 → 19}/include/__clang_cuda_cmath.h +0 -0
  141. /package/lib/clang/{17 → 19}/include/__clang_cuda_complex_builtins.h +0 -0
  142. /package/lib/clang/{17 → 19}/include/__clang_cuda_math_forward_declares.h +0 -0
  143. /package/lib/clang/{17 → 19}/include/__clang_cuda_texture_intrinsics.h +0 -0
  144. /package/lib/clang/{17 → 19}/include/__clang_hip_cmath.h +0 -0
  145. /package/lib/clang/{17 → 19}/include/__clang_hip_libdevice_declares.h +0 -0
  146. /package/lib/clang/{17 → 19}/include/__clang_hip_stdlib.h +0 -0
  147. /package/lib/clang/{17 → 19}/include/__wmmintrin_aes.h +0 -0
  148. /package/lib/clang/{17 → 19}/include/__wmmintrin_pclmul.h +0 -0
  149. /package/lib/clang/{17 → 19}/include/amxcomplexintrin.h +0 -0
  150. /package/lib/clang/{17 → 19}/include/amxfp16intrin.h +0 -0
  151. /package/lib/clang/{17 → 19}/include/amxintrin.h +0 -0
  152. /package/lib/clang/{17 → 19}/include/arm64intr.h +0 -0
  153. /package/lib/clang/{17 → 19}/include/arm_bf16.h +0 -0
  154. /package/lib/clang/{17 → 19}/include/arm_cde.h +0 -0
  155. /package/lib/clang/{17 → 19}/include/arm_cmse.h +0 -0
  156. /package/lib/clang/{17 → 19}/include/arm_mve.h +0 -0
  157. /package/lib/clang/{17 → 19}/include/arm_neon_sve_bridge.h +0 -0
  158. /package/lib/clang/{17 → 19}/include/armintr.h +0 -0
  159. /package/lib/clang/{17 → 19}/include/avxifmaintrin.h +0 -0
  160. /package/lib/clang/{17 → 19}/include/avxneconvertintrin.h +0 -0
  161. /package/lib/clang/{17 → 19}/include/avxvnniint16intrin.h +0 -0
  162. /package/lib/clang/{17 → 19}/include/avxvnniint8intrin.h +0 -0
  163. /package/lib/clang/{17 → 19}/include/avxvnniintrin.h +0 -0
  164. /package/lib/clang/{17 → 19}/include/bmi2intrin.h +0 -0
  165. /package/lib/clang/{17 → 19}/include/cet.h +0 -0
  166. /package/lib/clang/{17 → 19}/include/cetintrin.h +0 -0
  167. /package/lib/clang/{17 → 19}/include/cldemoteintrin.h +0 -0
  168. /package/lib/clang/{17 → 19}/include/clflushoptintrin.h +0 -0
  169. /package/lib/clang/{17 → 19}/include/clwbintrin.h +0 -0
  170. /package/lib/clang/{17 → 19}/include/clzerointrin.h +0 -0
  171. /package/lib/clang/{17 → 19}/include/cmpccxaddintrin.h +0 -0
  172. /package/lib/clang/{17 → 19}/include/crc32intrin.h +0 -0
  173. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.h +0 -0
  174. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  175. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  176. /package/lib/clang/{17 → 19}/include/cuda_wrappers/cmath +0 -0
  177. /package/lib/clang/{17 → 19}/include/cuda_wrappers/complex +0 -0
  178. /package/lib/clang/{17 → 19}/include/cuda_wrappers/new +0 -0
  179. /package/lib/clang/{17 → 19}/include/enqcmdintrin.h +0 -0
  180. /package/lib/clang/{17 → 19}/include/f16cintrin.h +0 -0
  181. /package/lib/clang/{17 → 19}/include/fma4intrin.h +0 -0
  182. /package/lib/clang/{17 → 19}/include/fxsrintrin.h +0 -0
  183. /package/lib/clang/{17 → 19}/include/hexagon_circ_brev_intrinsics.h +0 -0
  184. /package/lib/clang/{17 → 19}/include/hexagon_protos.h +0 -0
  185. /package/lib/clang/{17 → 19}/include/hexagon_types.h +0 -0
  186. /package/lib/clang/{17 → 19}/include/hlsl.h +0 -0
  187. /package/lib/clang/{17 → 19}/include/hresetintrin.h +0 -0
  188. /package/lib/clang/{17 → 19}/include/htmintrin.h +0 -0
  189. /package/lib/clang/{17 → 19}/include/htmxlintrin.h +0 -0
  190. /package/lib/clang/{17 → 19}/include/hvx_hexagon_protos.h +0 -0
  191. /package/lib/clang/{17 → 19}/include/invpcidintrin.h +0 -0
  192. /package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/inttypes.h +0 -0
  193. /package/lib/clang/{17 → 19}/include/lwpintrin.h +0 -0
  194. /package/lib/clang/{17 → 19}/include/lzcntintrin.h +0 -0
  195. /package/lib/clang/{17 → 19}/include/mm_malloc.h +0 -0
  196. /package/lib/clang/{17 → 19}/include/movdirintrin.h +0 -0
  197. /package/lib/clang/{17 → 19}/include/msa.h +0 -0
  198. /package/lib/clang/{17 → 19}/include/mwaitxintrin.h +0 -0
  199. /package/lib/clang/{17 → 19}/include/nmmintrin.h +0 -0
  200. /package/lib/clang/{17 → 19}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  201. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex +0 -0
  202. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex.h +0 -0
  203. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex_cmath.h +0 -0
  204. /package/lib/clang/{17 → 19}/include/openmp_wrappers/math.h +0 -0
  205. /package/lib/clang/{17 → 19}/include/openmp_wrappers/new +0 -0
  206. /package/lib/clang/{17 → 19}/include/pconfigintrin.h +0 -0
  207. /package/lib/clang/{17 → 19}/include/pkuintrin.h +0 -0
  208. /package/lib/clang/{17 → 19}/include/popcntintrin.h +0 -0
  209. /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmi2intrin.h +0 -0
  210. /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmiintrin.h +0 -0
  211. /package/lib/clang/{17 → 19}/include/ppc_wrappers/emmintrin.h +0 -0
  212. /package/lib/clang/{17 → 19}/include/ppc_wrappers/immintrin.h +0 -0
  213. /package/lib/clang/{17 → 19}/include/ppc_wrappers/mm_malloc.h +0 -0
  214. /package/lib/clang/{17 → 19}/include/ppc_wrappers/mmintrin.h +0 -0
  215. /package/lib/clang/{17 → 19}/include/ppc_wrappers/pmmintrin.h +0 -0
  216. /package/lib/clang/{17 → 19}/include/ppc_wrappers/tmmintrin.h +0 -0
  217. /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86gprintrin.h +0 -0
  218. /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86intrin.h +0 -0
  219. /package/lib/clang/{17 → 19}/include/ppc_wrappers/xmmintrin.h +0 -0
  220. /package/lib/clang/{17 → 19}/include/prfchiintrin.h +0 -0
  221. /package/lib/clang/{17 → 19}/include/ptwriteintrin.h +0 -0
  222. /package/lib/clang/{17 → 19}/include/raointintrin.h +0 -0
  223. /package/lib/clang/{17 → 19}/include/rdpruintrin.h +0 -0
  224. /package/lib/clang/{17 → 19}/include/rdseedintrin.h +0 -0
  225. /package/lib/clang/{17 → 19}/include/rtmintrin.h +0 -0
  226. /package/lib/clang/{17 → 19}/include/s390intrin.h +0 -0
  227. /package/lib/clang/{17 → 19}/include/serializeintrin.h +0 -0
  228. /package/lib/clang/{17 → 19}/include/sgxintrin.h +0 -0
  229. /package/lib/clang/{17 → 19}/include/sha512intrin.h +0 -0
  230. /package/lib/clang/{17 → 19}/include/shaintrin.h +0 -0
  231. /package/lib/clang/{17 → 19}/include/sm3intrin.h +0 -0
  232. /package/lib/clang/{17 → 19}/include/sm4intrin.h +0 -0
  233. /package/lib/clang/{17 → 19}/include/tbmintrin.h +0 -0
  234. /package/lib/clang/{17 → 19}/include/tgmath.h +0 -0
  235. /package/lib/clang/{17 → 19}/include/tsxldtrkintrin.h +0 -0
  236. /package/lib/clang/{17 → 19}/include/uintrintrin.h +0 -0
  237. /package/lib/clang/{17 → 19}/include/unwind.h +0 -0
  238. /package/lib/clang/{17 → 19}/include/vadefs.h +0 -0
  239. /package/lib/clang/{17 → 19}/include/velintrin.h +0 -0
  240. /package/lib/clang/{17 → 19}/include/velintrin_approx.h +0 -0
  241. /package/lib/clang/{17 → 19}/include/velintrin_gen.h +0 -0
  242. /package/lib/clang/{17 → 19}/include/vpclmulqdqintrin.h +0 -0
  243. /package/lib/clang/{17 → 19}/include/waitpkgintrin.h +0 -0
  244. /package/lib/clang/{17 → 19}/include/wasm_simd128.h +0 -0
  245. /package/lib/clang/{17 → 19}/include/wbnoinvdintrin.h +0 -0
  246. /package/lib/clang/{17 → 19}/include/wmmintrin.h +0 -0
  247. /package/lib/clang/{17 → 19}/include/xopintrin.h +0 -0
  248. /package/lib/clang/{17 → 19}/include/xsavecintrin.h +0 -0
  249. /package/lib/clang/{17 → 19}/include/xsaveintrin.h +0 -0
  250. /package/lib/clang/{17 → 19}/include/xsaveoptintrin.h +0 -0
  251. /package/lib/clang/{17 → 19}/include/xsavesintrin.h +0 -0
  252. /package/lib/clang/{17 → 19}/include/xtestintrin.h +0 -0
@@ -32,8 +32,12 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16)));
32
32
  #endif
33
33
 
34
34
  /* Define the default attributes for the functions in this file. */
35
- #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse"), __min_vector_width__(128)))
36
- #define __DEFAULT_FN_ATTRS_MMX __attribute__((__always_inline__, __nodebug__, __target__("mmx,sse"), __min_vector_width__(64)))
35
+ #define __DEFAULT_FN_ATTRS \
36
+ __attribute__((__always_inline__, __nodebug__, __target__("sse,no-evex512"), \
37
+ __min_vector_width__(128)))
38
+ #define __DEFAULT_FN_ATTRS_MMX \
39
+ __attribute__((__always_inline__, __nodebug__, \
40
+ __target__("mmx,sse,no-evex512"), __min_vector_width__(64)))
37
41
 
38
42
  /// Adds the 32-bit float values in the low-order bits of the operands.
39
43
  ///
@@ -312,6 +316,8 @@ _mm_rsqrt_ps(__m128 __a)
312
316
  /// operands and returns the lesser value in the low-order bits of the
313
317
  /// vector of [4 x float].
314
318
  ///
319
+ /// If either value in a comparison is NaN, returns the value from \a __b.
320
+ ///
315
321
  /// \headerfile <x86intrin.h>
316
322
  ///
317
323
  /// This intrinsic corresponds to the <c> VMINSS / MINSS </c> instructions.
@@ -334,6 +340,8 @@ _mm_min_ss(__m128 __a, __m128 __b)
334
340
  /// Compares two 128-bit vectors of [4 x float] and returns the lesser
335
341
  /// of each pair of values.
336
342
  ///
343
+ /// If either value in a comparison is NaN, returns the value from \a __b.
344
+ ///
337
345
  /// \headerfile <x86intrin.h>
338
346
  ///
339
347
  /// This intrinsic corresponds to the <c> VMINPS / MINPS </c> instructions.
@@ -354,6 +362,8 @@ _mm_min_ps(__m128 __a, __m128 __b)
354
362
  /// operands and returns the greater value in the low-order bits of a 128-bit
355
363
  /// vector of [4 x float].
356
364
  ///
365
+ /// If either value in a comparison is NaN, returns the value from \a __b.
366
+ ///
357
367
  /// \headerfile <x86intrin.h>
358
368
  ///
359
369
  /// This intrinsic corresponds to the <c> VMAXSS / MAXSS </c> instructions.
@@ -376,6 +386,8 @@ _mm_max_ss(__m128 __a, __m128 __b)
376
386
  /// Compares two 128-bit vectors of [4 x float] and returns the greater
377
387
  /// of each pair of values.
378
388
  ///
389
+ /// If either value in a comparison is NaN, returns the value from \a __b.
390
+ ///
379
391
  /// \headerfile <x86intrin.h>
380
392
  ///
381
393
  /// This intrinsic corresponds to the <c> VMAXPS / MAXPS </c> instructions.
@@ -470,8 +482,11 @@ _mm_xor_ps(__m128 __a, __m128 __b)
470
482
  }
471
483
 
472
484
  /// Compares two 32-bit float values in the low-order bits of both
473
- /// operands for equality and returns the result of the comparison in the
485
+ /// operands for equality.
486
+ ///
487
+ /// The comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
474
488
  /// low-order bits of a vector [4 x float].
489
+ /// If either value in a comparison is NaN, returns false.
475
490
  ///
476
491
  /// \headerfile <x86intrin.h>
477
492
  ///
@@ -494,6 +509,9 @@ _mm_cmpeq_ss(__m128 __a, __m128 __b)
494
509
  /// Compares each of the corresponding 32-bit float values of the
495
510
  /// 128-bit vectors of [4 x float] for equality.
496
511
  ///
512
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
513
+ /// If either value in a comparison is NaN, returns false.
514
+ ///
497
515
  /// \headerfile <x86intrin.h>
498
516
  ///
499
517
  /// This intrinsic corresponds to the <c> VCMPEQPS / CMPEQPS </c> instructions.
@@ -511,8 +529,11 @@ _mm_cmpeq_ps(__m128 __a, __m128 __b)
511
529
 
512
530
  /// Compares two 32-bit float values in the low-order bits of both
513
531
  /// operands to determine if the value in the first operand is less than the
514
- /// corresponding value in the second operand and returns the result of the
515
- /// comparison in the low-order bits of a vector of [4 x float].
532
+ /// corresponding value in the second operand.
533
+ ///
534
+ /// The comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
535
+ /// low-order bits of a vector of [4 x float].
536
+ /// If either value in a comparison is NaN, returns false.
516
537
  ///
517
538
  /// \headerfile <x86intrin.h>
518
539
  ///
@@ -536,6 +557,9 @@ _mm_cmplt_ss(__m128 __a, __m128 __b)
536
557
  /// 128-bit vectors of [4 x float] to determine if the values in the first
537
558
  /// operand are less than those in the second operand.
538
559
  ///
560
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
561
+ /// If either value in a comparison is NaN, returns false.
562
+ ///
539
563
  /// \headerfile <x86intrin.h>
540
564
  ///
541
565
  /// This intrinsic corresponds to the <c> VCMPLTPS / CMPLTPS </c> instructions.
@@ -553,9 +577,11 @@ _mm_cmplt_ps(__m128 __a, __m128 __b)
553
577
 
554
578
  /// Compares two 32-bit float values in the low-order bits of both
555
579
  /// operands to determine if the value in the first operand is less than or
556
- /// equal to the corresponding value in the second operand and returns the
557
- /// result of the comparison in the low-order bits of a vector of
558
- /// [4 x float].
580
+ /// equal to the corresponding value in the second operand.
581
+ ///
582
+ /// The comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true, in
583
+ /// the low-order bits of a vector of [4 x float].
584
+ /// If either value in a comparison is NaN, returns false.
559
585
  ///
560
586
  /// \headerfile <x86intrin.h>
561
587
  ///
@@ -579,6 +605,9 @@ _mm_cmple_ss(__m128 __a, __m128 __b)
579
605
  /// 128-bit vectors of [4 x float] to determine if the values in the first
580
606
  /// operand are less than or equal to those in the second operand.
581
607
  ///
608
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
609
+ /// If either value in a comparison is NaN, returns false.
610
+ ///
582
611
  /// \headerfile <x86intrin.h>
583
612
  ///
584
613
  /// This intrinsic corresponds to the <c> VCMPLEPS / CMPLEPS </c> instructions.
@@ -596,8 +625,11 @@ _mm_cmple_ps(__m128 __a, __m128 __b)
596
625
 
597
626
  /// Compares two 32-bit float values in the low-order bits of both
598
627
  /// operands to determine if the value in the first operand is greater than
599
- /// the corresponding value in the second operand and returns the result of
600
- /// the comparison in the low-order bits of a vector of [4 x float].
628
+ /// the corresponding value in the second operand.
629
+ ///
630
+ /// The comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
631
+ /// low-order bits of a vector of [4 x float].
632
+ /// If either value in a comparison is NaN, returns false.
601
633
  ///
602
634
  /// \headerfile <x86intrin.h>
603
635
  ///
@@ -623,6 +655,9 @@ _mm_cmpgt_ss(__m128 __a, __m128 __b)
623
655
  /// 128-bit vectors of [4 x float] to determine if the values in the first
624
656
  /// operand are greater than those in the second operand.
625
657
  ///
658
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
659
+ /// If either value in a comparison is NaN, returns false.
660
+ ///
626
661
  /// \headerfile <x86intrin.h>
627
662
  ///
628
663
  /// This intrinsic corresponds to the <c> VCMPLTPS / CMPLTPS </c> instructions.
@@ -640,9 +675,11 @@ _mm_cmpgt_ps(__m128 __a, __m128 __b)
640
675
 
641
676
  /// Compares two 32-bit float values in the low-order bits of both
642
677
  /// operands to determine if the value in the first operand is greater than
643
- /// or equal to the corresponding value in the second operand and returns
644
- /// the result of the comparison in the low-order bits of a vector of
645
- /// [4 x float].
678
+ /// or equal to the corresponding value in the second operand.
679
+ ///
680
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
681
+ /// low-order bits of a vector of [4 x float].
682
+ /// If either value in a comparison is NaN, returns false.
646
683
  ///
647
684
  /// \headerfile <x86intrin.h>
648
685
  ///
@@ -668,6 +705,9 @@ _mm_cmpge_ss(__m128 __a, __m128 __b)
668
705
  /// 128-bit vectors of [4 x float] to determine if the values in the first
669
706
  /// operand are greater than or equal to those in the second operand.
670
707
  ///
708
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
709
+ /// If either value in a comparison is NaN, returns false.
710
+ ///
671
711
  /// \headerfile <x86intrin.h>
672
712
  ///
673
713
  /// This intrinsic corresponds to the <c> VCMPLEPS / CMPLEPS </c> instructions.
@@ -683,9 +723,12 @@ _mm_cmpge_ps(__m128 __a, __m128 __b)
683
723
  return (__m128)__builtin_ia32_cmpleps((__v4sf)__b, (__v4sf)__a);
684
724
  }
685
725
 
686
- /// Compares two 32-bit float values in the low-order bits of both
687
- /// operands for inequality and returns the result of the comparison in the
726
+ /// Compares two 32-bit float values in the low-order bits of both operands
727
+ /// for inequality.
728
+ ///
729
+ /// The comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
688
730
  /// low-order bits of a vector of [4 x float].
731
+ /// If either value in a comparison is NaN, returns true.
689
732
  ///
690
733
  /// \headerfile <x86intrin.h>
691
734
  ///
@@ -709,6 +752,9 @@ _mm_cmpneq_ss(__m128 __a, __m128 __b)
709
752
  /// Compares each of the corresponding 32-bit float values of the
710
753
  /// 128-bit vectors of [4 x float] for inequality.
711
754
  ///
755
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
756
+ /// If either value in a comparison is NaN, returns true.
757
+ ///
712
758
  /// \headerfile <x86intrin.h>
713
759
  ///
714
760
  /// This intrinsic corresponds to the <c> VCMPNEQPS / CMPNEQPS </c>
@@ -727,8 +773,11 @@ _mm_cmpneq_ps(__m128 __a, __m128 __b)
727
773
 
728
774
  /// Compares two 32-bit float values in the low-order bits of both
729
775
  /// operands to determine if the value in the first operand is not less than
730
- /// the corresponding value in the second operand and returns the result of
731
- /// the comparison in the low-order bits of a vector of [4 x float].
776
+ /// the corresponding value in the second operand.
777
+ ///
778
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
779
+ /// low-order bits of a vector of [4 x float].
780
+ /// If either value in a comparison is NaN, returns true.
732
781
  ///
733
782
  /// \headerfile <x86intrin.h>
734
783
  ///
@@ -753,6 +802,9 @@ _mm_cmpnlt_ss(__m128 __a, __m128 __b)
753
802
  /// 128-bit vectors of [4 x float] to determine if the values in the first
754
803
  /// operand are not less than those in the second operand.
755
804
  ///
805
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
806
+ /// If either value in a comparison is NaN, returns true.
807
+ ///
756
808
  /// \headerfile <x86intrin.h>
757
809
  ///
758
810
  /// This intrinsic corresponds to the <c> VCMPNLTPS / CMPNLTPS </c>
@@ -771,9 +823,11 @@ _mm_cmpnlt_ps(__m128 __a, __m128 __b)
771
823
 
772
824
  /// Compares two 32-bit float values in the low-order bits of both
773
825
  /// operands to determine if the value in the first operand is not less than
774
- /// or equal to the corresponding value in the second operand and returns
775
- /// the result of the comparison in the low-order bits of a vector of
776
- /// [4 x float].
826
+ /// or equal to the corresponding value in the second operand.
827
+ ///
828
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
829
+ /// low-order bits of a vector of [4 x float].
830
+ /// If either value in a comparison is NaN, returns true.
777
831
  ///
778
832
  /// \headerfile <x86intrin.h>
779
833
  ///
@@ -798,6 +852,9 @@ _mm_cmpnle_ss(__m128 __a, __m128 __b)
798
852
  /// 128-bit vectors of [4 x float] to determine if the values in the first
799
853
  /// operand are not less than or equal to those in the second operand.
800
854
  ///
855
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
856
+ /// If either value in a comparison is NaN, returns true.
857
+ ///
801
858
  /// \headerfile <x86intrin.h>
802
859
  ///
803
860
  /// This intrinsic corresponds to the <c> VCMPNLEPS / CMPNLEPS </c>
@@ -816,9 +873,11 @@ _mm_cmpnle_ps(__m128 __a, __m128 __b)
816
873
 
817
874
  /// Compares two 32-bit float values in the low-order bits of both
818
875
  /// operands to determine if the value in the first operand is not greater
819
- /// than the corresponding value in the second operand and returns the
820
- /// result of the comparison in the low-order bits of a vector of
821
- /// [4 x float].
876
+ /// than the corresponding value in the second operand.
877
+ ///
878
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
879
+ /// low-order bits of a vector of [4 x float].
880
+ /// If either value in a comparison is NaN, returns true.
822
881
  ///
823
882
  /// \headerfile <x86intrin.h>
824
883
  ///
@@ -845,6 +904,9 @@ _mm_cmpngt_ss(__m128 __a, __m128 __b)
845
904
  /// 128-bit vectors of [4 x float] to determine if the values in the first
846
905
  /// operand are not greater than those in the second operand.
847
906
  ///
907
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
908
+ /// If either value in a comparison is NaN, returns true.
909
+ ///
848
910
  /// \headerfile <x86intrin.h>
849
911
  ///
850
912
  /// This intrinsic corresponds to the <c> VCMPNLTPS / CMPNLTPS </c>
@@ -863,9 +925,11 @@ _mm_cmpngt_ps(__m128 __a, __m128 __b)
863
925
 
864
926
  /// Compares two 32-bit float values in the low-order bits of both
865
927
  /// operands to determine if the value in the first operand is not greater
866
- /// than or equal to the corresponding value in the second operand and
867
- /// returns the result of the comparison in the low-order bits of a vector
868
- /// of [4 x float].
928
+ /// than or equal to the corresponding value in the second operand.
929
+ ///
930
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true, in the
931
+ /// low-order bits of a vector of [4 x float].
932
+ /// If either value in a comparison is NaN, returns true.
869
933
  ///
870
934
  /// \headerfile <x86intrin.h>
871
935
  ///
@@ -892,6 +956,9 @@ _mm_cmpnge_ss(__m128 __a, __m128 __b)
892
956
  /// 128-bit vectors of [4 x float] to determine if the values in the first
893
957
  /// operand are not greater than or equal to those in the second operand.
894
958
  ///
959
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
960
+ /// If either value in a comparison is NaN, returns true.
961
+ ///
895
962
  /// \headerfile <x86intrin.h>
896
963
  ///
897
964
  /// This intrinsic corresponds to the <c> VCMPNLEPS / CMPNLEPS </c>
@@ -910,9 +977,11 @@ _mm_cmpnge_ps(__m128 __a, __m128 __b)
910
977
 
911
978
  /// Compares two 32-bit float values in the low-order bits of both
912
979
  /// operands to determine if the value in the first operand is ordered with
913
- /// respect to the corresponding value in the second operand and returns the
914
- /// result of the comparison in the low-order bits of a vector of
915
- /// [4 x float].
980
+ /// respect to the corresponding value in the second operand.
981
+ ///
982
+ /// A pair of floating-point values are ordered with respect to each
983
+ /// other if neither value is a NaN. Each comparison returns 0x0 for false,
984
+ /// 0xFFFFFFFF for true.
916
985
  ///
917
986
  /// \headerfile <x86intrin.h>
918
987
  ///
@@ -937,6 +1006,10 @@ _mm_cmpord_ss(__m128 __a, __m128 __b)
937
1006
  /// 128-bit vectors of [4 x float] to determine if the values in the first
938
1007
  /// operand are ordered with respect to those in the second operand.
939
1008
  ///
1009
+ /// A pair of floating-point values are ordered with respect to each
1010
+ /// other if neither value is a NaN. Each comparison returns 0x0 for false,
1011
+ /// 0xFFFFFFFF for true.
1012
+ ///
940
1013
  /// \headerfile <x86intrin.h>
941
1014
  ///
942
1015
  /// This intrinsic corresponds to the <c> VCMPORDPS / CMPORDPS </c>
@@ -955,9 +1028,11 @@ _mm_cmpord_ps(__m128 __a, __m128 __b)
955
1028
 
956
1029
  /// Compares two 32-bit float values in the low-order bits of both
957
1030
  /// operands to determine if the value in the first operand is unordered
958
- /// with respect to the corresponding value in the second operand and
959
- /// returns the result of the comparison in the low-order bits of a vector
960
- /// of [4 x float].
1031
+ /// with respect to the corresponding value in the second operand.
1032
+ ///
1033
+ /// A pair of double-precision values are unordered with respect to each
1034
+ /// other if one or both values are NaN. Each comparison returns 0x0 for
1035
+ /// false, 0xFFFFFFFF for true.
961
1036
  ///
962
1037
  /// \headerfile <x86intrin.h>
963
1038
  ///
@@ -982,6 +1057,10 @@ _mm_cmpunord_ss(__m128 __a, __m128 __b)
982
1057
  /// 128-bit vectors of [4 x float] to determine if the values in the first
983
1058
  /// operand are unordered with respect to those in the second operand.
984
1059
  ///
1060
+ /// A pair of double-precision values are unordered with respect to each
1061
+ /// other if one or both values are NaN. Each comparison returns 0x0 for
1062
+ /// false, 0xFFFFFFFFFFFFFFFF for true.
1063
+ ///
985
1064
  /// \headerfile <x86intrin.h>
986
1065
  ///
987
1066
  /// This intrinsic corresponds to the <c> VCMPUNORDPS / CMPUNORDPS </c>
@@ -999,9 +1078,10 @@ _mm_cmpunord_ps(__m128 __a, __m128 __b)
999
1078
  }
1000
1079
 
1001
1080
  /// Compares two 32-bit float values in the low-order bits of both
1002
- /// operands for equality and returns the result of the comparison.
1081
+ /// operands for equality.
1003
1082
  ///
1004
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1083
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1084
+ /// comparison is NaN, returns 0.
1005
1085
  ///
1006
1086
  /// \headerfile <x86intrin.h>
1007
1087
  ///
@@ -1014,8 +1094,7 @@ _mm_cmpunord_ps(__m128 __a, __m128 __b)
1014
1094
  /// \param __b
1015
1095
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1016
1096
  /// used in the comparison.
1017
- /// \returns An integer containing the comparison results. If either of the
1018
- /// two lower 32-bit values is NaN, 0 is returned.
1097
+ /// \returns An integer containing the comparison results.
1019
1098
  static __inline__ int __DEFAULT_FN_ATTRS
1020
1099
  _mm_comieq_ss(__m128 __a, __m128 __b)
1021
1100
  {
@@ -1024,9 +1103,10 @@ _mm_comieq_ss(__m128 __a, __m128 __b)
1024
1103
 
1025
1104
  /// Compares two 32-bit float values in the low-order bits of both
1026
1105
  /// operands to determine if the first operand is less than the second
1027
- /// operand and returns the result of the comparison.
1106
+ /// operand.
1028
1107
  ///
1029
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1108
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1109
+ /// comparison is NaN, returns 0.
1030
1110
  ///
1031
1111
  /// \headerfile <x86intrin.h>
1032
1112
  ///
@@ -1039,8 +1119,7 @@ _mm_comieq_ss(__m128 __a, __m128 __b)
1039
1119
  /// \param __b
1040
1120
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1041
1121
  /// used in the comparison.
1042
- /// \returns An integer containing the comparison results. If either of the two
1043
- /// lower 32-bit values is NaN, 0 is returned.
1122
+ /// \returns An integer containing the comparison results.
1044
1123
  static __inline__ int __DEFAULT_FN_ATTRS
1045
1124
  _mm_comilt_ss(__m128 __a, __m128 __b)
1046
1125
  {
@@ -1049,9 +1128,10 @@ _mm_comilt_ss(__m128 __a, __m128 __b)
1049
1128
 
1050
1129
  /// Compares two 32-bit float values in the low-order bits of both
1051
1130
  /// operands to determine if the first operand is less than or equal to the
1052
- /// second operand and returns the result of the comparison.
1131
+ /// second operand.
1053
1132
  ///
1054
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1133
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1134
+ /// comparison is NaN, returns 0.
1055
1135
  ///
1056
1136
  /// \headerfile <x86intrin.h>
1057
1137
  ///
@@ -1063,8 +1143,7 @@ _mm_comilt_ss(__m128 __a, __m128 __b)
1063
1143
  /// \param __b
1064
1144
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1065
1145
  /// used in the comparison.
1066
- /// \returns An integer containing the comparison results. If either of the two
1067
- /// lower 32-bit values is NaN, 0 is returned.
1146
+ /// \returns An integer containing the comparison results.
1068
1147
  static __inline__ int __DEFAULT_FN_ATTRS
1069
1148
  _mm_comile_ss(__m128 __a, __m128 __b)
1070
1149
  {
@@ -1073,9 +1152,10 @@ _mm_comile_ss(__m128 __a, __m128 __b)
1073
1152
 
1074
1153
  /// Compares two 32-bit float values in the low-order bits of both
1075
1154
  /// operands to determine if the first operand is greater than the second
1076
- /// operand and returns the result of the comparison.
1155
+ /// operand.
1077
1156
  ///
1078
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1157
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1158
+ /// comparison is NaN, returns 0.
1079
1159
  ///
1080
1160
  /// \headerfile <x86intrin.h>
1081
1161
  ///
@@ -1087,8 +1167,7 @@ _mm_comile_ss(__m128 __a, __m128 __b)
1087
1167
  /// \param __b
1088
1168
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1089
1169
  /// used in the comparison.
1090
- /// \returns An integer containing the comparison results. If either of the
1091
- /// two lower 32-bit values is NaN, 0 is returned.
1170
+ /// \returns An integer containing the comparison results.
1092
1171
  static __inline__ int __DEFAULT_FN_ATTRS
1093
1172
  _mm_comigt_ss(__m128 __a, __m128 __b)
1094
1173
  {
@@ -1097,9 +1176,10 @@ _mm_comigt_ss(__m128 __a, __m128 __b)
1097
1176
 
1098
1177
  /// Compares two 32-bit float values in the low-order bits of both
1099
1178
  /// operands to determine if the first operand is greater than or equal to
1100
- /// the second operand and returns the result of the comparison.
1179
+ /// the second operand.
1101
1180
  ///
1102
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1181
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1182
+ /// comparison is NaN, returns 0.
1103
1183
  ///
1104
1184
  /// \headerfile <x86intrin.h>
1105
1185
  ///
@@ -1111,8 +1191,7 @@ _mm_comigt_ss(__m128 __a, __m128 __b)
1111
1191
  /// \param __b
1112
1192
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1113
1193
  /// used in the comparison.
1114
- /// \returns An integer containing the comparison results. If either of the two
1115
- /// lower 32-bit values is NaN, 0 is returned.
1194
+ /// \returns An integer containing the comparison results.
1116
1195
  static __inline__ int __DEFAULT_FN_ATTRS
1117
1196
  _mm_comige_ss(__m128 __a, __m128 __b)
1118
1197
  {
@@ -1121,9 +1200,10 @@ _mm_comige_ss(__m128 __a, __m128 __b)
1121
1200
 
1122
1201
  /// Compares two 32-bit float values in the low-order bits of both
1123
1202
  /// operands to determine if the first operand is not equal to the second
1124
- /// operand and returns the result of the comparison.
1203
+ /// operand.
1125
1204
  ///
1126
- /// If either of the two lower 32-bit values is NaN, 1 is returned.
1205
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1206
+ /// comparison is NaN, returns 1.
1127
1207
  ///
1128
1208
  /// \headerfile <x86intrin.h>
1129
1209
  ///
@@ -1135,8 +1215,7 @@ _mm_comige_ss(__m128 __a, __m128 __b)
1135
1215
  /// \param __b
1136
1216
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1137
1217
  /// used in the comparison.
1138
- /// \returns An integer containing the comparison results. If either of the
1139
- /// two lower 32-bit values is NaN, 1 is returned.
1218
+ /// \returns An integer containing the comparison results.
1140
1219
  static __inline__ int __DEFAULT_FN_ATTRS
1141
1220
  _mm_comineq_ss(__m128 __a, __m128 __b)
1142
1221
  {
@@ -1144,10 +1223,10 @@ _mm_comineq_ss(__m128 __a, __m128 __b)
1144
1223
  }
1145
1224
 
1146
1225
  /// Performs an unordered comparison of two 32-bit float values using
1147
- /// the low-order bits of both operands to determine equality and returns
1148
- /// the result of the comparison.
1226
+ /// the low-order bits of both operands to determine equality.
1149
1227
  ///
1150
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1228
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1229
+ /// comparison is NaN, returns 0.
1151
1230
  ///
1152
1231
  /// \headerfile <x86intrin.h>
1153
1232
  ///
@@ -1159,8 +1238,7 @@ _mm_comineq_ss(__m128 __a, __m128 __b)
1159
1238
  /// \param __b
1160
1239
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1161
1240
  /// used in the comparison.
1162
- /// \returns An integer containing the comparison results. If either of the two
1163
- /// lower 32-bit values is NaN, 0 is returned.
1241
+ /// \returns An integer containing the comparison results.
1164
1242
  static __inline__ int __DEFAULT_FN_ATTRS
1165
1243
  _mm_ucomieq_ss(__m128 __a, __m128 __b)
1166
1244
  {
@@ -1169,9 +1247,10 @@ _mm_ucomieq_ss(__m128 __a, __m128 __b)
1169
1247
 
1170
1248
  /// Performs an unordered comparison of two 32-bit float values using
1171
1249
  /// the low-order bits of both operands to determine if the first operand is
1172
- /// less than the second operand and returns the result of the comparison.
1250
+ /// less than the second operand.
1173
1251
  ///
1174
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1252
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1253
+ /// comparison is NaN, returns 0.
1175
1254
  ///
1176
1255
  /// \headerfile <x86intrin.h>
1177
1256
  ///
@@ -1183,8 +1262,7 @@ _mm_ucomieq_ss(__m128 __a, __m128 __b)
1183
1262
  /// \param __b
1184
1263
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1185
1264
  /// used in the comparison.
1186
- /// \returns An integer containing the comparison results. If either of the two
1187
- /// lower 32-bit values is NaN, 0 is returned.
1265
+ /// \returns An integer containing the comparison results.
1188
1266
  static __inline__ int __DEFAULT_FN_ATTRS
1189
1267
  _mm_ucomilt_ss(__m128 __a, __m128 __b)
1190
1268
  {
@@ -1193,10 +1271,10 @@ _mm_ucomilt_ss(__m128 __a, __m128 __b)
1193
1271
 
1194
1272
  /// Performs an unordered comparison of two 32-bit float values using
1195
1273
  /// the low-order bits of both operands to determine if the first operand is
1196
- /// less than or equal to the second operand and returns the result of the
1197
- /// comparison.
1274
+ /// less than or equal to the second operand.
1198
1275
  ///
1199
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1276
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1277
+ /// comparison is NaN, returns 0.
1200
1278
  ///
1201
1279
  /// \headerfile <x86intrin.h>
1202
1280
  ///
@@ -1208,8 +1286,7 @@ _mm_ucomilt_ss(__m128 __a, __m128 __b)
1208
1286
  /// \param __b
1209
1287
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1210
1288
  /// used in the comparison.
1211
- /// \returns An integer containing the comparison results. If either of the two
1212
- /// lower 32-bit values is NaN, 0 is returned.
1289
+ /// \returns An integer containing the comparison results.
1213
1290
  static __inline__ int __DEFAULT_FN_ATTRS
1214
1291
  _mm_ucomile_ss(__m128 __a, __m128 __b)
1215
1292
  {
@@ -1218,10 +1295,10 @@ _mm_ucomile_ss(__m128 __a, __m128 __b)
1218
1295
 
1219
1296
  /// Performs an unordered comparison of two 32-bit float values using
1220
1297
  /// the low-order bits of both operands to determine if the first operand is
1221
- /// greater than the second operand and returns the result of the
1222
- /// comparison.
1298
+ /// greater than the second operand.
1223
1299
  ///
1224
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1300
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1301
+ /// comparison is NaN, returns 0.
1225
1302
  ///
1226
1303
  /// \headerfile <x86intrin.h>
1227
1304
  ///
@@ -1233,8 +1310,7 @@ _mm_ucomile_ss(__m128 __a, __m128 __b)
1233
1310
  /// \param __b
1234
1311
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1235
1312
  /// used in the comparison.
1236
- /// \returns An integer containing the comparison results. If either of the two
1237
- /// lower 32-bit values is NaN, 0 is returned.
1313
+ /// \returns An integer containing the comparison results.
1238
1314
  static __inline__ int __DEFAULT_FN_ATTRS
1239
1315
  _mm_ucomigt_ss(__m128 __a, __m128 __b)
1240
1316
  {
@@ -1243,10 +1319,10 @@ _mm_ucomigt_ss(__m128 __a, __m128 __b)
1243
1319
 
1244
1320
  /// Performs an unordered comparison of two 32-bit float values using
1245
1321
  /// the low-order bits of both operands to determine if the first operand is
1246
- /// greater than or equal to the second operand and returns the result of
1247
- /// the comparison.
1322
+ /// greater than or equal to the second operand.
1248
1323
  ///
1249
- /// If either of the two lower 32-bit values is NaN, 0 is returned.
1324
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1325
+ /// comparison is NaN, returns 0.
1250
1326
  ///
1251
1327
  /// \headerfile <x86intrin.h>
1252
1328
  ///
@@ -1258,8 +1334,7 @@ _mm_ucomigt_ss(__m128 __a, __m128 __b)
1258
1334
  /// \param __b
1259
1335
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1260
1336
  /// used in the comparison.
1261
- /// \returns An integer containing the comparison results. If either of the two
1262
- /// lower 32-bit values is NaN, 0 is returned.
1337
+ /// \returns An integer containing the comparison results.
1263
1338
  static __inline__ int __DEFAULT_FN_ATTRS
1264
1339
  _mm_ucomige_ss(__m128 __a, __m128 __b)
1265
1340
  {
@@ -1267,10 +1342,10 @@ _mm_ucomige_ss(__m128 __a, __m128 __b)
1267
1342
  }
1268
1343
 
1269
1344
  /// Performs an unordered comparison of two 32-bit float values using
1270
- /// the low-order bits of both operands to determine inequality and returns
1271
- /// the result of the comparison.
1345
+ /// the low-order bits of both operands to determine inequality.
1272
1346
  ///
1273
- /// If either of the two lower 32-bit values is NaN, 1 is returned.
1347
+ /// The comparison returns 0 for false, 1 for true. If either value in a
1348
+ /// comparison is NaN, returns 0.
1274
1349
  ///
1275
1350
  /// \headerfile <x86intrin.h>
1276
1351
  ///
@@ -1282,8 +1357,7 @@ _mm_ucomige_ss(__m128 __a, __m128 __b)
1282
1357
  /// \param __b
1283
1358
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1284
1359
  /// used in the comparison.
1285
- /// \returns An integer containing the comparison results. If either of the two
1286
- /// lower 32-bit values is NaN, 1 is returned.
1360
+ /// \returns An integer containing the comparison results.
1287
1361
  static __inline__ int __DEFAULT_FN_ATTRS
1288
1362
  _mm_ucomineq_ss(__m128 __a, __m128 __b)
1289
1363
  {
@@ -1293,6 +1367,10 @@ _mm_ucomineq_ss(__m128 __a, __m128 __b)
1293
1367
  /// Converts a float value contained in the lower 32 bits of a vector of
1294
1368
  /// [4 x float] into a 32-bit integer.
1295
1369
  ///
1370
+ /// If the converted value does not fit in a 32-bit integer, raises a
1371
+ /// floating-point invalid exception. If the exception is masked, returns
1372
+ /// the most negative integer.
1373
+ ///
1296
1374
  /// \headerfile <x86intrin.h>
1297
1375
  ///
1298
1376
  /// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
@@ -1311,6 +1389,10 @@ _mm_cvtss_si32(__m128 __a)
1311
1389
  /// Converts a float value contained in the lower 32 bits of a vector of
1312
1390
  /// [4 x float] into a 32-bit integer.
1313
1391
  ///
1392
+ /// If the converted value does not fit in a 32-bit integer, raises a
1393
+ /// floating-point invalid exception. If the exception is masked, returns
1394
+ /// the most negative integer.
1395
+ ///
1314
1396
  /// \headerfile <x86intrin.h>
1315
1397
  ///
1316
1398
  /// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
@@ -1331,6 +1413,10 @@ _mm_cvt_ss2si(__m128 __a)
1331
1413
  /// Converts a float value contained in the lower 32 bits of a vector of
1332
1414
  /// [4 x float] into a 64-bit integer.
1333
1415
  ///
1416
+ /// If the converted value does not fit in a 32-bit integer, raises a
1417
+ /// floating-point invalid exception. If the exception is masked, returns
1418
+ /// the most negative integer.
1419
+ ///
1334
1420
  /// \headerfile <x86intrin.h>
1335
1421
  ///
1336
1422
  /// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
@@ -1351,6 +1437,10 @@ _mm_cvtss_si64(__m128 __a)
1351
1437
  /// Converts two low-order float values in a 128-bit vector of
1352
1438
  /// [4 x float] into a 64-bit vector of [2 x i32].
1353
1439
  ///
1440
+ /// If a converted value does not fit in a 32-bit integer, raises a
1441
+ /// floating-point invalid exception. If the exception is masked, returns
1442
+ /// the most negative integer.
1443
+ ///
1354
1444
  /// \headerfile <x86intrin.h>
1355
1445
  ///
1356
1446
  /// This intrinsic corresponds to the <c> CVTPS2PI </c> instruction.
@@ -1367,6 +1457,10 @@ _mm_cvtps_pi32(__m128 __a)
1367
1457
  /// Converts two low-order float values in a 128-bit vector of
1368
1458
  /// [4 x float] into a 64-bit vector of [2 x i32].
1369
1459
  ///
1460
+ /// If a converted value does not fit in a 32-bit integer, raises a
1461
+ /// floating-point invalid exception. If the exception is masked, returns
1462
+ /// the most negative integer.
1463
+ ///
1370
1464
  /// \headerfile <x86intrin.h>
1371
1465
  ///
1372
1466
  /// This intrinsic corresponds to the <c> CVTPS2PI </c> instruction.
@@ -1380,9 +1474,12 @@ _mm_cvt_ps2pi(__m128 __a)
1380
1474
  return _mm_cvtps_pi32(__a);
1381
1475
  }
1382
1476
 
1383
- /// Converts a float value contained in the lower 32 bits of a vector of
1384
- /// [4 x float] into a 32-bit integer, truncating the result when it is
1385
- /// inexact.
1477
+ /// Converts the lower (first) element of a vector of [4 x float] into a signed
1478
+ /// truncated (rounded toward zero) 32-bit integer.
1479
+ ///
1480
+ /// If the converted value does not fit in a 32-bit integer, raises a
1481
+ /// floating-point invalid exception. If the exception is masked, returns
1482
+ /// the most negative integer.
1386
1483
  ///
1387
1484
  /// \headerfile <x86intrin.h>
1388
1485
  ///
@@ -1399,9 +1496,12 @@ _mm_cvttss_si32(__m128 __a)
1399
1496
  return __builtin_ia32_cvttss2si((__v4sf)__a);
1400
1497
  }
1401
1498
 
1402
- /// Converts a float value contained in the lower 32 bits of a vector of
1403
- /// [4 x float] into a 32-bit integer, truncating the result when it is
1404
- /// inexact.
1499
+ /// Converts the lower (first) element of a vector of [4 x float] into a signed
1500
+ /// truncated (rounded toward zero) 32-bit integer.
1501
+ ///
1502
+ /// If the converted value does not fit in a 32-bit integer, raises a
1503
+ /// floating-point invalid exception. If the exception is masked, returns
1504
+ /// the most negative integer.
1405
1505
  ///
1406
1506
  /// \headerfile <x86intrin.h>
1407
1507
  ///
@@ -1419,9 +1519,12 @@ _mm_cvtt_ss2si(__m128 __a)
1419
1519
  }
1420
1520
 
1421
1521
  #ifdef __x86_64__
1422
- /// Converts a float value contained in the lower 32 bits of a vector of
1423
- /// [4 x float] into a 64-bit integer, truncating the result when it is
1424
- /// inexact.
1522
+ /// Converts the lower (first) element of a vector of [4 x float] into a signed
1523
+ /// truncated (rounded toward zero) 64-bit integer.
1524
+ ///
1525
+ /// If the converted value does not fit in a 64-bit integer, raises a
1526
+ /// floating-point invalid exception. If the exception is masked, returns
1527
+ /// the most negative integer.
1425
1528
  ///
1426
1529
  /// \headerfile <x86intrin.h>
1427
1530
  ///
@@ -1439,9 +1542,13 @@ _mm_cvttss_si64(__m128 __a)
1439
1542
  }
1440
1543
  #endif
1441
1544
 
1442
- /// Converts two low-order float values in a 128-bit vector of
1443
- /// [4 x float] into a 64-bit vector of [2 x i32], truncating the result
1444
- /// when it is inexact.
1545
+ /// Converts the lower (first) two elements of a 128-bit vector of [4 x float]
1546
+ /// into two signed truncated (rounded toward zero) 32-bit integers,
1547
+ /// returned in a 64-bit vector of [2 x i32].
1548
+ ///
1549
+ /// If a converted value does not fit in a 32-bit integer, raises a
1550
+ /// floating-point invalid exception. If the exception is masked, returns
1551
+ /// the most negative integer.
1445
1552
  ///
1446
1553
  /// \headerfile <x86intrin.h>
1447
1554
  ///
@@ -1457,9 +1564,13 @@ _mm_cvttps_pi32(__m128 __a)
1457
1564
  return (__m64)__builtin_ia32_cvttps2pi((__v4sf)__a);
1458
1565
  }
1459
1566
 
1460
- /// Converts two low-order float values in a 128-bit vector of [4 x
1461
- /// float] into a 64-bit vector of [2 x i32], truncating the result when it
1462
- /// is inexact.
1567
+ /// Converts the lower (first) two elements of a 128-bit vector of [4 x float]
1568
+ /// into two signed truncated (rounded toward zero) 64-bit integers,
1569
+ /// returned in a 64-bit vector of [2 x i32].
1570
+ ///
1571
+ /// If a converted value does not fit in a 32-bit integer, raises a
1572
+ /// floating-point invalid exception. If the exception is masked, returns
1573
+ /// the most negative integer.
1463
1574
  ///
1464
1575
  /// \headerfile <x86intrin.h>
1465
1576
  ///
@@ -1799,7 +1910,7 @@ _mm_undefined_ps(void)
1799
1910
  static __inline__ __m128 __DEFAULT_FN_ATTRS
1800
1911
  _mm_set_ss(float __w)
1801
1912
  {
1802
- return __extension__ (__m128){ __w, 0, 0, 0 };
1913
+ return __extension__ (__m128){ __w, 0.0f, 0.0f, 0.0f };
1803
1914
  }
1804
1915
 
1805
1916
  /// Constructs a 128-bit floating-point vector of [4 x float], with each
@@ -2121,9 +2232,9 @@ _mm_storer_ps(float *__p, __m128 __a)
2121
2232
  /// \param __a
2122
2233
  /// A 64-bit integer containing the value to be stored.
2123
2234
  static __inline__ void __DEFAULT_FN_ATTRS_MMX
2124
- _mm_stream_pi(__m64 *__p, __m64 __a)
2235
+ _mm_stream_pi(void *__p, __m64 __a)
2125
2236
  {
2126
- __builtin_ia32_movntq(__p, __a);
2237
+ __builtin_ia32_movntq((__m64 *)__p, __a);
2127
2238
  }
2128
2239
 
2129
2240
  /// Moves packed float values from a 128-bit vector of [4 x float] to a
@@ -2140,7 +2251,7 @@ _mm_stream_pi(__m64 *__p, __m64 __a)
2140
2251
  /// \param __a
2141
2252
  /// A 128-bit vector of [4 x float] containing the values to be moved.
2142
2253
  static __inline__ void __DEFAULT_FN_ATTRS
2143
- _mm_stream_ps(float *__p, __m128 __a)
2254
+ _mm_stream_ps(void *__p, __m128 __a)
2144
2255
  {
2145
2256
  __builtin_nontemporal_store((__v4sf)__a, (__v4sf*)__p);
2146
2257
  }
@@ -2936,6 +3047,85 @@ _mm_movemask_ps(__m128 __a)
2936
3047
  return __builtin_ia32_movmskps((__v4sf)__a);
2937
3048
  }
2938
3049
 
3050
+ /* Compare */
3051
+ #define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */
3052
+ #define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */
3053
+ #define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */
3054
+ #define _CMP_UNORD_Q 0x03 /* Unordered (non-signaling) */
3055
+ #define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */
3056
+ #define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */
3057
+ #define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */
3058
+ #define _CMP_ORD_Q 0x07 /* Ordered (non-signaling) */
3059
+
3060
+ /// Compares each of the corresponding values of two 128-bit vectors of
3061
+ /// [4 x float], using the operation specified by the immediate integer
3062
+ /// operand.
3063
+ ///
3064
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
3065
+ /// If either value in a comparison is NaN, comparisons that are ordered
3066
+ /// return false, and comparisons that are unordered return true.
3067
+ ///
3068
+ /// \headerfile <x86intrin.h>
3069
+ ///
3070
+ /// \code
3071
+ /// __m128 _mm_cmp_ps(__m128 a, __m128 b, const int c);
3072
+ /// \endcode
3073
+ ///
3074
+ /// This intrinsic corresponds to the <c> (V)CMPPS </c> instruction.
3075
+ ///
3076
+ /// \param a
3077
+ /// A 128-bit vector of [4 x float].
3078
+ /// \param b
3079
+ /// A 128-bit vector of [4 x float].
3080
+ /// \param c
3081
+ /// An immediate integer operand, with bits [4:0] specifying which comparison
3082
+ /// operation to use: \n
3083
+ /// 0x00: Equal (ordered, non-signaling) \n
3084
+ /// 0x01: Less-than (ordered, signaling) \n
3085
+ /// 0x02: Less-than-or-equal (ordered, signaling) \n
3086
+ /// 0x03: Unordered (non-signaling) \n
3087
+ /// 0x04: Not-equal (unordered, non-signaling) \n
3088
+ /// 0x05: Not-less-than (unordered, signaling) \n
3089
+ /// 0x06: Not-less-than-or-equal (unordered, signaling) \n
3090
+ /// 0x07: Ordered (non-signaling) \n
3091
+ /// \returns A 128-bit vector of [4 x float] containing the comparison results.
3092
+ #define _mm_cmp_ps(a, b, c) \
3093
+ ((__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), (__v4sf)(__m128)(b), (c)))
3094
+
3095
+ /// Compares each of the corresponding scalar values of two 128-bit
3096
+ /// vectors of [4 x float], using the operation specified by the immediate
3097
+ /// integer operand.
3098
+ ///
3099
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
3100
+ /// If either value in a comparison is NaN, comparisons that are ordered
3101
+ /// return false, and comparisons that are unordered return true.
3102
+ ///
3103
+ /// \headerfile <x86intrin.h>
3104
+ ///
3105
+ /// \code
3106
+ /// __m128 _mm_cmp_ss(__m128 a, __m128 b, const int c);
3107
+ /// \endcode
3108
+ ///
3109
+ /// This intrinsic corresponds to the <c> (V)CMPSS </c> instruction.
3110
+ ///
3111
+ /// \param a
3112
+ /// A 128-bit vector of [4 x float].
3113
+ /// \param b
3114
+ /// A 128-bit vector of [4 x float].
3115
+ /// \param c
3116
+ /// An immediate integer operand, with bits [4:0] specifying which comparison
3117
+ /// operation to use: \n
3118
+ /// 0x00: Equal (ordered, non-signaling) \n
3119
+ /// 0x01: Less-than (ordered, signaling) \n
3120
+ /// 0x02: Less-than-or-equal (ordered, signaling) \n
3121
+ /// 0x03: Unordered (non-signaling) \n
3122
+ /// 0x04: Not-equal (unordered, non-signaling) \n
3123
+ /// 0x05: Not-less-than (unordered, signaling) \n
3124
+ /// 0x06: Not-less-than-or-equal (unordered, signaling) \n
3125
+ /// 0x07: Ordered (non-signaling) \n
3126
+ /// \returns A 128-bit vector of [4 x float] containing the comparison results.
3127
+ #define _mm_cmp_ss(a, b, c) \
3128
+ ((__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), (__v4sf)(__m128)(b), (c)))
2939
3129
 
2940
3130
  #define _MM_ALIGN16 __attribute__((aligned(16)))
2941
3131