广播__M128矢量的一个任意元素
Broadcast one arbitrary element of __m128 vector
我需要广播__M128向量的一个任意元素。例如第二个元素:
__m128 a = {a0, a1, a2, a3};
__m128 b = {a1, a1, a1, a1};
我知道有内在的_mm_set1_ps(float(和_mm_broadcastrongs(float*(。但是这些内在可以从共同使用记忆寄存器中加载价值。存在从另一个向量寄存器设置标量值的任何方法吗?
您可以像这样使用_mm_shuffle_ps
:
b = _mm_shuffle_ps(a, a, _MM_SHUFFLE(1,1,1,1));
我认为您必须查看_mm_shuffle_epi32((。对于下一个辅助功能,它的使用将很容易:
#include <emmintrin.h>
template <int index> inline __m128 Broadcast(const __m128 & a)
{
return _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(a), index * 0x55));
}
int main()
{
__m128 a = {a0, a1, a2, a3};
__m128 b = Broadcast<1>(a);
return 0;
}
相关文章:
- 如何生成一个随机的 n 位数,其中 n 是任意的
- 创建一个模板函数来读取 hdf5 中的任意数据类型
- 如何在给定任意数量的整数的情况下创建一个唯一键?并使用该键存储,然后从地图中查找
- 广播__M128矢量的一个任意元素
- C 在一个集体成员阵列中存储任意数量的不同类
- 如何使用任意数量的(编译时间确定的)容器创建一个内存池
- visual如何在C++中创建一个函数来提供任意数量的参数
- C++:将任意数量的参数传递给另一个函数
- 给定一个区间向量,输出区间内重叠次数最多的任意一个数字
- 如何在字符串中的任意位置提取下一个整数
- 一个字节中有多少位(任意系统)
- 两个成员中任意一个成员的哈希
- 取一个包含任意数量单词的字符串,并将这些单词存储在不同的字符串变量中
- 创建一个模板化结构,以转动具有任意计数 * 的指针以用作 &
- 如何创建一个工厂函数模板来构造给定任意数量参数的对象
- 我可以很容易地创建一个模板函数,它接受任意类型的任意容器并对其进行操作
- 在打字稿中,如何编写一个函数来处理任意维度数组(例如:<number>Array,Array<Array<number>>,...)?
- 在c++中,如何声明一个接受任意对象的向量数组作为协议的函数
- 我想要一个任意大的缓冲区在Linux/C/ c++
- 我可以知道一个多态对象是否实现了一个任意的抽象类