@cpp-linter/clang-tidy-win32-x64 19.1.0 → 23.1.3

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 (320) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/23/include/__clang_cuda_complex_builtins.h +236 -0
  4. package/lib/clang/{19 → 23}/include/__clang_cuda_device_functions.h +15 -1
  5. package/lib/clang/{19 → 23}/include/__clang_cuda_intrinsics.h +288 -20
  6. package/lib/clang/{19 → 23}/include/__clang_cuda_math.h +5 -0
  7. package/lib/clang/{19 → 23}/include/__clang_cuda_math_forward_declares.h +5 -0
  8. package/lib/clang/{19 → 23}/include/__clang_cuda_runtime_wrapper.h +28 -5
  9. package/lib/clang/{19 → 23}/include/__clang_cuda_texture_intrinsics.h +437 -2
  10. package/lib/clang/23/include/__clang_gpu_builtin_vars.h +71 -0
  11. package/lib/clang/23/include/__clang_gpu_device_functions.h +411 -0
  12. package/lib/clang/23/include/__clang_gpu_intrinsics.h +242 -0
  13. package/lib/clang/{19 → 23}/include/__clang_hip_cmath.h +15 -9
  14. package/lib/clang/{19 → 23}/include/__clang_hip_libdevice_declares.h +24 -139
  15. package/lib/clang/{19 → 23}/include/__clang_hip_math.h +115 -34
  16. package/lib/clang/{19 → 23}/include/__clang_hip_runtime_wrapper.h +12 -1
  17. package/lib/clang/23/include/__clang_spirv_builtins.h +217 -0
  18. package/lib/clang/23/include/__clang_spirv_libdevice_declares.h +170 -0
  19. package/lib/clang/23/include/__clang_spirv_math.h +719 -0
  20. package/lib/clang/{19/include/float.h → 23/include/__float_float.h} +14 -34
  21. package/lib/clang/23/include/__float_header_macro.h +12 -0
  22. package/lib/clang/23/include/__float_infinity_nan.h +20 -0
  23. package/lib/clang/{19 → 23}/include/__stdarg_va_arg.h +2 -2
  24. package/lib/clang/{19 → 23}/include/adcintrin.h +5 -0
  25. package/lib/clang/{19 → 23}/include/adxintrin.h +5 -0
  26. package/lib/clang/{19 → 23}/include/altivec.h +169 -96
  27. package/lib/clang/23/include/amdgpuintrin.h +164 -0
  28. package/lib/clang/23/include/amdhsa_abi.h +83 -0
  29. package/lib/clang/23/include/amo.h +220 -0
  30. package/lib/clang/23/include/amxavx512intrin.h +596 -0
  31. package/lib/clang/{19 → 23}/include/amxcomplexintrin.h +4 -6
  32. package/lib/clang/{19 → 23}/include/amxfp16intrin.h +35 -0
  33. package/lib/clang/23/include/amxfp8intrin.h +230 -0
  34. package/lib/clang/{19 → 23}/include/amxintrin.h +3 -35
  35. package/lib/clang/23/include/amxmovrsintrin.h +48 -0
  36. package/lib/clang/23/include/andes_vector.h +21 -0
  37. package/lib/clang/23/include/arm64_neon.h +21 -0
  38. package/lib/clang/{19 → 23}/include/arm64intr.h +10 -0
  39. package/lib/clang/{19 → 23}/include/arm_acle.h +67 -89
  40. package/lib/clang/{19 → 23}/include/arm_fp16.h +89 -89
  41. package/lib/clang/{19 → 23}/include/arm_neon.h +43614 -38901
  42. package/lib/clang/{19 → 23}/include/arm_sme.h +1028 -94
  43. package/lib/clang/{19 → 23}/include/arm_sve.h +7331 -5170
  44. package/lib/clang/{19 → 23}/include/arm_vector_types.h +87 -0
  45. package/lib/clang/23/include/avx10_2_512bf16intrin.h +568 -0
  46. package/lib/clang/23/include/avx10_2_512convertintrin.h +322 -0
  47. package/lib/clang/23/include/avx10_2_512minmaxintrin.h +127 -0
  48. package/lib/clang/23/include/avx10_2_512niintrin.h +314 -0
  49. package/lib/clang/23/include/avx10_2_512satcvtdsintrin.h +307 -0
  50. package/lib/clang/23/include/avx10_2_512satcvtintrin.h +301 -0
  51. package/lib/clang/23/include/avx10_2bf16intrin.h +1094 -0
  52. package/lib/clang/23/include/avx10_2convertintrin.h +3257 -0
  53. package/lib/clang/23/include/avx10_2copyintrin.h +66 -0
  54. package/lib/clang/23/include/avx10_2minmaxintrin.h +232 -0
  55. package/lib/clang/23/include/avx10_2niintrin.h +409 -0
  56. package/lib/clang/23/include/avx10_2satcvtdsintrin.h +376 -0
  57. package/lib/clang/23/include/avx10_2satcvtintrin.h +312 -0
  58. package/lib/clang/{19 → 23}/include/avx2intrin.h +284 -378
  59. package/lib/clang/{19 → 23}/include/avx512bf16intrin.h +25 -16
  60. package/lib/clang/{19 → 23}/include/avx512bitalgintrin.h +21 -32
  61. package/lib/clang/23/include/avx512bmmintrin.h +174 -0
  62. package/lib/clang/23/include/avx512bmmvlintrin.h +245 -0
  63. package/lib/clang/{19 → 23}/include/avx512bwintrin.h +405 -534
  64. package/lib/clang/23/include/avx512cdintrin.h +112 -0
  65. package/lib/clang/{19 → 23}/include/avx512dqintrin.h +132 -161
  66. package/lib/clang/{19 → 23}/include/avx512fintrin.h +1068 -1496
  67. package/lib/clang/{19 → 23}/include/avx512fp16intrin.h +126 -129
  68. package/lib/clang/23/include/avx512ifmaintrin.h +68 -0
  69. package/lib/clang/23/include/avx512ifmavlintrin.h +138 -0
  70. package/lib/clang/{19 → 23}/include/avx512vbmi2intrin.h +55 -48
  71. package/lib/clang/{19 → 23}/include/avx512vbmiintrin.h +19 -27
  72. package/lib/clang/{19 → 23}/include/avx512vbmivlintrin.h +35 -49
  73. package/lib/clang/{19 → 23}/include/avx512vlbf16intrin.h +32 -22
  74. package/lib/clang/{19 → 23}/include/avx512vlbitalgintrin.h +41 -57
  75. package/lib/clang/{19 → 23}/include/avx512vlbwintrin.h +494 -609
  76. package/lib/clang/23/include/avx512vlcdintrin.h +202 -0
  77. package/lib/clang/{19 → 23}/include/avx512vldqintrin.h +110 -127
  78. package/lib/clang/{19 → 23}/include/avx512vlfp16intrin.h +130 -111
  79. package/lib/clang/{19 → 23}/include/avx512vlintrin.h +1025 -1395
  80. package/lib/clang/{19 → 23}/include/avx512vlvbmi2intrin.h +102 -95
  81. package/lib/clang/{19 → 23}/include/avx512vlvnniintrin.h +50 -52
  82. package/lib/clang/{19 → 23}/include/avx512vlvp2intersectintrin.h +2 -2
  83. package/lib/clang/{19 → 23}/include/avx512vnniintrin.h +42 -45
  84. package/lib/clang/{19 → 23}/include/avx512vp2intersectintrin.h +2 -3
  85. package/lib/clang/{19 → 23}/include/avx512vpopcntdqintrin.h +10 -4
  86. package/lib/clang/{19 → 23}/include/avx512vpopcntdqvlintrin.h +20 -10
  87. package/lib/clang/{19 → 23}/include/avxifmaintrin.h +16 -0
  88. package/lib/clang/{19 → 23}/include/avxintrin.h +186 -248
  89. package/lib/clang/{19 → 23}/include/avxvnniint16intrin.h +130 -152
  90. package/lib/clang/{19 → 23}/include/avxvnniint8intrin.h +68 -85
  91. package/lib/clang/{19 → 23}/include/avxvnniintrin.h +39 -26
  92. package/lib/clang/{19 → 23}/include/bmi2intrin.h +15 -17
  93. package/lib/clang/{19 → 23}/include/bmiintrin.h +31 -41
  94. package/lib/clang/{19 → 23}/include/cmpccxaddintrin.h +1 -1
  95. package/lib/clang/{19 → 23}/include/cpuid.h +137 -37
  96. package/lib/clang/{19 → 23}/include/crc32intrin.h +10 -8
  97. package/lib/clang/23/include/cuda_wrappers/__utility/declval.h +28 -0
  98. package/lib/clang/23/include/cuda_wrappers/bits/c++config.h +61 -0
  99. package/lib/clang/23/include/cuda_wrappers/cmath +44 -0
  100. package/lib/clang/{19 → 23}/include/cuda_wrappers/new +2 -0
  101. package/lib/clang/{19 → 23}/include/emmintrin.h +306 -272
  102. package/lib/clang/23/include/endian.h +91 -0
  103. package/lib/clang/{19 → 23}/include/f16cintrin.h +23 -9
  104. package/lib/clang/23/include/float.h +48 -0
  105. package/lib/clang/23/include/fma4intrin.h +220 -0
  106. package/lib/clang/{19 → 23}/include/fmaintrin.h +96 -66
  107. package/lib/clang/{19 → 23}/include/gfniintrin.h +39 -12
  108. package/lib/clang/23/include/gpuintrin.h +348 -0
  109. package/lib/clang/{19 → 23}/include/hexagon_types.h +31 -24
  110. package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics.h +222 -0
  111. package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics_gen.inc +3869 -0
  112. package/lib/clang/23/include/hlsl/hlsl_basic_types.h +370 -0
  113. package/lib/clang/23/include/hlsl/hlsl_compat_overloads.h +559 -0
  114. package/lib/clang/23/include/hlsl/hlsl_detail.h +56 -0
  115. package/lib/clang/23/include/hlsl/hlsl_inline_intrinsics_gen.inc +546 -0
  116. package/lib/clang/23/include/hlsl/hlsl_intrinsic_helpers.h +170 -0
  117. package/lib/clang/23/include/hlsl/hlsl_intrinsics.h +331 -0
  118. package/lib/clang/23/include/hlsl/hlsl_spirv.h +28 -0
  119. package/lib/clang/23/include/hlsl.h +38 -0
  120. package/lib/clang/{19 → 23}/include/hvx_hexagon_protos.h +1041 -803
  121. package/lib/clang/{19 → 23}/include/immintrin.h +35 -185
  122. package/lib/clang/{19 → 23}/include/intrin.h +62 -21
  123. package/lib/clang/{19 → 23}/include/intrin0.h +10 -1
  124. package/lib/clang/{19 → 23}/include/keylockerintrin.h +0 -9
  125. package/lib/clang/{19 → 23}/include/larchintrin.h +24 -8
  126. package/lib/clang/{19 → 23}/include/lasxintrin.h +140 -25
  127. package/lib/clang/{19 → 23}/include/limits.h +7 -4
  128. package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/assert.h +3 -5
  129. package/lib/clang/23/include/llvm_libc_wrappers/ctype.h +29 -0
  130. package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/inttypes.h +3 -5
  131. package/lib/clang/23/include/llvm_libc_wrappers/stdio.h +52 -0
  132. package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/stdlib.h +3 -16
  133. package/lib/clang/23/include/llvm_libc_wrappers/string.h +29 -0
  134. package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/time.h +4 -10
  135. package/lib/clang/23/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  136. package/lib/clang/23/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  137. package/lib/clang/23/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  138. package/lib/clang/{19 → 23}/include/lsxintrin.h +27 -25
  139. package/lib/clang/{19 → 23}/include/lzcntintrin.h +13 -8
  140. package/lib/clang/{19 → 23}/include/mmintrin.h +241 -256
  141. package/lib/clang/{19 → 23}/include/module.modulemap +54 -9
  142. package/lib/clang/23/include/movrs_avx10_2_512intrin.h +98 -0
  143. package/lib/clang/23/include/movrs_avx10_2intrin.h +174 -0
  144. package/lib/clang/23/include/movrsintrin.h +59 -0
  145. package/lib/clang/23/include/nvptxintrin.h +208 -0
  146. package/lib/clang/{19 → 23}/include/opencl-c-base.h +28 -92
  147. package/lib/clang/{19 → 23}/include/opencl-c.h +506 -140
  148. package/lib/clang/{19 → 23}/include/openmp_wrappers/__clang_openmp_device_functions.h +18 -5
  149. package/lib/clang/{19 → 23}/include/openmp_wrappers/complex +7 -1
  150. package/lib/clang/{19 → 23}/include/openmp_wrappers/complex.h +6 -0
  151. package/lib/clang/{19 → 23}/include/openmp_wrappers/complex_cmath.h +7 -2
  152. package/lib/clang/{19 → 23}/include/openmp_wrappers/math.h +10 -0
  153. package/lib/clang/{19 → 23}/include/pmmintrin.h +24 -23
  154. package/lib/clang/{19 → 23}/include/popcntintrin.h +7 -7
  155. package/lib/clang/{19 → 23}/include/prfchwintrin.h +10 -13
  156. package/lib/clang/{19 → 23}/include/ptrauth.h +169 -14
  157. package/lib/clang/{19 → 23}/include/riscv_bitmanip.h +7 -0
  158. package/lib/clang/23/include/riscv_corev_alu.h +130 -0
  159. package/lib/clang/{19 → 23}/include/riscv_crypto.h +8 -0
  160. package/lib/clang/23/include/riscv_mips.h +36 -0
  161. package/lib/clang/23/include/riscv_nds.h +92 -0
  162. package/lib/clang/{19 → 23}/include/riscv_ntlh.h +2 -0
  163. package/lib/clang/23/include/riscv_packed_simd.h +644 -0
  164. package/lib/clang/{19 → 23}/include/riscv_vector.h +43 -5
  165. package/lib/clang/{19 → 23}/include/shaintrin.h +3 -2
  166. package/lib/clang/{19 → 23}/include/sifive_vector.h +76 -2
  167. package/lib/clang/23/include/sm4evexintrin.h +32 -0
  168. package/lib/clang/{19 → 23}/include/smmintrin.h +80 -56
  169. package/lib/clang/23/include/spirvintrin.h +167 -0
  170. package/lib/clang/{19 → 23}/include/stdalign.h +0 -5
  171. package/lib/clang/23/include/stdcountof.h +15 -0
  172. package/lib/clang/23/include/stddefer.h +19 -0
  173. package/lib/clang/{19 → 23}/include/stdint.h +23 -143
  174. package/lib/clang/{19 → 23}/include/tbmintrin.h +25 -37
  175. package/lib/clang/{19 → 23}/include/tmmintrin.h +125 -130
  176. package/lib/clang/{19 → 23}/include/vaesintrin.h +1 -2
  177. package/lib/clang/{19 → 23}/include/vecintrin.h +1783 -60
  178. package/lib/clang/{19 → 23}/include/wasm_simd128.h +184 -21
  179. package/lib/clang/{19 → 23}/include/x86gprintrin.h +0 -14
  180. package/lib/clang/{19 → 23}/include/x86intrin.h +0 -18
  181. package/lib/clang/{19 → 23}/include/xmmintrin.h +190 -221
  182. package/lib/clang/{19 → 23}/include/xopintrin.h +20 -10
  183. package/lib/clang/23/include/zos_wrappers/grp.h +19 -0
  184. package/lib/clang/23/include/zos_wrappers/locale.h +19 -0
  185. package/lib/clang/23/include/zos_wrappers/math.h +31 -0
  186. package/lib/clang/23/include/zos_wrappers/poll.h +19 -0
  187. package/lib/clang/23/include/zos_wrappers/stdlib.h +20 -0
  188. package/lib/clang/23/include/zos_wrappers/string.h +19 -0
  189. package/lib/clang/23/include/zos_wrappers/time.h +19 -0
  190. package/lib/clang/23/include/zos_wrappers/variant.h +19 -0
  191. package/package.json +6 -6
  192. package/lib/clang/19/include/__clang_cuda_complex_builtins.h +0 -285
  193. package/lib/clang/19/include/avx512cdintrin.h +0 -125
  194. package/lib/clang/19/include/avx512ifmaintrin.h +0 -70
  195. package/lib/clang/19/include/avx512ifmavlintrin.h +0 -111
  196. package/lib/clang/19/include/avx512vlcdintrin.h +0 -230
  197. package/lib/clang/19/include/cuda_wrappers/cmath +0 -90
  198. package/lib/clang/19/include/fma4intrin.h +0 -218
  199. package/lib/clang/19/include/hlsl/hlsl_basic_types.h +0 -74
  200. package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +0 -1697
  201. package/lib/clang/19/include/hlsl.h +0 -15
  202. package/lib/clang/19/include/llvm_libc_wrappers/ctype.h +0 -102
  203. package/lib/clang/19/include/llvm_libc_wrappers/stdio.h +0 -80
  204. package/lib/clang/19/include/llvm_libc_wrappers/string.h +0 -96
  205. /package/lib/clang/{19 → 23}/include/__clang_cuda_builtin_vars.h +0 -0
  206. /package/lib/clang/{19 → 23}/include/__clang_cuda_cmath.h +0 -0
  207. /package/lib/clang/{19 → 23}/include/__clang_cuda_libdevice_declares.h +0 -0
  208. /package/lib/clang/{19 → 23}/include/__clang_hip_stdlib.h +0 -0
  209. /package/lib/clang/{19 → 23}/include/__stdarg___gnuc_va_list.h +0 -0
  210. /package/lib/clang/{19 → 23}/include/__stdarg___va_copy.h +0 -0
  211. /package/lib/clang/{19 → 23}/include/__stdarg_header_macro.h +0 -0
  212. /package/lib/clang/{19 → 23}/include/__stdarg_va_copy.h +0 -0
  213. /package/lib/clang/{19 → 23}/include/__stdarg_va_list.h +0 -0
  214. /package/lib/clang/{19 → 23}/include/__stddef_header_macro.h +0 -0
  215. /package/lib/clang/{19 → 23}/include/__stddef_max_align_t.h +0 -0
  216. /package/lib/clang/{19 → 23}/include/__stddef_null.h +0 -0
  217. /package/lib/clang/{19 → 23}/include/__stddef_nullptr_t.h +0 -0
  218. /package/lib/clang/{19 → 23}/include/__stddef_offsetof.h +0 -0
  219. /package/lib/clang/{19 → 23}/include/__stddef_ptrdiff_t.h +0 -0
  220. /package/lib/clang/{19 → 23}/include/__stddef_rsize_t.h +0 -0
  221. /package/lib/clang/{19 → 23}/include/__stddef_size_t.h +0 -0
  222. /package/lib/clang/{19 → 23}/include/__stddef_unreachable.h +0 -0
  223. /package/lib/clang/{19 → 23}/include/__stddef_wchar_t.h +0 -0
  224. /package/lib/clang/{19 → 23}/include/__stddef_wint_t.h +0 -0
  225. /package/lib/clang/{19 → 23}/include/__wmmintrin_aes.h +0 -0
  226. /package/lib/clang/{19 → 23}/include/__wmmintrin_pclmul.h +0 -0
  227. /package/lib/clang/{19 → 23}/include/ammintrin.h +0 -0
  228. /package/lib/clang/{19 → 23}/include/arm_bf16.h +0 -0
  229. /package/lib/clang/{19 → 23}/include/arm_cde.h +0 -0
  230. /package/lib/clang/{19 → 23}/include/arm_cmse.h +0 -0
  231. /package/lib/clang/{19 → 23}/include/arm_mve.h +0 -0
  232. /package/lib/clang/{19 → 23}/include/arm_neon_sve_bridge.h +0 -0
  233. /package/lib/clang/{19 → 23}/include/armintr.h +0 -0
  234. /package/lib/clang/{19 → 23}/include/avxneconvertintrin.h +0 -0
  235. /package/lib/clang/{19 → 23}/include/builtins.h +0 -0
  236. /package/lib/clang/{19 → 23}/include/cet.h +0 -0
  237. /package/lib/clang/{19 → 23}/include/cetintrin.h +0 -0
  238. /package/lib/clang/{19 → 23}/include/cldemoteintrin.h +0 -0
  239. /package/lib/clang/{19 → 23}/include/clflushoptintrin.h +0 -0
  240. /package/lib/clang/{19 → 23}/include/clwbintrin.h +0 -0
  241. /package/lib/clang/{19 → 23}/include/clzerointrin.h +0 -0
  242. /package/lib/clang/{19 → 23}/include/cuda_wrappers/algorithm +0 -0
  243. /package/lib/clang/{19 → 23}/include/cuda_wrappers/bits/basic_string.h +0 -0
  244. /package/lib/clang/{19 → 23}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  245. /package/lib/clang/{19 → 23}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  246. /package/lib/clang/{19 → 23}/include/cuda_wrappers/complex +0 -0
  247. /package/lib/clang/{19 → 23}/include/enqcmdintrin.h +0 -0
  248. /package/lib/clang/{19 → 23}/include/fxsrintrin.h +0 -0
  249. /package/lib/clang/{19 → 23}/include/hexagon_circ_brev_intrinsics.h +0 -0
  250. /package/lib/clang/{19 → 23}/include/hexagon_protos.h +0 -0
  251. /package/lib/clang/{19 → 23}/include/hresetintrin.h +0 -0
  252. /package/lib/clang/{19 → 23}/include/htmintrin.h +0 -0
  253. /package/lib/clang/{19 → 23}/include/htmxlintrin.h +0 -0
  254. /package/lib/clang/{19 → 23}/include/ia32intrin.h +0 -0
  255. /package/lib/clang/{19 → 23}/include/inttypes.h +0 -0
  256. /package/lib/clang/{19 → 23}/include/invpcidintrin.h +0 -0
  257. /package/lib/clang/{19 → 23}/include/iso646.h +0 -0
  258. /package/lib/clang/{19 → 23}/include/lwpintrin.h +0 -0
  259. /package/lib/clang/{19 → 23}/include/mm3dnow.h +0 -0
  260. /package/lib/clang/{19 → 23}/include/mm_malloc.h +0 -0
  261. /package/lib/clang/{19 → 23}/include/movdirintrin.h +0 -0
  262. /package/lib/clang/{19 → 23}/include/msa.h +0 -0
  263. /package/lib/clang/{19 → 23}/include/mwaitxintrin.h +0 -0
  264. /package/lib/clang/{19 → 23}/include/nmmintrin.h +0 -0
  265. /package/lib/clang/{19 → 23}/include/openmp_wrappers/cmath +0 -0
  266. /package/lib/clang/{19 → 23}/include/openmp_wrappers/new +0 -0
  267. /package/lib/clang/{19 → 23}/include/pconfigintrin.h +0 -0
  268. /package/lib/clang/{19 → 23}/include/pkuintrin.h +0 -0
  269. /package/lib/clang/{19 → 23}/include/ppc_wrappers/bmi2intrin.h +0 -0
  270. /package/lib/clang/{19 → 23}/include/ppc_wrappers/bmiintrin.h +0 -0
  271. /package/lib/clang/{19 → 23}/include/ppc_wrappers/emmintrin.h +0 -0
  272. /package/lib/clang/{19 → 23}/include/ppc_wrappers/immintrin.h +0 -0
  273. /package/lib/clang/{19 → 23}/include/ppc_wrappers/mm_malloc.h +0 -0
  274. /package/lib/clang/{19 → 23}/include/ppc_wrappers/mmintrin.h +0 -0
  275. /package/lib/clang/{19 → 23}/include/ppc_wrappers/nmmintrin.h +0 -0
  276. /package/lib/clang/{19 → 23}/include/ppc_wrappers/pmmintrin.h +0 -0
  277. /package/lib/clang/{19 → 23}/include/ppc_wrappers/smmintrin.h +0 -0
  278. /package/lib/clang/{19 → 23}/include/ppc_wrappers/tmmintrin.h +0 -0
  279. /package/lib/clang/{19 → 23}/include/ppc_wrappers/x86gprintrin.h +0 -0
  280. /package/lib/clang/{19 → 23}/include/ppc_wrappers/x86intrin.h +0 -0
  281. /package/lib/clang/{19 → 23}/include/ppc_wrappers/xmmintrin.h +0 -0
  282. /package/lib/clang/{19 → 23}/include/prfchiintrin.h +0 -0
  283. /package/lib/clang/{19 → 23}/include/ptwriteintrin.h +0 -0
  284. /package/lib/clang/{19 → 23}/include/raointintrin.h +0 -0
  285. /package/lib/clang/{19 → 23}/include/rdpruintrin.h +0 -0
  286. /package/lib/clang/{19 → 23}/include/rdseedintrin.h +0 -0
  287. /package/lib/clang/{19 → 23}/include/rtmintrin.h +0 -0
  288. /package/lib/clang/{19 → 23}/include/s390intrin.h +0 -0
  289. /package/lib/clang/{19 → 23}/include/serializeintrin.h +0 -0
  290. /package/lib/clang/{19 → 23}/include/sgxintrin.h +0 -0
  291. /package/lib/clang/{19 → 23}/include/sha512intrin.h +0 -0
  292. /package/lib/clang/{19 → 23}/include/sm3intrin.h +0 -0
  293. /package/lib/clang/{19 → 23}/include/sm4intrin.h +0 -0
  294. /package/lib/clang/{19 → 23}/include/stdarg.h +0 -0
  295. /package/lib/clang/{19 → 23}/include/stdatomic.h +0 -0
  296. /package/lib/clang/{19 → 23}/include/stdbool.h +0 -0
  297. /package/lib/clang/{19 → 23}/include/stdckdint.h +0 -0
  298. /package/lib/clang/{19 → 23}/include/stddef.h +0 -0
  299. /package/lib/clang/{19 → 23}/include/stdnoreturn.h +0 -0
  300. /package/lib/clang/{19 → 23}/include/tgmath.h +0 -0
  301. /package/lib/clang/{19 → 23}/include/tsxldtrkintrin.h +0 -0
  302. /package/lib/clang/{19 → 23}/include/uintrintrin.h +0 -0
  303. /package/lib/clang/{19 → 23}/include/unwind.h +0 -0
  304. /package/lib/clang/{19 → 23}/include/usermsrintrin.h +0 -0
  305. /package/lib/clang/{19 → 23}/include/vadefs.h +0 -0
  306. /package/lib/clang/{19 → 23}/include/varargs.h +0 -0
  307. /package/lib/clang/{19 → 23}/include/velintrin.h +0 -0
  308. /package/lib/clang/{19 → 23}/include/velintrin_approx.h +0 -0
  309. /package/lib/clang/{19 → 23}/include/velintrin_gen.h +0 -0
  310. /package/lib/clang/{19 → 23}/include/vpclmulqdqintrin.h +0 -0
  311. /package/lib/clang/{19 → 23}/include/waitpkgintrin.h +0 -0
  312. /package/lib/clang/{19 → 23}/include/wbnoinvdintrin.h +0 -0
  313. /package/lib/clang/{19 → 23}/include/wmmintrin.h +0 -0
  314. /package/lib/clang/{19 → 23}/include/xsavecintrin.h +0 -0
  315. /package/lib/clang/{19 → 23}/include/xsaveintrin.h +0 -0
  316. /package/lib/clang/{19 → 23}/include/xsaveoptintrin.h +0 -0
  317. /package/lib/clang/{19 → 23}/include/xsavesintrin.h +0 -0
  318. /package/lib/clang/{19 → 23}/include/xtestintrin.h +0 -0
  319. /package/lib/clang/{19 → 23}/include/yvals_core.h +0 -0
  320. /package/lib/clang/{19 → 23}/include/zos_wrappers/builtins.h +0 -0
@@ -16,7 +16,6 @@
16
16
 
17
17
  #include <mmintrin.h>
18
18
 
19
- typedef int __v4si __attribute__((__vector_size__(16)));
20
19
  typedef float __v4sf __attribute__((__vector_size__(16)));
21
20
  typedef float __m128 __attribute__((__vector_size__(16), __aligned__(16)));
22
21
 
@@ -24,6 +23,8 @@ typedef float __m128_u __attribute__((__vector_size__(16), __aligned__(1)));
24
23
 
25
24
  /* Unsigned types */
26
25
  typedef unsigned int __v4su __attribute__((__vector_size__(16)));
26
+ typedef unsigned short __v8hu __attribute__((__vector_size__(16)));
27
+ typedef unsigned char __v16qu __attribute__((__vector_size__(16)));
27
28
 
28
29
  /* This header should only be included in a hosted environment as it depends on
29
30
  * a standard library to provide allocation routines. */
@@ -33,11 +34,31 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16)));
33
34
 
34
35
  /* Define the default attributes for the functions in this file. */
35
36
  #define __DEFAULT_FN_ATTRS \
36
- __attribute__((__always_inline__, __nodebug__, __target__("sse,no-evex512"), \
37
+ __attribute__((__always_inline__, __nodebug__, __target__("sse"), \
37
38
  __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)))
39
+ #define __DEFAULT_FN_ATTRS_SSE2 \
40
+ __attribute__((__always_inline__, __nodebug__, __target__("sse2"), \
41
+ __min_vector_width__(128)))
42
+
43
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
44
+ #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
45
+ #define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2 constexpr
46
+ #else
47
+ #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
48
+ #define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2
49
+ #endif
50
+
51
+ #define __trunc64(x) \
52
+ (__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0)
53
+ #define __zext128(x) \
54
+ (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \
55
+ 1, 2, 3)
56
+ #define __anyext128(x) \
57
+ (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \
58
+ 1, -1, -1)
59
+ #define __zeroupper64(x) \
60
+ (__m128i) __builtin_shufflevector((__v4si)(x), __extension__(__v4si){}, 0, \
61
+ 1, 4, 5)
41
62
 
42
63
  /// Adds the 32-bit float values in the low-order bits of the operands.
43
64
  ///
@@ -54,9 +75,8 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16)));
54
75
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the sum
55
76
  /// of the lower 32 bits of both operands. The upper 96 bits are copied from
56
77
  /// the upper 96 bits of the first source operand.
57
- static __inline__ __m128 __DEFAULT_FN_ATTRS
58
- _mm_add_ss(__m128 __a, __m128 __b)
59
- {
78
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
79
+ _mm_add_ss(__m128 __a, __m128 __b) {
60
80
  __a[0] += __b[0];
61
81
  return __a;
62
82
  }
@@ -74,9 +94,8 @@ _mm_add_ss(__m128 __a, __m128 __b)
74
94
  /// A 128-bit vector of [4 x float] containing one of the source operands.
75
95
  /// \returns A 128-bit vector of [4 x float] containing the sums of both
76
96
  /// operands.
77
- static __inline__ __m128 __DEFAULT_FN_ATTRS
78
- _mm_add_ps(__m128 __a, __m128 __b)
79
- {
97
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
98
+ _mm_add_ps(__m128 __a, __m128 __b) {
80
99
  return (__m128)((__v4sf)__a + (__v4sf)__b);
81
100
  }
82
101
 
@@ -96,9 +115,8 @@ _mm_add_ps(__m128 __a, __m128 __b)
96
115
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
97
116
  /// difference of the lower 32 bits of both operands. The upper 96 bits are
98
117
  /// copied from the upper 96 bits of the first source operand.
99
- static __inline__ __m128 __DEFAULT_FN_ATTRS
100
- _mm_sub_ss(__m128 __a, __m128 __b)
101
- {
118
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
119
+ _mm_sub_ss(__m128 __a, __m128 __b) {
102
120
  __a[0] -= __b[0];
103
121
  return __a;
104
122
  }
@@ -117,9 +135,8 @@ _mm_sub_ss(__m128 __a, __m128 __b)
117
135
  /// A 128-bit vector of [4 x float] containing the subtrahend.
118
136
  /// \returns A 128-bit vector of [4 x float] containing the differences between
119
137
  /// both operands.
120
- static __inline__ __m128 __DEFAULT_FN_ATTRS
121
- _mm_sub_ps(__m128 __a, __m128 __b)
122
- {
138
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
139
+ _mm_sub_ps(__m128 __a, __m128 __b) {
123
140
  return (__m128)((__v4sf)__a - (__v4sf)__b);
124
141
  }
125
142
 
@@ -139,9 +156,8 @@ _mm_sub_ps(__m128 __a, __m128 __b)
139
156
  /// \returns A 128-bit vector of [4 x float] containing the product of the lower
140
157
  /// 32 bits of both operands. The upper 96 bits are copied from the upper 96
141
158
  /// bits of the first source operand.
142
- static __inline__ __m128 __DEFAULT_FN_ATTRS
143
- _mm_mul_ss(__m128 __a, __m128 __b)
144
- {
159
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
160
+ _mm_mul_ss(__m128 __a, __m128 __b) {
145
161
  __a[0] *= __b[0];
146
162
  return __a;
147
163
  }
@@ -159,9 +175,8 @@ _mm_mul_ss(__m128 __a, __m128 __b)
159
175
  /// A 128-bit vector of [4 x float] containing one of the source operands.
160
176
  /// \returns A 128-bit vector of [4 x float] containing the products of both
161
177
  /// operands.
162
- static __inline__ __m128 __DEFAULT_FN_ATTRS
163
- _mm_mul_ps(__m128 __a, __m128 __b)
164
- {
178
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
179
+ _mm_mul_ps(__m128 __a, __m128 __b) {
165
180
  return (__m128)((__v4sf)__a * (__v4sf)__b);
166
181
  }
167
182
 
@@ -181,9 +196,8 @@ _mm_mul_ps(__m128 __a, __m128 __b)
181
196
  /// \returns A 128-bit vector of [4 x float] containing the quotients of the
182
197
  /// lower 32 bits of both operands. The upper 96 bits are copied from the
183
198
  /// upper 96 bits of the first source operand.
184
- static __inline__ __m128 __DEFAULT_FN_ATTRS
185
- _mm_div_ss(__m128 __a, __m128 __b)
186
- {
199
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
200
+ _mm_div_ss(__m128 __a, __m128 __b) {
187
201
  __a[0] /= __b[0];
188
202
  return __a;
189
203
  }
@@ -200,9 +214,8 @@ _mm_div_ss(__m128 __a, __m128 __b)
200
214
  /// A 128-bit vector of [4 x float] containing the divisor.
201
215
  /// \returns A 128-bit vector of [4 x float] containing the quotients of both
202
216
  /// operands.
203
- static __inline__ __m128 __DEFAULT_FN_ATTRS
204
- _mm_div_ps(__m128 __a, __m128 __b)
205
- {
217
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
218
+ _mm_div_ps(__m128 __a, __m128 __b) {
206
219
  return (__m128)((__v4sf)__a / (__v4sf)__b);
207
220
  }
208
221
 
@@ -218,10 +231,9 @@ _mm_div_ps(__m128 __a, __m128 __b)
218
231
  /// used in the calculation.
219
232
  /// \returns A 128-bit vector of [4 x float] containing the square root of the
220
233
  /// value in the low-order bits of the operand.
221
- static __inline__ __m128 __DEFAULT_FN_ATTRS
222
- _mm_sqrt_ss(__m128 __a)
223
- {
224
- return (__m128)__builtin_ia32_sqrtss((__v4sf)__a);
234
+ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_sqrt_ss(__m128 __a) {
235
+ __a[0] = __builtin_elementwise_sqrt(__a[0]);
236
+ return __a;
225
237
  }
226
238
 
227
239
  /// Calculates the square roots of the values stored in a 128-bit vector
@@ -235,10 +247,8 @@ _mm_sqrt_ss(__m128 __a)
235
247
  /// A 128-bit vector of [4 x float].
236
248
  /// \returns A 128-bit vector of [4 x float] containing the square roots of the
237
249
  /// values in the operand.
238
- static __inline__ __m128 __DEFAULT_FN_ATTRS
239
- _mm_sqrt_ps(__m128 __a)
240
- {
241
- return __builtin_ia32_sqrtps((__v4sf)__a);
250
+ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_sqrt_ps(__m128 __a) {
251
+ return __builtin_elementwise_sqrt(__a);
242
252
  }
243
253
 
244
254
  /// Calculates the approximate reciprocal of the value stored in the
@@ -331,9 +341,8 @@ _mm_rsqrt_ps(__m128 __a)
331
341
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
332
342
  /// minimum value between both operands. The upper 96 bits are copied from
333
343
  /// the upper 96 bits of the first source operand.
334
- static __inline__ __m128 __DEFAULT_FN_ATTRS
335
- _mm_min_ss(__m128 __a, __m128 __b)
336
- {
344
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_min_ss(__m128 __a,
345
+ __m128 __b) {
337
346
  return __builtin_ia32_minss((__v4sf)__a, (__v4sf)__b);
338
347
  }
339
348
 
@@ -352,9 +361,8 @@ _mm_min_ss(__m128 __a, __m128 __b)
352
361
  /// A 128-bit vector of [4 x float] containing one of the operands.
353
362
  /// \returns A 128-bit vector of [4 x float] containing the minimum values
354
363
  /// between both operands.
355
- static __inline__ __m128 __DEFAULT_FN_ATTRS
356
- _mm_min_ps(__m128 __a, __m128 __b)
357
- {
364
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_min_ps(__m128 __a,
365
+ __m128 __b) {
358
366
  return __builtin_ia32_minps((__v4sf)__a, (__v4sf)__b);
359
367
  }
360
368
 
@@ -377,9 +385,8 @@ _mm_min_ps(__m128 __a, __m128 __b)
377
385
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
378
386
  /// maximum value between both operands. The upper 96 bits are copied from
379
387
  /// the upper 96 bits of the first source operand.
380
- static __inline__ __m128 __DEFAULT_FN_ATTRS
381
- _mm_max_ss(__m128 __a, __m128 __b)
382
- {
388
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_max_ss(__m128 __a,
389
+ __m128 __b) {
383
390
  return __builtin_ia32_maxss((__v4sf)__a, (__v4sf)__b);
384
391
  }
385
392
 
@@ -398,9 +405,8 @@ _mm_max_ss(__m128 __a, __m128 __b)
398
405
  /// A 128-bit vector of [4 x float] containing one of the operands.
399
406
  /// \returns A 128-bit vector of [4 x float] containing the maximum values
400
407
  /// between both operands.
401
- static __inline__ __m128 __DEFAULT_FN_ATTRS
402
- _mm_max_ps(__m128 __a, __m128 __b)
403
- {
408
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_max_ps(__m128 __a,
409
+ __m128 __b) {
404
410
  return __builtin_ia32_maxps((__v4sf)__a, (__v4sf)__b);
405
411
  }
406
412
 
@@ -416,9 +422,8 @@ _mm_max_ps(__m128 __a, __m128 __b)
416
422
  /// A 128-bit vector containing one of the source operands.
417
423
  /// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the
418
424
  /// values between both operands.
419
- static __inline__ __m128 __DEFAULT_FN_ATTRS
420
- _mm_and_ps(__m128 __a, __m128 __b)
421
- {
425
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
426
+ _mm_and_ps(__m128 __a, __m128 __b) {
422
427
  return (__m128)((__v4su)__a & (__v4su)__b);
423
428
  }
424
429
 
@@ -438,9 +443,8 @@ _mm_and_ps(__m128 __a, __m128 __b)
438
443
  /// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the
439
444
  /// one's complement of the first operand and the values in the second
440
445
  /// operand.
441
- static __inline__ __m128 __DEFAULT_FN_ATTRS
442
- _mm_andnot_ps(__m128 __a, __m128 __b)
443
- {
446
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
447
+ _mm_andnot_ps(__m128 __a, __m128 __b) {
444
448
  return (__m128)(~(__v4su)__a & (__v4su)__b);
445
449
  }
446
450
 
@@ -456,9 +460,8 @@ _mm_andnot_ps(__m128 __a, __m128 __b)
456
460
  /// A 128-bit vector of [4 x float] containing one of the source operands.
457
461
  /// \returns A 128-bit vector of [4 x float] containing the bitwise OR of the
458
462
  /// values between both operands.
459
- static __inline__ __m128 __DEFAULT_FN_ATTRS
460
- _mm_or_ps(__m128 __a, __m128 __b)
461
- {
463
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
464
+ _mm_or_ps(__m128 __a, __m128 __b) {
462
465
  return (__m128)((__v4su)__a | (__v4su)__b);
463
466
  }
464
467
 
@@ -475,9 +478,8 @@ _mm_or_ps(__m128 __a, __m128 __b)
475
478
  /// A 128-bit vector of [4 x float] containing one of the source operands.
476
479
  /// \returns A 128-bit vector of [4 x float] containing the bitwise exclusive OR
477
480
  /// of the values between both operands.
478
- static __inline__ __m128 __DEFAULT_FN_ATTRS
479
- _mm_xor_ps(__m128 __a, __m128 __b)
480
- {
481
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
482
+ _mm_xor_ps(__m128 __a, __m128 __b) {
481
483
  return (__m128)((__v4su)__a ^ (__v4su)__b);
482
484
  }
483
485
 
@@ -1448,10 +1450,10 @@ _mm_cvtss_si64(__m128 __a)
1448
1450
  /// \param __a
1449
1451
  /// A 128-bit vector of [4 x float].
1450
1452
  /// \returns A 64-bit integer vector containing the converted values.
1451
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
1453
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
1452
1454
  _mm_cvtps_pi32(__m128 __a)
1453
1455
  {
1454
- return (__m64)__builtin_ia32_cvtps2pi((__v4sf)__a);
1456
+ return __trunc64(__builtin_ia32_cvtps2dq((__v4sf)__zeroupper64(__a)));
1455
1457
  }
1456
1458
 
1457
1459
  /// Converts two low-order float values in a 128-bit vector of
@@ -1468,7 +1470,7 @@ _mm_cvtps_pi32(__m128 __a)
1468
1470
  /// \param __a
1469
1471
  /// A 128-bit vector of [4 x float].
1470
1472
  /// \returns A 64-bit integer vector containing the converted values.
1471
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
1473
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
1472
1474
  _mm_cvt_ps2pi(__m128 __a)
1473
1475
  {
1474
1476
  return _mm_cvtps_pi32(__a);
@@ -1558,10 +1560,10 @@ _mm_cvttss_si64(__m128 __a)
1558
1560
  /// \param __a
1559
1561
  /// A 128-bit vector of [4 x float].
1560
1562
  /// \returns A 64-bit integer vector containing the converted values.
1561
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
1563
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
1562
1564
  _mm_cvttps_pi32(__m128 __a)
1563
1565
  {
1564
- return (__m64)__builtin_ia32_cvttps2pi((__v4sf)__a);
1566
+ return __trunc64(__builtin_ia32_cvttps2dq((__v4sf)__zeroupper64(__a)));
1565
1567
  }
1566
1568
 
1567
1569
  /// Converts the lower (first) two elements of a 128-bit vector of [4 x float]
@@ -1579,7 +1581,7 @@ _mm_cvttps_pi32(__m128 __a)
1579
1581
  /// \param __a
1580
1582
  /// A 128-bit vector of [4 x float].
1581
1583
  /// \returns A 64-bit integer vector containing the converted values.
1582
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
1584
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
1583
1585
  _mm_cvtt_ps2pi(__m128 __a)
1584
1586
  {
1585
1587
  return _mm_cvttps_pi32(__a);
@@ -1601,9 +1603,8 @@ _mm_cvtt_ps2pi(__m128 __a)
1601
1603
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
1602
1604
  /// converted value of the second operand. The upper 96 bits are copied from
1603
1605
  /// the upper 96 bits of the first operand.
1604
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1605
- _mm_cvtsi32_ss(__m128 __a, int __b)
1606
- {
1606
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvtsi32_ss(__m128 __a,
1607
+ int __b) {
1607
1608
  __a[0] = __b;
1608
1609
  return __a;
1609
1610
  }
@@ -1624,9 +1625,8 @@ _mm_cvtsi32_ss(__m128 __a, int __b)
1624
1625
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
1625
1626
  /// converted value of the second operand. The upper 96 bits are copied from
1626
1627
  /// the upper 96 bits of the first operand.
1627
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1628
- _mm_cvt_si2ss(__m128 __a, int __b)
1629
- {
1628
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvt_si2ss(__m128 __a,
1629
+ int __b) {
1630
1630
  return _mm_cvtsi32_ss(__a, __b);
1631
1631
  }
1632
1632
 
@@ -1648,9 +1648,8 @@ _mm_cvt_si2ss(__m128 __a, int __b)
1648
1648
  /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
1649
1649
  /// converted value of the second operand. The upper 96 bits are copied from
1650
1650
  /// the upper 96 bits of the first operand.
1651
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1652
- _mm_cvtsi64_ss(__m128 __a, long long __b)
1653
- {
1651
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
1652
+ _mm_cvtsi64_ss(__m128 __a, long long __b) {
1654
1653
  __a[0] = __b;
1655
1654
  return __a;
1656
1655
  }
@@ -1674,10 +1673,13 @@ _mm_cvtsi64_ss(__m128 __a, long long __b)
1674
1673
  /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
1675
1674
  /// converted value of the second operand. The upper 64 bits are copied from
1676
1675
  /// the upper 64 bits of the first operand.
1677
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
1676
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
1678
1677
  _mm_cvtpi32_ps(__m128 __a, __m64 __b)
1679
1678
  {
1680
- return __builtin_ia32_cvtpi2ps((__v4sf)__a, (__v2si)__b);
1679
+ return (__m128)__builtin_shufflevector(
1680
+ (__v4sf)__a,
1681
+ __builtin_convertvector((__v4si)__zext128(__b), __v4sf),
1682
+ 4, 5, 2, 3);
1681
1683
  }
1682
1684
 
1683
1685
  /// Converts two elements of a 64-bit vector of [2 x i32] into two
@@ -1697,7 +1699,7 @@ _mm_cvtpi32_ps(__m128 __a, __m64 __b)
1697
1699
  /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
1698
1700
  /// converted value from the second operand. The upper 64 bits are copied
1699
1701
  /// from the upper 64 bits of the first operand.
1700
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
1702
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
1701
1703
  _mm_cvt_pi2ps(__m128 __a, __m64 __b)
1702
1704
  {
1703
1705
  return _mm_cvtpi32_ps(__a, __b);
@@ -1714,9 +1716,8 @@ _mm_cvt_pi2ps(__m128 __a, __m64 __b)
1714
1716
  /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
1715
1717
  /// used in the extraction.
1716
1718
  /// \returns A 32-bit float containing the extracted value.
1717
- static __inline__ float __DEFAULT_FN_ATTRS
1718
- _mm_cvtss_f32(__m128 __a)
1719
- {
1719
+ static __inline__ float __DEFAULT_FN_ATTRS_CONSTEXPR
1720
+ _mm_cvtss_f32(__m128 __a) {
1720
1721
  return __a[0];
1721
1722
  }
1722
1723
 
@@ -1907,9 +1908,8 @@ _mm_undefined_ps(void)
1907
1908
  /// \returns An initialized 128-bit floating-point vector of [4 x float]. The
1908
1909
  /// lower 32 bits contain the value provided in the source operand. The
1909
1910
  /// upper 96 bits are set to zero.
1910
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1911
- _mm_set_ss(float __w)
1912
- {
1911
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
1912
+ _mm_set_ss(float __w) {
1913
1913
  return __extension__ (__m128){ __w, 0.0f, 0.0f, 0.0f };
1914
1914
  }
1915
1915
 
@@ -1925,9 +1925,8 @@ _mm_set_ss(float __w)
1925
1925
  /// A single-precision floating-point value used to initialize each vector
1926
1926
  /// element of the result.
1927
1927
  /// \returns An initialized 128-bit floating-point vector of [4 x float].
1928
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1929
- _mm_set1_ps(float __w)
1930
- {
1928
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
1929
+ _mm_set1_ps(float __w) {
1931
1930
  return __extension__ (__m128){ __w, __w, __w, __w };
1932
1931
  }
1933
1932
 
@@ -1944,9 +1943,8 @@ _mm_set1_ps(float __w)
1944
1943
  /// A single-precision floating-point value used to initialize each vector
1945
1944
  /// element of the result.
1946
1945
  /// \returns An initialized 128-bit floating-point vector of [4 x float].
1947
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1948
- _mm_set_ps1(float __w)
1949
- {
1946
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
1947
+ _mm_set_ps1(float __w) {
1950
1948
  return _mm_set1_ps(__w);
1951
1949
  }
1952
1950
 
@@ -1971,9 +1969,8 @@ _mm_set_ps1(float __w)
1971
1969
  /// A single-precision floating-point value used to initialize bits [31:0]
1972
1970
  /// of the result.
1973
1971
  /// \returns An initialized 128-bit floating-point vector of [4 x float].
1974
- static __inline__ __m128 __DEFAULT_FN_ATTRS
1975
- _mm_set_ps(float __z, float __y, float __x, float __w)
1976
- {
1972
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
1973
+ _mm_set_ps(float __z, float __y, float __x, float __w) {
1977
1974
  return __extension__ (__m128){ __w, __x, __y, __z };
1978
1975
  }
1979
1976
 
@@ -1999,9 +1996,8 @@ _mm_set_ps(float __z, float __y, float __x, float __w)
1999
1996
  /// A single-precision floating-point value used to initialize bits [127:96]
2000
1997
  /// of the result.
2001
1998
  /// \returns An initialized 128-bit floating-point vector of [4 x float].
2002
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2003
- _mm_setr_ps(float __z, float __y, float __x, float __w)
2004
- {
1999
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2000
+ _mm_setr_ps(float __z, float __y, float __x, float __w) {
2005
2001
  return __extension__ (__m128){ __z, __y, __x, __w };
2006
2002
  }
2007
2003
 
@@ -2014,9 +2010,8 @@ _mm_setr_ps(float __z, float __y, float __x, float __w)
2014
2010
  ///
2015
2011
  /// \returns An initialized 128-bit floating-point vector of [4 x float] with
2016
2012
  /// all elements set to zero.
2017
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2018
- _mm_setzero_ps(void)
2019
- {
2013
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2014
+ _mm_setzero_ps(void) {
2020
2015
  return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f };
2021
2016
  }
2022
2017
 
@@ -2188,8 +2183,9 @@ _mm_storer_ps(float *__p, __m128 __a)
2188
2183
  #define _MM_HINT_NTA 0
2189
2184
 
2190
2185
  #ifndef _MSC_VER
2191
- /* FIXME: We have to #define this because "sel" must be a constant integer, and
2192
- Sema doesn't do any form of constant propagation yet. */
2186
+ // If _MSC_VER is defined, we use the builtin variant of _mm_prefetch.
2187
+ // Otherwise, we provide this macro, which includes a cast, allowing the user
2188
+ // to pass a pointer of any time. The _mm_prefetch accepts char to match MSVC.
2193
2189
 
2194
2190
  /// Loads one cache line of data from the specified address to a location
2195
2191
  /// closer to the processor.
@@ -2231,10 +2227,10 @@ _mm_storer_ps(float *__p, __m128 __a)
2231
2227
  /// A pointer to an aligned memory location used to store the register value.
2232
2228
  /// \param __a
2233
2229
  /// A 64-bit integer containing the value to be stored.
2234
- static __inline__ void __DEFAULT_FN_ATTRS_MMX
2230
+ static __inline__ void __DEFAULT_FN_ATTRS
2235
2231
  _mm_stream_pi(void *__p, __m64 __a)
2236
2232
  {
2237
- __builtin_ia32_movntq((__m64 *)__p, __a);
2233
+ __builtin_nontemporal_store(__a, (__m64 *)__p);
2238
2234
  }
2239
2235
 
2240
2236
  /// Moves packed float values from a 128-bit vector of [4 x float] to a
@@ -2296,7 +2292,7 @@ void _mm_sfence(void);
2296
2292
  /// 3: Bits [63:48] are copied to the destination.
2297
2293
  /// \returns A 16-bit integer containing the extracted 16 bits of packed data.
2298
2294
  #define _mm_extract_pi16(a, n) \
2299
- ((int)__builtin_ia32_vec_ext_v4hi((__v4hi)a, (int)n))
2295
+ ((int)(unsigned short)__builtin_ia32_vec_ext_v4hi((__v4hi)a, (int)n))
2300
2296
 
2301
2297
  /// Copies data from the 64-bit vector of [4 x i16] to the destination,
2302
2298
  /// and inserts the lower 16-bits of an integer operand at the 16-bit offset
@@ -2342,10 +2338,9 @@ void _mm_sfence(void);
2342
2338
  /// \param __b
2343
2339
  /// A 64-bit integer vector containing one of the source operands.
2344
2340
  /// \returns A 64-bit integer vector containing the comparison results.
2345
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2346
- _mm_max_pi16(__m64 __a, __m64 __b)
2347
- {
2348
- return (__m64)__builtin_ia32_pmaxsw((__v4hi)__a, (__v4hi)__b);
2341
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2342
+ _mm_max_pi16(__m64 __a, __m64 __b) {
2343
+ return (__m64)__builtin_elementwise_max((__v4hi)__a, (__v4hi)__b);
2349
2344
  }
2350
2345
 
2351
2346
  /// Compares each of the corresponding packed 8-bit unsigned integer
@@ -2361,10 +2356,9 @@ _mm_max_pi16(__m64 __a, __m64 __b)
2361
2356
  /// \param __b
2362
2357
  /// A 64-bit integer vector containing one of the source operands.
2363
2358
  /// \returns A 64-bit integer vector containing the comparison results.
2364
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2365
- _mm_max_pu8(__m64 __a, __m64 __b)
2366
- {
2367
- return (__m64)__builtin_ia32_pmaxub((__v8qi)__a, (__v8qi)__b);
2359
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2360
+ _mm_max_pu8(__m64 __a, __m64 __b) {
2361
+ return (__m64)__builtin_elementwise_max((__v8qu)__a, (__v8qu)__b);
2368
2362
  }
2369
2363
 
2370
2364
  /// Compares each of the corresponding packed 16-bit integer values of
@@ -2380,10 +2374,9 @@ _mm_max_pu8(__m64 __a, __m64 __b)
2380
2374
  /// \param __b
2381
2375
  /// A 64-bit integer vector containing one of the source operands.
2382
2376
  /// \returns A 64-bit integer vector containing the comparison results.
2383
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2384
- _mm_min_pi16(__m64 __a, __m64 __b)
2385
- {
2386
- return (__m64)__builtin_ia32_pminsw((__v4hi)__a, (__v4hi)__b);
2377
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2378
+ _mm_min_pi16(__m64 __a, __m64 __b) {
2379
+ return (__m64)__builtin_elementwise_min((__v4hi)__a, (__v4hi)__b);
2387
2380
  }
2388
2381
 
2389
2382
  /// Compares each of the corresponding packed 8-bit unsigned integer
@@ -2399,10 +2392,9 @@ _mm_min_pi16(__m64 __a, __m64 __b)
2399
2392
  /// \param __b
2400
2393
  /// A 64-bit integer vector containing one of the source operands.
2401
2394
  /// \returns A 64-bit integer vector containing the comparison results.
2402
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2403
- _mm_min_pu8(__m64 __a, __m64 __b)
2404
- {
2405
- return (__m64)__builtin_ia32_pminub((__v8qi)__a, (__v8qi)__b);
2395
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2396
+ _mm_min_pu8(__m64 __a, __m64 __b) {
2397
+ return (__m64)__builtin_elementwise_min((__v8qu)__a, (__v8qu)__b);
2406
2398
  }
2407
2399
 
2408
2400
  /// Takes the most significant bit from each 8-bit element in a 64-bit
@@ -2417,10 +2409,9 @@ _mm_min_pu8(__m64 __a, __m64 __b)
2417
2409
  /// A 64-bit integer vector containing the values with bits to be extracted.
2418
2410
  /// \returns The most significant bit from each 8-bit element in \a __a,
2419
2411
  /// written to bits [7:0].
2420
- static __inline__ int __DEFAULT_FN_ATTRS_MMX
2421
- _mm_movemask_pi8(__m64 __a)
2422
- {
2423
- return __builtin_ia32_pmovmskb((__v8qi)__a);
2412
+ static __inline__ int __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2413
+ _mm_movemask_pi8(__m64 __a) {
2414
+ return __builtin_ia32_pmovmskb128((__v16qi)__zext128(__a));
2424
2415
  }
2425
2416
 
2426
2417
  /// Multiplies packed 16-bit unsigned integer values and writes the
@@ -2436,10 +2427,11 @@ _mm_movemask_pi8(__m64 __a)
2436
2427
  /// \param __b
2437
2428
  /// A 64-bit integer vector containing one of the source operands.
2438
2429
  /// \returns A 64-bit integer vector containing the products of both operands.
2439
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2430
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2440
2431
  _mm_mulhi_pu16(__m64 __a, __m64 __b)
2441
2432
  {
2442
- return (__m64)__builtin_ia32_pmulhuw((__v4hi)__a, (__v4hi)__b);
2433
+ return __trunc64(__builtin_ia32_pmulhuw128((__v8hu)__zext128(__a),
2434
+ (__v8hu)__zext128(__b)));
2443
2435
  }
2444
2436
 
2445
2437
  /// Shuffles the 4 16-bit integers from a 64-bit integer vector to the
@@ -2476,8 +2468,10 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b)
2476
2468
  /// <c>_MM_SHUFFLE(b6, b4, b2, b0)</c> can create an 8-bit mask of the form
2477
2469
  /// <c>[b6, b4, b2, b0]</c>.
2478
2470
  /// \returns A 64-bit integer vector containing the shuffled values.
2479
- #define _mm_shuffle_pi16(a, n) \
2480
- ((__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n)))
2471
+ #define _mm_shuffle_pi16(a, n) \
2472
+ ((__m64)__builtin_shufflevector((__v4hi)(__m64)(a), __extension__(__v4hi){}, \
2473
+ (n) & 0x3, ((n) >> 2) & 0x3, \
2474
+ ((n) >> 4) & 0x3, ((n) >> 6) & 0x3))
2481
2475
 
2482
2476
  /// Conditionally copies the values from each 8-bit element in the first
2483
2477
  /// 64-bit integer vector operand to the specified memory location, as
@@ -2502,10 +2496,25 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b)
2502
2496
  /// A pointer to a 64-bit memory location that will receive the conditionally
2503
2497
  /// copied integer values. The address of the memory location does not have
2504
2498
  /// to be aligned.
2505
- static __inline__ void __DEFAULT_FN_ATTRS_MMX
2499
+ static __inline__ void __DEFAULT_FN_ATTRS_SSE2
2506
2500
  _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
2507
2501
  {
2508
- __builtin_ia32_maskmovq((__v8qi)__d, (__v8qi)__n, __p);
2502
+ // This is complex, because we need to support the case where __p is pointing
2503
+ // within the last 15 to 8 bytes of a page. In that case, using a 128-bit
2504
+ // write might cause a trap where a 64-bit maskmovq would not. (Memory
2505
+ // locations not selected by the mask bits might still cause traps.)
2506
+ __m128i __d128 = __anyext128(__d);
2507
+ __m128i __n128 = __zext128(__n);
2508
+ if (((__SIZE_TYPE__)__p & 0xfff) >= 4096-15 &&
2509
+ ((__SIZE_TYPE__)__p & 0xfff) <= 4096-8) {
2510
+ // If there's a risk of spurious trap due to a 128-bit write, back up the
2511
+ // pointer by 8 bytes and shift values in registers to match.
2512
+ __p -= 8;
2513
+ __d128 = (__m128i)__builtin_ia32_pslldqi128_byteshift((__v16qi)__d128, 8);
2514
+ __n128 = (__m128i)__builtin_ia32_pslldqi128_byteshift((__v16qi)__n128, 8);
2515
+ }
2516
+
2517
+ __builtin_ia32_maskmovdqu((__v16qi)__d128, (__v16qi)__n128, __p);
2509
2518
  }
2510
2519
 
2511
2520
  /// Computes the rounded averages of the packed unsigned 8-bit integer
@@ -2521,10 +2530,10 @@ _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
2521
2530
  /// \param __b
2522
2531
  /// A 64-bit integer vector containing one of the source operands.
2523
2532
  /// \returns A 64-bit integer vector containing the averages of both operands.
2524
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2525
- _mm_avg_pu8(__m64 __a, __m64 __b)
2526
- {
2527
- return (__m64)__builtin_ia32_pavgb((__v8qi)__a, (__v8qi)__b);
2533
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2534
+ _mm_avg_pu8(__m64 __a, __m64 __b) {
2535
+ return __trunc64(__builtin_ia32_pavgb128((__v16qu)__zext128(__a),
2536
+ (__v16qu)__zext128(__b)));
2528
2537
  }
2529
2538
 
2530
2539
  /// Computes the rounded averages of the packed unsigned 16-bit integer
@@ -2540,10 +2549,10 @@ _mm_avg_pu8(__m64 __a, __m64 __b)
2540
2549
  /// \param __b
2541
2550
  /// A 64-bit integer vector containing one of the source operands.
2542
2551
  /// \returns A 64-bit integer vector containing the averages of both operands.
2543
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2544
- _mm_avg_pu16(__m64 __a, __m64 __b)
2545
- {
2546
- return (__m64)__builtin_ia32_pavgw((__v4hi)__a, (__v4hi)__b);
2552
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2553
+ _mm_avg_pu16(__m64 __a, __m64 __b) {
2554
+ return __trunc64(
2555
+ __builtin_ia32_pavgw128((__v8hu)__zext128(__a), (__v8hu)__zext128(__b)));
2547
2556
  }
2548
2557
 
2549
2558
  /// Subtracts the corresponding 8-bit unsigned integer values of the two
@@ -2562,10 +2571,10 @@ _mm_avg_pu16(__m64 __a, __m64 __b)
2562
2571
  /// \returns A 64-bit integer vector whose lower 16 bits contain the sums of the
2563
2572
  /// sets of absolute differences between both operands. The upper bits are
2564
2573
  /// cleared.
2565
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2566
- _mm_sad_pu8(__m64 __a, __m64 __b)
2567
- {
2568
- return (__m64)__builtin_ia32_psadbw((__v8qi)__a, (__v8qi)__b);
2574
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2575
+ _mm_sad_pu8(__m64 __a, __m64 __b) {
2576
+ return __trunc64(__builtin_ia32_psadbw128((__v16qu)__zext128(__a),
2577
+ (__v16qu)__zext128(__b)));
2569
2578
  }
2570
2579
 
2571
2580
  #if defined(__cplusplus)
@@ -2741,9 +2750,8 @@ void _mm_setcsr(unsigned int __i);
2741
2750
  /// Bits [95:64] are written to bits [63:32] of the destination. \n
2742
2751
  /// Bits [127:96] are written to bits [127:96] of the destination.
2743
2752
  /// \returns A 128-bit vector of [4 x float] containing the interleaved values.
2744
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2745
- _mm_unpackhi_ps(__m128 __a, __m128 __b)
2746
- {
2753
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2754
+ _mm_unpackhi_ps(__m128 __a, __m128 __b) {
2747
2755
  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 2, 6, 3, 7);
2748
2756
  }
2749
2757
 
@@ -2763,9 +2771,8 @@ _mm_unpackhi_ps(__m128 __a, __m128 __b)
2763
2771
  /// Bits [31:0] are written to bits [63:32] of the destination. \n
2764
2772
  /// Bits [63:32] are written to bits [127:96] of the destination.
2765
2773
  /// \returns A 128-bit vector of [4 x float] containing the interleaved values.
2766
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2767
- _mm_unpacklo_ps(__m128 __a, __m128 __b)
2768
- {
2774
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2775
+ _mm_unpacklo_ps(__m128 __a, __m128 __b) {
2769
2776
  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 4, 1, 5);
2770
2777
  }
2771
2778
 
@@ -2785,9 +2792,8 @@ _mm_unpacklo_ps(__m128 __a, __m128 __b)
2785
2792
  /// A 128-bit floating-point vector of [4 x float]. The lower 32 bits are
2786
2793
  /// written to the lower 32 bits of the result.
2787
2794
  /// \returns A 128-bit floating-point vector of [4 x float].
2788
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2789
- _mm_move_ss(__m128 __a, __m128 __b)
2790
- {
2795
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2796
+ _mm_move_ss(__m128 __a, __m128 __b) {
2791
2797
  __a[0] = __b[0];
2792
2798
  return __a;
2793
2799
  }
@@ -2807,9 +2813,8 @@ _mm_move_ss(__m128 __a, __m128 __b)
2807
2813
  /// A 128-bit floating-point vector of [4 x float]. The upper 64 bits are
2808
2814
  /// written to the lower 64 bits of the result.
2809
2815
  /// \returns A 128-bit floating-point vector of [4 x float].
2810
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2811
- _mm_movehl_ps(__m128 __a, __m128 __b)
2812
- {
2816
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2817
+ _mm_movehl_ps(__m128 __a, __m128 __b) {
2813
2818
  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 6, 7, 2, 3);
2814
2819
  }
2815
2820
 
@@ -2828,9 +2833,8 @@ _mm_movehl_ps(__m128 __a, __m128 __b)
2828
2833
  /// A 128-bit floating-point vector of [4 x float]. The lower 64 bits are
2829
2834
  /// written to the upper 64 bits of the result.
2830
2835
  /// \returns A 128-bit floating-point vector of [4 x float].
2831
- static __inline__ __m128 __DEFAULT_FN_ATTRS
2832
- _mm_movelh_ps(__m128 __a, __m128 __b)
2833
- {
2836
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR
2837
+ _mm_movelh_ps(__m128 __a, __m128 __b) {
2834
2838
  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 1, 4, 5);
2835
2839
  }
2836
2840
 
@@ -2846,22 +2850,10 @@ _mm_movelh_ps(__m128 __a, __m128 __b)
2846
2850
  /// from the corresponding elements in this operand.
2847
2851
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2848
2852
  /// values from the operand.
2849
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
2853
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2850
2854
  _mm_cvtpi16_ps(__m64 __a)
2851
2855
  {
2852
- __m64 __b, __c;
2853
- __m128 __r;
2854
-
2855
- __b = _mm_setzero_si64();
2856
- __b = _mm_cmpgt_pi16(__b, __a);
2857
- __c = _mm_unpackhi_pi16(__a, __b);
2858
- __r = _mm_setzero_ps();
2859
- __r = _mm_cvtpi32_ps(__r, __c);
2860
- __r = _mm_movelh_ps(__r, __r);
2861
- __c = _mm_unpacklo_pi16(__a, __b);
2862
- __r = _mm_cvtpi32_ps(__r, __c);
2863
-
2864
- return __r;
2856
+ return __builtin_convertvector((__v4hi)__a, __v4sf);
2865
2857
  }
2866
2858
 
2867
2859
  /// Converts a 64-bit vector of 16-bit unsigned integer values into a
@@ -2876,21 +2868,10 @@ _mm_cvtpi16_ps(__m64 __a)
2876
2868
  /// destination are copied from the corresponding elements in this operand.
2877
2869
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2878
2870
  /// values from the operand.
2879
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
2871
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2880
2872
  _mm_cvtpu16_ps(__m64 __a)
2881
2873
  {
2882
- __m64 __b, __c;
2883
- __m128 __r;
2884
-
2885
- __b = _mm_setzero_si64();
2886
- __c = _mm_unpackhi_pi16(__a, __b);
2887
- __r = _mm_setzero_ps();
2888
- __r = _mm_cvtpi32_ps(__r, __c);
2889
- __r = _mm_movelh_ps(__r, __r);
2890
- __c = _mm_unpacklo_pi16(__a, __b);
2891
- __r = _mm_cvtpi32_ps(__r, __c);
2892
-
2893
- return __r;
2874
+ return __builtin_convertvector((__v4hu)__a, __v4sf);
2894
2875
  }
2895
2876
 
2896
2877
  /// Converts the lower four 8-bit values from a 64-bit vector of [8 x i8]
@@ -2905,16 +2886,12 @@ _mm_cvtpu16_ps(__m64 __a)
2905
2886
  /// from the corresponding lower 4 elements in this operand.
2906
2887
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2907
2888
  /// values from the operand.
2908
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
2889
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2909
2890
  _mm_cvtpi8_ps(__m64 __a)
2910
2891
  {
2911
- __m64 __b;
2912
-
2913
- __b = _mm_setzero_si64();
2914
- __b = _mm_cmpgt_pi8(__b, __a);
2915
- __b = _mm_unpacklo_pi8(__a, __b);
2916
-
2917
- return _mm_cvtpi16_ps(__b);
2892
+ return __builtin_convertvector(
2893
+ __builtin_shufflevector((__v8qs)__a, __extension__ (__v8qs){},
2894
+ 0, 1, 2, 3), __v4sf);
2918
2895
  }
2919
2896
 
2920
2897
  /// Converts the lower four unsigned 8-bit integer values from a 64-bit
@@ -2930,15 +2907,12 @@ _mm_cvtpi8_ps(__m64 __a)
2930
2907
  /// operand.
2931
2908
  /// \returns A 128-bit vector of [4 x float] containing the copied and converted
2932
2909
  /// values from the source operand.
2933
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
2910
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2934
2911
  _mm_cvtpu8_ps(__m64 __a)
2935
2912
  {
2936
- __m64 __b;
2937
-
2938
- __b = _mm_setzero_si64();
2939
- __b = _mm_unpacklo_pi8(__a, __b);
2940
-
2941
- return _mm_cvtpi16_ps(__b);
2913
+ return __builtin_convertvector(
2914
+ __builtin_shufflevector((__v8qu)__a, __extension__ (__v8qu){},
2915
+ 0, 1, 2, 3), __v4sf);
2942
2916
  }
2943
2917
 
2944
2918
  /// Converts the two 32-bit signed integer values from each 64-bit vector
@@ -2957,16 +2931,12 @@ _mm_cvtpu8_ps(__m64 __a)
2957
2931
  /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
2958
2932
  /// copied and converted values from the first operand. The upper 64 bits
2959
2933
  /// contain the copied and converted values from the second operand.
2960
- static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
2934
+ static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
2961
2935
  _mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
2962
2936
  {
2963
- __m128 __c;
2964
-
2965
- __c = _mm_setzero_ps();
2966
- __c = _mm_cvtpi32_ps(__c, __b);
2967
- __c = _mm_movelh_ps(__c, __c);
2968
-
2969
- return _mm_cvtpi32_ps(__c, __a);
2937
+ return __builtin_convertvector(
2938
+ __builtin_shufflevector((__v2si)__a, (__v2si)__b,
2939
+ 0, 1, 2, 3), __v4sf);
2970
2940
  }
2971
2941
 
2972
2942
  /// Converts each single-precision floating-point element of a 128-bit
@@ -2986,16 +2956,11 @@ _mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
2986
2956
  /// A 128-bit floating-point vector of [4 x float].
2987
2957
  /// \returns A 64-bit integer vector of [4 x i16] containing the converted
2988
2958
  /// values.
2989
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2959
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
2990
2960
  _mm_cvtps_pi16(__m128 __a)
2991
2961
  {
2992
- __m64 __b, __c;
2993
-
2994
- __b = _mm_cvtps_pi32(__a);
2995
- __a = _mm_movehl_ps(__a, __a);
2996
- __c = _mm_cvtps_pi32(__a);
2997
-
2998
- return _mm_packs_pi32(__b, __c);
2962
+ return __trunc64(__builtin_ia32_packssdw128(
2963
+ (__v4si)__builtin_ia32_cvtps2dq((__v4sf)__a), (__v4si)_mm_setzero_ps()));
2999
2964
  }
3000
2965
 
3001
2966
  /// Converts each single-precision floating-point element of a 128-bit
@@ -3016,7 +2981,7 @@ _mm_cvtps_pi16(__m128 __a)
3016
2981
  /// 128-bit floating-point vector of [4 x float].
3017
2982
  /// \returns A 64-bit integer vector of [8 x i8]. The lower 32 bits contain the
3018
2983
  /// converted values and the uppper 32 bits are set to zero.
3019
- static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
2984
+ static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2
3020
2985
  _mm_cvtps_pi8(__m128 __a)
3021
2986
  {
3022
2987
  __m64 __b, __c;
@@ -3041,9 +3006,7 @@ _mm_cvtps_pi8(__m128 __a)
3041
3006
  /// \returns A 32-bit integer value. Bits [3:0] contain the sign bits from each
3042
3007
  /// single-precision floating-point element of the parameter. Bits [31:4] are
3043
3008
  /// set to zero.
3044
- static __inline__ int __DEFAULT_FN_ATTRS
3045
- _mm_movemask_ps(__m128 __a)
3046
- {
3009
+ static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR _mm_movemask_ps(__m128 __a) {
3047
3010
  return __builtin_ia32_movmskps((__v4sf)__a);
3048
3011
  }
3049
3012
 
@@ -3196,8 +3159,14 @@ do { \
3196
3159
  #define _m_psadbw _mm_sad_pu8
3197
3160
  #define _m_ _mm_
3198
3161
 
3162
+ #undef __trunc64
3163
+ #undef __zext128
3164
+ #undef __anyext128
3165
+ #undef __zeroupper64
3199
3166
  #undef __DEFAULT_FN_ATTRS
3200
- #undef __DEFAULT_FN_ATTRS_MMX
3167
+ #undef __DEFAULT_FN_ATTRS_CONSTEXPR
3168
+ #undef __DEFAULT_FN_ATTRS_SSE2
3169
+ #undef __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR
3201
3170
 
3202
3171
  /* Ugly hack for backwards-compatibility (compatible with gcc) */
3203
3172
  #if defined(__SSE2__) && !__building_module(_Builtin_intrinsics)