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