|
1
4
您的标量版本看起来很糟糕(使用类型punning的引用强制转换),并且可能编译为效率非常低的ASM,这比将每个32位元素复制到位模式慢得多。
你的第一个手动矢量化版本甚至没有做同样的工作,不过,它只是屏蔽了所有要离开的非符号位。
不是那个加法
然后你把它编辑成一个版本
尤其是如果你没有用你的花车做任何其他的事情,你实际上会想用
在Skylake和更新版本上,FP布尔值可以使用所有3个矢量ALU端口。( https://agner.org/optimize/ 用于说明表和UARCH指南。) 您的代码应该如下所示:
|
|
|
Dave · 3D矢量的SSE对齐 10 年前 |
|
|
Green goblin · 乱序16位矢量SSE 10 年前 |
|
|
John · 两个8位阵列协方差的快速实现 10 年前 |
|
|
Rames · XMM寄存器的位取反 10 年前 |
|
|
ishaan arora · 在C中将代码从SSE2转换为SSE4 10 年前 |
|
|
warunapww Krishna · PADDD指令的操作数 10 年前 |
|
|
Thomas · FMA指令集的硬件支持有多丰富 10 年前 |
|
|
user1095108 · 向量*矩阵产品效率问题 11 年前 |