@cpp-linter/clang-tidy-darwin-x64 17.0.6 → 18.1.8

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 (242) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{17 → 18}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{17 → 18}/include/__clang_cuda_libdevice_declares.h +2 -2
  5. package/lib/clang/{17 → 18}/include/__clang_cuda_math.h +2 -2
  6. package/lib/clang/{17 → 18}/include/__clang_cuda_runtime_wrapper.h +2 -2
  7. package/lib/clang/{17 → 18}/include/__clang_hip_math.h +192 -171
  8. package/lib/clang/{17 → 18}/include/__clang_hip_runtime_wrapper.h +34 -26
  9. package/lib/clang/18/include/__stdarg___gnuc_va_list.h +13 -0
  10. package/lib/clang/18/include/__stdarg___va_copy.h +12 -0
  11. package/lib/clang/18/include/__stdarg_va_arg.h +22 -0
  12. package/lib/clang/18/include/__stdarg_va_copy.h +12 -0
  13. package/lib/clang/18/include/__stdarg_va_list.h +13 -0
  14. package/lib/clang/{17 → 18}/include/__stddef_max_align_t.h +1 -1
  15. package/lib/clang/18/include/__stddef_null.h +29 -0
  16. package/lib/clang/18/include/__stddef_nullptr_t.h +29 -0
  17. package/lib/clang/18/include/__stddef_offsetof.h +17 -0
  18. package/lib/clang/18/include/__stddef_ptrdiff_t.h +20 -0
  19. package/lib/clang/18/include/__stddef_rsize_t.h +20 -0
  20. package/lib/clang/18/include/__stddef_size_t.h +20 -0
  21. package/lib/clang/18/include/__stddef_unreachable.h +21 -0
  22. package/lib/clang/18/include/__stddef_wchar_t.h +28 -0
  23. package/lib/clang/18/include/__stddef_wint_t.h +15 -0
  24. package/lib/clang/{17/include/adxintrin.h → 18/include/adcintrin.h} +27 -94
  25. package/lib/clang/18/include/adxintrin.h +102 -0
  26. package/lib/clang/{17 → 18}/include/altivec.h +31 -12
  27. package/lib/clang/{17 → 18}/include/ammintrin.h +4 -4
  28. package/lib/clang/{17 → 18}/include/arm_acle.h +111 -31
  29. package/lib/clang/{17 → 18}/include/arm_neon.h +85 -327
  30. package/lib/clang/18/include/arm_sme.h +2412 -0
  31. package/lib/clang/{17 → 18}/include/arm_sve.h +7386 -351
  32. package/lib/clang/18/include/arm_vector_types.h +345 -0
  33. package/lib/clang/{17 → 18}/include/avx2intrin.h +24 -3
  34. package/lib/clang/{17 → 18}/include/avx512bf16intrin.h +3 -2
  35. package/lib/clang/{17 → 18}/include/avx512bitalgintrin.h +4 -1
  36. package/lib/clang/{17 → 18}/include/avx512bwintrin.h +28 -38
  37. package/lib/clang/{17 → 18}/include/avx512cdintrin.h +3 -1
  38. package/lib/clang/{17 → 18}/include/avx512dqintrin.h +4 -2
  39. package/lib/clang/{17 → 18}/include/avx512fintrin.h +7 -3
  40. package/lib/clang/{17 → 18}/include/avx512fp16intrin.h +6 -4
  41. package/lib/clang/{17 → 18}/include/avx512ifmaintrin.h +3 -1
  42. package/lib/clang/{17 → 18}/include/avx512ifmavlintrin.h +8 -2
  43. package/lib/clang/{17 → 18}/include/avx512pfintrin.h +0 -5
  44. package/lib/clang/{17 → 18}/include/avx512vbmi2intrin.h +1 -1
  45. package/lib/clang/{17 → 18}/include/avx512vbmiintrin.h +3 -2
  46. package/lib/clang/{17 → 18}/include/avx512vbmivlintrin.h +8 -3
  47. package/lib/clang/{17 → 18}/include/avx512vlbf16intrin.h +8 -6
  48. package/lib/clang/{17 → 18}/include/avx512vlbitalgintrin.h +8 -2
  49. package/lib/clang/{17 → 18}/include/avx512vlbwintrin.h +8 -2
  50. package/lib/clang/{17 → 18}/include/avx512vlcdintrin.h +8 -3
  51. package/lib/clang/{17 → 18}/include/avx512vldqintrin.h +8 -2
  52. package/lib/clang/{17 → 18}/include/avx512vlfp16intrin.h +2 -2
  53. package/lib/clang/{17 → 18}/include/avx512vlintrin.h +8 -2
  54. package/lib/clang/{17 → 18}/include/avx512vlvbmi2intrin.h +8 -2
  55. package/lib/clang/{17 → 18}/include/avx512vlvnniintrin.h +8 -2
  56. package/lib/clang/{17 → 18}/include/avx512vlvp2intersectintrin.h +6 -4
  57. package/lib/clang/{17 → 18}/include/avx512vnniintrin.h +3 -2
  58. package/lib/clang/{17 → 18}/include/avx512vp2intersectintrin.h +3 -2
  59. package/lib/clang/{17 → 18}/include/avx512vpopcntdqintrin.h +3 -1
  60. package/lib/clang/{17 → 18}/include/avx512vpopcntdqvlintrin.h +6 -2
  61. package/lib/clang/{17 → 18}/include/avxintrin.h +9 -5
  62. package/lib/clang/{17 → 18}/include/bmiintrin.h +231 -46
  63. package/lib/clang/{17 → 18}/include/emmintrin.h +10 -10
  64. package/lib/clang/{17 → 18}/include/gfniintrin.h +23 -6
  65. package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +624 -0
  66. package/lib/clang/18/include/ia32intrin.h +863 -0
  67. package/lib/clang/{17 → 18}/include/immintrin.h +66 -3
  68. package/lib/clang/{17 → 18}/include/intrin.h +16 -0
  69. package/lib/clang/{17 → 18}/include/larchintrin.h +13 -1
  70. package/lib/clang/18/include/lasxintrin.h +3884 -0
  71. package/lib/clang/{17 → 18}/include/limits.h +2 -4
  72. package/lib/clang/{17/include/llvm_libc_wrappers/stdio.h → 18/include/llvm_libc_wrappers/assert.h} +7 -7
  73. package/lib/clang/{17 → 18}/include/llvm_libc_wrappers/ctype.h +17 -0
  74. package/lib/clang/18/include/llvm_libc_wrappers/stdio.h +80 -0
  75. package/lib/clang/{17 → 18}/include/llvm_libc_wrappers/stdlib.h +4 -1
  76. package/lib/clang/18/include/llvm_libc_wrappers/string.h +96 -0
  77. package/lib/clang/{17/include/llvm_libc_wrappers/string.h → 18/include/llvm_libc_wrappers/time.h} +9 -12
  78. package/lib/clang/18/include/lsxintrin.h +3750 -0
  79. package/lib/clang/{17 → 18}/include/mmintrin.h +7 -5
  80. package/lib/clang/{17 → 18}/include/module.modulemap +155 -2
  81. package/lib/clang/{17 → 18}/include/opencl-c-base.h +5 -0
  82. package/lib/clang/{17 → 18}/include/openmp_wrappers/cmath +1 -1
  83. package/lib/clang/{17 → 18}/include/pmmintrin.h +3 -2
  84. package/lib/clang/18/include/ppc_wrappers/nmmintrin.h +26 -0
  85. package/lib/clang/{17 → 18}/include/ppc_wrappers/smmintrin.h +35 -15
  86. package/lib/clang/18/include/riscv_bitmanip.h +195 -0
  87. package/lib/clang/18/include/riscv_crypto.h +170 -0
  88. package/lib/clang/{17 → 18}/include/riscv_ntlh.h +3 -5
  89. package/lib/clang/{17 → 18}/include/riscv_vector.h +31 -0
  90. package/lib/clang/{17 → 18}/include/smmintrin.h +3 -3
  91. package/lib/clang/{17 → 18}/include/stdalign.h +1 -3
  92. package/lib/clang/18/include/stdarg.h +79 -0
  93. package/lib/clang/{17 → 18}/include/stdatomic.h +3 -5
  94. package/lib/clang/18/include/stdckdint.h +42 -0
  95. package/lib/clang/18/include/stddef.h +123 -0
  96. package/lib/clang/{17 → 18}/include/stdint.h +19 -48
  97. package/lib/clang/{17 → 18}/include/stdnoreturn.h +2 -2
  98. package/lib/clang/{17 → 18}/include/tmmintrin.h +7 -2
  99. package/lib/clang/18/include/usermsrintrin.h +51 -0
  100. package/lib/clang/{17 → 18}/include/vaesintrin.h +4 -2
  101. package/lib/clang/{17 → 18}/include/vecintrin.h +217 -199
  102. package/lib/clang/{17 → 18}/include/x86gprintrin.h +5 -0
  103. package/lib/clang/{17 → 18}/include/xmmintrin.h +9 -5
  104. package/package.json +6 -6
  105. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +0 -642
  106. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +0 -480
  107. package/lib/clang/17/include/ia32intrin.h +0 -441
  108. package/lib/clang/17/include/stdarg.h +0 -51
  109. package/lib/clang/17/include/stddef.h +0 -133
  110. /package/lib/clang/{17 → 18}/include/__clang_cuda_builtin_vars.h +0 -0
  111. /package/lib/clang/{17 → 18}/include/__clang_cuda_cmath.h +0 -0
  112. /package/lib/clang/{17 → 18}/include/__clang_cuda_complex_builtins.h +0 -0
  113. /package/lib/clang/{17 → 18}/include/__clang_cuda_intrinsics.h +0 -0
  114. /package/lib/clang/{17 → 18}/include/__clang_cuda_math_forward_declares.h +0 -0
  115. /package/lib/clang/{17 → 18}/include/__clang_cuda_texture_intrinsics.h +0 -0
  116. /package/lib/clang/{17 → 18}/include/__clang_hip_cmath.h +0 -0
  117. /package/lib/clang/{17 → 18}/include/__clang_hip_libdevice_declares.h +0 -0
  118. /package/lib/clang/{17 → 18}/include/__clang_hip_stdlib.h +0 -0
  119. /package/lib/clang/{17 → 18}/include/__wmmintrin_aes.h +0 -0
  120. /package/lib/clang/{17 → 18}/include/__wmmintrin_pclmul.h +0 -0
  121. /package/lib/clang/{17 → 18}/include/amxcomplexintrin.h +0 -0
  122. /package/lib/clang/{17 → 18}/include/amxfp16intrin.h +0 -0
  123. /package/lib/clang/{17 → 18}/include/amxintrin.h +0 -0
  124. /package/lib/clang/{17 → 18}/include/arm64intr.h +0 -0
  125. /package/lib/clang/{17 → 18}/include/arm_bf16.h +0 -0
  126. /package/lib/clang/{17 → 18}/include/arm_cde.h +0 -0
  127. /package/lib/clang/{17 → 18}/include/arm_cmse.h +0 -0
  128. /package/lib/clang/{17 → 18}/include/arm_fp16.h +0 -0
  129. /package/lib/clang/{17 → 18}/include/arm_mve.h +0 -0
  130. /package/lib/clang/{17 → 18}/include/arm_neon_sve_bridge.h +0 -0
  131. /package/lib/clang/{17 → 18}/include/armintr.h +0 -0
  132. /package/lib/clang/{17 → 18}/include/avx512erintrin.h +0 -0
  133. /package/lib/clang/{17 → 18}/include/avxifmaintrin.h +0 -0
  134. /package/lib/clang/{17 → 18}/include/avxneconvertintrin.h +0 -0
  135. /package/lib/clang/{17 → 18}/include/avxvnniint16intrin.h +0 -0
  136. /package/lib/clang/{17 → 18}/include/avxvnniint8intrin.h +0 -0
  137. /package/lib/clang/{17 → 18}/include/avxvnniintrin.h +0 -0
  138. /package/lib/clang/{17 → 18}/include/bmi2intrin.h +0 -0
  139. /package/lib/clang/{17 → 18}/include/builtins.h +0 -0
  140. /package/lib/clang/{17 → 18}/include/cet.h +0 -0
  141. /package/lib/clang/{17 → 18}/include/cetintrin.h +0 -0
  142. /package/lib/clang/{17 → 18}/include/cldemoteintrin.h +0 -0
  143. /package/lib/clang/{17 → 18}/include/clflushoptintrin.h +0 -0
  144. /package/lib/clang/{17 → 18}/include/clwbintrin.h +0 -0
  145. /package/lib/clang/{17 → 18}/include/clzerointrin.h +0 -0
  146. /package/lib/clang/{17 → 18}/include/cmpccxaddintrin.h +0 -0
  147. /package/lib/clang/{17 → 18}/include/cpuid.h +0 -0
  148. /package/lib/clang/{17 → 18}/include/crc32intrin.h +0 -0
  149. /package/lib/clang/{17 → 18}/include/cuda_wrappers/algorithm +0 -0
  150. /package/lib/clang/{17 → 18}/include/cuda_wrappers/bits/basic_string.h +0 -0
  151. /package/lib/clang/{17 → 18}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  152. /package/lib/clang/{17 → 18}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  153. /package/lib/clang/{17 → 18}/include/cuda_wrappers/cmath +0 -0
  154. /package/lib/clang/{17 → 18}/include/cuda_wrappers/complex +0 -0
  155. /package/lib/clang/{17 → 18}/include/cuda_wrappers/new +0 -0
  156. /package/lib/clang/{17 → 18}/include/enqcmdintrin.h +0 -0
  157. /package/lib/clang/{17 → 18}/include/f16cintrin.h +0 -0
  158. /package/lib/clang/{17 → 18}/include/float.h +0 -0
  159. /package/lib/clang/{17 → 18}/include/fma4intrin.h +0 -0
  160. /package/lib/clang/{17 → 18}/include/fmaintrin.h +0 -0
  161. /package/lib/clang/{17 → 18}/include/fxsrintrin.h +0 -0
  162. /package/lib/clang/{17 → 18}/include/hexagon_circ_brev_intrinsics.h +0 -0
  163. /package/lib/clang/{17 → 18}/include/hexagon_protos.h +0 -0
  164. /package/lib/clang/{17 → 18}/include/hexagon_types.h +0 -0
  165. /package/lib/clang/{17 → 18}/include/hlsl/hlsl_basic_types.h +0 -0
  166. /package/lib/clang/{17 → 18}/include/hlsl.h +0 -0
  167. /package/lib/clang/{17 → 18}/include/hresetintrin.h +0 -0
  168. /package/lib/clang/{17 → 18}/include/htmintrin.h +0 -0
  169. /package/lib/clang/{17 → 18}/include/htmxlintrin.h +0 -0
  170. /package/lib/clang/{17 → 18}/include/hvx_hexagon_protos.h +0 -0
  171. /package/lib/clang/{17 → 18}/include/inttypes.h +0 -0
  172. /package/lib/clang/{17 → 18}/include/invpcidintrin.h +0 -0
  173. /package/lib/clang/{17 → 18}/include/iso646.h +0 -0
  174. /package/lib/clang/{17 → 18}/include/keylockerintrin.h +0 -0
  175. /package/lib/clang/{17 → 18}/include/llvm_libc_wrappers/inttypes.h +0 -0
  176. /package/lib/clang/{17 → 18}/include/lwpintrin.h +0 -0
  177. /package/lib/clang/{17 → 18}/include/lzcntintrin.h +0 -0
  178. /package/lib/clang/{17 → 18}/include/mm3dnow.h +0 -0
  179. /package/lib/clang/{17 → 18}/include/mm_malloc.h +0 -0
  180. /package/lib/clang/{17 → 18}/include/movdirintrin.h +0 -0
  181. /package/lib/clang/{17 → 18}/include/msa.h +0 -0
  182. /package/lib/clang/{17 → 18}/include/mwaitxintrin.h +0 -0
  183. /package/lib/clang/{17 → 18}/include/nmmintrin.h +0 -0
  184. /package/lib/clang/{17 → 18}/include/opencl-c.h +0 -0
  185. /package/lib/clang/{17 → 18}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  186. /package/lib/clang/{17 → 18}/include/openmp_wrappers/complex +0 -0
  187. /package/lib/clang/{17 → 18}/include/openmp_wrappers/complex.h +0 -0
  188. /package/lib/clang/{17 → 18}/include/openmp_wrappers/complex_cmath.h +0 -0
  189. /package/lib/clang/{17 → 18}/include/openmp_wrappers/math.h +0 -0
  190. /package/lib/clang/{17 → 18}/include/openmp_wrappers/new +0 -0
  191. /package/lib/clang/{17 → 18}/include/pconfigintrin.h +0 -0
  192. /package/lib/clang/{17 → 18}/include/pkuintrin.h +0 -0
  193. /package/lib/clang/{17 → 18}/include/popcntintrin.h +0 -0
  194. /package/lib/clang/{17 → 18}/include/ppc_wrappers/bmi2intrin.h +0 -0
  195. /package/lib/clang/{17 → 18}/include/ppc_wrappers/bmiintrin.h +0 -0
  196. /package/lib/clang/{17 → 18}/include/ppc_wrappers/emmintrin.h +0 -0
  197. /package/lib/clang/{17 → 18}/include/ppc_wrappers/immintrin.h +0 -0
  198. /package/lib/clang/{17 → 18}/include/ppc_wrappers/mm_malloc.h +0 -0
  199. /package/lib/clang/{17 → 18}/include/ppc_wrappers/mmintrin.h +0 -0
  200. /package/lib/clang/{17 → 18}/include/ppc_wrappers/pmmintrin.h +0 -0
  201. /package/lib/clang/{17 → 18}/include/ppc_wrappers/tmmintrin.h +0 -0
  202. /package/lib/clang/{17 → 18}/include/ppc_wrappers/x86gprintrin.h +0 -0
  203. /package/lib/clang/{17 → 18}/include/ppc_wrappers/x86intrin.h +0 -0
  204. /package/lib/clang/{17 → 18}/include/ppc_wrappers/xmmintrin.h +0 -0
  205. /package/lib/clang/{17 → 18}/include/prfchiintrin.h +0 -0
  206. /package/lib/clang/{17 → 18}/include/prfchwintrin.h +0 -0
  207. /package/lib/clang/{17 → 18}/include/ptwriteintrin.h +0 -0
  208. /package/lib/clang/{17 → 18}/include/raointintrin.h +0 -0
  209. /package/lib/clang/{17 → 18}/include/rdpruintrin.h +0 -0
  210. /package/lib/clang/{17 → 18}/include/rdseedintrin.h +0 -0
  211. /package/lib/clang/{17 → 18}/include/rtmintrin.h +0 -0
  212. /package/lib/clang/{17 → 18}/include/s390intrin.h +0 -0
  213. /package/lib/clang/{17 → 18}/include/serializeintrin.h +0 -0
  214. /package/lib/clang/{17 → 18}/include/sgxintrin.h +0 -0
  215. /package/lib/clang/{17 → 18}/include/sha512intrin.h +0 -0
  216. /package/lib/clang/{17 → 18}/include/shaintrin.h +0 -0
  217. /package/lib/clang/{17 → 18}/include/sifive_vector.h +0 -0
  218. /package/lib/clang/{17 → 18}/include/sm3intrin.h +0 -0
  219. /package/lib/clang/{17 → 18}/include/sm4intrin.h +0 -0
  220. /package/lib/clang/{17 → 18}/include/stdbool.h +0 -0
  221. /package/lib/clang/{17 → 18}/include/tbmintrin.h +0 -0
  222. /package/lib/clang/{17 → 18}/include/tgmath.h +0 -0
  223. /package/lib/clang/{17 → 18}/include/tsxldtrkintrin.h +0 -0
  224. /package/lib/clang/{17 → 18}/include/uintrintrin.h +0 -0
  225. /package/lib/clang/{17 → 18}/include/unwind.h +0 -0
  226. /package/lib/clang/{17 → 18}/include/vadefs.h +0 -0
  227. /package/lib/clang/{17 → 18}/include/varargs.h +0 -0
  228. /package/lib/clang/{17 → 18}/include/velintrin.h +0 -0
  229. /package/lib/clang/{17 → 18}/include/velintrin_approx.h +0 -0
  230. /package/lib/clang/{17 → 18}/include/velintrin_gen.h +0 -0
  231. /package/lib/clang/{17 → 18}/include/vpclmulqdqintrin.h +0 -0
  232. /package/lib/clang/{17 → 18}/include/waitpkgintrin.h +0 -0
  233. /package/lib/clang/{17 → 18}/include/wasm_simd128.h +0 -0
  234. /package/lib/clang/{17 → 18}/include/wbnoinvdintrin.h +0 -0
  235. /package/lib/clang/{17 → 18}/include/wmmintrin.h +0 -0
  236. /package/lib/clang/{17 → 18}/include/x86intrin.h +0 -0
  237. /package/lib/clang/{17 → 18}/include/xopintrin.h +0 -0
  238. /package/lib/clang/{17 → 18}/include/xsavecintrin.h +0 -0
  239. /package/lib/clang/{17 → 18}/include/xsaveintrin.h +0 -0
  240. /package/lib/clang/{17 → 18}/include/xsaveoptintrin.h +0 -0
  241. /package/lib/clang/{17 → 18}/include/xsavesintrin.h +0 -0
  242. /package/lib/clang/{17 → 18}/include/xtestintrin.h +0 -0
@@ -0,0 +1,22 @@
1
+ /*===---- __stdarg_va_arg.h - Definitions of va_start, va_arg, va_end-------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef va_arg
11
+
12
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
13
+ /* C23 does not require the second parameter for va_start. */
14
+ #define va_start(ap, ...) __builtin_va_start(ap, 0)
15
+ #else
16
+ /* Versions before C23 do require the second parameter. */
17
+ #define va_start(ap, param) __builtin_va_start(ap, param)
18
+ #endif
19
+ #define va_end(ap) __builtin_va_end(ap)
20
+ #define va_arg(ap, type) __builtin_va_arg(ap, type)
21
+
22
+ #endif
@@ -0,0 +1,12 @@
1
+ /*===---- __stdarg_va_copy.h - Definition of va_copy------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef va_copy
11
+ #define va_copy(dest, src) __builtin_va_copy(dest, src)
12
+ #endif
@@ -0,0 +1,13 @@
1
+ /*===---- __stdarg_va_list.h - Definition of va_list -----------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef _VA_LIST
11
+ #define _VA_LIST
12
+ typedef __builtin_va_list va_list;
13
+ #endif
@@ -1,4 +1,4 @@
1
- /*===---- __stddef_max_align_t.h - Definition of max_align_t for modules ---===
1
+ /*===---- __stddef_max_align_t.h - Definition of max_align_t ---------------===
2
2
  *
3
3
  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
4
  * See https://llvm.org/LICENSE.txt for license information.
@@ -0,0 +1,29 @@
1
+ /*===---- __stddef_null.h - Definition of NULL -----------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #if !defined(NULL) || !__building_module(_Builtin_stddef)
11
+
12
+ /* linux/stddef.h will define NULL to 0. glibc (and other) headers then define
13
+ * __need_NULL and rely on stddef.h to redefine NULL to the correct value again.
14
+ * Modules don't support redefining macros like that, but support that pattern
15
+ * in the non-modules case.
16
+ */
17
+ #undef NULL
18
+
19
+ #ifdef __cplusplus
20
+ #if !defined(__MINGW32__) && !defined(_MSC_VER)
21
+ #define NULL __null
22
+ #else
23
+ #define NULL 0
24
+ #endif
25
+ #else
26
+ #define NULL ((void*)0)
27
+ #endif
28
+
29
+ #endif
@@ -0,0 +1,29 @@
1
+ /*===---- __stddef_nullptr_t.h - Definition of nullptr_t -------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ /*
11
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
12
+ * and needs to behave as if it was textual.
13
+ */
14
+ #if !defined(_NULLPTR_T) || \
15
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
16
+ #define _NULLPTR_T
17
+
18
+ #ifdef __cplusplus
19
+ #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED)
20
+ namespace std {
21
+ typedef decltype(nullptr) nullptr_t;
22
+ }
23
+ using ::std::nullptr_t;
24
+ #endif
25
+ #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
26
+ typedef typeof(nullptr) nullptr_t;
27
+ #endif
28
+
29
+ #endif
@@ -0,0 +1,17 @@
1
+ /*===---- __stddef_offsetof.h - Definition of offsetof ---------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ /*
11
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
12
+ * and needs to behave as if it was textual.
13
+ */
14
+ #if !defined(offsetof) || \
15
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
16
+ #define offsetof(t, d) __builtin_offsetof(t, d)
17
+ #endif
@@ -0,0 +1,20 @@
1
+ /*===---- __stddef_ptrdiff_t.h - Definition of ptrdiff_t -------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ /*
11
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
12
+ * and needs to behave as if it was textual.
13
+ */
14
+ #if !defined(_PTRDIFF_T) || \
15
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
16
+ #define _PTRDIFF_T
17
+
18
+ typedef __PTRDIFF_TYPE__ ptrdiff_t;
19
+
20
+ #endif
@@ -0,0 +1,20 @@
1
+ /*===---- __stddef_rsize_t.h - Definition of rsize_t -----------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ /*
11
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
12
+ * and needs to behave as if it was textual.
13
+ */
14
+ #if !defined(_RSIZE_T) || \
15
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
16
+ #define _RSIZE_T
17
+
18
+ typedef __SIZE_TYPE__ rsize_t;
19
+
20
+ #endif
@@ -0,0 +1,20 @@
1
+ /*===---- __stddef_size_t.h - Definition of size_t -------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ /*
11
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
12
+ * and needs to behave as if it was textual.
13
+ */
14
+ #if !defined(_SIZE_T) || \
15
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
16
+ #define _SIZE_T
17
+
18
+ typedef __SIZE_TYPE__ size_t;
19
+
20
+ #endif
@@ -0,0 +1,21 @@
1
+ /*===---- __stddef_unreachable.h - Definition of unreachable ---------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef __cplusplus
11
+
12
+ /*
13
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
14
+ * and needs to behave as if it was textual.
15
+ */
16
+ #if !defined(unreachable) || \
17
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
18
+ #define unreachable() __builtin_unreachable()
19
+ #endif
20
+
21
+ #endif
@@ -0,0 +1,28 @@
1
+ /*===---- __stddef_wchar.h - Definition of wchar_t -------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #if !defined(__cplusplus) || (defined(_MSC_VER) && !_NATIVE_WCHAR_T_DEFINED)
11
+
12
+ /*
13
+ * When -fbuiltin-headers-in-system-modules is set this is a non-modular header
14
+ * and needs to behave as if it was textual.
15
+ */
16
+ #if !defined(_WCHAR_T) || \
17
+ (__has_feature(modules) && !__building_module(_Builtin_stddef))
18
+ #define _WCHAR_T
19
+
20
+ #ifdef _MSC_EXTENSIONS
21
+ #define _WCHAR_T_DEFINED
22
+ #endif
23
+
24
+ typedef __WCHAR_TYPE__ wchar_t;
25
+
26
+ #endif
27
+
28
+ #endif
@@ -0,0 +1,15 @@
1
+ /*===---- __stddef_wint.h - Definition of wint_t ---------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef _WINT_T
11
+ #define _WINT_T
12
+
13
+ typedef __WINT_TYPE__ wint_t;
14
+
15
+ #endif
@@ -1,4 +1,4 @@
1
- /*===---- adxintrin.h - ADX intrinsics -------------------------------------===
1
+ /*===---- adcintrin.h - ADC intrinsics -------------------------------------===
2
2
  *
3
3
  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
4
  * See https://llvm.org/LICENSE.txt for license information.
@@ -7,12 +7,12 @@
7
7
  *===-----------------------------------------------------------------------===
8
8
  */
9
9
 
10
- #ifndef __IMMINTRIN_H
11
- #error "Never use <adxintrin.h> directly; include <immintrin.h> instead."
12
- #endif
10
+ #ifndef __ADCINTRIN_H
11
+ #define __ADCINTRIN_H
13
12
 
14
- #ifndef __ADXINTRIN_H
15
- #define __ADXINTRIN_H
13
+ #if !defined(__i386__) && !defined(__x86_64__)
14
+ #error "This header is only meant to be used on x86 and x64 architecture"
15
+ #endif
16
16
 
17
17
  /* Define the default attributes for the functions in this file. */
18
18
  #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
@@ -28,8 +28,6 @@
28
28
  extern "C" {
29
29
  #endif
30
30
 
31
- /* Intrinsics that are available only if __ADX__ is defined. */
32
-
33
31
  /// Adds unsigned 32-bit integers \a __x and \a __y, plus 0 or 1 as indicated
34
32
  /// by the carry flag \a __cf. Stores the unsigned 32-bit sum in the memory
35
33
  /// at \a __p, and returns the 8-bit carry-out (carry flag).
@@ -42,7 +40,7 @@ extern "C" {
42
40
  ///
43
41
  /// \headerfile <immintrin.h>
44
42
  ///
45
- /// This intrinsic corresponds to the \c ADCX instruction.
43
+ /// This intrinsic corresponds to the \c ADC instruction.
46
44
  ///
47
45
  /// \param __cf
48
46
  /// The 8-bit unsigned carry flag; any non-zero value indicates carry.
@@ -53,75 +51,42 @@ extern "C" {
53
51
  /// \param __p
54
52
  /// Pointer to memory for storing the sum.
55
53
  /// \returns The 8-bit unsigned carry-out value.
56
- __INLINE unsigned char
57
- __attribute__((__always_inline__, __nodebug__, __target__("adx")))
58
- _addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y,
59
- unsigned int *__p) {
54
+ __INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u32(unsigned char __cf,
55
+ unsigned int __x,
56
+ unsigned int __y,
57
+ unsigned int *__p) {
60
58
  return __builtin_ia32_addcarryx_u32(__cf, __x, __y, __p);
61
59
  }
62
60
 
63
- #ifdef __x86_64__
64
- /// Adds unsigned 64-bit integers \a __x and \a __y, plus 0 or 1 as indicated
65
- /// by the carry flag \a __cf. Stores the unsigned 64-bit sum in the memory
66
- /// at \a __p, and returns the 8-bit carry-out (carry flag).
67
- ///
68
- /// \code{.operation}
69
- /// temp := (__cf == 0) ? 0 : 1
70
- /// Store64(__p, __x + __y + temp)
71
- /// result := CF
72
- /// \endcode
73
- ///
74
- /// \headerfile <immintrin.h>
75
- ///
76
- /// This intrinsic corresponds to the \c ADCX instruction.
77
- ///
78
- /// \param __cf
79
- /// The 8-bit unsigned carry flag; any non-zero value indicates carry.
80
- /// \param __x
81
- /// A 64-bit unsigned addend.
82
- /// \param __y
83
- /// A 64-bit unsigned addend.
84
- /// \param __p
85
- /// Pointer to memory for storing the sum.
86
- /// \returns The 8-bit unsigned carry-out value.
87
- __INLINE unsigned char
88
- __attribute__((__always_inline__, __nodebug__, __target__("adx")))
89
- _addcarryx_u64(unsigned char __cf, unsigned long long __x,
90
- unsigned long long __y, unsigned long long *__p) {
91
- return __builtin_ia32_addcarryx_u64(__cf, __x, __y, __p);
92
- }
93
- #endif
94
-
95
- /* Intrinsics that are also available if __ADX__ is undefined. */
96
-
97
- /// Adds unsigned 32-bit integers \a __x and \a __y, plus 0 or 1 as indicated
98
- /// by the carry flag \a __cf. Stores the unsigned 32-bit sum in the memory
99
- /// at \a __p, and returns the 8-bit carry-out (carry flag).
61
+ /// Adds unsigned 32-bit integer \a __y to 0 or 1 as indicated by the carry
62
+ /// flag \a __cf, and subtracts the result from unsigned 32-bit integer
63
+ /// \a __x. Stores the unsigned 32-bit difference in the memory at \a __p,
64
+ /// and returns the 8-bit carry-out (carry or overflow flag).
100
65
  ///
101
66
  /// \code{.operation}
102
67
  /// temp := (__cf == 0) ? 0 : 1
103
- /// Store32(__p, __x + __y + temp)
68
+ /// Store32(__p, __x - (__y + temp))
104
69
  /// result := CF
105
70
  /// \endcode
106
71
  ///
107
72
  /// \headerfile <immintrin.h>
108
73
  ///
109
- /// This intrinsic corresponds to the \c ADC instruction.
74
+ /// This intrinsic corresponds to the \c SBB instruction.
110
75
  ///
111
76
  /// \param __cf
112
77
  /// The 8-bit unsigned carry flag; any non-zero value indicates carry.
113
78
  /// \param __x
114
- /// A 32-bit unsigned addend.
79
+ /// The 32-bit unsigned minuend.
115
80
  /// \param __y
116
- /// A 32-bit unsigned addend.
81
+ /// The 32-bit unsigned subtrahend.
117
82
  /// \param __p
118
- /// Pointer to memory for storing the sum.
83
+ /// Pointer to memory for storing the difference.
119
84
  /// \returns The 8-bit unsigned carry-out value.
120
- __INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u32(unsigned char __cf,
121
- unsigned int __x,
122
- unsigned int __y,
123
- unsigned int *__p) {
124
- return __builtin_ia32_addcarryx_u32(__cf, __x, __y, __p);
85
+ __INLINE unsigned char __DEFAULT_FN_ATTRS _subborrow_u32(unsigned char __cf,
86
+ unsigned int __x,
87
+ unsigned int __y,
88
+ unsigned int *__p) {
89
+ return __builtin_ia32_subborrow_u32(__cf, __x, __y, __p);
125
90
  }
126
91
 
127
92
  #ifdef __x86_64__
@@ -153,40 +118,7 @@ _addcarry_u64(unsigned char __cf, unsigned long long __x,
153
118
  unsigned long long __y, unsigned long long *__p) {
154
119
  return __builtin_ia32_addcarryx_u64(__cf, __x, __y, __p);
155
120
  }
156
- #endif
157
-
158
- /// Adds unsigned 32-bit integer \a __y to 0 or 1 as indicated by the carry
159
- /// flag \a __cf, and subtracts the result from unsigned 32-bit integer
160
- /// \a __x. Stores the unsigned 32-bit difference in the memory at \a __p,
161
- /// and returns the 8-bit carry-out (carry or overflow flag).
162
- ///
163
- /// \code{.operation}
164
- /// temp := (__cf == 0) ? 0 : 1
165
- /// Store32(__p, __x - (__y + temp))
166
- /// result := CF
167
- /// \endcode
168
- ///
169
- /// \headerfile <immintrin.h>
170
- ///
171
- /// This intrinsic corresponds to the \c SBB instruction.
172
- ///
173
- /// \param __cf
174
- /// The 8-bit unsigned carry flag; any non-zero value indicates carry.
175
- /// \param __x
176
- /// The 32-bit unsigned minuend.
177
- /// \param __y
178
- /// The 32-bit unsigned subtrahend.
179
- /// \param __p
180
- /// Pointer to memory for storing the difference.
181
- /// \returns The 8-bit unsigned carry-out value.
182
- __INLINE unsigned char __DEFAULT_FN_ATTRS _subborrow_u32(unsigned char __cf,
183
- unsigned int __x,
184
- unsigned int __y,
185
- unsigned int *__p) {
186
- return __builtin_ia32_subborrow_u32(__cf, __x, __y, __p);
187
- }
188
121
 
189
- #ifdef __x86_64__
190
122
  /// Adds unsigned 64-bit integer \a __y to 0 or 1 as indicated by the carry
191
123
  /// flag \a __cf, and subtracts the result from unsigned 64-bit integer
192
124
  /// \a __x. Stores the unsigned 64-bit difference in the memory at \a __p,
@@ -222,6 +154,7 @@ _subborrow_u64(unsigned char __cf, unsigned long long __x,
222
154
  }
223
155
  #endif
224
156
 
157
+ #undef __INLINE
225
158
  #undef __DEFAULT_FN_ATTRS
226
159
 
227
- #endif /* __ADXINTRIN_H */
160
+ #endif /* __ADCINTRIN_H */
@@ -0,0 +1,102 @@
1
+ /*===---- adxintrin.h - ADX intrinsics -------------------------------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <adxintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __ADXINTRIN_H
15
+ #define __ADXINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("adx")))
20
+
21
+ /* Use C++ inline semantics in C++, GNU inline for C mode. */
22
+ #if defined(__cplusplus)
23
+ #define __INLINE __inline
24
+ #else
25
+ #define __INLINE static __inline
26
+ #endif
27
+
28
+ #if defined(__cplusplus)
29
+ extern "C" {
30
+ #endif
31
+
32
+ /* Intrinsics that are available only if __ADX__ is defined. */
33
+
34
+ /// Adds unsigned 32-bit integers \a __x and \a __y, plus 0 or 1 as indicated
35
+ /// by the carry flag \a __cf. Stores the unsigned 32-bit sum in the memory
36
+ /// at \a __p, and returns the 8-bit carry-out (carry flag).
37
+ ///
38
+ /// \code{.operation}
39
+ /// temp := (__cf == 0) ? 0 : 1
40
+ /// Store32(__p, __x + __y + temp)
41
+ /// result := CF
42
+ /// \endcode
43
+ ///
44
+ /// \headerfile <immintrin.h>
45
+ ///
46
+ /// This intrinsic corresponds to the \c ADCX instruction.
47
+ ///
48
+ /// \param __cf
49
+ /// The 8-bit unsigned carry flag; any non-zero value indicates carry.
50
+ /// \param __x
51
+ /// A 32-bit unsigned addend.
52
+ /// \param __y
53
+ /// A 32-bit unsigned addend.
54
+ /// \param __p
55
+ /// Pointer to memory for storing the sum.
56
+ /// \returns The 8-bit unsigned carry-out value.
57
+ __INLINE unsigned char __DEFAULT_FN_ATTRS _addcarryx_u32(unsigned char __cf,
58
+ unsigned int __x,
59
+ unsigned int __y,
60
+ unsigned int *__p) {
61
+ return __builtin_ia32_addcarryx_u32(__cf, __x, __y, __p);
62
+ }
63
+
64
+ #ifdef __x86_64__
65
+ /// Adds unsigned 64-bit integers \a __x and \a __y, plus 0 or 1 as indicated
66
+ /// by the carry flag \a __cf. Stores the unsigned 64-bit sum in the memory
67
+ /// at \a __p, and returns the 8-bit carry-out (carry flag).
68
+ ///
69
+ /// \code{.operation}
70
+ /// temp := (__cf == 0) ? 0 : 1
71
+ /// Store64(__p, __x + __y + temp)
72
+ /// result := CF
73
+ /// \endcode
74
+ ///
75
+ /// \headerfile <immintrin.h>
76
+ ///
77
+ /// This intrinsic corresponds to the \c ADCX instruction.
78
+ ///
79
+ /// \param __cf
80
+ /// The 8-bit unsigned carry flag; any non-zero value indicates carry.
81
+ /// \param __x
82
+ /// A 64-bit unsigned addend.
83
+ /// \param __y
84
+ /// A 64-bit unsigned addend.
85
+ /// \param __p
86
+ /// Pointer to memory for storing the sum.
87
+ /// \returns The 8-bit unsigned carry-out value.
88
+ __INLINE unsigned char __DEFAULT_FN_ATTRS
89
+ _addcarryx_u64(unsigned char __cf, unsigned long long __x,
90
+ unsigned long long __y, unsigned long long *__p) {
91
+ return __builtin_ia32_addcarryx_u64(__cf, __x, __y, __p);
92
+ }
93
+ #endif
94
+
95
+ #if defined(__cplusplus)
96
+ }
97
+ #endif
98
+
99
+ #undef __INLINE
100
+ #undef __DEFAULT_FN_ATTRS
101
+
102
+ #endif /* __ADXINTRIN_H */
@@ -14647,67 +14647,86 @@ static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
14647
14647
 
14648
14648
  static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
14649
14649
  int __b) {
14650
- vector signed char __res = (vector signed char)(0);
14651
- __res[__b & 0x7] = __a;
14650
+ const vector signed char __zero = (vector signed char)0;
14651
+ vector signed char __res =
14652
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1,
14653
+ -1, -1, -1, -1, -1, -1, -1, -1);
14654
+ __res[__b & 0xf] = __a;
14652
14655
  return __res;
14653
14656
  }
14654
14657
 
14655
14658
  static __inline__ vector unsigned char __ATTRS_o_ai
14656
14659
  vec_promote(unsigned char __a, int __b) {
14657
- vector unsigned char __res = (vector unsigned char)(0);
14658
- __res[__b & 0x7] = __a;
14660
+ const vector unsigned char __zero = (vector unsigned char)(0);
14661
+ vector unsigned char __res =
14662
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1,
14663
+ -1, -1, -1, -1, -1, -1, -1, -1);
14664
+ __res[__b & 0xf] = __a;
14659
14665
  return __res;
14660
14666
  }
14661
14667
 
14662
14668
  static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
14663
- vector short __res = (vector short)(0);
14669
+ const vector short __zero = (vector short)(0);
14670
+ vector short __res =
14671
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1);
14664
14672
  __res[__b & 0x7] = __a;
14665
14673
  return __res;
14666
14674
  }
14667
14675
 
14668
14676
  static __inline__ vector unsigned short __ATTRS_o_ai
14669
14677
  vec_promote(unsigned short __a, int __b) {
14670
- vector unsigned short __res = (vector unsigned short)(0);
14678
+ const vector unsigned short __zero = (vector unsigned short)(0);
14679
+ vector unsigned short __res =
14680
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1);
14671
14681
  __res[__b & 0x7] = __a;
14672
14682
  return __res;
14673
14683
  }
14674
14684
 
14675
14685
  static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
14676
- vector int __res = (vector int)(0);
14686
+ const vector int __zero = (vector int)(0);
14687
+ vector int __res = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
14677
14688
  __res[__b & 0x3] = __a;
14678
14689
  return __res;
14679
14690
  }
14680
14691
 
14681
14692
  static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
14682
14693
  int __b) {
14683
- vector unsigned int __res = (vector unsigned int)(0);
14694
+ const vector unsigned int __zero = (vector unsigned int)(0);
14695
+ vector unsigned int __res =
14696
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
14684
14697
  __res[__b & 0x3] = __a;
14685
14698
  return __res;
14686
14699
  }
14687
14700
 
14688
14701
  static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
14689
- vector float __res = (vector float)(0);
14702
+ const vector float __zero = (vector float)(0);
14703
+ vector float __res = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
14690
14704
  __res[__b & 0x3] = __a;
14691
14705
  return __res;
14692
14706
  }
14693
14707
 
14694
14708
  #ifdef __VSX__
14695
14709
  static __inline__ vector double __ATTRS_o_ai vec_promote(double __a, int __b) {
14696
- vector double __res = (vector double)(0);
14710
+ const vector double __zero = (vector double)(0);
14711
+ vector double __res = __builtin_shufflevector(__zero, __zero, -1, -1);
14697
14712
  __res[__b & 0x1] = __a;
14698
14713
  return __res;
14699
14714
  }
14700
14715
 
14701
14716
  static __inline__ vector signed long long __ATTRS_o_ai
14702
14717
  vec_promote(signed long long __a, int __b) {
14703
- vector signed long long __res = (vector signed long long)(0);
14718
+ const vector signed long long __zero = (vector signed long long)(0);
14719
+ vector signed long long __res =
14720
+ __builtin_shufflevector(__zero, __zero, -1, -1);
14704
14721
  __res[__b & 0x1] = __a;
14705
14722
  return __res;
14706
14723
  }
14707
14724
 
14708
14725
  static __inline__ vector unsigned long long __ATTRS_o_ai
14709
14726
  vec_promote(unsigned long long __a, int __b) {
14710
- vector unsigned long long __res = (vector unsigned long long)(0);
14727
+ const vector unsigned long long __zero = (vector unsigned long long)(0);
14728
+ vector unsigned long long __res =
14729
+ __builtin_shufflevector(__zero, __zero, -1, -1);
14711
14730
  __res[__b & 0x1] = __a;
14712
14731
  return __res;
14713
14732
  }