6 #if GLM_ARCH & GLM_ARCH_SSE2_BIT 8 GLM_FUNC_QUALIFIER glm_uvec4 glm_i128_interleave(glm_uvec4 x)
10 glm_uvec4
const Mask4 = _mm_set1_epi32(0x0000FFFF);
11 glm_uvec4
const Mask3 = _mm_set1_epi32(0x00FF00FF);
12 glm_uvec4
const Mask2 = _mm_set1_epi32(0x0F0F0F0F);
13 glm_uvec4
const Mask1 = _mm_set1_epi32(0x33333333);
14 glm_uvec4
const Mask0 = _mm_set1_epi32(0x55555555);
26 Reg2 = _mm_slli_si128(Reg1, 2);
27 Reg1 = _mm_or_si128(Reg2, Reg1);
28 Reg1 = _mm_and_si128(Reg1, Mask4);
32 Reg2 = _mm_slli_si128(Reg1, 1);
33 Reg1 = _mm_or_si128(Reg2, Reg1);
34 Reg1 = _mm_and_si128(Reg1, Mask3);
38 Reg2 = _mm_slli_epi32(Reg1, 4);
39 Reg1 = _mm_or_si128(Reg2, Reg1);
40 Reg1 = _mm_and_si128(Reg1, Mask2);
44 Reg2 = _mm_slli_epi32(Reg1, 2);
45 Reg1 = _mm_or_si128(Reg2, Reg1);
46 Reg1 = _mm_and_si128(Reg1, Mask1);
50 Reg2 = _mm_slli_epi32(Reg1, 1);
51 Reg1 = _mm_or_si128(Reg2, Reg1);
52 Reg1 = _mm_and_si128(Reg1, Mask0);
55 Reg2 = _mm_slli_epi32(Reg1, 1);
56 Reg2 = _mm_srli_si128(Reg2, 8);
57 Reg1 = _mm_or_si128(Reg1, Reg2);
62 GLM_FUNC_QUALIFIER glm_uvec4 glm_i128_interleave2(glm_uvec4 x, glm_uvec4 y)
64 glm_uvec4
const Mask4 = _mm_set1_epi32(0x0000FFFF);
65 glm_uvec4
const Mask3 = _mm_set1_epi32(0x00FF00FF);
66 glm_uvec4
const Mask2 = _mm_set1_epi32(0x0F0F0F0F);
67 glm_uvec4
const Mask1 = _mm_set1_epi32(0x33333333);
68 glm_uvec4
const Mask0 = _mm_set1_epi32(0x55555555);
75 Reg1 = _mm_unpacklo_epi64(x, y);
79 Reg2 = _mm_slli_si128(Reg1, 2);
80 Reg1 = _mm_or_si128(Reg2, Reg1);
81 Reg1 = _mm_and_si128(Reg1, Mask4);
85 Reg2 = _mm_slli_si128(Reg1, 1);
86 Reg1 = _mm_or_si128(Reg2, Reg1);
87 Reg1 = _mm_and_si128(Reg1, Mask3);
91 Reg2 = _mm_slli_epi32(Reg1, 4);
92 Reg1 = _mm_or_si128(Reg2, Reg1);
93 Reg1 = _mm_and_si128(Reg1, Mask2);
97 Reg2 = _mm_slli_epi32(Reg1, 2);
98 Reg1 = _mm_or_si128(Reg2, Reg1);
99 Reg1 = _mm_and_si128(Reg1, Mask1);
103 Reg2 = _mm_slli_epi32(Reg1, 1);
104 Reg1 = _mm_or_si128(Reg2, Reg1);
105 Reg1 = _mm_and_si128(Reg1, Mask0);
108 Reg2 = _mm_slli_epi32(Reg1, 1);
109 Reg2 = _mm_srli_si128(Reg2, 8);
110 Reg1 = _mm_or_si128(Reg1, Reg2);
115 #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT