master
 1/*  Copyright (c) 2014 Apple, Inc. All rights reserved.
 2 *
 3 *  This header provides small vector (simd) types and basic arithmetic and
 4 *  math functions that operate on them.
 5 *
 6 *  A wide assortment of vector types are provided in <simd/vector_types.h>,
 7 *  which is included by this header.  The most important (as far as the rest
 8 *  of this library is concerned) are vector_floatN (where N is 2, 3, 4, 8, or
 9 *  16), and vector_doubleN (where N is 2, 3, 4, or 8).
10 *
11 *  All of the vector types are based on what clang call "OpenCL vectors",
12 *  defined with the __ext_vector_type__ attribute.  Many C operators "just
13 *  work" with these types, so it is not necessary to make function calls
14 *  to do basic arithmetic:
15 *
16 *      simd_float4 x, y;
17 *      x = x + y;          // vector sum of x and y.
18 *
19 *  scalar values are implicitly promoted to vectors (with a "splat"), so it
20 *  is possible to easily write expressions involving scalars as well:
21 *
22 *      simd_float4 x;
23 *      x = 2*x;            // scale x by 2.
24 *
25 *  Besides the basic operations provided by the compiler, this header provides
26 *  a set of mathematical and geometric primitives for use with these types.
27 *  In C and Objective-C, these functions are prefixed with vector_; in C++,
28 *  unprefixed names are available within the simd:: namespace.
29 *
30 *      simd_float3 x, y;
31 *      vector_max(x,y)     // elementwise maximum of x and y
32 *      fabs(x)             // same as vector_abs(x)
33 *      vector_clamp(x,0,1) // x clamped to the range [0,1].  This has no
34 *                          // standard-library analogue, so there is no
35 *                          // alternate name.
36 *
37 *  Matrix and matrix-vector operations are also available in <simd/matrix.h>.
38 */
39
40#ifndef __SIMD_VECTOR_HEADER__
41#define __SIMD_VECTOR_HEADER__
42
43#include <simd/vector_types.h>
44#include <simd/packed.h>
45#include <simd/vector_make.h>
46#include <simd/logic.h>
47#include <simd/math.h>
48#include <simd/common.h>
49#include <simd/geometry.h>
50#include <simd/conversion.h>
51
52#endif