Loading...
Searching...
No Matches
juce::dsp::SIMDRegister< Type > Struct Template Reference

`#include <juce_SIMDRegister.h>`

## Public Types

using | ElementType = Type
using | value_type = ElementType
using | MaskType = SIMDInternal::MaskType<ElementType>
using | PrimitiveType = typename SIMDInternal::PrimitiveType<ElementType>::type
using | NativeOps = SIMDNativeOps<PrimitiveType>
using | vSIMDType = typename NativeOps::vSIMDType
using | vMaskType = SIMDRegister<MaskType>
using | vMaskSIMDType = typename vMaskType::vSIMDType
using | CmplxOps = CmplxSIMDOps<ElementType>

## Public Member Functions

| SIMDRegister () noexcept=default
| SIMDRegister (vSIMDType a) noexcept
| SIMDRegister (Type s) noexcept
void JUCE_VECTOR_CALLTYPE | copyToRawArray (ElementType *a) const noexcept
ElementType JUCE_VECTOR_CALLTYPE | get (size_t idx) const noexcept
void JUCE_VECTOR_CALLTYPE | set (size_t idx, ElementType v) noexcept
ElementType JUCE_VECTOR_CALLTYPE | operator[] (size_t idx) const noexcept
ElementAccess JUCE_VECTOR_CALLTYPE | operator[] (size_t idx) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator+= (SIMDRegister v) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator-= (SIMDRegister v) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator*= (SIMDRegister v) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator= (ElementType s) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator+= (ElementType s) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator-= (ElementType s) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator*= (ElementType s) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator&= (vMaskType v) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator|= (vMaskType v) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator^= (vMaskType v) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator&= (MaskType s) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator|= (MaskType s) noexcept
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator^= (MaskType s) noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator+ (SIMDRegister v) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator- (SIMDRegister v) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator* (SIMDRegister v) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator+ (ElementType s) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator- (ElementType s) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator* (ElementType s) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator& (vMaskType v) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator| (vMaskType v) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator^ (vMaskType v) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator~ () const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator& (MaskType s) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator| (MaskType s) const noexcept
SIMDRegister JUCE_VECTOR_CALLTYPE | operator^ (MaskType s) const noexcept
bool JUCE_VECTOR_CALLTYPE | operator== (SIMDRegister other) const noexcept
bool JUCE_VECTOR_CALLTYPE | operator!= (SIMDRegister other) const noexcept
bool JUCE_VECTOR_CALLTYPE | operator== (Type s) const noexcept
bool JUCE_VECTOR_CALLTYPE | operator!= (Type s) const noexcept
ElementType | sum () const noexcept

## Static Public Member Functions

static constexpr size_t | size () noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | expand (ElementType s) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | fromNative (vSIMDType a) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | fromRawArray (const ElementType *a) noexcept
static vMaskType JUCE_VECTOR_CALLTYPE | equal (SIMDRegister a, SIMDRegister b) noexcept
static vMaskType JUCE_VECTOR_CALLTYPE | notEqual (SIMDRegister a, SIMDRegister b) noexcept
static vMaskType JUCE_VECTOR_CALLTYPE | lessThan (SIMDRegister a, SIMDRegister b) noexcept
static vMaskType JUCE_VECTOR_CALLTYPE | lessThanOrEqual (SIMDRegister a, SIMDRegister b) noexcept
static vMaskType JUCE_VECTOR_CALLTYPE | greaterThan (SIMDRegister a, SIMDRegister b) noexcept
static vMaskType JUCE_VECTOR_CALLTYPE | greaterThanOrEqual (SIMDRegister a, SIMDRegister b) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | min (SIMDRegister a, SIMDRegister b) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | max (SIMDRegister a, SIMDRegister b) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | multiplyAdd (SIMDRegister a, const SIMDRegister b, SIMDRegister c) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | truncate (SIMDRegister a) noexcept
static SIMDRegister JUCE_VECTOR_CALLTYPE | abs (SIMDRegister a) noexcept
static bool | isSIMDAligned (const ElementType *ptr) noexcept
static ElementType * | getNextSIMDAlignedPtr (ElementType *ptr) noexcept

## Public Attributes

vSIMDType | value

## Static Public Attributes

static constexpr size_t | SIMDRegisterSize = sizeof (vSIMDType)
static constexpr size_t | SIMDNumElements = SIMDRegisterSize / sizeof (ElementType)

## Detailed Description

template<typename Type>
struct juce::dsp::SIMDRegister< Type >

A wrapper around the platform's native SIMD register type.

This class is only available on SIMD machines. Use JUCE_USE_SIMD to query if SIMD is available for your system.

SIMDRegister<Type> is a templated class representing the native vectorized version of FloatingType. SIMDRegister supports all numerical primitive types and std:complex<float> and std::complex<double> supports and most operations of the corresponding primitive type. Additionally, SIMDRegister can be accessed like an array to extract the individual elements.

If you are using SIMDRegister as a pointer, then you must ensure that the memory is sufficiently aligned for SIMD vector operations. Failing to do so will result in crashes or very slow code. Use SIMDRegister::isSIMDAligned to query if a pointer is sufficiently aligned for SIMD vector operations.

Note that using SIMDRegister without enabling optimizations will result in code with very poor performance.

Definition at line 60 of file juce_SIMDRegister.h.

## Member Typedef Documentation

## CmplxOps

template<typename Type>

using juce::dsp::SIMDRegister< Type >::CmplxOps = CmplxSIMDOps<ElementType>

Wrapper for operations which need to be handled differently for complex and scalar types (used internally).

Definition at line 93 of file juce_SIMDRegister.h.

## ElementType

template<typename Type>

using juce::dsp::SIMDRegister< Type >::ElementType = Type

The type that represents the individual constituents of the SIMD Register

Definition at line 64 of file juce_SIMDRegister.h.

## MaskType

template<typename Type>

using juce::dsp::SIMDRegister< Type >::MaskType = SIMDInternal::MaskType<ElementType>

The corresponding primitive integer type, for example, this will be int32_t if type is a float.

Definition at line 71 of file juce_SIMDRegister.h.

## NativeOps

template<typename Type>

using juce::dsp::SIMDRegister< Type >::NativeOps = SIMDNativeOps<PrimitiveType>

The native operations for this platform and type combination (used internally)

Definition at line 80 of file juce_SIMDRegister.h.

## PrimitiveType

template<typename Type>

using juce::dsp::SIMDRegister< Type >::PrimitiveType = typename SIMDInternal::PrimitiveType<ElementType>::type

The native primitive type (used internally).

Definition at line 77 of file juce_SIMDRegister.h.

## value_type

template<typename Type>

using juce::dsp::SIMDRegister< Type >::value_type = ElementType

STL compatible value_type definition (same as ElementType).

Definition at line 67 of file juce_SIMDRegister.h.

## vMaskSIMDType

template<typename Type>

using juce::dsp::SIMDRegister< Type >::vMaskSIMDType = typename vMaskType::vSIMDType

The internal native type for the corresponding mask type (used internally).

Definition at line 89 of file juce_SIMDRegister.h.

## vMaskType

template<typename Type>

using juce::dsp::SIMDRegister< Type >::vMaskType = SIMDRegister<MaskType>

The corresponding integer SIMDRegister type (used internally).

Definition at line 86 of file juce_SIMDRegister.h.

## vSIMDType

template<typename Type>

using juce::dsp::SIMDRegister< Type >::vSIMDType = typename NativeOps::vSIMDType

The native type (used internally).

Definition at line 83 of file juce_SIMDRegister.h.

## Constructor & Destructor Documentation

## SIMDRegister() [1/3]

template<typename Type>

juce::dsp::SIMDRegister< Type >::SIMDRegister | ( |  | ) |

inline default noexcept

Default constructor.

## SIMDRegister() [2/3]

template<typename Type>

juce::dsp::SIMDRegister< Type >::SIMDRegister | ( | vSIMDType | a | ) |

inline noexcept

Constructs an object from the native SIMD type.

Definition at line 112 of file juce_SIMDRegister.h.

## SIMDRegister() [3/3]

template<typename Type>

juce::dsp::SIMDRegister< Type >::SIMDRegister | ( | Type | s | ) |

inline noexcept

Constructs an object from a scalar type by broadcasting it to all elements.

Definition at line 115 of file juce_SIMDRegister.h.

## Member Function Documentation

## abs()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::abs | ( | SIMDRegister< Type > | a | ) |

inline static noexcept

Returns the absolute value of each element.

Definition at line 332 of file juce_SIMDRegister.h.

## copyToRawArray()

template<typename Type>

void JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::copyToRawArray | ( | ElementType * | a | ) | const

inline noexcept

Copies the elements of the SIMDRegister to a scalar array in memory.

Definition at line 138 of file juce_SIMDRegister.h.

## equal()

template<typename Type>

vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::equal | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a SIMDRegister of the corresponding integral type where each element has each bit set if the corresponding element of a is equal to the corresponding element of b, or zero otherwise. The result can then be used in bit operations defined above to avoid branches in vector SIMD code.

Definition at line 280 of file juce_SIMDRegister.h.

## expand()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::expand | ( | ElementType | s | ) |

inline static noexcept

Creates a new SIMDRegister from the corresponding scalar primitive. The scalar is extended to all elements of the vector.

Definition at line 124 of file juce_SIMDRegister.h.

Referenced by juce::dsp::SIMDRegister< MaskType >::abs(), and juce::dsp::SIMDRegister< MaskType >::operator==().

## fromNative()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::fromNative | ( | vSIMDType | a | ) |

inline static noexcept

Creates a new SIMDRegister from the internal SIMD type (for example __mm128 for single-precision floating point on SSE architectures).

Definition at line 128 of file juce_SIMDRegister.h.

## fromRawArray()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::fromRawArray | ( | const ElementType * | a | ) |

inline static noexcept

Creates a new SIMDRegister from the first SIMDNumElements of a scalar array.

Definition at line 131 of file juce_SIMDRegister.h.

## get()

template<typename Type>

ElementType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::get | ( | size_t | idx | ) | const

inline noexcept

Returns the idx-th element of the receiver. Note that this does not check if idx is larger than the native register size.

Definition at line 147 of file juce_SIMDRegister.h.

Referenced by juce::dsp::SIMDRegister< MaskType >::operator[]().

## getNextSIMDAlignedPtr()

template<typename Type>

ElementType * juce::dsp::SIMDRegister< Type >::getNextSIMDAlignedPtr | ( | ElementType * | ptr | ) |

inline static noexcept

Returns the next position in memory where isSIMDAligned returns true.

If the current position in memory is already aligned then this method will simply return the pointer.

Definition at line 350 of file juce_SIMDRegister.h.

## greaterThan()

template<typename Type>

vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::greaterThan | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a SIMDRegister of the corresponding integral type where each element has each bit set if the corresponding element of a is greater than to the corresponding element of b, or zero otherwise. The result can then be used in bit operations defined above to avoid branches in vector SIMD code.

Definition at line 300 of file juce_SIMDRegister.h.

## greaterThanOrEqual()

template<typename Type>

vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::greaterThanOrEqual | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a SIMDRegister of the corresponding integral type where each element has each bit set if the corresponding element of a is greater than or equal to the corresponding element of b, or zero otherwise. The result can then be used in bit operations defined above to avoid branches in vector SIMD code.

Definition at line 305 of file juce_SIMDRegister.h.

## isSIMDAligned()

template<typename Type>

bool juce::dsp::SIMDRegister< Type >::isSIMDAligned | ( | const ElementType * | ptr | ) |

inline static noexcept

Checks if the given pointer is sufficiently aligned for using SIMD operations.

Definition at line 339 of file juce_SIMDRegister.h.

## lessThan()

template<typename Type>

vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::lessThan | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a SIMDRegister of the corresponding integral type where each element has each bit set if the corresponding element of a is less than to the corresponding element of b, or zero otherwise. The result can then be used in bit operations defined above to avoid branches in vector SIMD code.

Definition at line 290 of file juce_SIMDRegister.h.

Referenced by juce::dsp::SIMDRegister< MaskType >::abs().

## lessThanOrEqual()

template<typename Type>

vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::lessThanOrEqual | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a SIMDRegister of the corresponding integral type where each element has each bit set if the corresponding element of a is than or equal to the corresponding element of b, or zero otherwise. The result can then be used in bit operations defined above to avoid branches in vector SIMD code.

Definition at line 295 of file juce_SIMDRegister.h.

## max()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::max | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a new vector where each element is the maximum of the corresponding element of a and b.

Definition at line 312 of file juce_SIMDRegister.h.

## min()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::min | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a new vector where each element is the minimum of the corresponding element of a and b.

Definition at line 309 of file juce_SIMDRegister.h.

## multiplyAdd()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::multiplyAdd | ( | SIMDRegister< Type > | a,
|  | const SIMDRegister< Type > | b,
|  | SIMDRegister< Type > | c )

inline static noexcept

Multiplies b and c and adds the result to a.

Definition at line 316 of file juce_SIMDRegister.h.

## notEqual()

template<typename Type>

vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::notEqual | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )

inline static noexcept

Returns a SIMDRegister of the corresponding integral type where each element has each bit set if the corresponding element of a is not equal to the corresponding element of b, or zero otherwise. The result can then be used in bit operations defined above to avoid branches in vector SIMD code.

Definition at line 285 of file juce_SIMDRegister.h.

## operator!=() [1/2]

template<typename Type>

bool JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator!= | ( | SIMDRegister< Type > | other | ) | const

inline noexcept

Returns true if any element-wise comparisons return false.

Definition at line 268 of file juce_SIMDRegister.h.

## operator!=() [2/2]

template<typename Type>

bool JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator!= | ( | Type | s | ) | const

inline noexcept

Returns true if any elements are not equal to the scalar.

Definition at line 274 of file juce_SIMDRegister.h.

## operator&() [1/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator& | ( | MaskType | s | ) | const

inline noexcept

Returns a vector where each element is the bit-and'd value of the corresponding element in the receiver and the scalar s.

Definition at line 255 of file juce_SIMDRegister.h.

## operator&() [2/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator& | ( | vMaskType | v | ) | const

inline noexcept

Returns the bit-and of the receiver and v.

Definition at line 242 of file juce_SIMDRegister.h.

## operator&=() [1/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator&= | ( | MaskType | s | ) |

inline noexcept

Bit-and each element of the receiver with the scalar s and store the result in the receiver.

Definition at line 212 of file juce_SIMDRegister.h.

## operator&=() [2/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator&= | ( | vMaskType | v | ) |

inline noexcept

Bit-and the receiver with SIMDRegister v and store the result in the receiver.

Definition at line 202 of file juce_SIMDRegister.h.

## operator*() [1/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator* | ( | ElementType | s | ) | const

inline noexcept

Returns a vector where each element is the product of the corresponding element in the receiver and the scalar s.

Definition at line 238 of file juce_SIMDRegister.h.

## operator*() [2/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator* | ( | SIMDRegister< Type > | v | ) | const

inline noexcept

Returns the product of the receiver and v.

Definition at line 228 of file juce_SIMDRegister.h.

## operator*=() [1/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator*= | ( | ElementType | s | ) |

inline noexcept

Multiplies a scalar to the receiver.

Definition at line 198 of file juce_SIMDRegister.h.

## operator*=() [2/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator*= | ( | SIMDRegister< Type > | v | ) |

inline noexcept

Multiplies another SIMDRegister to the receiver.

Definition at line 185 of file juce_SIMDRegister.h.

## operator+() [1/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator+ | ( | ElementType | s | ) | const

inline noexcept

Returns a vector where each element is the sum of the corresponding element in the receiver and the scalar s.

Definition at line 232 of file juce_SIMDRegister.h.

## operator+() [2/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator+ | ( | SIMDRegister< Type > | v | ) | const

inline noexcept

Returns the sum of the receiver and v.

Definition at line 222 of file juce_SIMDRegister.h.

## operator+=() [1/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator+= | ( | ElementType | s | ) |

inline noexcept

Adds a scalar to the receiver.

Definition at line 192 of file juce_SIMDRegister.h.

## operator+=() [2/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator+= | ( | SIMDRegister< Type > | v | ) |

inline noexcept

Adds another SIMDRegister to the receiver.

Definition at line 179 of file juce_SIMDRegister.h.

## operator-() [1/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator- | ( | ElementType | s | ) | const

inline noexcept

Returns a vector where each element is the difference of the corresponding element in the receiver and the scalar s.

Definition at line 235 of file juce_SIMDRegister.h.

## operator-() [2/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator- | ( | SIMDRegister< Type > | v | ) | const

inline noexcept

Returns the difference of the receiver and v.

Definition at line 225 of file juce_SIMDRegister.h.

## operator-=() [1/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator-= | ( | ElementType | s | ) |

inline noexcept

Subtracts a scalar to the receiver.

Definition at line 195 of file juce_SIMDRegister.h.

## operator-=() [2/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator-= | ( | SIMDRegister< Type > | v | ) |

inline noexcept

Subtracts another SIMDRegister to the receiver.

Definition at line 182 of file juce_SIMDRegister.h.

## operator=()

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator= | ( | ElementType | s | ) |

inline noexcept

Broadcasts the scalar to all elements of the receiver.

Definition at line 189 of file juce_SIMDRegister.h.

## operator==() [1/2]

template<typename Type>

bool JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator== | ( | SIMDRegister< Type > | other | ) | const

inline noexcept

Returns true if all element-wise comparisons return true.

Definition at line 265 of file juce_SIMDRegister.h.

## operator==() [2/2]

template<typename Type>

bool JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator== | ( | Type | s | ) | const

inline noexcept

Returns true if all elements are equal to the scalar.

Definition at line 271 of file juce_SIMDRegister.h.

## operator[]() [1/2]

template<typename Type>

ElementType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator[] | ( | size_t | idx | ) | const

inline noexcept

Returns the idx-th element of the receiver. Note that this does not check if idx is larger than the native register size.

Definition at line 164 of file juce_SIMDRegister.h.

## operator[]() [2/2]

template<typename Type>

ElementAccess JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator[] | ( | size_t | idx | ) |

inline noexcept

Returns the idx-th element of the receiver. Note that this does not check if idx is larger than the native register size.

Definition at line 171 of file juce_SIMDRegister.h.

## operator^() [1/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator^ | ( | MaskType | s | ) | const

inline noexcept

Returns a vector where each element is the bit-xor'd value of the corresponding element in the receiver and the scalar s.

Definition at line 261 of file juce_SIMDRegister.h.

## operator^() [2/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator^ | ( | vMaskType | v | ) | const

inline noexcept

Returns the bit-xor of the receiver and v.

Definition at line 248 of file juce_SIMDRegister.h.

## operator^=() [1/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator^= | ( | MaskType | s | ) |

inline noexcept

Bit-xor each element of the receiver with the scalar s and store the result in the receiver.

Definition at line 218 of file juce_SIMDRegister.h.

## operator^=() [2/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator^= | ( | vMaskType | v | ) |

inline noexcept

Bit-xor the receiver with SIMDRegister v and store the result in the receiver.

Definition at line 208 of file juce_SIMDRegister.h.

## operator|() [1/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator| | ( | MaskType | s | ) | const

inline noexcept

Returns a vector where each element is the bit-or'd value of the corresponding element in the receiver and the scalar s.

Definition at line 258 of file juce_SIMDRegister.h.

## operator|() [2/2]

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator| | ( | vMaskType | v | ) | const

inline noexcept

Returns the bit-or of the receiver and v.

Definition at line 245 of file juce_SIMDRegister.h.

## operator|=() [1/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator|= | ( | MaskType | s | ) |

inline noexcept

Bit-or each element of the receiver with the scalar s and store the result in the receiver.

Definition at line 215 of file juce_SIMDRegister.h.

## operator|=() [2/2]

template<typename Type>

SIMDRegister &JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator|= | ( | vMaskType | v | ) |

inline noexcept

Bit-or the receiver with SIMDRegister v and store the result in the receiver.

Definition at line 205 of file juce_SIMDRegister.h.

## operator~()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::operator~ | ( |  | ) | const

inline noexcept

Returns a vector where each element is the bit-inverted value of the corresponding element in the receiver.

Definition at line 251 of file juce_SIMDRegister.h.

## set()

template<typename Type>

void JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::set | ( | size_t | idx,
|  | ElementType | v )

inline noexcept

Sets the idx-th element of the receiver. Note that this does not check if idx is larger than the native register size.

Definition at line 155 of file juce_SIMDRegister.h.

## size()

template<typename Type>

constexpr size_t juce::dsp::SIMDRegister< Type >::size | ( |  | ) |

inline static constexpr noexcept

Returns the number of elements in this vector.

Definition at line 119 of file juce_SIMDRegister.h.

## sum()

template<typename Type>

ElementType juce::dsp::SIMDRegister< Type >::sum | ( |  | ) | const

inline noexcept

Returns a scalar which is the sum of all elements of the receiver.

Definition at line 323 of file juce_SIMDRegister.h.

## truncate()

template<typename Type>

SIMDRegister JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::truncate | ( | SIMDRegister< Type > | a | ) |

inline static noexcept

Truncates each element to its integer part. Effectively discards the fractional part of each element. A.k.a. round to zero.

Definition at line 328 of file juce_SIMDRegister.h.

## Member Data Documentation

## SIMDNumElements

template<typename Type>

size_t juce::dsp::SIMDRegister< Type >::SIMDNumElements = SIMDRegisterSize / sizeof (ElementType)

static constexpr

The number of elements that this vector can hold.

Definition at line 104 of file juce_SIMDRegister.h.

## SIMDRegisterSize

template<typename Type>

size_t juce::dsp::SIMDRegister< Type >::SIMDRegisterSize = sizeof (vSIMDType)

static constexpr

The size in bytes of this register.

Definition at line 101 of file juce_SIMDRegister.h.

## value

template<typename Type>

vSIMDType juce::dsp::SIMDRegister< Type >::value

Definition at line 106 of file juce_SIMDRegister.h.

The documentation for this struct was generated from the following file:

- juce_SIMDRegister.h