JUCE

- Main Page
- Related Pages
- Topics
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
juce::dsp::SIMDRegister< Type > Struct Template Reference
juce_dsp » containers

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

`#include <juce_SIMDRegister.h>`

## Public Types
using | ElementType = Type
| The type that represents the individual constituents of the SIMD Register.
using | value_type = ElementType
| STL compatible value_type definition (same as ElementType).
using | MaskType = SIMDInternal::MaskType<ElementType>
| The corresponding primitive integer type, for example, this will be int32_t if type is a float.
using | PrimitiveType = typename SIMDInternal::PrimitiveType<ElementType>::type
| The native primitive type (used internally).
using | NativeOps = SIMDNativeOps<PrimitiveType>
| The native operations for this platform and type combination (used internally)
using | vSIMDType = typename NativeOps::vSIMDType
| The native type (used internally).
using | vMaskType = SIMDRegister<MaskType>
| The corresponding integer SIMDRegister type (used internally).
using | vMaskSIMDType = typename vMaskType::vSIMDType
| The internal native type for the corresponding mask type (used internally).
using | CmplxOps = CmplxSIMDOps<ElementType>
| Wrapper for operations which need to be handled differently for complex and scalar types (used internally).

## Public Member Functions
| SIMDRegister () noexcept=default
| Default constructor.
| SIMDRegister (vSIMDType a) noexcept
| Constructs an object from the native SIMD type.
| SIMDRegister (Type s) noexcept
| Constructs an object from a scalar type by broadcasting it to all elements.
void JUCE_VECTOR_CALLTYPE | copyToRawArray (ElementType *a) const noexcept
| Copies the elements of the SIMDRegister to a scalar array in memory.
ElementType JUCE_VECTOR_CALLTYPE | get (size_t idx) const noexcept
| Returns the idx-th element of the receiver.
void JUCE_VECTOR_CALLTYPE | set (size_t idx, ElementType v) noexcept
| Sets the idx-th element of the receiver.
ElementType JUCE_VECTOR_CALLTYPE | operator[] (size_t idx) const noexcept
| Returns the idx-th element of the receiver.
ElementAccess JUCE_VECTOR_CALLTYPE | operator[] (size_t idx) noexcept
| Returns the idx-th element of the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator+= (SIMDRegister v) noexcept
| Adds another SIMDRegister to the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator-= (SIMDRegister v) noexcept
| Subtracts another SIMDRegister to the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator*= (SIMDRegister v) noexcept
| Multiplies another SIMDRegister to the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator= (ElementType s) noexcept
| Broadcasts the scalar to all elements of the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator+= (ElementType s) noexcept
| Adds a scalar to the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator-= (ElementType s) noexcept
| Subtracts a scalar to the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator*= (ElementType s) noexcept
| Multiplies a scalar to the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator&= (vMaskType v) noexcept
| Bit-and the receiver with SIMDRegister v and store the result in the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator|= (vMaskType v) noexcept
| Bit-or the receiver with SIMDRegister v and store the result in the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator^= (vMaskType v) noexcept
| Bit-xor the receiver with SIMDRegister v and store the result in the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator&= (MaskType s) noexcept
| Bit-and each element of the receiver with the scalar s and store the result in the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator|= (MaskType s) noexcept
| Bit-or each element of the receiver with the scalar s and store the result in the receiver.
SIMDRegister &JUCE_VECTOR_CALLTYPE | operator^= (MaskType s) noexcept
| Bit-xor each element of the receiver with the scalar s and store the result in the receiver.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator+ (SIMDRegister v) const noexcept
| Returns the sum of the receiver and v.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator- (SIMDRegister v) const noexcept
| Returns the difference of the receiver and v.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator* (SIMDRegister v) const noexcept
| Returns the product of the receiver and v.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator+ (ElementType s) const noexcept
| Returns a vector where each element is the sum of the corresponding element in the receiver and the scalar s.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator- (ElementType s) const noexcept
| Returns a vector where each element is the difference of the corresponding element in the receiver and the scalar s.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator* (ElementType s) const noexcept
| Returns a vector where each element is the product of the corresponding element in the receiver and the scalar s.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator& (vMaskType v) const noexcept
| Returns the bit-and of the receiver and v.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator| (vMaskType v) const noexcept
| Returns the bit-or of the receiver and v.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator^ (vMaskType v) const noexcept
| Returns the bit-xor of the receiver and v.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator~ () const noexcept
| Returns a vector where each element is the bit-inverted value of the corresponding element in the receiver.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator& (MaskType s) const noexcept
| Returns a vector where each element is the bit-and'd value of the corresponding element in the receiver and the scalar s.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator| (MaskType s) const noexcept
| Returns a vector where each element is the bit-or'd value of the corresponding element in the receiver and the scalar s.
SIMDRegister JUCE_VECTOR_CALLTYPE | operator^ (MaskType s) const noexcept
| Returns a vector where each element is the bit-xor'd value of the corresponding element in the receiver and the scalar s.
bool JUCE_VECTOR_CALLTYPE | operator== (SIMDRegister other) const noexcept
| Returns true if all element-wise comparisons return true.
bool JUCE_VECTOR_CALLTYPE | operator!= (SIMDRegister other) const noexcept
| Returns true if any element-wise comparisons return false.
bool JUCE_VECTOR_CALLTYPE | operator== (Type s) const noexcept
| Returns true if all elements are equal to the scalar.
bool JUCE_VECTOR_CALLTYPE | operator!= (Type s) const noexcept
| Returns true if any elements are not equal to the scalar.
ElementType | sum () const noexcept
| Returns a scalar which is the sum of all elements of the receiver.

## Static Public Member Functions
static constexpr size_t | size () noexcept
| Returns the number of elements in this vector.
static SIMDRegister JUCE_VECTOR_CALLTYPE | expand (ElementType s) noexcept
| Creates a new SIMDRegister from the corresponding scalar primitive.
static SIMDRegister JUCE_VECTOR_CALLTYPE | fromNative (vSIMDType a) noexcept
| Creates a new SIMDRegister from the internal SIMD type (for example __mm128 for single-precision floating point on SSE architectures).
static SIMDRegister JUCE_VECTOR_CALLTYPE | fromRawArray (const ElementType *a) noexcept
| Creates a new SIMDRegister from the first SIMDNumElements of a scalar array.
static vMaskType JUCE_VECTOR_CALLTYPE | equal (SIMDRegister a, SIMDRegister b) 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.
static vMaskType JUCE_VECTOR_CALLTYPE | notEqual (SIMDRegister a, SIMDRegister b) 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.
static vMaskType JUCE_VECTOR_CALLTYPE | lessThan (SIMDRegister a, SIMDRegister b) 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.
static vMaskType JUCE_VECTOR_CALLTYPE | lessThanOrEqual (SIMDRegister a, SIMDRegister b) 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.
static vMaskType JUCE_VECTOR_CALLTYPE | greaterThan (SIMDRegister a, SIMDRegister b) 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.
static vMaskType JUCE_VECTOR_CALLTYPE | greaterThanOrEqual (SIMDRegister a, SIMDRegister b) 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.
static SIMDRegister JUCE_VECTOR_CALLTYPE | min (SIMDRegister a, SIMDRegister b) noexcept
| Returns a new vector where each element is the minimum of the corresponding element of a and b.
static SIMDRegister JUCE_VECTOR_CALLTYPE | max (SIMDRegister a, SIMDRegister b) noexcept
| Returns a new vector where each element is the maximum of the corresponding element of a and b.
static SIMDRegister JUCE_VECTOR_CALLTYPE | multiplyAdd (SIMDRegister a, const SIMDRegister b, SIMDRegister c) noexcept
| Multiplies b and c and adds the result to a.
static SIMDRegister JUCE_VECTOR_CALLTYPE | truncate (SIMDRegister a) noexcept
| Truncates each element to its integer part.
static SIMDRegister JUCE_VECTOR_CALLTYPE | abs (SIMDRegister a) noexcept
| Returns the absolute value of each element.
static bool | isSIMDAligned (const ElementType *ptr) noexcept
| Checks if the given pointer is sufficiently aligned for using SIMD operations.
static ElementType * | getNextSIMDAlignedPtr (ElementType *ptr) noexcept
| Returns the next position in memory where isSIMDAligned returns true.

## Public Attributes
vSIMDType | value

## Static Public Attributes
static constexpr size_t | SIMDRegisterSize = sizeof (vSIMDType)
| The size in bytes of this register.
static constexpr size_t | SIMDNumElements = SIMDRegisterSize / sizeof (ElementType)
| The number of elements that this vector can hold.

## 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.

## Member Typedef Documentation

## ◆ ElementType

template<typename Type >

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

The type that represents the individual constituents of the SIMD Register.

## ◆ value_type

template<typename Type >

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

STL compatible value_type definition (same as ElementType).

## ◆ 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.

## ◆ PrimitiveType

template<typename Type >

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

The native primitive type (used internally).

## ◆ NativeOps

template<typename Type >

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

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

## ◆ vSIMDType

template<typename Type >

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

The native type (used internally).

## ◆ vMaskType

template<typename Type >

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

The corresponding integer SIMDRegister type (used internally).

## ◆ vMaskSIMDType

template<typename Type >

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

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

## ◆ 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).

## Constructor & Destructor Documentation

## ◆ SIMDRegister() [1/3]

template<typename Type >

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

Default constructor.

## ◆ SIMDRegister() [2/3]

template<typename Type >

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

Constructs an object from the native SIMD type.

## ◆ SIMDRegister() [3/3]

template<typename Type >

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

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

## Member Function Documentation

## ◆ size()

template<typename Type >

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

Returns the number of elements in this vector.

References juce::dsp::SIMDRegister< Type >::SIMDNumElements.

## ◆ expand()

template<typename Type >

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

Creates a new SIMDRegister from the corresponding scalar primitive.

The scalar is extended to all elements of the vector.

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

## ◆ fromNative()

template<typename Type >

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

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

## ◆ fromRawArray()

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::isSIMDAligned(), and jassert.

## ◆ copyToRawArray()

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::isSIMDAligned(), jassert, and juce::dsp::SIMDRegister< Type >::value.

## ◆ get()

template<typename Type >

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

Returns the idx-th element of the receiver.

Note that this does not check if idx is larger than the native register size.

References jassert, juce::dsp::SIMDRegister< Type >::SIMDNumElements, and juce::dsp::SIMDRegister< Type >::value.

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

## ◆ set()

template<typename Type >

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

Sets the idx-th element of the receiver.

Note that this does not check if idx is larger than the native register size.

References jassert, juce::dsp::SIMDRegister< Type >::SIMDNumElements, and juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the idx-th element of the receiver.

Note that this does not check if idx is larger than the native register size.

References juce::dsp::SIMDRegister< Type >::get().

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

template<typename Type >

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

Returns the idx-th element of the receiver.

Note that this does not check if idx is larger than the native register size.

References jassert, and juce::dsp::SIMDRegister< Type >::SIMDNumElements.

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

template<typename Type >

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

Adds another SIMDRegister to the receiver.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Subtracts another SIMDRegister to the receiver.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Multiplies another SIMDRegister to the receiver.

References juce::dsp::SIMDRegister< Type >::value.

## ◆ operator=()

template<typename Type >

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

Broadcasts the scalar to all elements of the receiver.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Adds a scalar to the receiver.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Subtracts a scalar to the receiver.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Multiplies a scalar to the receiver.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the sum of the receiver and v.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the difference of the receiver and v.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the product of the receiver and v.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the bit-and of the receiver and v.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the bit-or of the receiver and v.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns the bit-xor of the receiver and v.

References juce::dsp::SIMDRegister< Type >::value.

## ◆ operator~()

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns true if all element-wise comparisons return true.

References juce::dsp::SIMDRegister< Type >::value.

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

template<typename Type >

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

Returns true if any element-wise comparisons return false.

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

template<typename Type >

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

Returns true if all elements are equal to the scalar.

References juce::dsp::SIMDRegister< Type >::expand().

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

template<typename Type >

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

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

## ◆ equal()

template<typename Type >

static vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::equal | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )
| 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.

## ◆ notEqual()

template<typename Type >

static vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::notEqual | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )
| 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.

## ◆ lessThan()

template<typename Type >

static vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::lessThan | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )
| 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.

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

## ◆ lessThanOrEqual()

template<typename Type >

static vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::lessThanOrEqual | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )
| 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.

## ◆ greaterThan()

template<typename Type >

static vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::greaterThan | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )
| 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.

## ◆ greaterThanOrEqual()

template<typename Type >

static vMaskType JUCE_VECTOR_CALLTYPE juce::dsp::SIMDRegister< Type >::greaterThanOrEqual | ( | SIMDRegister< Type > | a,
|  | SIMDRegister< Type > | b )
| 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.

## ◆ min()

template<typename Type >

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

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

## ◆ max()

template<typename Type >

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

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

## ◆ multiplyAdd()

template<typename Type >

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

Multiplies b and c and adds the result to a.

## ◆ sum()

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::value.

## ◆ truncate()

template<typename Type >

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

Truncates each element to its integer part.

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

## ◆ abs()

template<typename Type >

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

Returns the absolute value of each element.

References juce::dsp::SIMDRegister< Type >::expand(), and juce::dsp::SIMDRegister< Type >::lessThan().

## ◆ isSIMDAligned()

template<typename Type >

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

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

References juce::dsp::SIMDRegister< Type >::SIMDRegisterSize.

Referenced by juce::dsp::SIMDRegister< Type >::copyToRawArray(), and juce::dsp::SIMDRegister< Type >::fromRawArray().

## ◆ getNextSIMDAlignedPtr()

template<typename Type >

static ElementType * juce::dsp::SIMDRegister< Type >::getNextSIMDAlignedPtr | ( | ElementType * | ptr | ) |
| 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.

References juce::dsp::SIMDRegister< Type >::SIMDRegisterSize, and snapPointerToAlignment().

## Member Data Documentation

## ◆ SIMDRegisterSize

template<typename Type >

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

The size in bytes of this register.

Referenced by juce::dsp::SIMDRegister< Type >::getNextSIMDAlignedPtr(), and juce::dsp::SIMDRegister< Type >::isSIMDAligned().

## ◆ SIMDNumElements

template<typename Type >

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

The number of elements that this vector can hold.

Referenced by juce::dsp::SIMDRegister< Type >::get(), juce::dsp::SIMDRegister< Type >::operator[](), juce::dsp::SIMDRegister< Type >::set(), and juce::dsp::SIMDRegister< Type >::size().

## ◆ value

template<typename Type >

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

Referenced by juce::dsp::SIMDRegister< Type >::copyToRawArray(), juce::dsp::SIMDRegister< Type >::get(), juce::dsp::SIMDRegister< Type >::operator&(), juce::dsp::SIMDRegister< Type >::operator&(), juce::dsp::SIMDRegister< Type >::operator&=(), juce::dsp::SIMDRegister< Type >::operator&=(), juce::dsp::SIMDRegister< Type >::operator*(), juce::dsp::SIMDRegister< Type >::operator*(), juce::dsp::SIMDRegister< Type >::operator*=(), juce::dsp::SIMDRegister< Type >::operator*=(), juce::dsp::SIMDRegister< Type >::operator+(), juce::dsp::SIMDRegister< Type >::operator+(), juce::dsp::SIMDRegister< Type >::operator+=(), juce::dsp::SIMDRegister< Type >::operator+=(), juce::dsp::SIMDRegister< Type >::operator-(), juce::dsp::SIMDRegister< Type >::operator-(), juce::dsp::SIMDRegister< Type >::operator-=(), juce::dsp::SIMDRegister< Type >::operator-=(), juce::dsp::SIMDRegister< Type >::operator=(), juce::dsp::SIMDRegister< Type >::operator==(), juce::dsp::SIMDRegister< Type >::operator^(), juce::dsp::SIMDRegister< Type >::operator^(), juce::dsp::SIMDRegister< Type >::operator^=(), juce::dsp::SIMDRegister< Type >::operator^=(), juce::dsp::SIMDRegister< Type >::operator|(), juce::dsp::SIMDRegister< Type >::operator|(), juce::dsp::SIMDRegister< Type >::operator|=(), juce::dsp::SIMDRegister< Type >::operator|=(), juce::dsp::SIMDRegister< Type >::operator~(), juce::dsp::SIMDRegister< Type >::set(), and juce::dsp::SIMDRegister< Type >::sum().

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

- juce_SIMDRegister.h