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