![]()  | 
  
    VCV Rack API v2
    
   | 
 
Wrapper for __m128 representing an aligned vector of 4 single-precision float values. More...
#include <Vector.hpp>
Public Types | |
| using | type = float | 
Public Member Functions | |
| Vector ()=default | |
| Constructs an uninitialized vector.   | |
| Vector (__m128 v) | |
| Constructs a vector from a native __m128 type.   | |
| Vector (float x) | |
| Constructs a vector with all elements set to x.   | |
| Vector (float x1, float x2, float x3, float x4) | |
| Constructs a vector from four scalars.   | |
| void | store (float *x) | 
| Writes an array of 4 values.   | |
| float & | operator[] (int i) | 
| Accessing vector elements individually is slow and defeats the purpose of vectorizing.   | |
| const float & | operator[] (int i) const | 
| Vector (Vector< int32_t, 4 > a) | |
Static Public Member Functions | |
| static Vector | zero () | 
| Returns a vector with all 0 bits.   | |
| static Vector | mask () | 
| Returns a vector with all 1 bits.   | |
| static Vector | load (const float *x) | 
| Reads an array of 4 values.   | |
| static Vector | cast (Vector< int32_t, 4 > a) | 
Public Attributes | |
| union rack::simd::Vector< float, 4 >:: { ... } | |
Static Public Attributes | |
| static constexpr int | size = 4 | 
Wrapper for __m128 representing an aligned vector of 4 single-precision float values.
| using rack::simd::Vector< float, 4 >::type = float | 
      
  | 
  default | 
Constructs an uninitialized vector.
      
  | 
  inline | 
Constructs a vector from a native __m128 type.
      
  | 
  inline | 
Constructs a vector with all elements set to x.
      
  | 
  inline | 
Constructs a vector from four scalars.
      
  | 
  inline | 
      
  | 
  inlinestatic | 
Returns a vector with all 0 bits.
      
  | 
  inlinestatic | 
Returns a vector with all 1 bits.
      
  | 
  inlinestatic | 
Reads an array of 4 values.
On little-endian machines (e.g. x86_64), the order is reversed, so x[0] corresponds to vector.s[3].
      
  | 
  inline | 
Writes an array of 4 values.
On little-endian machines (e.g. x86_64), the order is reversed, so x[0] corresponds to vector.s[3].
      
  | 
  inline | 
Accessing vector elements individually is slow and defeats the purpose of vectorizing.
However, this operator is convenient when writing simple serial code in a non-bottlenecked section.
      
  | 
  inline | 
      
  | 
  inlinestatic | 
      
  | 
  staticconstexpr | 
| __m128 rack::simd::Vector< float, 4 >::v | 
| float rack::simd::Vector< float, 4 >::s[4] | 
Accessing this array of scalars is slow and defeats the purpose of vectorizing.
| union rack::simd::Vector< float, 4 > { ... } rack::simd::Vector< float, 4 > |