intrinsics相关内容

未知分段错误问题

我有一个是推动我疯了分割故障问题。 这是code: 的(K = 0; K<范围; K = K + 4) { INT K1,K2,kfactor,k1factor,k2factor; __m128 bfly0_rv,bfly1_rv,bfly2_rv,bfly3_rv; __m128 bfly0_iv, ..
发布时间:2016-08-25 09:53:35 C/C++

如何使用英特尔内部函数检查是否AVX扩展是由CPU的支持?

我在写采用英特尔内部函数的程序。我想用 _mm_permute_pd 内在的,这是唯一与AVX的CPU可用。对于没有AVX的CPU我可以使用 _mm_shuffle_pd 但根据规格它比 _mm_permute_pd 慢得多。做英特尔内部函数头文件定义常量,让我分辨AVX是否支持,让我可以写某事像这样: #IFDEF __IS_AVX_SUPPORTED__ //有某事像这样定义的? //使用_ ..
发布时间:2016-08-22 16:51:46 C/C++

最佳汇编或编译的三个值中的最低

我看用GCC-4.8 x86_64的产生code和不知道是否有一个更好的(更快)的方式来计算最低的三个值的。 下面是从Python的收藏的模块,计算最低 M 的 rightindex + 1 和 leftindex : ssize_t供M = N; 如果(M> rightindex + 1) M = rightindex + 1; 如果(M> le ..
发布时间:2016-08-21 21:04:28 C/C++

利用上证所内部函数优化

我想一个循环我已经转换为上证所内部函数。我似乎已经取得了相当不错的进展,我的意思是这是正确的方向,但是我似乎已经做了一些翻译错误的地方,因为我没有得到相同的“正确”的答案从非SSE $结果C $℃。 我用的4倍展开 我最初的循环是这样的: INT unroll_n =(N / 4)* 4;对于(INT J = 0; J< unroll_n; J ++){ 的for(in ..
发布时间:2016-08-19 00:38:26 C/C++

为什么增速低于用AVX2预期?

我已经在矢量使用AVX2的内部函数指令矩阵加法的内循环,我也有从的此处。我希望加速比应为5倍,因为几乎4潜伏期在1024迭代超过128次迭代6延迟情况发生,但增速是3倍。因此问题是还有什么在这里,我没有看到。我使用的gcc,在C编码,内部函数,CPU是SKYLAKE微架构6700hq 下面是C和汇编了把内循环。 全局数据: INT __attribute __((排列(32)))一[MAX ..
发布时间:2016-08-18 23:45:39 C/C++

如何将一个像素结构加载到一个SSE寄存器?

我有8位像素数据的结构: 结构__attribute __((排列(4))){像素 焦炭 - [R; 焦克; 炭B: 所以char a; } 我想使用SSE指令来计算这些像素(即,Paeth转换)某些事情。我怎么能这些像素加载到一个SSE寄存器为32位无符号整数? 解决方案 好吧,使用SSE2整数内部函数从< emmintrin.h> 首先加 ..
发布时间:2016-08-18 22:29:42 C/C++

什么是使用不同版本的上证所内部函数在GCC的正确方法?

我会给予一个例子问我的问题。现在我有一个调用的函数 do_something()。 它有三个版本: do_something(), do_something_sse3()和 do_something_sse4 ()。当我的程序运行时,它会检测CPU的功能(看看它是否支持SSE3 SSE4或),并调用相应的三个版本中的一个。 的问题是::当我建立我的程序与海湾合作委员会,我必须设置 -msse4 ..
发布时间:2016-08-18 22:26:23 C/C++

处理零的_mm256_rsqrt_ps()

由于 _mm256_sqrt_ps()是比较慢的,而且我生成的值将立即与截断_mm256_floor_ps(),环顾四周,似乎这样做的: _mm256_mul_ps(_mm256_rsqrt_ps(eightFloats) eightFloats); 是去表现,额外位的方式,避免了流水线停顿。 不幸的是,零值,当然,我得到一个崩溃计算 1 /开方(0)。什么是解 ..
发布时间:2016-08-18 21:44:48 C/C++

什么是逻辑SSE内部函数之间的区别?

是否有不同类型的逻辑上证所内部函数有什么区别?例如,如果我们采取或操作,有三个内部函数:_mm_or_ps,_mm_or_pd和_mm_or_si128所有这一切都做同样的事情:计算的按位的OR的操作数。我的问题: 有没有使用一种或另一种内在的(在适当的压铸类)之间的差异。会不会有像在一些具体情况更长的执行任何隐藏费用? 这些内在函数映射到三个不同的x86指令(POR,ORPS,orp ..
发布时间:2016-08-18 14:16:37 C/C++

如何使用MSVC内在函数来得到这个GCC code的相同呢?

以下code调用内建函数在GCC CLZ / CTZ,并在其他系统上,已丙版本。很显然,将C版本有点不理想,如果系统有一个内建的CLZ / CTZ指令,像x86和ARM。 #IFDEF __GNUC__ #定义CLZ(X)__builtin_clz(X) CTZ的#define(x)的__builtin_ctz(X) #其他 静态uint32_t的ALWAYS_INLINE POPCNT(ui ..
发布时间:2016-08-17 23:22:28 C/C++

堆栈MMX内部函数和Microsoft的C用法中++

我有一个内联汇编循环累加元素从MMX指令一个Int32数据数组。尤其是,它使用了MMX寄存器可以容纳16 int32s并行计算16个不同的累加和的事实。 我现在想这块code的转换为MMX内部函数,但我怕我会蒙受性能损失,因为人们无法明确intruct编译器使用8个MMX寄存器accomulate 16个独立的款项。 任何人都可以在此发表评论,也许提出如何将一块低于code的转换使用内在函数的 ..
发布时间:2016-07-18 21:35:02 .NET Framework

86最大/最小汇编指令?

是否有可以加快最小/最大双打的向量计算的汇编指令/上酷睿i7架构的整数? 更新: 我没想到会这么丰富的解答,谢谢。 所以,我看到,最大/最小值,可以没有分支的事。 我有子问题: 有没有一种有效的方式来获得最大的双指数数组? 解决方案 SSE4具有 PMAXSD 或 PMAXUD 32位有符号/无符号整数,这可能是有用的。 SSE2具有 MAXPD 和 MAXSD 这之间的比较并 ..
发布时间:2016-07-18 20:38:40 .NET Framework

在Linux中InterlockedIncrement的当量/ GCC

这将是一个很简单的问题(可复制),但我无法找到它。 的Win32 API提供了一个非常方便的一套原子操作(如内部函数),如 InterlockedIncrement 发射锁定添加 86 code。此外, InterlockedCompareExchange 映射到锁定CMPXCHG 。 不过,我想这样做,在Linux下使用gcc。由于我工作的64位,这是不可能使用内联汇编。是否有内在的GCC? ..
发布时间:2016-07-18 20:08:49 C/C++开发

有关strlen的不同实现的性能问题

我已经实现了以不同的方式,包括 SSE2组装的strlen()函数, SSE4.2组装和 SSE2内在,我也产生了一些实验,请用的strlen()上述<文件string.h>在glibc的和的strlen()。然而,他们以毫秒为单位方面的性能(时间)是意想不到的。 我的实验环境: 的CentOS 7.0 + GCC 4.8.5 +英特尔®至强® 以下是我实现的: 的strl ..
发布时间:2016-07-18 20:03:50 .NET Framework

与内在和装配嵌入式广播

在2.5.3节的英特尔架构指令集扩展编程参考比我们学习 AVX512(和骑士角)的 位字段为某些负载运算指令广播连接code的数据,即指令 从内存中加载数据,并进行一些计算 或数据移动操作。 例如采用Intel汇编语法我们可以播放在用 zmm2 RAX ,然后在地址标code>并把结果写入 zmm1 >这样的 vmulps zmm1,zmm2,[RAX] {} 1to16 ..
发布时间:2016-07-18 20:01:59 .NET Framework

生产循环无GCC CMP指令

我公司拥有一批紧密循环,我试图用GCC和内部函数进行优化。考虑例如下列功能 无效黑社会(浮点* X,浮动* Y,浮动* Z,const int的N){ 浮K = 3.14159f; INT I; __m256 K4 = _mm256_set1_ps(K); 对于(i = 0; I< N,I + = 8){ _mm256_store_ps(安培 ..
发布时间:2016-07-18 19:54:04 .NET Framework

做混合SSE整数/浮点SIMD指令时,我得到的性能损失

我在内部函数的形式,最近不少二手x86的SIMD指令(SSE1234)。我发现无奈的是,上证所ISA有几个简单的指令只适用于浮筒或只为整数,但在理论上应该都同样执行。例如,float和double向量都有说明从一个地址加载128位向量的高64位( movhps 的 movhpd 的),但有一个为整数没有这样的指令向量。 我的问题: 有没有使用浮动整数载体,如运算指令时,期待的性能损失的原因使用 ..
发布时间:2016-07-18 19:53:23 .NET Framework

打印__m128i变量

我试图用内在学习code和下方则是code这确实除了 编译器使用:ICC #包括LT&;&stdio.h中GT; #包括LT&;&emmintrin.h GT; 诠释的main() { __m128i一个= _mm_set_epi32(1,2,3,4); __m128i B = _mm_set_epi32(1,2,3,4); __m128i℃; ..
发布时间:2016-07-18 19:53:12 .NET Framework

是否MINLOC工作在指数从0开始的数组? (Fortran语言90/95)

使用C一段时间后,我又回到了Fortran和分配在我的code数组索引0到N: 实(KIND = DP),尺寸(:),可分配::一 分配(一(0:50)) 我需要找到数组的最小绝对值的指数,所以我用MINLOC,并检查这一点,我将它比作MINVAL: minloc(ABS(A(:))) MINVAL(ABS(a))的 MINLOC的结果是指数 42 但MINVAL的结果,符合 41 。 ..
发布时间:2016-05-30 22:47:06 其他开发