Skip to main content

AvxVector256

Trait AvxVector256 

Source
pub trait AvxVector256: AvxVector {
    type HalfVector: AvxVector128<FullVector = Self>;
    type ScalarType: AvxNum<VectorType = Self>;

Show 17 methods // Required methods unsafe fn lo(self) -> Self::HalfVector; unsafe fn hi(self) -> Self::HalfVector; unsafe fn merge(lo: Self::HalfVector, hi: Self::HalfVector) -> Self; unsafe fn broadcast_complex_elements( value: Complex<Self::ScalarType>, ) -> Self; unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self; unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self); unsafe fn gather_complex_avx2_index32( ptr: *const Complex<Self::ScalarType>, indexes: __m128i, ) -> Self; unsafe fn gather_complex_avx2_index64( ptr: *const Complex<Self::ScalarType>, indexes: __m256i, ) -> Self; unsafe fn load_partial1_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector; unsafe fn load_partial2_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector; unsafe fn load_partial3_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self; unsafe fn store_partial1_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, ); unsafe fn store_partial2_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, ); unsafe fn store_partial3_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, ); // Provided methods unsafe fn column_butterfly6(rows: [Self; 6], twiddles: Self) -> [Self; 6] { ... } unsafe fn column_butterfly9( rows: [Self; 9], twiddles: [Self; 3], butterfly3_twiddles: Self, ) -> [Self; 9] { ... } unsafe fn column_butterfly12( rows: [Self; 12], butterfly3_twiddles: Self, rotation: Rotation90<Self>, ) -> [Self; 12] { ... }
}
Expand description

A 256-bit SIMD vector of complex numbers, stored with the real values and imaginary values interleaved. Implemented for __m256, __m256d

This trait implements things specific to 256-types, like splitting a 256 vector into 128 vectors For compiler-placation reasons, all interactions/awareness the scalar type go here

Required Associated Types§

Source

type HalfVector: AvxVector128<FullVector = Self>

Source

type ScalarType: AvxNum<VectorType = Self>

Required Methods§

Source

unsafe fn lo(self) -> Self::HalfVector

Source

unsafe fn hi(self) -> Self::HalfVector

Source

unsafe fn merge(lo: Self::HalfVector, hi: Self::HalfVector) -> Self

Source

unsafe fn broadcast_complex_elements(value: Complex<Self::ScalarType>) -> Self

Fill a vector by repeating the provided complex number as many times as possible

Source

unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source

unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self)

Source

unsafe fn gather_complex_avx2_index32( ptr: *const Complex<Self::ScalarType>, indexes: __m128i, ) -> Self

Source

unsafe fn gather_complex_avx2_index64( ptr: *const Complex<Self::ScalarType>, indexes: __m256i, ) -> Self

Source

unsafe fn load_partial1_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector

Source

unsafe fn load_partial2_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector

Source

unsafe fn load_partial3_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source

unsafe fn store_partial1_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, )

Source

unsafe fn store_partial2_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, )

Source

unsafe fn store_partial3_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, )

Provided Methods§

Source

unsafe fn column_butterfly6(rows: [Self; 6], twiddles: Self) -> [Self; 6]

Source

unsafe fn column_butterfly9( rows: [Self; 9], twiddles: [Self; 3], butterfly3_twiddles: Self, ) -> [Self; 9]

Source

unsafe fn column_butterfly12( rows: [Self; 12], butterfly3_twiddles: Self, rotation: Rotation90<Self>, ) -> [Self; 12]

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl AvxVector256 for __m256

Source§

type ScalarType = f32

Source§

type HalfVector = __m128

Source§

unsafe fn lo(self) -> Self::HalfVector

Source§

unsafe fn hi(self) -> Self::HalfVector

Source§

unsafe fn merge(lo: Self::HalfVector, hi: Self::HalfVector) -> Self

Source§

unsafe fn broadcast_complex_elements(value: Complex<Self::ScalarType>) -> Self

Source§

unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self)

Source§

unsafe fn gather_complex_avx2_index32( ptr: *const Complex<Self::ScalarType>, indexes: __m128i, ) -> Self

Source§

unsafe fn gather_complex_avx2_index64( ptr: *const Complex<Self::ScalarType>, indexes: __m256i, ) -> Self

Source§

unsafe fn load_partial1_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector

Source§

unsafe fn load_partial2_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector

Source§

unsafe fn load_partial3_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn store_partial1_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, )

Source§

unsafe fn store_partial2_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, )

Source§

unsafe fn store_partial3_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, )

Source§

impl AvxVector256 for __m256d

Source§

type ScalarType = f64

Source§

type HalfVector = __m128d

Source§

unsafe fn lo(self) -> Self::HalfVector

Source§

unsafe fn hi(self) -> Self::HalfVector

Source§

unsafe fn merge(lo: Self::HalfVector, hi: Self::HalfVector) -> Self

Source§

unsafe fn broadcast_complex_elements(value: Complex<Self::ScalarType>) -> Self

Source§

unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self)

Source§

unsafe fn gather_complex_avx2_index32( ptr: *const Complex<Self::ScalarType>, indexes: __m128i, ) -> Self

Source§

unsafe fn gather_complex_avx2_index64( ptr: *const Complex<Self::ScalarType>, indexes: __m256i, ) -> Self

Source§

unsafe fn load_partial1_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector

Source§

unsafe fn load_partial2_complex( _ptr: *const Complex<Self::ScalarType>, ) -> Self::HalfVector

Source§

unsafe fn load_partial3_complex(_ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn store_partial1_complex( ptr: *mut Complex<Self::ScalarType>, data: Self::HalfVector, )

Source§

unsafe fn store_partial2_complex( _ptr: *mut Complex<Self::ScalarType>, _data: Self::HalfVector, )

Source§

unsafe fn store_partial3_complex( _ptr: *mut Complex<Self::ScalarType>, _data: Self, )

Implementors§