SSE_ALL-Swizzle-Other#
_MM_TRANSPOSE4_PS#
- Tech:
SSE_ALL
- Category:
Swizzle
- Header:
xmmintrin.h
- Searchable:
SSE_ALL-Swizzle-Other
- Return Type:
void
- Param Types:
__m128 row0, __m128 row1, __m128 row2, __m128 row3
- Param ETypes:
FP32 row0, FP32 row1, FP32 row2, FP32 row3
void _MM_TRANSPOSE4_PS(__m128 row0, __m128 row1,
__m128 row2, __m128 row3)
Intel Description
Macro: Transpose the 4x4 matrix formed by the 4 rows of single-precision (32-bit) floating-point elements in “row0”, “row1”, “row2”, and “row3”, and store the transposed matrix in these vectors (“row0” now contains column 0, etc.).
Intel Implementation Psudeo-Code
__m128 tmp3, tmp2, tmp1, tmp0;
tmp0 := _mm_unpacklo_ps(row0, row1);
tmp2 := _mm_unpacklo_ps(row2, row3);
tmp1 := _mm_unpackhi_ps(row0, row1);
tmp3 := _mm_unpackhi_ps(row2, row3);
row0 := _mm_movelh_ps(tmp0, tmp2);
row1 := _mm_movehl_ps(tmp2, tmp0);
row2 := _mm_movelh_ps(tmp1, tmp3);
row3 := _mm_movehl_ps(tmp3, tmp1);