VISR  0.11.1
Versatile Interactive Scene Renderer
vector_functions.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBEFL_VECTOR_FUNCTIONS_HPP_INCLUDED
4 #define VISR_LIBEFL_VECTOR_FUNCTIONS_HPP_INCLUDED
5 
6 #include "error_codes.hpp"
7 
8 #include "export_symbols.hpp"
9 
10 #include <cstddef>
11 
12 namespace visr
13 {
14 namespace efl
15 {
16 
17 void getCpuId();
18 
19 template <typename T> VISR_EFL_LIBRARY_SYMBOL
20 ErrorCode vectorZero( T * const dest, std::size_t numElements, std::size_t alignment = 0 );
21 
22 template <typename T> VISR_EFL_LIBRARY_SYMBOL
23 ErrorCode vectorFill( const T value, T * const dest, std::size_t numElements, std::size_t alignment = 0 );
24 
25 template <typename T> VISR_EFL_LIBRARY_SYMBOL
26 ErrorCode vectorCopy( T const * const source, T * const dest, std::size_t numElements, std::size_t alignment = 0 );
27 
42 template <typename T> VISR_EFL_LIBRARY_SYMBOL
43 ErrorCode vectorRamp( T * const dest, std::size_t numElements, T startVal, T endVal,
44  bool startInclusive, bool endInclusive, std::size_t alignment = 0 );
45 
46 template<typename T> VISR_EFL_LIBRARY_SYMBOL
47 ErrorCode vectorAdd( T const * const op1,
48  T const * const op2,
49  T * const result,
50  std::size_t numElements,
51  std::size_t alignment = 0 );
52 
53 template<typename T> VISR_EFL_LIBRARY_SYMBOL
54 ErrorCode vectorAddInplace( T const * const op1,
55  T * const op2Result,
56  std::size_t numElements,
57  std::size_t alignment = 0 );
58 
59 template<typename T> VISR_EFL_LIBRARY_SYMBOL
60 ErrorCode vectorAddConstant( T constantValue,
61  T const * const op,
62  T * const result,
63  std::size_t numElements,
64  std::size_t alignment = 0 );
65 
66 template<typename T> VISR_EFL_LIBRARY_SYMBOL
67 ErrorCode vectorAddConstantInplace( T constantValue,
68  T * const opResult,
69  std::size_t numElements,
70  std::size_t alignment = 0 );
71 
72 template<typename T> VISR_EFL_LIBRARY_SYMBOL
73 ErrorCode vectorSubtract( T const * const subtrahend,
74  T const * const minuend,
75  T * const result,
76  std::size_t numElements,
77  std::size_t alignment = 0 );
78 
79 template<typename T> VISR_EFL_LIBRARY_SYMBOL
80 ErrorCode vectorSubtractInplace( T const * const minuend,
81  T * const subtrahendResult,
82  std::size_t numElements,
83  std::size_t alignment = 0 );
84 
85 template<typename T> VISR_EFL_LIBRARY_SYMBOL
86 ErrorCode vectorSubtractConstant( T constantMinuend,
87  T const * const subtrahend,
88  T * const result,
89  std::size_t numElements,
90  std::size_t alignment = 0 );
91 
92 template<typename T> VISR_EFL_LIBRARY_SYMBOL
93 ErrorCode vectorSubConstantInplace( T constantMinuend,
94  T * const subtrahendResult,
95  std::size_t numElements,
96  std::size_t alignment = 0 );
97 
98 
108 template<typename T> VISR_EFL_LIBRARY_SYMBOL
109 ErrorCode vectorMultiply( T const * const factor1,
110  T const * const factor2,
111  T * const result,
112  std::size_t numElements,
113  std::size_t alignment = 0 );
114 
123 template<typename T> VISR_EFL_LIBRARY_SYMBOL
124 ErrorCode vectorMultiplyInplace( T const * const factor1,
125  T * const factor2Result,
126  std::size_t numElements,
127  std::size_t alignment = 0 );
128 
138 template<typename T> VISR_EFL_LIBRARY_SYMBOL
139 ErrorCode vectorMultiplyConstant( T constantValue,
140  T const * const factor,
141  T * const result,
142  std::size_t numElements,
143  std::size_t alignment = 0 );
144 
153 template<typename T> VISR_EFL_LIBRARY_SYMBOL
155  T * const factorResult,
156  std::size_t numElements,
157  std::size_t alignment = 0 );
158 
159 template<typename T> VISR_EFL_LIBRARY_SYMBOL
160 ErrorCode vectorMultiplyAdd( T const * const factor1,
161  T const * const factor2,
162  T const * const addend,
163  T * const result,
164  std::size_t numElements,
165  std::size_t alignment = 0 );
166 
167 template<typename T> VISR_EFL_LIBRARY_SYMBOL
168 ErrorCode vectorMultiplyAddInplace( T const * const factor1,
169  T const * const factor2,
170  T * const accumulator,
171  std::size_t numElements,
172  std::size_t alignment = 0 );
173 
174 template<typename T> VISR_EFL_LIBRARY_SYMBOL
175 ErrorCode vectorMultiplyConstantAdd( T constFactor,
176  T const * const factor,
177  T const * const addend,
178  T * const result,
179  std::size_t numElements,
180  std::size_t alignment = 0 );
181 
182 template<typename T> VISR_EFL_LIBRARY_SYMBOL
184  T const * const factor,
185  T * const accumulator,
186  std::size_t numElements,
187  std::size_t alignment = 0 );
188 
201 template<typename DataType> VISR_EFL_LIBRARY_SYMBOL
202 ErrorCode vectorCopyStrided( DataType const * src, DataType * dest, std::size_t srcStrideElements,
203  std::size_t destStrideElements, std::size_t numberOfElements, std::size_t alignmentElements );
204 
216 template<typename DataType> VISR_EFL_LIBRARY_SYMBOL
217 efl::ErrorCode vectorFillStrided( DataType val, DataType * dest,
218  std::size_t destStrideElements,
219  std::size_t numberOfElements,
220  std::size_t alignmentElements );
221 
222 } // namespace efl
223 } // namespace visr
224 
225 #endif // #ifndef VISR_LIBEFL_VECTOR_FUNCTIONS_HPP_INCLUDED
void getCpuId()
ErrorCode vectorMultiplyConstantAdd(T constFactor, T const *const factor, T const *const addend, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:819
ErrorCode vectorMultiplyConstant(T constantValue, T const *const factor, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:444
ErrorCode vectorMultiplyConstantInplace(T constantValue, T *const factorResult, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:459
ErrorCode vectorSubtractInplace(T const *const minuend, T *const subtrahendResult, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:160
ErrorCode vectorRamp(T *const dest, std::size_t numElements, T startVal, T endVal, bool startInclusive, bool endInclusive, std::size_t alignment)
Definition: vector_functions.cpp:62
ErrorCode vectorZero(T *const dest, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:40
ErrorCode vectorMultiplyAddInplace(T const *const factor1, T const *const factor2, T *const accumulator, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:487
ErrorCode vectorSubConstantInplace(T constantMinuend, T *const subtrahendResult, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:185
ErrorCode vectorAddConstant(T constantValue, T const *const op, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:120
ErrorCode vectorSubtract(T const *const subtrahend, T const *const minuend, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:147
ErrorCode vectorMultiplyAdd(T const *const factor1, T const *const factor2, T const *const addend, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:471
ErrorCode vectorAddInplace(T const *const op1, T *const op2Result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:106
Definition: options.cpp:10
ErrorCode vectorMultiplyInplace(T const *const factor1, T *const factor2Result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:432
ErrorCode vectorMultiplyConstantAddInplace(T constFactor, T const *const factor, T *const accumulator, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:833
ErrorCode vectorCopyStrided(DataType const *src, DataType *dest, std::size_t srcStrideElements, std::size_t destStrideElements, std::size_t numberOfElements, std::size_t alignmentElements)
Definition: vector_functions.cpp:1044
ErrorCode vectorFill(const T value, T *const dest, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:51
ErrorCode vectorCopy(T const *const source, T *const dest, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:73
ErrorCode vectorSubtractConstant(T constantMinuend, T const *const subtrahend, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:172
ErrorCode vectorFillStrided(DataType val, DataType *dest, std::size_t destStrideElements, std::size_t numberOfElements, std::size_t alignmentElements)
Definition: vector_functions.cpp:1061
ErrorCode vectorMultiply(T const *const factor1, T const *const factor2, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:197
ErrorCode vectorAdd(T const *const op1, T const *const op2, T *const result, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:90
ErrorCode
Definition: error_codes.hpp:13
ErrorCode vectorAddConstantInplace(T constantValue, T *const opResult, std::size_t numElements, std::size_t alignment)
Definition: vector_functions.cpp:135