simd.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /* Copyright (C) 2011-2013 Povilas Kanapickas <[email protected]>
  2. Distributed under the Boost Software License, Version 1.0.
  3. (See accompanying file LICENSE_1_0.txt or copy at
  4. http://www.boost.org/LICENSE_1_0.txt)
  5. */
  6. #ifndef LIBSIMDPP_SIMD_H
  7. #define LIBSIMDPP_SIMD_H
  8. /* The following file sets up the preprocessor variables and includes the
  9. required system headers for the specific architecture
  10. */
  11. #include <simdpp/setup_arch.h>
  12. #include <cstdlib>
  13. #include <simdpp/core/align.h>
  14. #include <simdpp/core/aligned_allocator.h>
  15. #include <simdpp/core/bit_and.h>
  16. #include <simdpp/core/bit_andnot.h>
  17. #include <simdpp/core/bit_not.h>
  18. #include <simdpp/core/bit_or.h>
  19. #include <simdpp/core/bit_xor.h>
  20. #include <simdpp/core/blend.h>
  21. #include <simdpp/core/cache.h>
  22. #include <simdpp/core/cast.h>
  23. #include <simdpp/core/cmp_eq.h>
  24. #include <simdpp/core/cmp_ge.h>
  25. #include <simdpp/core/cmp_gt.h>
  26. #include <simdpp/core/cmp_le.h>
  27. #include <simdpp/core/cmp_lt.h>
  28. #include <simdpp/core/cmp_neq.h>
  29. #include <simdpp/core/extract.h>
  30. #include <simdpp/core/extract_bits.h>
  31. #include <simdpp/core/f_abs.h>
  32. #include <simdpp/core/f_add.h>
  33. #include <simdpp/core/f_ceil.h>
  34. #include <simdpp/core/f_div.h>
  35. #include <simdpp/core/f_floor.h>
  36. #include <simdpp/core/f_fmadd.h>
  37. #include <simdpp/core/f_fmsub.h>
  38. #include <simdpp/core/f_isnan.h>
  39. #include <simdpp/core/f_isnan2.h>
  40. #include <simdpp/core/f_max.h>
  41. #include <simdpp/core/f_min.h>
  42. #include <simdpp/core/f_mul.h>
  43. #include <simdpp/core/f_neg.h>
  44. #include <simdpp/core/f_reduce_add.h>
  45. #include <simdpp/core/f_reduce_max.h>
  46. #include <simdpp/core/f_reduce_min.h>
  47. #include <simdpp/core/f_reduce_mul.h>
  48. #include <simdpp/core/f_rcp_e.h>
  49. #include <simdpp/core/f_rcp_rh.h>
  50. #include <simdpp/core/f_rsqrt_e.h>
  51. #include <simdpp/core/f_rsqrt_rh.h>
  52. #include <simdpp/core/f_sign.h>
  53. #include <simdpp/core/f_sqrt.h>
  54. #include <simdpp/core/f_sub.h>
  55. #include <simdpp/core/f_trunc.h>
  56. #include <simdpp/core/for_each.h>
  57. #include <simdpp/core/i_abs.h>
  58. #include <simdpp/core/i_add.h>
  59. #include <simdpp/core/i_add_sat.h>
  60. #include <simdpp/core/i_avg.h>
  61. #include <simdpp/core/i_avg_trunc.h>
  62. #include <simdpp/core/i_div_p.h>
  63. #include <simdpp/core/i_max.h>
  64. #include <simdpp/core/i_min.h>
  65. #include <simdpp/core/i_mul.h>
  66. #include <simdpp/core/i_mull.h>
  67. #include <simdpp/core/i_neg.h>
  68. #include <simdpp/core/i_popcnt.h>
  69. #include <simdpp/core/i_reduce_add.h>
  70. #include <simdpp/core/i_reduce_and.h>
  71. #include <simdpp/core/i_reduce_max.h>
  72. #include <simdpp/core/i_reduce_min.h>
  73. #include <simdpp/core/i_reduce_mul.h>
  74. #include <simdpp/core/i_reduce_or.h>
  75. #include <simdpp/core/i_reduce_popcnt.h>
  76. #include <simdpp/core/i_shift_l.h>
  77. #include <simdpp/core/i_shift_r.h>
  78. #include <simdpp/core/i_sub.h>
  79. #include <simdpp/core/i_sub_sat.h>
  80. #include <simdpp/core/insert.h>
  81. #include <simdpp/core/load.h>
  82. #include <simdpp/core/load_packed2.h>
  83. #include <simdpp/core/load_packed3.h>
  84. #include <simdpp/core/load_packed4.h>
  85. #include <simdpp/core/load_splat.h>
  86. #include <simdpp/core/load_u.h>
  87. #include <simdpp/core/make_float.h>
  88. #include <simdpp/core/make_int.h>
  89. #include <simdpp/core/make_uint.h>
  90. #include <simdpp/core/make_shuffle_bytes_mask.h>
  91. #include <simdpp/core/move_l.h>
  92. #include <simdpp/core/move_r.h>
  93. #include <simdpp/core/permute2.h>
  94. #include <simdpp/core/permute4.h>
  95. #include <simdpp/core/permute_bytes16.h>
  96. #include <simdpp/core/permute_zbytes16.h>
  97. #include <simdpp/core/set_splat.h>
  98. #include <simdpp/core/shuffle1.h>
  99. #include <simdpp/core/shuffle2.h>
  100. #include <simdpp/core/shuffle4x2.h>
  101. #include <simdpp/core/shuffle_bytes16.h>
  102. #include <simdpp/core/shuffle_zbytes16.h>
  103. #include <simdpp/core/splat.h>
  104. #include <simdpp/core/splat_n.h>
  105. #include <simdpp/core/store_first.h>
  106. #include <simdpp/core/store.h>
  107. #include <simdpp/core/store_last.h>
  108. #include <simdpp/core/store_masked.h>
  109. #include <simdpp/core/store_packed2.h>
  110. #include <simdpp/core/store_packed3.h>
  111. #include <simdpp/core/store_packed4.h>
  112. #include <simdpp/core/store_u.h>
  113. #include <simdpp/core/stream.h>
  114. #include <simdpp/core/test_bits.h>
  115. #include <simdpp/core/to_float32.h>
  116. #include <simdpp/core/to_float64.h>
  117. #include <simdpp/core/to_int16.h>
  118. #include <simdpp/core/to_int32.h>
  119. #include <simdpp/core/to_int64.h>
  120. #include <simdpp/core/to_int8.h>
  121. #include <simdpp/core/to_mask.h>
  122. #include <simdpp/core/transpose.h>
  123. #include <simdpp/core/unzip_hi.h>
  124. #include <simdpp/core/unzip_lo.h>
  125. #include <simdpp/core/zip_hi.h>
  126. #include <simdpp/core/zip_lo.h>
  127. #include <simdpp/detail/cast.h>
  128. #include <simdpp/detail/cast.inl>
  129. #include <simdpp/detail/insn/conv_to_mask.inl>
  130. #include <simdpp/detail/altivec/load1.h>
  131. #include <simdpp/detail/neon/math_int.h>
  132. #include <simdpp/detail/neon/memory_store.h>
  133. #include <simdpp/detail/neon/shuffle.h>
  134. #include <simdpp/detail/null/bitwise.h>
  135. #include <simdpp/detail/null/compare.h>
  136. #include <simdpp/detail/null/mask.h>
  137. #include <simdpp/detail/null/math.h>
  138. #include <simdpp/detail/null/memory.h>
  139. #include <simdpp/detail/null/set.h>
  140. #include <simdpp/detail/null/shuffle.h>
  141. #include <simdpp/detail/null/transpose.h>
  142. #include <simdpp/detail/extract128.h>
  143. #include <simdpp/types.h>
  144. #include <simdpp/types/generic.h>
  145. #include <simdpp/types/empty_expr.h>
  146. #include <simdpp/types/float32.h>
  147. #include <simdpp/types/float32x4.h>
  148. #include <simdpp/types/float32x8.h>
  149. #include <simdpp/types/float64.h>
  150. #include <simdpp/types/float64x2.h>
  151. #include <simdpp/types/float64x4.h>
  152. #include <simdpp/types/fwd.h>
  153. #include <simdpp/types/int16.h>
  154. #include <simdpp/types/int16x16.h>
  155. #include <simdpp/types/int16x8.h>
  156. #include <simdpp/types/int32.h>
  157. #include <simdpp/types/int32x4.h>
  158. #include <simdpp/types/int32x8.h>
  159. #include <simdpp/types/int64.h>
  160. #include <simdpp/types/int64x2.h>
  161. #include <simdpp/types/int64x4.h>
  162. #include <simdpp/types/int8.h>
  163. #include <simdpp/types/int8x16.h>
  164. #include <simdpp/types/int8x32.h>
  165. #include <simdpp/types/traits.h>
  166. #include <simdpp/expr.inl>
  167. #include <simdpp/operators/bit_and.h>
  168. #include <simdpp/operators/bit_or.h>
  169. #include <simdpp/operators/bit_xor.h>
  170. #include <simdpp/operators/bit_not.h>
  171. #include <simdpp/operators/cmp_eq.h>
  172. #include <simdpp/operators/cmp_neq.h>
  173. #include <simdpp/operators/cmp_ge.h>
  174. #include <simdpp/operators/cmp_gt.h>
  175. #include <simdpp/operators/cmp_le.h>
  176. #include <simdpp/operators/cmp_lt.h>
  177. #include <simdpp/operators/f_add.h>
  178. #include <simdpp/operators/f_div.h>
  179. #include <simdpp/operators/f_mul.h>
  180. #include <simdpp/operators/f_sub.h>
  181. #include <simdpp/operators/i_add.h>
  182. #include <simdpp/operators/i_mul.h>
  183. #include <simdpp/operators/i_shift_l.h>
  184. #include <simdpp/operators/i_shift_r.h>
  185. #include <simdpp/operators/i_sub.h>
  186. /** @def SIMDPP_NO_DISPATCHER
  187. Disables internal dispatching functionality. If the internal dispathcher
  188. mechanism is not needed, the user can define the @c SIMDPP_NO_DISPATCHER.
  189. */
  190. #ifndef SIMDPP_NO_DISPATCHER
  191. #include <simdpp/dispatch/dispatcher.h>
  192. #include <simdpp/dispatch/make_dispatcher.h>
  193. #endif
  194. #include <simdpp/capabilities.h>
  195. namespace simdpp {
  196. using namespace SIMDPP_ARCH_NAMESPACE;
  197. namespace detail {
  198. using namespace ::simdpp::SIMDPP_ARCH_NAMESPACE::detail;
  199. } // namespace detail
  200. } // namespace simdpp
  201. #endif