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§
type HalfVector: AvxVector128<FullVector = Self>
type ScalarType: AvxNum<VectorType = Self>
Required Methods§
unsafe fn lo(self) -> Self::HalfVector
unsafe fn hi(self) -> Self::HalfVector
unsafe fn merge(lo: Self::HalfVector, hi: Self::HalfVector) -> Self
Sourceunsafe fn broadcast_complex_elements(value: Complex<Self::ScalarType>) -> Self
unsafe fn broadcast_complex_elements(value: Complex<Self::ScalarType>) -> Self
Fill a vector by repeating the provided complex number as many times as possible
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]
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".