@cpp-linter/clang-tidy-win32-x64 12.0.1 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_device_functions.h +174 -102
  4. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_runtime_wrapper.h +6 -1
  5. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_hip_cmath.h +272 -94
  6. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_hip_libdevice_declares.h +24 -12
  7. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_hip_math.h +48 -2
  8. package/lib/clang/13.0.0/include/__clang_hip_runtime_wrapper.h +124 -0
  9. package/lib/clang/{12.0.1 → 13.0.0}/include/altivec.h +1165 -423
  10. package/lib/clang/{12.0.1 → 13.0.0}/include/amxintrin.h +234 -19
  11. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_acle.h +55 -0
  12. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_neon.h +1077 -165
  13. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_sve.h +11791 -5896
  14. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512fintrin.h +177 -37
  15. package/lib/clang/13.0.0/include/builtins.h +16 -0
  16. package/lib/clang/{12.0.1 → 13.0.0}/include/cuda_wrappers/complex +8 -0
  17. package/lib/clang/13.0.0/include/hexagon_circ_brev_intrinsics.h +298 -0
  18. package/lib/clang/13.0.0/include/hexagon_protos.h +8450 -0
  19. package/lib/clang/13.0.0/include/hexagon_types.h +2653 -0
  20. package/lib/clang/13.0.0/include/hvx_hexagon_protos.h +4392 -0
  21. package/lib/clang/{12.0.1 → 13.0.0}/include/intrin.h +44 -8
  22. package/lib/clang/{12.0.1 → 13.0.0}/include/keylockerintrin.h +30 -0
  23. package/lib/clang/{12.0.1 → 13.0.0}/include/opencl-c-base.h +144 -3
  24. package/lib/clang/{12.0.1 → 13.0.0}/include/opencl-c.h +505 -355
  25. package/lib/clang/13.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h +106 -0
  26. package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/cmath +54 -0
  27. package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/complex +1 -7
  28. package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/complex.h +0 -1
  29. package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/math.h +10 -0
  30. package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/new +2 -24
  31. package/lib/clang/13.0.0/include/riscv_vector.h +123865 -0
  32. package/lib/clang/{12.0.1 → 13.0.0}/include/uintrintrin.h +7 -0
  33. package/lib/clang/{12.0.1 → 13.0.0}/include/vaesintrin.h +21 -20
  34. package/lib/clang/{12.0.1 → 13.0.0}/include/vecintrin.h +206 -77
  35. package/lib/clang/{12.0.1 → 13.0.0}/include/vpclmulqdqintrin.h +2 -0
  36. package/lib/clang/{12.0.1 → 13.0.0}/include/wasm_simd128.h +806 -239
  37. package/package.json +6 -6
  38. package/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h +0 -69
  39. package/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -42
  40. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_builtin_vars.h +0 -0
  41. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_cmath.h +0 -0
  42. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_complex_builtins.h +0 -0
  43. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_intrinsics.h +0 -0
  44. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_libdevice_declares.h +0 -0
  45. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_math.h +2 -2
  46. package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_math_forward_declares.h +0 -0
  47. package/lib/clang/{12.0.1 → 13.0.0}/include/__stddef_max_align_t.h +0 -0
  48. package/lib/clang/{12.0.1 → 13.0.0}/include/__wmmintrin_aes.h +0 -0
  49. package/lib/clang/{12.0.1 → 13.0.0}/include/__wmmintrin_pclmul.h +0 -0
  50. package/lib/clang/{12.0.1 → 13.0.0}/include/adxintrin.h +0 -0
  51. package/lib/clang/{12.0.1 → 13.0.0}/include/ammintrin.h +0 -0
  52. package/lib/clang/{12.0.1 → 13.0.0}/include/arm64intr.h +0 -0
  53. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_bf16.h +0 -0
  54. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_cde.h +0 -0
  55. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_cmse.h +0 -0
  56. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_fp16.h +0 -0
  57. package/lib/clang/{12.0.1 → 13.0.0}/include/arm_mve.h +0 -0
  58. package/lib/clang/{12.0.1 → 13.0.0}/include/armintr.h +0 -0
  59. package/lib/clang/{12.0.1 → 13.0.0}/include/avx2intrin.h +0 -0
  60. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512bf16intrin.h +0 -0
  61. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512bitalgintrin.h +0 -0
  62. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512bwintrin.h +0 -0
  63. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512cdintrin.h +0 -0
  64. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512dqintrin.h +0 -0
  65. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512erintrin.h +0 -0
  66. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512ifmaintrin.h +0 -0
  67. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512ifmavlintrin.h +0 -0
  68. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512pfintrin.h +0 -0
  69. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vbmi2intrin.h +0 -0
  70. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vbmiintrin.h +0 -0
  71. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vbmivlintrin.h +0 -0
  72. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlbf16intrin.h +0 -0
  73. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlbitalgintrin.h +0 -0
  74. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlbwintrin.h +0 -0
  75. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlcdintrin.h +0 -0
  76. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vldqintrin.h +0 -0
  77. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlintrin.h +0 -0
  78. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlvbmi2intrin.h +0 -0
  79. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlvnniintrin.h +0 -0
  80. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlvp2intersectintrin.h +0 -0
  81. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vnniintrin.h +0 -0
  82. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vp2intersectintrin.h +0 -0
  83. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vpopcntdqintrin.h +0 -0
  84. package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vpopcntdqvlintrin.h +0 -0
  85. package/lib/clang/{12.0.1 → 13.0.0}/include/avxintrin.h +0 -0
  86. package/lib/clang/{12.0.1 → 13.0.0}/include/avxvnniintrin.h +0 -0
  87. package/lib/clang/{12.0.1 → 13.0.0}/include/bmi2intrin.h +0 -0
  88. package/lib/clang/{12.0.1 → 13.0.0}/include/bmiintrin.h +0 -0
  89. package/lib/clang/{12.0.1 → 13.0.0}/include/cet.h +0 -0
  90. package/lib/clang/{12.0.1 → 13.0.0}/include/cetintrin.h +0 -0
  91. package/lib/clang/{12.0.1 → 13.0.0}/include/cldemoteintrin.h +0 -0
  92. package/lib/clang/{12.0.1 → 13.0.0}/include/clflushoptintrin.h +0 -0
  93. package/lib/clang/{12.0.1 → 13.0.0}/include/clwbintrin.h +0 -0
  94. package/lib/clang/{12.0.1 → 13.0.0}/include/clzerointrin.h +0 -0
  95. package/lib/clang/{12.0.1 → 13.0.0}/include/cpuid.h +0 -0
  96. package/lib/clang/{12.0.1 → 13.0.0}/include/cuda_wrappers/algorithm +0 -0
  97. package/lib/clang/{12.0.1 → 13.0.0}/include/cuda_wrappers/new +0 -0
  98. package/lib/clang/{12.0.1 → 13.0.0}/include/emmintrin.h +0 -0
  99. package/lib/clang/{12.0.1 → 13.0.0}/include/enqcmdintrin.h +0 -0
  100. package/lib/clang/{12.0.1 → 13.0.0}/include/f16cintrin.h +0 -0
  101. package/lib/clang/{12.0.1 → 13.0.0}/include/float.h +0 -0
  102. package/lib/clang/{12.0.1 → 13.0.0}/include/fma4intrin.h +0 -0
  103. package/lib/clang/{12.0.1 → 13.0.0}/include/fmaintrin.h +0 -0
  104. package/lib/clang/{12.0.1 → 13.0.0}/include/fxsrintrin.h +0 -0
  105. package/lib/clang/{12.0.1 → 13.0.0}/include/gfniintrin.h +0 -0
  106. package/lib/clang/{12.0.1 → 13.0.0}/include/hresetintrin.h +0 -0
  107. package/lib/clang/{12.0.1 → 13.0.0}/include/htmintrin.h +0 -0
  108. package/lib/clang/{12.0.1 → 13.0.0}/include/htmxlintrin.h +0 -0
  109. package/lib/clang/{12.0.1 → 13.0.0}/include/ia32intrin.h +0 -0
  110. package/lib/clang/{12.0.1 → 13.0.0}/include/immintrin.h +5 -5
  111. /package/lib/clang/{12.0.1 → 13.0.0}/include/inttypes.h +0 -0
  112. /package/lib/clang/{12.0.1 → 13.0.0}/include/invpcidintrin.h +0 -0
  113. /package/lib/clang/{12.0.1 → 13.0.0}/include/iso646.h +0 -0
  114. /package/lib/clang/{12.0.1 → 13.0.0}/include/limits.h +0 -0
  115. /package/lib/clang/{12.0.1 → 13.0.0}/include/lwpintrin.h +0 -0
  116. /package/lib/clang/{12.0.1 → 13.0.0}/include/lzcntintrin.h +0 -0
  117. /package/lib/clang/{12.0.1 → 13.0.0}/include/mm3dnow.h +0 -0
  118. /package/lib/clang/{12.0.1 → 13.0.0}/include/mm_malloc.h +0 -0
  119. /package/lib/clang/{12.0.1 → 13.0.0}/include/mmintrin.h +0 -0
  120. /package/lib/clang/{12.0.1 → 13.0.0}/include/module.modulemap +0 -0
  121. /package/lib/clang/{12.0.1 → 13.0.0}/include/movdirintrin.h +0 -0
  122. /package/lib/clang/{12.0.1 → 13.0.0}/include/msa.h +0 -0
  123. /package/lib/clang/{12.0.1 → 13.0.0}/include/mwaitxintrin.h +0 -0
  124. /package/lib/clang/{12.0.1 → 13.0.0}/include/nmmintrin.h +0 -0
  125. /package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/complex_cmath.h +0 -0
  126. /package/lib/clang/{12.0.1 → 13.0.0}/include/pconfigintrin.h +0 -0
  127. /package/lib/clang/{12.0.1 → 13.0.0}/include/pkuintrin.h +0 -0
  128. /package/lib/clang/{12.0.1 → 13.0.0}/include/pmmintrin.h +0 -0
  129. /package/lib/clang/{12.0.1 → 13.0.0}/include/popcntintrin.h +0 -0
  130. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/emmintrin.h +0 -0
  131. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/mm_malloc.h +0 -0
  132. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/mmintrin.h +0 -0
  133. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/pmmintrin.h +0 -0
  134. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/smmintrin.h +0 -0
  135. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/tmmintrin.h +0 -0
  136. /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/xmmintrin.h +0 -0
  137. /package/lib/clang/{12.0.1 → 13.0.0}/include/prfchwintrin.h +0 -0
  138. /package/lib/clang/{12.0.1 → 13.0.0}/include/ptwriteintrin.h +0 -0
  139. /package/lib/clang/{12.0.1 → 13.0.0}/include/rdseedintrin.h +0 -0
  140. /package/lib/clang/{12.0.1 → 13.0.0}/include/rtmintrin.h +0 -0
  141. /package/lib/clang/{12.0.1 → 13.0.0}/include/s390intrin.h +0 -0
  142. /package/lib/clang/{12.0.1 → 13.0.0}/include/serializeintrin.h +0 -0
  143. /package/lib/clang/{12.0.1 → 13.0.0}/include/sgxintrin.h +0 -0
  144. /package/lib/clang/{12.0.1 → 13.0.0}/include/shaintrin.h +0 -0
  145. /package/lib/clang/{12.0.1 → 13.0.0}/include/smmintrin.h +0 -0
  146. /package/lib/clang/{12.0.1 → 13.0.0}/include/stdalign.h +0 -0
  147. /package/lib/clang/{12.0.1 → 13.0.0}/include/stdarg.h +0 -0
  148. /package/lib/clang/{12.0.1 → 13.0.0}/include/stdatomic.h +0 -0
  149. /package/lib/clang/{12.0.1 → 13.0.0}/include/stdbool.h +0 -0
  150. /package/lib/clang/{12.0.1 → 13.0.0}/include/stddef.h +0 -0
  151. /package/lib/clang/{12.0.1 → 13.0.0}/include/stdint.h +0 -0
  152. /package/lib/clang/{12.0.1 → 13.0.0}/include/stdnoreturn.h +0 -0
  153. /package/lib/clang/{12.0.1 → 13.0.0}/include/tbmintrin.h +0 -0
  154. /package/lib/clang/{12.0.1 → 13.0.0}/include/tgmath.h +0 -0
  155. /package/lib/clang/{12.0.1 → 13.0.0}/include/tmmintrin.h +0 -0
  156. /package/lib/clang/{12.0.1 → 13.0.0}/include/tsxldtrkintrin.h +0 -0
  157. /package/lib/clang/{12.0.1 → 13.0.0}/include/unwind.h +0 -0
  158. /package/lib/clang/{12.0.1 → 13.0.0}/include/vadefs.h +0 -0
  159. /package/lib/clang/{12.0.1 → 13.0.0}/include/varargs.h +0 -0
  160. /package/lib/clang/{12.0.1 → 13.0.0}/include/waitpkgintrin.h +0 -0
  161. /package/lib/clang/{12.0.1 → 13.0.0}/include/wbnoinvdintrin.h +0 -0
  162. /package/lib/clang/{12.0.1 → 13.0.0}/include/wmmintrin.h +0 -0
  163. /package/lib/clang/{12.0.1 → 13.0.0}/include/x86gprintrin.h +0 -0
  164. /package/lib/clang/{12.0.1 → 13.0.0}/include/x86intrin.h +0 -0
  165. /package/lib/clang/{12.0.1 → 13.0.0}/include/xmmintrin.h +0 -0
  166. /package/lib/clang/{12.0.1 → 13.0.0}/include/xopintrin.h +0 -0
  167. /package/lib/clang/{12.0.1 → 13.0.0}/include/xsavecintrin.h +0 -0
  168. /package/lib/clang/{12.0.1 → 13.0.0}/include/xsaveintrin.h +0 -0
  169. /package/lib/clang/{12.0.1 → 13.0.0}/include/xsaveoptintrin.h +0 -0
  170. /package/lib/clang/{12.0.1 → 13.0.0}/include/xsavesintrin.h +0 -0
  171. /package/lib/clang/{12.0.1 → 13.0.0}/include/xtestintrin.h +0 -0
@@ -9300,8 +9300,11 @@ _mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
9300
9300
  * computations. In vector-reduction arithmetic, the evaluation order is
9301
9301
  * independent of the order of the input elements of V.
9302
9302
 
9303
- * For floating point types, we always assume the elements are reassociable even
9304
- * if -fast-math is off.
9303
+ * For floating-point intrinsics:
9304
+ * 1. When using fadd/fmul intrinsics, the order of operations within the
9305
+ * vector is unspecified (associative math).
9306
+ * 2. When using fmin/fmax intrinsics, NaN or -0.0 elements within the vector
9307
+ * produce unspecified results.
9305
9308
 
9306
9309
  * Used bisection method. At each step, we partition the vector with previous
9307
9310
  * step in half, and the operation is performed on its two halves.
@@ -9524,75 +9527,49 @@ _mm512_mask_reduce_min_epu32(__mmask16 __M, __m512i __V) {
9524
9527
  return __builtin_ia32_reduce_umin_d512((__v16si)__V);
9525
9528
  }
9526
9529
 
9527
- #define _mm512_mask_reduce_operator(op) \
9528
- __m256d __t1 = _mm512_extractf64x4_pd(__V, 0); \
9529
- __m256d __t2 = _mm512_extractf64x4_pd(__V, 1); \
9530
- __m256d __t3 = _mm256_##op(__t1, __t2); \
9531
- __m128d __t4 = _mm256_extractf128_pd(__t3, 0); \
9532
- __m128d __t5 = _mm256_extractf128_pd(__t3, 1); \
9533
- __m128d __t6 = _mm_##op(__t4, __t5); \
9534
- __m128d __t7 = __builtin_shufflevector(__t6, __t6, 1, 0); \
9535
- __m128d __t8 = _mm_##op(__t6, __t7); \
9536
- return __t8[0]
9537
-
9538
9530
  static __inline__ double __DEFAULT_FN_ATTRS512
9539
9531
  _mm512_reduce_max_pd(__m512d __V) {
9540
- _mm512_mask_reduce_operator(max_pd);
9532
+ return __builtin_ia32_reduce_fmax_pd512(__V);
9541
9533
  }
9542
9534
 
9543
9535
  static __inline__ double __DEFAULT_FN_ATTRS512
9544
9536
  _mm512_reduce_min_pd(__m512d __V) {
9545
- _mm512_mask_reduce_operator(min_pd);
9537
+ return __builtin_ia32_reduce_fmin_pd512(__V);
9546
9538
  }
9547
9539
 
9548
9540
  static __inline__ double __DEFAULT_FN_ATTRS512
9549
9541
  _mm512_mask_reduce_max_pd(__mmask8 __M, __m512d __V) {
9550
9542
  __V = _mm512_mask_mov_pd(_mm512_set1_pd(-__builtin_inf()), __M, __V);
9551
- _mm512_mask_reduce_operator(max_pd);
9543
+ return __builtin_ia32_reduce_fmax_pd512(__V);
9552
9544
  }
9553
9545
 
9554
9546
  static __inline__ double __DEFAULT_FN_ATTRS512
9555
9547
  _mm512_mask_reduce_min_pd(__mmask8 __M, __m512d __V) {
9556
9548
  __V = _mm512_mask_mov_pd(_mm512_set1_pd(__builtin_inf()), __M, __V);
9557
- _mm512_mask_reduce_operator(min_pd);
9558
- }
9559
- #undef _mm512_mask_reduce_operator
9560
-
9561
- #define _mm512_mask_reduce_operator(op) \
9562
- __m256 __t1 = (__m256)_mm512_extractf64x4_pd((__m512d)__V, 0); \
9563
- __m256 __t2 = (__m256)_mm512_extractf64x4_pd((__m512d)__V, 1); \
9564
- __m256 __t3 = _mm256_##op(__t1, __t2); \
9565
- __m128 __t4 = _mm256_extractf128_ps(__t3, 0); \
9566
- __m128 __t5 = _mm256_extractf128_ps(__t3, 1); \
9567
- __m128 __t6 = _mm_##op(__t4, __t5); \
9568
- __m128 __t7 = __builtin_shufflevector(__t6, __t6, 2, 3, 0, 1); \
9569
- __m128 __t8 = _mm_##op(__t6, __t7); \
9570
- __m128 __t9 = __builtin_shufflevector(__t8, __t8, 1, 0, 3, 2); \
9571
- __m128 __t10 = _mm_##op(__t8, __t9); \
9572
- return __t10[0]
9549
+ return __builtin_ia32_reduce_fmin_pd512(__V);
9550
+ }
9573
9551
 
9574
9552
  static __inline__ float __DEFAULT_FN_ATTRS512
9575
9553
  _mm512_reduce_max_ps(__m512 __V) {
9576
- _mm512_mask_reduce_operator(max_ps);
9554
+ return __builtin_ia32_reduce_fmax_ps512(__V);
9577
9555
  }
9578
9556
 
9579
9557
  static __inline__ float __DEFAULT_FN_ATTRS512
9580
9558
  _mm512_reduce_min_ps(__m512 __V) {
9581
- _mm512_mask_reduce_operator(min_ps);
9559
+ return __builtin_ia32_reduce_fmin_ps512(__V);
9582
9560
  }
9583
9561
 
9584
9562
  static __inline__ float __DEFAULT_FN_ATTRS512
9585
9563
  _mm512_mask_reduce_max_ps(__mmask16 __M, __m512 __V) {
9586
9564
  __V = _mm512_mask_mov_ps(_mm512_set1_ps(-__builtin_inff()), __M, __V);
9587
- _mm512_mask_reduce_operator(max_ps);
9565
+ return __builtin_ia32_reduce_fmax_ps512(__V);
9588
9566
  }
9589
9567
 
9590
9568
  static __inline__ float __DEFAULT_FN_ATTRS512
9591
9569
  _mm512_mask_reduce_min_ps(__mmask16 __M, __m512 __V) {
9592
9570
  __V = _mm512_mask_mov_ps(_mm512_set1_ps(__builtin_inff()), __M, __V);
9593
- _mm512_mask_reduce_operator(min_ps);
9571
+ return __builtin_ia32_reduce_fmin_ps512(__V);
9594
9572
  }
9595
- #undef _mm512_mask_reduce_operator
9596
9573
 
9597
9574
  /// Moves the least significant 32 bits of a vector of [16 x i32] to a
9598
9575
  /// 32-bit signed integer value.
@@ -9611,6 +9588,169 @@ _mm512_cvtsi512_si32(__m512i __A) {
9611
9588
  return __b[0];
9612
9589
  }
9613
9590
 
9591
+ /// Loads 8 double-precision (64-bit) floating-point elements stored at memory
9592
+ /// locations starting at location \a base_addr at packed 32-bit integer indices
9593
+ /// stored in the lower half of \a vindex scaled by \a scale them in dst.
9594
+ ///
9595
+ /// This intrinsic corresponds to the <c> VGATHERDPD </c> instructions.
9596
+ ///
9597
+ /// \operation
9598
+ /// FOR j := 0 to 7
9599
+ /// i := j*64
9600
+ /// m := j*32
9601
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9602
+ /// dst[i+63:i] := MEM[addr+63:addr]
9603
+ /// ENDFOR
9604
+ /// dst[MAX:512] := 0
9605
+ /// \endoperation
9606
+ #define _mm512_i32logather_pd(vindex, base_addr, scale) \
9607
+ _mm512_i32gather_pd(_mm512_castsi512_si256(vindex), (base_addr), (scale))
9608
+
9609
+ /// Loads 8 double-precision (64-bit) floating-point elements from memory
9610
+ /// starting at location \a base_addr at packed 32-bit integer indices stored in
9611
+ /// the lower half of \a vindex scaled by \a scale into dst using writemask
9612
+ /// \a mask (elements are copied from \a src when the corresponding mask bit is
9613
+ /// not set).
9614
+ ///
9615
+ /// This intrinsic corresponds to the <c> VGATHERDPD </c> instructions.
9616
+ ///
9617
+ /// \operation
9618
+ /// FOR j := 0 to 7
9619
+ /// i := j*64
9620
+ /// m := j*32
9621
+ /// IF mask[j]
9622
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9623
+ /// dst[i+63:i] := MEM[addr+63:addr]
9624
+ /// ELSE
9625
+ /// dst[i+63:i] := src[i+63:i]
9626
+ /// FI
9627
+ /// ENDFOR
9628
+ /// dst[MAX:512] := 0
9629
+ /// \endoperation
9630
+ #define _mm512_mask_i32logather_pd(src, mask, vindex, base_addr, scale) \
9631
+ _mm512_mask_i32gather_pd((src), (mask), _mm512_castsi512_si256(vindex), \
9632
+ (base_addr), (scale))
9633
+
9634
+ /// Loads 8 64-bit integer elements from memory starting at location \a base_addr
9635
+ /// at packed 32-bit integer indices stored in the lower half of \a vindex
9636
+ /// scaled by \a scale and stores them in dst.
9637
+ ///
9638
+ /// This intrinsic corresponds to the <c> VPGATHERDQ </c> instructions.
9639
+ ///
9640
+ /// \operation
9641
+ /// FOR j := 0 to 7
9642
+ /// i := j*64
9643
+ /// m := j*32
9644
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9645
+ /// dst[i+63:i] := MEM[addr+63:addr]
9646
+ /// ENDFOR
9647
+ /// dst[MAX:512] := 0
9648
+ /// \endoperation
9649
+ #define _mm512_i32logather_epi64(vindex, base_addr, scale) \
9650
+ _mm512_i32gather_epi64(_mm512_castsi512_si256(vindex), (base_addr), (scale))
9651
+
9652
+ /// Loads 8 64-bit integer elements from memory starting at location \a base_addr
9653
+ /// at packed 32-bit integer indices stored in the lower half of \a vindex
9654
+ /// scaled by \a scale and stores them in dst using writemask \a mask (elements
9655
+ /// are copied from \a src when the corresponding mask bit is not set).
9656
+ ///
9657
+ /// This intrinsic corresponds to the <c> VPGATHERDQ </c> instructions.
9658
+ ///
9659
+ /// \operation
9660
+ /// FOR j := 0 to 7
9661
+ /// i := j*64
9662
+ /// m := j*32
9663
+ /// IF mask[j]
9664
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9665
+ /// dst[i+63:i] := MEM[addr+63:addr]
9666
+ /// ELSE
9667
+ /// dst[i+63:i] := src[i+63:i]
9668
+ /// FI
9669
+ /// ENDFOR
9670
+ /// dst[MAX:512] := 0
9671
+ /// \endoperation
9672
+ #define _mm512_mask_i32logather_epi64(src, mask, vindex, base_addr, scale) \
9673
+ _mm512_mask_i32gather_epi64((src), (mask), _mm512_castsi512_si256(vindex), \
9674
+ (base_addr), (scale))
9675
+
9676
+ /// Stores 8 packed double-precision (64-bit) floating-point elements in \a v1
9677
+ /// and to memory locations starting at location \a base_addr at packed 32-bit
9678
+ /// integer indices stored in \a vindex scaled by \a scale.
9679
+ ///
9680
+ /// This intrinsic corresponds to the <c> VSCATTERDPD </c> instructions.
9681
+ ///
9682
+ /// \operation
9683
+ /// FOR j := 0 to 7
9684
+ /// i := j*64
9685
+ /// m := j*32
9686
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9687
+ /// MEM[addr+63:addr] := v1[i+63:i]
9688
+ /// ENDFOR
9689
+ /// \endoperation
9690
+ #define _mm512_i32loscatter_pd(base_addr, vindex, v1, scale) \
9691
+ _mm512_i32scatter_pd((base_addr), _mm512_castsi512_si256(vindex), (v1), (scale))
9692
+
9693
+ /// Stores 8 packed double-precision (64-bit) floating-point elements in \a v1
9694
+ /// to memory locations starting at location \a base_addr at packed 32-bit
9695
+ /// integer indices stored in \a vindex scaled by \a scale. Only those elements
9696
+ /// whose corresponding mask bit is set in writemask \a mask are written to
9697
+ /// memory.
9698
+ ///
9699
+ /// This intrinsic corresponds to the <c> VSCATTERDPD </c> instructions.
9700
+ ///
9701
+ /// \operation
9702
+ /// FOR j := 0 to 7
9703
+ /// i := j*64
9704
+ /// m := j*32
9705
+ /// IF mask[j]
9706
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9707
+ /// MEM[addr+63:addr] := a[i+63:i]
9708
+ /// FI
9709
+ /// ENDFOR
9710
+ /// \endoperation
9711
+ #define _mm512_mask_i32loscatter_pd(base_addr, mask, vindex, v1, scale) \
9712
+ _mm512_mask_i32scatter_pd((base_addr), (mask), \
9713
+ _mm512_castsi512_si256(vindex), (v1), (scale))
9714
+
9715
+ /// Stores 8 packed 64-bit integer elements located in \a v1 and stores them in
9716
+ /// memory locations starting at location \a base_addr at packed 32-bit integer
9717
+ /// indices stored in \a vindex scaled by \a scale.
9718
+ ///
9719
+ /// This intrinsic corresponds to the <c> VPSCATTERDQ </c> instructions.
9720
+ ///
9721
+ /// \operation
9722
+ /// FOR j := 0 to 7
9723
+ /// i := j*64
9724
+ /// m := j*32
9725
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9726
+ /// MEM[addr+63:addr] := a[i+63:i]
9727
+ /// ENDFOR
9728
+ /// \endoperation
9729
+ #define _mm512_i32loscatter_epi64(base_addr, vindex, v1, scale) \
9730
+ _mm512_i32scatter_epi64((base_addr), \
9731
+ _mm512_castsi512_si256(vindex), (v1), (scale))
9732
+
9733
+ /// Stores 8 packed 64-bit integer elements located in a and stores them in
9734
+ /// memory locations starting at location \a base_addr at packed 32-bit integer
9735
+ /// indices stored in \a vindex scaled by scale using writemask \a mask (elements
9736
+ /// whose corresponding mask bit is not set are not written to memory).
9737
+ ///
9738
+ /// This intrinsic corresponds to the <c> VPSCATTERDQ </c> instructions.
9739
+ ///
9740
+ /// \operation
9741
+ /// FOR j := 0 to 7
9742
+ /// i := j*64
9743
+ /// m := j*32
9744
+ /// IF mask[j]
9745
+ /// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
9746
+ /// MEM[addr+63:addr] := a[i+63:i]
9747
+ /// FI
9748
+ /// ENDFOR
9749
+ /// \endoperation
9750
+ #define _mm512_mask_i32loscatter_epi64(base_addr, mask, vindex, v1, scale) \
9751
+ _mm512_mask_i32scatter_epi64((base_addr), (mask), \
9752
+ _mm512_castsi512_si256(vindex), (v1), (scale))
9753
+
9614
9754
  #undef __DEFAULT_FN_ATTRS512
9615
9755
  #undef __DEFAULT_FN_ATTRS128
9616
9756
  #undef __DEFAULT_FN_ATTRS
@@ -0,0 +1,16 @@
1
+ /*===---- builtins.h - Standard header for extra builtins -----------------===*\
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
+ /// Some legacy compilers have builtin definitions in a file named builtins.h.
10
+ /// This header file has been added to allow compatibility with code that was
11
+ /// written for those compilers. Code may have an include line for this file
12
+ /// and to avoid an error an empty file with this name is provided.
13
+ #ifndef __BUILTINS_H
14
+ #define __BUILTINS_H
15
+
16
+ #endif /* __BUILTINS_H */
@@ -72,8 +72,16 @@
72
72
  #define _GLIBCXX_USE_C99_COMPLEX 0
73
73
  #define _GLIBCXX_USE_C99_COMPLEX_TR1 0
74
74
 
75
+ // Work around a compatibility issue with libstdc++ 11.1.0
76
+ // https://bugs.llvm.org/show_bug.cgi?id=50383
77
+ #pragma push_macro("__failed_assertion")
78
+ #if _GLIBCXX_RELEASE == 11
79
+ #define __failed_assertion __cuda_failed_assertion
80
+ #endif
81
+
75
82
  #include_next <complex>
76
83
 
84
+ #pragma pop_macro("__failed_assertion")
77
85
  #pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX_TR1")
78
86
  #pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX")
79
87
 
@@ -0,0 +1,298 @@
1
+ //===----------------------------------------------------------------------===//
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
+ #ifndef _HEXAGON_CIRC_BREV_INTRINSICS_H_
10
+ #define _HEXAGON_CIRC_BREV_INTRINSICS_H_ 1
11
+
12
+ #include <hexagon_protos.h>
13
+ #include <stdint.h>
14
+
15
+ /* Circular Load */
16
+ /* ==========================================================================
17
+ Assembly Syntax: Return=instruction()
18
+ C Intrinsic Prototype: void Q6_circ_load_update_D(Word64 dst, Word64 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
19
+ Instruction Type: InstructionType
20
+ Execution Slots: SLOT0123
21
+ ========================================================================== */
22
+ #define Q6_circ_load_update_D(dest,ptr,incr,bufsize,K) \
23
+ { ptr = (int64_t *) HEXAGON_circ_ldd (ptr, &(dest), ((((K)+1)<<24)|((bufsize)<<3)), ((incr)*8)); }
24
+
25
+ /* ==========================================================================
26
+ Assembly Syntax: Return=instruction()
27
+ C Intrinsic Prototype: void Q6_circ_load_update_W(Word32 dst, Word32 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
28
+ Instruction Type: InstructionType
29
+ Execution Slots: SLOT0123
30
+ ========================================================================== */
31
+ #define Q6_circ_load_update_W(dest,ptr,incr,bufsize,K) \
32
+ { ptr = (int *) HEXAGON_circ_ldw (ptr, &(dest), (((K)<<24)|((bufsize)<<2)), ((incr)*4)); }
33
+
34
+ /* ==========================================================================
35
+ Assembly Syntax: Return=instruction()
36
+ C Intrinsic Prototype: void Q6_circ_load_update_H(Word16 dst, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
37
+ Instruction Type: InstructionType
38
+ Execution Slots: SLOT0123
39
+ ========================================================================== */
40
+ #define Q6_circ_load_update_H(dest,ptr,incr,bufsize,K) \
41
+ { ptr = (int16_t *) HEXAGON_circ_ldh (ptr, &(dest), ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
42
+
43
+ /* ==========================================================================
44
+ Assembly Syntax: Return=instruction()
45
+ C Intrinsic Prototype: void Q6_circ_load_update_UH( UWord16 dst, UWord16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
46
+ Instruction Type: InstructionType
47
+ Execution Slots: SLOT0123
48
+ ========================================================================== */
49
+ #define Q6_circ_load_update_UH(dest,ptr,incr,bufsize,K) \
50
+ { ptr = (uint16_t *) HEXAGON_circ_lduh (ptr, &(dest), ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
51
+
52
+ /* ==========================================================================
53
+ Assembly Syntax: Return=instruction()
54
+ C Intrinsic Prototype: void Q6_circ_load_update_B(Word8 dst, Word8 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
55
+ Instruction Type: InstructionType
56
+ Execution Slots: SLOT0123
57
+ ========================================================================== */
58
+ #define Q6_circ_load_update_B(dest,ptr,incr,bufsize,K) \
59
+ { ptr = (int8_t *) HEXAGON_circ_ldb (ptr, &(dest), ((((K)-2)<<24)|(bufsize)), incr); }
60
+
61
+ /* ==========================================================================
62
+ Assembly Syntax: Return=instruction()
63
+ C Intrinsic Prototype: void Q6_circ_load_update_UB(UWord8 dst, UWord8 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
64
+ Instruction Type: InstructionType
65
+ Execution Slots: SLOT0123
66
+ ========================================================================== */
67
+ #define Q6_circ_load_update_UB(dest,ptr,incr,bufsize,K) \
68
+ { ptr = (uint8_t *) HEXAGON_circ_ldub (ptr, &(dest), ((((K)-2)<<24)|(bufsize)), incr); }
69
+
70
+ /* Circular Store */
71
+ /* ==========================================================================
72
+ Assembly Syntax: Return=instruction()
73
+ C Intrinsic Prototype: void Q6_circ_store_update_D(Word64 *src, Word64 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
74
+ Instruction Type: InstructionType
75
+ Execution Slots: SLOT0123
76
+ ========================================================================== */
77
+ #define Q6_circ_store_update_D(src,ptr,incr,bufsize,K) \
78
+ { ptr = (int64_t *) HEXAGON_circ_std (ptr, src, ((((K)+1)<<24)|((bufsize)<<3)), ((incr)*8)); }
79
+
80
+ /* ==========================================================================
81
+ Assembly Syntax: Return=instruction()
82
+ C Intrinsic Prototype: void Q6_circ_store_update_W(Word32 *src, Word32 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
83
+ Instruction Type: InstructionType
84
+ Execution Slots: SLOT0123
85
+ ========================================================================== */
86
+ #define Q6_circ_store_update_W(src,ptr,incr,bufsize,K) \
87
+ { ptr = (int *) HEXAGON_circ_stw (ptr, src, (((K)<<24)|((bufsize)<<2)), ((incr)*4)); }
88
+
89
+ /* ==========================================================================
90
+ Assembly Syntax: Return=instruction()
91
+ C Intrinsic Prototype: void Q6_circ_store_update_HL(Word16 *src, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
92
+ Instruction Type: InstructionType
93
+ Execution Slots: SLOT0123
94
+ ========================================================================== */
95
+ #define Q6_circ_store_update_HL(src,ptr,incr,bufsize,K) \
96
+ { ptr = (int16_t *) HEXAGON_circ_sth (ptr, src, ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
97
+
98
+ /* ==========================================================================
99
+ Assembly Syntax: Return=instruction()
100
+ C Intrinsic Prototype: void Q6_circ_store_update_HH(Word16 *src, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
101
+ Instruction Type: InstructionType
102
+ Execution Slots: SLOT0123
103
+ ========================================================================== */
104
+ #define Q6_circ_store_update_HH(src,ptr,incr,bufsize,K) \
105
+ { ptr = (int16_t *) HEXAGON_circ_sthhi (ptr, src, ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
106
+
107
+ /* ==========================================================================
108
+ Assembly Syntax: Return=instruction()
109
+ C Intrinsic Prototype: void Q6_circ_store_update_B(Word8 *src, Word8 *ptr, UWord32 I4, UWord32 bufsize, UWord64 K)
110
+ Instruction Type: InstructionType
111
+ Execution Slots: SLOT0123
112
+ ========================================================================== */
113
+ #define Q6_circ_store_update_B(src,ptr,incr,bufsize,K) \
114
+ { ptr = (int8_t *) HEXAGON_circ_stb (ptr, src, ((((K)-2)<<24)|(bufsize)), incr); }
115
+
116
+
117
+ /* Bit Reverse Load */
118
+ /* ==========================================================================
119
+ Assembly Syntax: Return=instruction()
120
+ C Intrinsic Prototype: void Q6_bitrev_load_update_D(Word64 dst, Word64 *ptr, UWord32 Iu4)
121
+ Instruction Type: InstructionType
122
+ Execution Slots: SLOT0123
123
+ ========================================================================== */
124
+ #define Q6_bitrev_load_update_D(dest,ptr,log2bufsize) \
125
+ { ptr = (int64_t *) HEXAGON_brev_ldd (ptr, &(dest), (1<<(16-((log2bufsize) + 3)))); }
126
+
127
+ /* ==========================================================================
128
+ Assembly Syntax: Return=instruction()
129
+ C Intrinsic Prototype: void Q6_bitrev_load_update_W(Word32 dst, Word32 *ptr, UWord32 Iu4)
130
+ Instruction Type: InstructionType
131
+ Execution Slots: SLOT0123
132
+ ========================================================================== */
133
+ #define Q6_bitrev_load_update_W(dest,ptr,log2bufsize) \
134
+ { ptr = (int *) HEXAGON_brev_ldw (ptr, &(dest), (1<<(16-((log2bufsize) + 2)))); }
135
+
136
+ /* ==========================================================================
137
+ Assembly Syntax: Return=instruction()
138
+ C Intrinsic Prototype: void Q6_bitrev_load_update_H(Word16 dst, Word16 *ptr, UWord32 Iu4)
139
+ Instruction Type: InstructionType
140
+ Execution Slots: SLOT0123
141
+ ========================================================================== */
142
+ #define Q6_bitrev_load_update_H(dest,ptr,log2bufsize) \
143
+ { ptr = (int16_t *) HEXAGON_brev_ldh (ptr, &(dest), (1<<(16-((log2bufsize) + 1)))); }
144
+
145
+ /* ==========================================================================
146
+ Assembly Syntax: Return=instruction()
147
+ C Intrinsic Prototype: void Q6_bitrev_load_update_UH(UWord16 dst, UWord16 *ptr, UWord32 Iu4)
148
+ Instruction Type: InstructionType
149
+ Execution Slots: SLOT0123
150
+ ========================================================================== */
151
+ #define Q6_bitrev_load_update_UH(dest,ptr,log2bufsize) \
152
+ { ptr = (uint16_t *) HEXAGON_brev_lduh (ptr, &(dest), (1<<(16-((log2bufsize) + 1)))); }
153
+
154
+ /* ==========================================================================
155
+ Assembly Syntax: Return=instruction()
156
+ C Intrinsic Prototype: void Q6_bitrev_load_update_B(Word8 dst, Word8 *ptr, UWord32 Iu4)
157
+ Instruction Type: InstructionType
158
+ Execution Slots: SLOT0123
159
+ ========================================================================== */
160
+ #define Q6_bitrev_load_update_B(dest,ptr,log2bufsize) \
161
+ { ptr = (int8_t *) HEXAGON_brev_ldb (ptr, &(dest), (1<<(16-((log2bufsize))))); }
162
+
163
+ /* ==========================================================================
164
+ Assembly Syntax: Return=instruction()
165
+ C Intrinsic Prototype: void Q6_bitrev_load_update_UB(UWord8 dst, UWord8 *ptr, UWord32 Iu4)
166
+ Instruction Type: InstructionType
167
+ Execution Slots: SLOT0123
168
+ ========================================================================== */
169
+ #define Q6_bitrev_load_update_UB(dest,ptr,log2bufsize) \
170
+ { ptr = (uint8_t *) HEXAGON_brev_ldub (ptr, &(dest), (1<<(16-((log2bufsize))))); }
171
+
172
+ /* Bit Reverse Store */
173
+
174
+ /* ==========================================================================
175
+ Assembly Syntax: Return=instruction()
176
+ C Intrinsic Prototype: void Q6_bitrev_store_update_D(Word64 *src, Word64 *ptr, UWord32 Iu4)
177
+ Instruction Type: InstructionType
178
+ Execution Slots: SLOT0123
179
+ ========================================================================== */
180
+ #define Q6_bitrev_store_update_D(src,ptr,log2bufsize) \
181
+ { ptr = (int64_t *) HEXAGON_brev_std (ptr, src, (1<<(16-((log2bufsize) + 3)))); }
182
+
183
+ /* ==========================================================================
184
+ Assembly Syntax: Return=instruction()
185
+ C Intrinsic Prototype: void Q6_bitrev_store_update_W(Word32 *src, Word32 *ptr, UWord32 Iu4)
186
+ Instruction Type: InstructionType
187
+ Execution Slots: SLOT0123
188
+ ========================================================================== */
189
+ #define Q6_bitrev_store_update_W(src,ptr,log2bufsize) \
190
+ { ptr = (int *) HEXAGON_brev_stw (ptr, src, (1<<(16-((log2bufsize) + 2)))); }
191
+
192
+ /* ==========================================================================
193
+ Assembly Syntax: Return=instruction()
194
+ C Intrinsic Prototype: void Q6_bitrev_store_update_HL(Word16 *src, Word16 *ptr, Word32 Iu4)
195
+ Instruction Type: InstructionType
196
+ Execution Slots: SLOT0123
197
+ ========================================================================== */
198
+ #define Q6_bitrev_store_update_HL(src,ptr,log2bufsize) \
199
+ { ptr = (int16_t *) HEXAGON_brev_sth (ptr, src, (1<<(16-((log2bufsize) + 1)))); }
200
+
201
+ /* ==========================================================================
202
+ Assembly Syntax: Return=instruction()
203
+ C Intrinsic Prototype: void Q6_bitrev_store_update_HH(Word16 *src, Word16 *ptr, UWord32 Iu4)
204
+ Instruction Type: InstructionType
205
+ Execution Slots: SLOT0123
206
+ ========================================================================== */
207
+ #define Q6_bitrev_store_update_HH(src,ptr,log2bufsize) \
208
+ { ptr = (int16_t *) HEXAGON_brev_sthhi (ptr, src, (1<<(16-((log2bufsize) + 1)))); }
209
+
210
+ /* ==========================================================================
211
+ Assembly Syntax: Return=instruction()
212
+ C Intrinsic Prototype: void Q6_bitrev_store_update_B(Word8 *src, Word8 *ptr, UWord32 Iu4)
213
+ Instruction Type: InstructionType
214
+ Execution Slots: SLOT0123
215
+ ========================================================================== */
216
+ #define Q6_bitrev_store_update_B(src,ptr,log2bufsize) \
217
+ { ptr = (int8_t *) HEXAGON_brev_stb (ptr, src, (1<<(16-((log2bufsize))))); }
218
+
219
+
220
+ #define HEXAGON_circ_ldd __builtin_circ_ldd
221
+ #define HEXAGON_circ_ldw __builtin_circ_ldw
222
+ #define HEXAGON_circ_ldh __builtin_circ_ldh
223
+ #define HEXAGON_circ_lduh __builtin_circ_lduh
224
+ #define HEXAGON_circ_ldb __builtin_circ_ldb
225
+ #define HEXAGON_circ_ldub __builtin_circ_ldub
226
+
227
+
228
+ #define HEXAGON_circ_std __builtin_circ_std
229
+ #define HEXAGON_circ_stw __builtin_circ_stw
230
+ #define HEXAGON_circ_sth __builtin_circ_sth
231
+ #define HEXAGON_circ_sthhi __builtin_circ_sthhi
232
+ #define HEXAGON_circ_stb __builtin_circ_stb
233
+
234
+
235
+ #define HEXAGON_brev_ldd __builtin_brev_ldd
236
+ #define HEXAGON_brev_ldw __builtin_brev_ldw
237
+ #define HEXAGON_brev_ldh __builtin_brev_ldh
238
+ #define HEXAGON_brev_lduh __builtin_brev_lduh
239
+ #define HEXAGON_brev_ldb __builtin_brev_ldb
240
+ #define HEXAGON_brev_ldub __builtin_brev_ldub
241
+
242
+ #define HEXAGON_brev_std __builtin_brev_std
243
+ #define HEXAGON_brev_stw __builtin_brev_stw
244
+ #define HEXAGON_brev_sth __builtin_brev_sth
245
+ #define HEXAGON_brev_sthhi __builtin_brev_sthhi
246
+ #define HEXAGON_brev_stb __builtin_brev_stb
247
+
248
+ #ifdef __HVX__
249
+ /* ==========================================================================
250
+ Assembly Syntax: if (Qt) vmem(Rt+#0) = Vs
251
+ C Intrinsic Prototype: void Q6_vmaskedstoreq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
252
+ Instruction Type: COPROC_VMEM
253
+ Execution Slots: SLOT0
254
+ ========================================================================== */
255
+
256
+ #define Q6_vmaskedstoreq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstoreq)
257
+
258
+ /* ==========================================================================
259
+ Assembly Syntax: if (!Qt) vmem(Rt+#0) = Vs
260
+ C Intrinsic Prototype: void Q6_vmaskedstorenq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
261
+ Instruction Type: COPROC_VMEM
262
+ Execution Slots: SLOT0
263
+ ========================================================================== */
264
+
265
+ #define Q6_vmaskedstorenq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorenq)
266
+
267
+ /* ==========================================================================
268
+ Assembly Syntax: if (Qt) vmem(Rt+#0):nt = Vs
269
+ C Intrinsic Prototype: void Q6_vmaskedstorentq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
270
+ Instruction Type: COPROC_VMEM
271
+ Execution Slots: SLOT0
272
+ ========================================================================== */
273
+
274
+ #define Q6_vmaskedstorentq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorentq)
275
+
276
+ /* ==========================================================================
277
+ Assembly Syntax: if (!Qt) vmem(Rt+#0):nt = Vs
278
+ C Intrinsic Prototype: void Q6_vmaskedstorentnq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
279
+ Instruction Type: COPROC_VMEM
280
+ Execution Slots: SLOT0
281
+ ========================================================================== */
282
+
283
+ #define Q6_vmaskedstorentnq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorentnq)
284
+
285
+ #endif
286
+
287
+
288
+ #endif /* #ifndef _HEXAGON_CIRC_BREV_INTRINSICS_H_ */
289
+
290
+ #ifdef __NOT_DEFINED__
291
+ /*** comment block template ***/
292
+ /* ==========================================================================
293
+ Assembly Syntax: Return=instruction()
294
+ C Intrinsic Prototype: ReturnType Intrinsic(ParamType Rs, ParamType Rt)
295
+ Instruction Type: InstructionType
296
+ Execution Slots: SLOT0123
297
+ ========================================================================== */
298
+ #endif /*** __NOT_DEFINED__ ***/