| 89 | } |
| 90 | |
| 91 | static inline void sse2RGBATranspose_4x4(__m128 row0, __m128 row1, __m128 row2, __m128 row3, |
| 92 | __m128 &out_r, __m128 &out_g, __m128 &out_b, __m128 &out_a ) |
| 93 | { |
| 94 | __m128 tmp0 = _mm_unpacklo_ps(row0, row1); |
| 95 | __m128 tmp2 = _mm_unpacklo_ps(row2, row3); |
| 96 | __m128 tmp1 = _mm_unpackhi_ps(row0, row1); |
| 97 | __m128 tmp3 = _mm_unpackhi_ps(row2, row3); |
| 98 | out_r = _mm_movelh_ps(tmp0, tmp2); |
| 99 | out_g = _mm_movehl_ps(tmp2, tmp0); // Note movhlps swaps b with a which is different than unpckhpd |
| 100 | out_b = _mm_movelh_ps(tmp1, tmp3); |
| 101 | out_a = _mm_movehl_ps(tmp3, tmp1); |
| 102 | } |
| 103 | |
| 104 | #if !OCIO_USE_SSE2NEON |
| 105 | |