Imported Upstream version 2.81
[platform/upstream/libbullet.git] / Test / Source / vector.h
1 //
2 //  vector.h
3 //  BulletTest
4 //
5 //  Copyright (c) 2011 Apple Inc.
6 //
7
8 #ifndef BulletTest_vector_h
9 #define BulletTest_vector_h
10
11 #ifdef __SSE__
12     typedef float float4            __attribute__ ((__vector_size__(16)));
13     #include <xmmintrin.h>
14 #endif
15
16 #ifdef __SSE2__
17     typedef double double2          __attribute__ ((__vector_size__(16)));
18     typedef char char16             __attribute__ ((__vector_size__(16)));
19     typedef unsigned char uchar16   __attribute__ ((__vector_size__(16)));
20     typedef short short8            __attribute__ ((__vector_size__(16)));
21     typedef unsigned short ushort8  __attribute__ ((__vector_size__(16)));
22     typedef int int4                __attribute__ ((__vector_size__(16)));
23    // typedef unsigned int uint4      __attribute__ ((__vector_size__(16)));
24     #ifdef __LP64__ 
25         typedef long long2              __attribute__ ((__vector_size__(16)));
26         typedef unsigned long ulong2    __attribute__ ((__vector_size__(16)));
27     #else
28         typedef long long long2         __attribute__ ((__vector_size__(16)));
29         typedef unsigned long long ulong2 __attribute__ ((__vector_size__(16)));
30     #endif
31     #include <emmintrin.h> 
32 #endif
33
34 #ifdef __SSE3__
35     #include <pmmintrin.h>
36 #endif
37
38 #ifdef __SSSE3__
39     #include <tmmintrin.h>
40 #endif
41
42 #ifdef __SSE4_1__
43     #include <smmintrin.h>
44 #endif
45
46 #ifdef __arm__
47     #include <arm/arch.h>
48     #ifdef _ARM_ARCH_7
49         #define ARM_NEON_GCC_COMPATIBILITY  1
50         #include <arm_neon.h>
51         typedef float float4            __attribute__ ((__vector_size__(16)));
52         typedef double double2          __attribute__ ((__vector_size__(16)));
53         typedef char char16             __attribute__ ((__vector_size__(16)));
54         typedef unsigned char uchar16   __attribute__ ((__vector_size__(16)));
55         typedef short short8            __attribute__ ((__vector_size__(16)));
56         typedef unsigned short ushort8  __attribute__ ((__vector_size__(16)));
57         typedef int int4                __attribute__ ((__vector_size__(16)));
58         typedef unsigned int uint4      __attribute__ ((__vector_size__(16)));
59         #ifdef __LP64__ 
60             typedef long long2              __attribute__ ((__vector_size__(16)));
61             typedef unsigned long ulong2    __attribute__ ((__vector_size__(16)));
62         #else
63             typedef long long long2         __attribute__ ((__vector_size__(16)));
64             typedef unsigned long long ulong2 __attribute__ ((__vector_size__(16)));
65         #endif
66     #endif
67 #endif
68
69
70 #endif