#[inline]
#[target_feature(enable = "sse2")]
unsafe fn transpose_sse2(self) -> Mat4 {
- unsafe {
- use std::arch::x86_64::_MM_TRANSPOSE4_PS;
- let [mut row0, mut row1, mut row2, mut row3] = self.as_m128_array();
- _MM_TRANSPOSE4_PS(&mut row0, &mut row1, &mut row2, &mut row3);
- Mat4::from_m128_array([row0, row1, row2, row3])
- }
+ use std::arch::x86_64::_MM_TRANSPOSE4_PS;
+ let [mut row0, mut row1, mut row2, mut row3] = self.as_m128_array();
+ _MM_TRANSPOSE4_PS(&mut row0, &mut row1, &mut row2, &mut row3);
+ Mat4::from_m128_array([row0, row1, row2, row3])
}
/// Returns the transpose of `self`.
#[inline]
#[target_feature(enable = "sse4.1")]
unsafe fn transform_vec4_sse41(&self, vec: Vec4) -> Vec4 {
- unsafe {
- use std::arch::x86_64::{_mm_hadd_ps, _mm_mul_ps};
+ use std::arch::x86_64::{_mm_hadd_ps, _mm_mul_ps};
- let vec = vec.into();
- let rows = self.as_m128_array();
+ let vec = vec.into();
+ let rows = self.as_m128_array();
- let values = _mm_hadd_ps(
- _mm_hadd_ps(_mm_mul_ps(rows[0], vec), _mm_mul_ps(rows[1], vec)),
- _mm_hadd_ps(_mm_mul_ps(rows[2], vec), _mm_mul_ps(rows[3], vec)),
- );
+ let values = _mm_hadd_ps(
+ _mm_hadd_ps(_mm_mul_ps(rows[0], vec), _mm_mul_ps(rows[1], vec)),
+ _mm_hadd_ps(_mm_mul_ps(rows[2], vec), _mm_mul_ps(rows[3], vec)),
+ );
- values.into()
- }
+ values.into()
}
/// Transforms the given [`Vec4`] `vec` by `self`.