混合 SSE 整数/浮点 SIMD 指令时,性能是否会受到影响
我最近经常以内在函数的形式使用 x86 SIMD 指令 (SSE1234)。令我沮丧的是,SSE ISA 有几个简单的指令,仅适用于浮点数或整数,但理论上对两者的性能应…
从 /proc/cpuinfo 为 GCC 构建 sse 开关
我有一个 Makefile,我想解析 /proc/cpuinfo 中的标志并构建可用的 sse 指令集列表以传递给 gcc (-msse -msse2 等)。这是迄今为止我想出的最好的方…
在 gcc 中使用 struct 作为 SSE 向量类型?
GCC 中是否可以使用结构体或类作为 SSE 指令的向量类型? 类似于: typedef struct vfloat __attribute__((vector_size(16))) { float x,y,z,w } vflo…
C++ 中 SSE/AVX 的 x86 CPU 调度
我有一个算法,该算法受益于 SSE(2) 内在函数的手动优化。此外,该算法未来还将能够受益于256位AVX寄存器。 最佳方法是什么 我的问题是在编译时注册我…
使用SSE加速lower_bound函数
在我目前正在从事的一个项目中,我经常需要在排序数组中找到可以插入元素的最低可能索引(如 C++ 中的 std::lower_bound )。 使用 SSE 来加速我的算…
近似 log10[x^k0 + k1]
问候。我试图近似函数 Log10[x^k0 + k1],其中 .21 < k0< 21、0< k1< ~2000,x为整数<2000 2^14。 k0 & k1 是常数。出于实际目的,您可以假…
gcc 中的 SSE(SIMD 扩展)支持
我看到如下代码: #include "stdio.h" #define VECTOR_SIZE 4 typedef float v4sf __attribute__ ((vector_size(sizeof(float)*VECTOR_SIZE))) // vec…
改进 SSE (SSSE3) YUV 到 RGB 代码
我正在寻找优化我为将 YUV 转换为 RGB(平面和打包 YUV 函数)而编写的一些 SSE 代码。 我目前使用的是 SSSE3,但如果后续 SSE 版本中有有用的功能,…
_mm_ 类型函数的等效 C 代码
什么是简单的等效 C 代码来克服 __ 函数,如 _mm_store_ps、_mm_add_ps 等。请通过具有等效 C 代码的示例指定任何函数。 为什么使用这些函数?…
如何让下面的代码更快
int u1, u2 unsigned long elm1[20], _mulpre[16][20], res1[40], res2[40] 64 bits long res1, res2 initialized to zero. l = 60 while (l) { for (…
SSE2:双精度对数函数
我需要日志函数的开源(无许可证限制)实现,带有签名的东西 __m128d _mm_log_pd(__m128d) 可以在英特尔短向量数学库(ICC的一部分)中找到,但ICC既…
SIMD 代码与标量代码
以下循环执行数百次。 <代码> elma 和 elmc 都是无符号长(64 位)数组,res1 和 res2 也是如此。 unsigned long simdstore[2] __m128i *p, simda…