sse快速加载数组的前半部分
sse fast load first half of an array
假设我有一个大小为8的数组,用无符号整数填充。
unsigned int t[8]
现在我想将每个元素的前16位加载到128位寄存器中:
__m128i to_fill
有快速的方法吗?而不是使用循环并屏蔽每个元素?
您需要加载两个4 x 32位int的向量,屏蔽每个元素的高16位,然后将它们打包为一个8 x 16位int的单个向量。
__m128i v_lo = _mm_loadu_si128((__m128i *)&t[0]);
__m128i v_hi = _mm_loadu_si128((__m128i *)&t[4]);
v_lo = _mm_and_si128(v_lo, _mm_set1_epi32(0xffff));
v_hi = _mm_and_si128(v_hi, _mm_set1_epi32(0xffff));
__m128i v = _mm_packs_epi32(v_lo, v_hi);
相关文章:
- 如何从向量或数组中选择最常见的数字?(前五名)C++
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 我的字符串数组一次打印出前两个字符串
- 如何在给出前两个数字的级数中找到大于 x 的第 n 个最小子数组总和?
- 在向量数组中获得前五个最大的结果
- 如何从大到小组织数组中的前 10 个常用值
- Cython:从参考获得时缺少两个前元素的 Numpy 数组
- 使用动态数组使用 c++ 的前向差异表
- 从 2D 数组中获取前一个数组,其中给定数组作为函数中的参数传递
- 在打印出动态分配的数组中的前两个数字时遇到问题,其他数字工作正常
- 来自数组的前5个数字的总和
- 如何从 char 数组中删除前 4 个字符
- C++矩阵乘法返回数组的前2行和最后2行的指针
- char数组在结束前包含空字符
- 常量时间更改数组的前 k 个元素(C++)
- 促进Spirit:如何解析长度在前的字节数组
- 如果前一个字符相同,则跳过数组中的一个字符
- 如何将数组的前半部分与大小未知的后半部分交换
- 如何通过从后到前搜索分隔符来读取字符数组