ROOT
6.07/01
Reference Guide
ROOT Home Page
Main Page
Tutorials
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
math
vc
include
Vc
sse
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