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
210namespace simdpp {
211using namespace SIMDPP_ARCH_NAMESPACE;
212namespace detail {
213using namespace ::simdpp::SIMDPP_ARCH_NAMESPACE::detail;
214} // namespace detail
215} // namespace simdpp
216
217#endif
218