ROOT  6.06/09
Reference Guide
macros.h
Go to the documentation of this file.
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