@cpp-linter/clang-tidy-linux-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
@@ -316,6 +316,8 @@ _mm_rsqrt_ps(__m128 __a)
316
316
  /// operands and returns the lesser value in the low-order bits of the
317
317
  /// vector of [4 x float].
318
318
  ///
319
+ /// If either value in a comparison is NaN, returns the value from \a __b.
320
+ ///
319
321
  /// \headerfile <x86intrin.h>
320
322
  ///
321
323
  /// This intrinsic corresponds to the <c> VMINSS / MINSS </c> instructions.
@@ -338,6 +340,8 @@ _mm_min_ss(__m128 __a, __m128 __b)
338
340
  /// Compares two 128-bit vectors of [4 x float] and returns the lesser
339
341
  /// of each pair of values.
340
342
  ///
343
+ /// If either value in a comparison is NaN, returns the value from \a __b.
344
+ ///
341
345
  /// \headerfile <x86intrin.h>
342
346
  ///
343
347
  /// This intrinsic corresponds to the <c> VMINPS / MINPS </c> instructions.
@@ -358,6 +362,8 @@ _mm_min_ps(__m128 __a, __m128 __b)
358
362
  /// operands and returns the greater value in the low-order bits of a 128-bit
359
363
  /// vector of [4 x float].
360
364
  ///
365
+ /// If either value in a comparison is NaN, returns the value from \a __b.
366
+ ///
361
367
  /// \headerfile <x86intrin.h>
362
368
  ///
363
369
  /// This intrinsic corresponds to the <c> VMAXSS / MAXSS </c> instructions.
@@ -380,6 +386,8 @@ _mm_max_ss(__m128 __a, __m128 __b)
380
386
  /// Compares two 128-bit vectors of [4 x float] and returns the greater
381
387
  /// of each pair of values.
382
388
  ///
389
+ /// If either value in a comparison is NaN, returns the value from \a __b.
390
+ ///
383
391
  /// \headerfile <x86intrin.h>
384
392
  ///
385
393
  /// This intrinsic corresponds to the <c> VMAXPS / MAXPS </c> instructions.
@@ -474,8 +482,11 @@ _mm_xor_ps(__m128 __a, __m128 __b)
474
482
  }
475
483
 
476
484
  /// Compares two 32-bit float values in the low-order bits of both
477
- /// 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
478
488
  /// low-order bits of a vector [4 x float].
489
+ /// If either value in a comparison is NaN, returns false.
479
490
  ///
480
491
  /// \headerfile <x86intrin.h>
481
492
  ///
@@ -498,6 +509,9 @@ _mm_cmpeq_ss(__m128 __a, __m128 __b)
498
509
  /// Compares each of the corresponding 32-bit float values of the
499
510
  /// 128-bit vectors of [4 x float] for equality.
500
511
  ///
512
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
513
+ /// If either value in a comparison is NaN, returns false.
514
+ ///
501
515
  /// \headerfile <x86intrin.h>
502
516
  ///
503
517
  /// This intrinsic corresponds to the <c> VCMPEQPS / CMPEQPS </c> instructions.
@@ -515,8 +529,11 @@ _mm_cmpeq_ps(__m128 __a, __m128 __b)
515
529
 
516
530
  /// Compares two 32-bit float values in the low-order bits of both
517
531
  /// operands to determine if the value in the first operand is less than the
518
- /// corresponding value in the second operand and returns the result of the
519
- /// 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.
520
537
  ///
521
538
  /// \headerfile <x86intrin.h>
522
539
  ///
@@ -540,6 +557,9 @@ _mm_cmplt_ss(__m128 __a, __m128 __b)
540
557
  /// 128-bit vectors of [4 x float] to determine if the values in the first
541
558
  /// operand are less than those in the second operand.
542
559
  ///
560
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
561
+ /// If either value in a comparison is NaN, returns false.
562
+ ///
543
563
  /// \headerfile <x86intrin.h>
544
564
  ///
545
565
  /// This intrinsic corresponds to the <c> VCMPLTPS / CMPLTPS </c> instructions.
@@ -557,9 +577,11 @@ _mm_cmplt_ps(__m128 __a, __m128 __b)
557
577
 
558
578
  /// Compares two 32-bit float values in the low-order bits of both
559
579
  /// operands to determine if the value in the first operand is less than or
560
- /// equal to the corresponding value in the second operand and returns the
561
- /// result of the comparison in the low-order bits of a vector of
562
- /// [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.
563
585
  ///
564
586
  /// \headerfile <x86intrin.h>
565
587
  ///
@@ -583,6 +605,9 @@ _mm_cmple_ss(__m128 __a, __m128 __b)
583
605
  /// 128-bit vectors of [4 x float] to determine if the values in the first
584
606
  /// operand are less than or equal to those in the second operand.
585
607
  ///
608
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
609
+ /// If either value in a comparison is NaN, returns false.
610
+ ///
586
611
  /// \headerfile <x86intrin.h>
587
612
  ///
588
613
  /// This intrinsic corresponds to the <c> VCMPLEPS / CMPLEPS </c> instructions.
@@ -600,8 +625,11 @@ _mm_cmple_ps(__m128 __a, __m128 __b)
600
625
 
601
626
  /// Compares two 32-bit float values in the low-order bits of both
602
627
  /// operands to determine if the value in the first operand is greater than
603
- /// the corresponding value in the second operand and returns the result of
604
- /// 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.
605
633
  ///
606
634
  /// \headerfile <x86intrin.h>
607
635
  ///
@@ -627,6 +655,9 @@ _mm_cmpgt_ss(__m128 __a, __m128 __b)
627
655
  /// 128-bit vectors of [4 x float] to determine if the values in the first
628
656
  /// operand are greater than those in the second operand.
629
657
  ///
658
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
659
+ /// If either value in a comparison is NaN, returns false.
660
+ ///
630
661
  /// \headerfile <x86intrin.h>
631
662
  ///
632
663
  /// This intrinsic corresponds to the <c> VCMPLTPS / CMPLTPS </c> instructions.
@@ -644,9 +675,11 @@ _mm_cmpgt_ps(__m128 __a, __m128 __b)
644
675
 
645
676
  /// Compares two 32-bit float values in the low-order bits of both
646
677
  /// operands to determine if the value in the first operand is greater than
647
- /// or equal to the corresponding value in the second operand and returns
648
- /// the result of the comparison in the low-order bits of a vector of
649
- /// [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.
650
683
  ///
651
684
  /// \headerfile <x86intrin.h>
652
685
  ///
@@ -672,6 +705,9 @@ _mm_cmpge_ss(__m128 __a, __m128 __b)
672
705
  /// 128-bit vectors of [4 x float] to determine if the values in the first
673
706
  /// operand are greater than or equal to those in the second operand.
674
707
  ///
708
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
709
+ /// If either value in a comparison is NaN, returns false.
710
+ ///
675
711
  /// \headerfile <x86intrin.h>
676
712
  ///
677
713
  /// This intrinsic corresponds to the <c> VCMPLEPS / CMPLEPS </c> instructions.
@@ -687,9 +723,12 @@ _mm_cmpge_ps(__m128 __a, __m128 __b)
687
723
  return (__m128)__builtin_ia32_cmpleps((__v4sf)__b, (__v4sf)__a);
688
724
  }
689
725
 
690
- /// Compares two 32-bit float values in the low-order bits of both
691
- /// 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
692
730
  /// low-order bits of a vector of [4 x float].
731
+ /// If either value in a comparison is NaN, returns true.
693
732
  ///
694
733
  /// \headerfile <x86intrin.h>
695
734
  ///
@@ -713,6 +752,9 @@ _mm_cmpneq_ss(__m128 __a, __m128 __b)
713
752
  /// Compares each of the corresponding 32-bit float values of the
714
753
  /// 128-bit vectors of [4 x float] for inequality.
715
754
  ///
755
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
756
+ /// If either value in a comparison is NaN, returns true.
757
+ ///
716
758
  /// \headerfile <x86intrin.h>
717
759
  ///
718
760
  /// This intrinsic corresponds to the <c> VCMPNEQPS / CMPNEQPS </c>
@@ -731,8 +773,11 @@ _mm_cmpneq_ps(__m128 __a, __m128 __b)
731
773
 
732
774
  /// Compares two 32-bit float values in the low-order bits of both
733
775
  /// operands to determine if the value in the first operand is not less than
734
- /// the corresponding value in the second operand and returns the result of
735
- /// 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.
736
781
  ///
737
782
  /// \headerfile <x86intrin.h>
738
783
  ///
@@ -757,6 +802,9 @@ _mm_cmpnlt_ss(__m128 __a, __m128 __b)
757
802
  /// 128-bit vectors of [4 x float] to determine if the values in the first
758
803
  /// operand are not less than those in the second operand.
759
804
  ///
805
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
806
+ /// If either value in a comparison is NaN, returns true.
807
+ ///
760
808
  /// \headerfile <x86intrin.h>
761
809
  ///
762
810
  /// This intrinsic corresponds to the <c> VCMPNLTPS / CMPNLTPS </c>
@@ -775,9 +823,11 @@ _mm_cmpnlt_ps(__m128 __a, __m128 __b)
775
823
 
776
824
  /// Compares two 32-bit float values in the low-order bits of both
777
825
  /// operands to determine if the value in the first operand is not less than
778
- /// or equal to the corresponding value in the second operand and returns
779
- /// the result of the comparison in the low-order bits of a vector of
780
- /// [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.
781
831
  ///
782
832
  /// \headerfile <x86intrin.h>
783
833
  ///
@@ -802,6 +852,9 @@ _mm_cmpnle_ss(__m128 __a, __m128 __b)
802
852
  /// 128-bit vectors of [4 x float] to determine if the values in the first
803
853
  /// operand are not less than or equal to those in the second operand.
804
854
  ///
855
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
856
+ /// If either value in a comparison is NaN, returns true.
857
+ ///
805
858
  /// \headerfile <x86intrin.h>
806
859
  ///
807
860
  /// This intrinsic corresponds to the <c> VCMPNLEPS / CMPNLEPS </c>
@@ -820,9 +873,11 @@ _mm_cmpnle_ps(__m128 __a, __m128 __b)
820
873
 
821
874
  /// Compares two 32-bit float values in the low-order bits of both
822
875
  /// operands to determine if the value in the first operand is not greater
823
- /// than the corresponding value in the second operand and returns the
824
- /// result of the comparison in the low-order bits of a vector of
825
- /// [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.
826
881
  ///
827
882
  /// \headerfile <x86intrin.h>
828
883
  ///
@@ -849,6 +904,9 @@ _mm_cmpngt_ss(__m128 __a, __m128 __b)
849
904
  /// 128-bit vectors of [4 x float] to determine if the values in the first
850
905
  /// operand are not greater than those in the second operand.
851
906
  ///
907
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
908
+ /// If either value in a comparison is NaN, returns true.
909
+ ///
852
910
  /// \headerfile <x86intrin.h>
853
911
  ///
854
912
  /// This intrinsic corresponds to the <c> VCMPNLTPS / CMPNLTPS </c>
@@ -867,9 +925,11 @@ _mm_cmpngt_ps(__m128 __a, __m128 __b)
867
925
 
868
926
  /// Compares two 32-bit float values in the low-order bits of both
869
927
  /// operands to determine if the value in the first operand is not greater
870
- /// than or equal to the corresponding value in the second operand and
871
- /// returns the result of the comparison in the low-order bits of a vector
872
- /// 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.
873
933
  ///
874
934
  /// \headerfile <x86intrin.h>
875
935
  ///
@@ -896,6 +956,9 @@ _mm_cmpnge_ss(__m128 __a, __m128 __b)
896
956
  /// 128-bit vectors of [4 x float] to determine if the values in the first
897
957
  /// operand are not greater than or equal to those in the second operand.
898
958
  ///
959
+ /// Each comparison returns 0x0 for false, 0xFFFFFFFF for true.
960
+ /// If either value in a comparison is NaN, returns true.
961
+ ///
899
962
  /// \headerfile <x86intrin.h>
900
963
  ///
901
964
  /// This intrinsic corresponds to the <c> VCMPNLEPS / CMPNLEPS </c>
@@ -914,9 +977,11 @@ _mm_cmpnge_ps(__m128 __a, __m128 __b)
914
977
 
915
978
  /// Compares two 32-bit float values in the low-order bits of both
916
979
  /// operands to determine if the value in the first operand is ordered with
917
- /// respect to the corresponding value in the second operand and returns the
918
- /// result of the comparison in the low-order bits of a vector of
919
- /// [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.
920
985
  ///
921
986
  /// \headerfile <x86intrin.h>
922
987
  ///
@@ -941,6 +1006,10 @@ _mm_cmpord_ss(__m128 __a, __m128 __b)
941
1006
  /// 128-bit vectors of [4 x float] to determine if the values in the first
942
1007
  /// operand are ordered with respect to those in the second operand.
943
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
+ ///
944
1013
  /// \headerfile <x86intrin.h>
945
1014
  ///
946
1015
  /// This intrinsic corresponds to the <c> VCMPORDPS / CMPORDPS </c>
@@ -959,9 +1028,11 @@ _mm_cmpord_ps(__m128 __a, __m128 __b)
959
1028
 
960
1029
  /// Compares two 32-bit float values in the low-order bits of both
961
1030
  /// operands to determine if the value in the first operand is unordered
962
- /// with respect to the corresponding value in the second operand and
963
- /// returns the result of the comparison in the low-order bits of a vector
964
- /// 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.
965
1036
  ///
966
1037
  /// \headerfile <x86intrin.h>
967
1038
  ///
@@ -986,6 +1057,10 @@ _mm_cmpunord_ss(__m128 __a, __m128 __b)
986
1057
  /// 128-bit vectors of [4 x float] to determine if the values in the first
987
1058
  /// operand are unordered with respect to those in the second operand.
988
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
+ ///
989
1064
  /// \headerfile <x86intrin.h>
990
1065
  ///
991
1066
  /// This intrinsic corresponds to the <c> VCMPUNORDPS / CMPUNORDPS </c>
@@ -1003,9 +1078,10 @@ _mm_cmpunord_ps(__m128 __a, __m128 __b)
1003
1078
  }
1004
1079
 
1005
1080
  /// Compares two 32-bit float values in the low-order bits of both
1006
- /// operands for equality and returns the result of the comparison.
1081
+ /// operands for equality.
1007
1082
  ///
1008
- /// 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.
1009
1085
  ///
1010
1086
  /// \headerfile <x86intrin.h>
1011
1087
  ///
@@ -1018,8 +1094,7 @@ _mm_cmpunord_ps(__m128 __a, __m128 __b)
1018
1094
  /// \param __b
1019
1095
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1020
1096
  /// used in the comparison.
1021
- /// \returns An integer containing the comparison results. If either of the
1022
- /// two lower 32-bit values is NaN, 0 is returned.
1097
+ /// \returns An integer containing the comparison results.
1023
1098
  static __inline__ int __DEFAULT_FN_ATTRS
1024
1099
  _mm_comieq_ss(__m128 __a, __m128 __b)
1025
1100
  {
@@ -1028,9 +1103,10 @@ _mm_comieq_ss(__m128 __a, __m128 __b)
1028
1103
 
1029
1104
  /// Compares two 32-bit float values in the low-order bits of both
1030
1105
  /// operands to determine if the first operand is less than the second
1031
- /// operand and returns the result of the comparison.
1106
+ /// operand.
1032
1107
  ///
1033
- /// 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.
1034
1110
  ///
1035
1111
  /// \headerfile <x86intrin.h>
1036
1112
  ///
@@ -1043,8 +1119,7 @@ _mm_comieq_ss(__m128 __a, __m128 __b)
1043
1119
  /// \param __b
1044
1120
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1045
1121
  /// used in the comparison.
1046
- /// \returns An integer containing the comparison results. If either of the two
1047
- /// lower 32-bit values is NaN, 0 is returned.
1122
+ /// \returns An integer containing the comparison results.
1048
1123
  static __inline__ int __DEFAULT_FN_ATTRS
1049
1124
  _mm_comilt_ss(__m128 __a, __m128 __b)
1050
1125
  {
@@ -1053,9 +1128,10 @@ _mm_comilt_ss(__m128 __a, __m128 __b)
1053
1128
 
1054
1129
  /// Compares two 32-bit float values in the low-order bits of both
1055
1130
  /// operands to determine if the first operand is less than or equal to the
1056
- /// second operand and returns the result of the comparison.
1131
+ /// second operand.
1057
1132
  ///
1058
- /// 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.
1059
1135
  ///
1060
1136
  /// \headerfile <x86intrin.h>
1061
1137
  ///
@@ -1067,8 +1143,7 @@ _mm_comilt_ss(__m128 __a, __m128 __b)
1067
1143
  /// \param __b
1068
1144
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1069
1145
  /// used in the comparison.
1070
- /// \returns An integer containing the comparison results. If either of the two
1071
- /// lower 32-bit values is NaN, 0 is returned.
1146
+ /// \returns An integer containing the comparison results.
1072
1147
  static __inline__ int __DEFAULT_FN_ATTRS
1073
1148
  _mm_comile_ss(__m128 __a, __m128 __b)
1074
1149
  {
@@ -1077,9 +1152,10 @@ _mm_comile_ss(__m128 __a, __m128 __b)
1077
1152
 
1078
1153
  /// Compares two 32-bit float values in the low-order bits of both
1079
1154
  /// operands to determine if the first operand is greater than the second
1080
- /// operand and returns the result of the comparison.
1155
+ /// operand.
1081
1156
  ///
1082
- /// 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.
1083
1159
  ///
1084
1160
  /// \headerfile <x86intrin.h>
1085
1161
  ///
@@ -1091,8 +1167,7 @@ _mm_comile_ss(__m128 __a, __m128 __b)
1091
1167
  /// \param __b
1092
1168
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1093
1169
  /// used in the comparison.
1094
- /// \returns An integer containing the comparison results. If either of the
1095
- /// two lower 32-bit values is NaN, 0 is returned.
1170
+ /// \returns An integer containing the comparison results.
1096
1171
  static __inline__ int __DEFAULT_FN_ATTRS
1097
1172
  _mm_comigt_ss(__m128 __a, __m128 __b)
1098
1173
  {
@@ -1101,9 +1176,10 @@ _mm_comigt_ss(__m128 __a, __m128 __b)
1101
1176
 
1102
1177
  /// Compares two 32-bit float values in the low-order bits of both
1103
1178
  /// operands to determine if the first operand is greater than or equal to
1104
- /// the second operand and returns the result of the comparison.
1179
+ /// the second operand.
1105
1180
  ///
1106
- /// 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.
1107
1183
  ///
1108
1184
  /// \headerfile <x86intrin.h>
1109
1185
  ///
@@ -1115,8 +1191,7 @@ _mm_comigt_ss(__m128 __a, __m128 __b)
1115
1191
  /// \param __b
1116
1192
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1117
1193
  /// used in the comparison.
1118
- /// \returns An integer containing the comparison results. If either of the two
1119
- /// lower 32-bit values is NaN, 0 is returned.
1194
+ /// \returns An integer containing the comparison results.
1120
1195
  static __inline__ int __DEFAULT_FN_ATTRS
1121
1196
  _mm_comige_ss(__m128 __a, __m128 __b)
1122
1197
  {
@@ -1125,9 +1200,10 @@ _mm_comige_ss(__m128 __a, __m128 __b)
1125
1200
 
1126
1201
  /// Compares two 32-bit float values in the low-order bits of both
1127
1202
  /// operands to determine if the first operand is not equal to the second
1128
- /// operand and returns the result of the comparison.
1203
+ /// operand.
1129
1204
  ///
1130
- /// 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.
1131
1207
  ///
1132
1208
  /// \headerfile <x86intrin.h>
1133
1209
  ///
@@ -1139,8 +1215,7 @@ _mm_comige_ss(__m128 __a, __m128 __b)
1139
1215
  /// \param __b
1140
1216
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1141
1217
  /// used in the comparison.
1142
- /// \returns An integer containing the comparison results. If either of the
1143
- /// two lower 32-bit values is NaN, 1 is returned.
1218
+ /// \returns An integer containing the comparison results.
1144
1219
  static __inline__ int __DEFAULT_FN_ATTRS
1145
1220
  _mm_comineq_ss(__m128 __a, __m128 __b)
1146
1221
  {
@@ -1148,10 +1223,10 @@ _mm_comineq_ss(__m128 __a, __m128 __b)
1148
1223
  }
1149
1224
 
1150
1225
  /// Performs an unordered comparison of two 32-bit float values using
1151
- /// the low-order bits of both operands to determine equality and returns
1152
- /// the result of the comparison.
1226
+ /// the low-order bits of both operands to determine equality.
1153
1227
  ///
1154
- /// 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.
1155
1230
  ///
1156
1231
  /// \headerfile <x86intrin.h>
1157
1232
  ///
@@ -1163,8 +1238,7 @@ _mm_comineq_ss(__m128 __a, __m128 __b)
1163
1238
  /// \param __b
1164
1239
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1165
1240
  /// used in the comparison.
1166
- /// \returns An integer containing the comparison results. If either of the two
1167
- /// lower 32-bit values is NaN, 0 is returned.
1241
+ /// \returns An integer containing the comparison results.
1168
1242
  static __inline__ int __DEFAULT_FN_ATTRS
1169
1243
  _mm_ucomieq_ss(__m128 __a, __m128 __b)
1170
1244
  {
@@ -1173,9 +1247,10 @@ _mm_ucomieq_ss(__m128 __a, __m128 __b)
1173
1247
 
1174
1248
  /// Performs an unordered comparison of two 32-bit float values using
1175
1249
  /// the low-order bits of both operands to determine if the first operand is
1176
- /// less than the second operand and returns the result of the comparison.
1250
+ /// less than the second operand.
1177
1251
  ///
1178
- /// 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.
1179
1254
  ///
1180
1255
  /// \headerfile <x86intrin.h>
1181
1256
  ///
@@ -1187,8 +1262,7 @@ _mm_ucomieq_ss(__m128 __a, __m128 __b)
1187
1262
  /// \param __b
1188
1263
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1189
1264
  /// used in the comparison.
1190
- /// \returns An integer containing the comparison results. If either of the two
1191
- /// lower 32-bit values is NaN, 0 is returned.
1265
+ /// \returns An integer containing the comparison results.
1192
1266
  static __inline__ int __DEFAULT_FN_ATTRS
1193
1267
  _mm_ucomilt_ss(__m128 __a, __m128 __b)
1194
1268
  {
@@ -1197,10 +1271,10 @@ _mm_ucomilt_ss(__m128 __a, __m128 __b)
1197
1271
 
1198
1272
  /// Performs an unordered comparison of two 32-bit float values using
1199
1273
  /// the low-order bits of both operands to determine if the first operand is
1200
- /// less than or equal to the second operand and returns the result of the
1201
- /// comparison.
1274
+ /// less than or equal to the second operand.
1202
1275
  ///
1203
- /// 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.
1204
1278
  ///
1205
1279
  /// \headerfile <x86intrin.h>
1206
1280
  ///
@@ -1212,8 +1286,7 @@ _mm_ucomilt_ss(__m128 __a, __m128 __b)
1212
1286
  /// \param __b
1213
1287
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1214
1288
  /// used in the comparison.
1215
- /// \returns An integer containing the comparison results. If either of the two
1216
- /// lower 32-bit values is NaN, 0 is returned.
1289
+ /// \returns An integer containing the comparison results.
1217
1290
  static __inline__ int __DEFAULT_FN_ATTRS
1218
1291
  _mm_ucomile_ss(__m128 __a, __m128 __b)
1219
1292
  {
@@ -1222,10 +1295,10 @@ _mm_ucomile_ss(__m128 __a, __m128 __b)
1222
1295
 
1223
1296
  /// Performs an unordered comparison of two 32-bit float values using
1224
1297
  /// the low-order bits of both operands to determine if the first operand is
1225
- /// greater than the second operand and returns the result of the
1226
- /// comparison.
1298
+ /// greater than the second operand.
1227
1299
  ///
1228
- /// 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.
1229
1302
  ///
1230
1303
  /// \headerfile <x86intrin.h>
1231
1304
  ///
@@ -1237,8 +1310,7 @@ _mm_ucomile_ss(__m128 __a, __m128 __b)
1237
1310
  /// \param __b
1238
1311
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1239
1312
  /// used in the comparison.
1240
- /// \returns An integer containing the comparison results. If either of the two
1241
- /// lower 32-bit values is NaN, 0 is returned.
1313
+ /// \returns An integer containing the comparison results.
1242
1314
  static __inline__ int __DEFAULT_FN_ATTRS
1243
1315
  _mm_ucomigt_ss(__m128 __a, __m128 __b)
1244
1316
  {
@@ -1247,10 +1319,10 @@ _mm_ucomigt_ss(__m128 __a, __m128 __b)
1247
1319
 
1248
1320
  /// Performs an unordered comparison of two 32-bit float values using
1249
1321
  /// the low-order bits of both operands to determine if the first operand is
1250
- /// greater than or equal to the second operand and returns the result of
1251
- /// the comparison.
1322
+ /// greater than or equal to the second operand.
1252
1323
  ///
1253
- /// 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.
1254
1326
  ///
1255
1327
  /// \headerfile <x86intrin.h>
1256
1328
  ///
@@ -1262,8 +1334,7 @@ _mm_ucomigt_ss(__m128 __a, __m128 __b)
1262
1334
  /// \param __b
1263
1335
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1264
1336
  /// used in the comparison.
1265
- /// \returns An integer containing the comparison results. If either of the two
1266
- /// lower 32-bit values is NaN, 0 is returned.
1337
+ /// \returns An integer containing the comparison results.
1267
1338
  static __inline__ int __DEFAULT_FN_ATTRS
1268
1339
  _mm_ucomige_ss(__m128 __a, __m128 __b)
1269
1340
  {
@@ -1271,10 +1342,10 @@ _mm_ucomige_ss(__m128 __a, __m128 __b)
1271
1342
  }
1272
1343
 
1273
1344
  /// Performs an unordered comparison of two 32-bit float values using
1274
- /// the low-order bits of both operands to determine inequality and returns
1275
- /// the result of the comparison.
1345
+ /// the low-order bits of both operands to determine inequality.
1276
1346
  ///
1277
- /// 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.
1278
1349
  ///
1279
1350
  /// \headerfile <x86intrin.h>
1280
1351
  ///
@@ -1286,8 +1357,7 @@ _mm_ucomige_ss(__m128 __a, __m128 __b)
1286
1357
  /// \param __b
1287
1358
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1288
1359
  /// used in the comparison.
1289
- /// \returns An integer containing the comparison results. If either of the two
1290
- /// lower 32-bit values is NaN, 1 is returned.
1360
+ /// \returns An integer containing the comparison results.
1291
1361
  static __inline__ int __DEFAULT_FN_ATTRS
1292
1362
  _mm_ucomineq_ss(__m128 __a, __m128 __b)
1293
1363
  {
@@ -1297,6 +1367,10 @@ _mm_ucomineq_ss(__m128 __a, __m128 __b)
1297
1367
  /// Converts a float value contained in the lower 32 bits of a vector of
1298
1368
  /// [4 x float] into a 32-bit integer.
1299
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
+ ///
1300
1374
  /// \headerfile <x86intrin.h>
1301
1375
  ///
1302
1376
  /// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
@@ -1315,6 +1389,10 @@ _mm_cvtss_si32(__m128 __a)
1315
1389
  /// Converts a float value contained in the lower 32 bits of a vector of
1316
1390
  /// [4 x float] into a 32-bit integer.
1317
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
+ ///
1318
1396
  /// \headerfile <x86intrin.h>
1319
1397
  ///
1320
1398
  /// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
@@ -1335,6 +1413,10 @@ _mm_cvt_ss2si(__m128 __a)
1335
1413
  /// Converts a float value contained in the lower 32 bits of a vector of
1336
1414
  /// [4 x float] into a 64-bit integer.
1337
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
+ ///
1338
1420
  /// \headerfile <x86intrin.h>
1339
1421
  ///
1340
1422
  /// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
@@ -1355,6 +1437,10 @@ _mm_cvtss_si64(__m128 __a)
1355
1437
  /// Converts two low-order float values in a 128-bit vector of
1356
1438
  /// [4 x float] into a 64-bit vector of [2 x i32].
1357
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
+ ///
1358
1444
  /// \headerfile <x86intrin.h>
1359
1445
  ///
1360
1446
  /// This intrinsic corresponds to the <c> CVTPS2PI </c> instruction.
@@ -1371,6 +1457,10 @@ _mm_cvtps_pi32(__m128 __a)
1371
1457
  /// Converts two low-order float values in a 128-bit vector of
1372
1458
  /// [4 x float] into a 64-bit vector of [2 x i32].
1373
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
+ ///
1374
1464
  /// \headerfile <x86intrin.h>
1375
1465
  ///
1376
1466
  /// This intrinsic corresponds to the <c> CVTPS2PI </c> instruction.
@@ -1384,9 +1474,12 @@ _mm_cvt_ps2pi(__m128 __a)
1384
1474
  return _mm_cvtps_pi32(__a);
1385
1475
  }
1386
1476
 
1387
- /// Converts a float value contained in the lower 32 bits of a vector of
1388
- /// [4 x float] into a 32-bit integer, truncating the result when it is
1389
- /// 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.
1390
1483
  ///
1391
1484
  /// \headerfile <x86intrin.h>
1392
1485
  ///
@@ -1403,9 +1496,12 @@ _mm_cvttss_si32(__m128 __a)
1403
1496
  return __builtin_ia32_cvttss2si((__v4sf)__a);
1404
1497
  }
1405
1498
 
1406
- /// Converts a float value contained in the lower 32 bits of a vector of
1407
- /// [4 x float] into a 32-bit integer, truncating the result when it is
1408
- /// 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.
1409
1505
  ///
1410
1506
  /// \headerfile <x86intrin.h>
1411
1507
  ///
@@ -1423,9 +1519,12 @@ _mm_cvtt_ss2si(__m128 __a)
1423
1519
  }
1424
1520
 
1425
1521
  #ifdef __x86_64__
1426
- /// Converts a float value contained in the lower 32 bits of a vector of
1427
- /// [4 x float] into a 64-bit integer, truncating the result when it is
1428
- /// 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.
1429
1528
  ///
1430
1529
  /// \headerfile <x86intrin.h>
1431
1530
  ///
@@ -1443,9 +1542,13 @@ _mm_cvttss_si64(__m128 __a)
1443
1542
  }
1444
1543
  #endif
1445
1544
 
1446
- /// Converts two low-order float values in a 128-bit vector of
1447
- /// [4 x float] into a 64-bit vector of [2 x i32], truncating the result
1448
- /// 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.
1449
1552
  ///
1450
1553
  /// \headerfile <x86intrin.h>
1451
1554
  ///
@@ -1461,9 +1564,13 @@ _mm_cvttps_pi32(__m128 __a)
1461
1564
  return (__m64)__builtin_ia32_cvttps2pi((__v4sf)__a);
1462
1565
  }
1463
1566
 
1464
- /// Converts two low-order float values in a 128-bit vector of [4 x
1465
- /// float] into a 64-bit vector of [2 x i32], truncating the result when it
1466
- /// 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.
1467
1574
  ///
1468
1575
  /// \headerfile <x86intrin.h>
1469
1576
  ///
@@ -1803,7 +1910,7 @@ _mm_undefined_ps(void)
1803
1910
  static __inline__ __m128 __DEFAULT_FN_ATTRS
1804
1911
  _mm_set_ss(float __w)
1805
1912
  {
1806
- return __extension__ (__m128){ __w, 0, 0, 0 };
1913
+ return __extension__ (__m128){ __w, 0.0f, 0.0f, 0.0f };
1807
1914
  }
1808
1915
 
1809
1916
  /// Constructs a 128-bit floating-point vector of [4 x float], with each
@@ -2940,6 +3047,85 @@ _mm_movemask_ps(__m128 __a)
2940
3047
  return __builtin_ia32_movmskps((__v4sf)__a);
2941
3048
  }
2942
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)))
2943
3129
 
2944
3130
  #define _MM_ALIGN16 __attribute__((aligned(16)))
2945
3131