]> git.uio.no Git - u/mrichter/AliRoot.git/blob - Vc/include/Vc/sse/macros.h
Vc package added (version 0.6.79-dev)
[u/mrichter/AliRoot.git] / Vc / include / Vc / sse / macros.h
1 /*  This file is part of the Vc library.
2
3     Copyright (C) 2009-2010 Matthias Kretz <kretz@kde.org>
4
5     Vc is free software: you can redistribute it and/or modify
6     it under the terms of the GNU Lesser General Public License as
7     published by the Free Software Foundation, either version 3 of
8     the License, or (at your option) any later version.
9
10     Vc is distributed in the hope that it will be useful, but
11     WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU Lesser General Public License for more details.
14
15     You should have received a copy of the GNU Lesser General Public
16     License along with Vc.  If not, see <http://www.gnu.org/licenses/>.
17
18 */
19
20 #include "../common/macros.h"
21
22 #ifndef VC_SSE_MACROS_H
23 #define VC_SSE_MACROS_H
24 #undef VC_SSE_UNDOMACROS_H
25
26 #ifndef _M128
27 # define _M128 __m128
28 #endif
29
30 #ifndef _M128I
31 # define _M128I __m128i
32 #endif
33
34 #ifndef _M128D
35 # define _M128D __m128d
36 #endif
37
38 #define STORE_VECTOR(type, name, vec) \
39     union { __m128i p; type v[16 / sizeof(type)]; } CAT(u, __LINE__); \
40     _mm_store_si128(&CAT(u, __LINE__).p, vec); \
41     const type *const name = &CAT(u, __LINE__).v[0]
42
43 #if defined(VC_IMPL_SSE4_1) && !defined(VC_DISABLE_PTEST)
44 #define VC_USE_PTEST
45 #endif
46
47 #endif // VC_SSE_MACROS_H