sse

    2热度

    1回答

    我想用SIMD来计算exponential函数。我发现这个功能:https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_exp_ps&expand=2136 我已经在我的代码中包含了"immintrin.h",并且我的cpu也有一个SSE的标志。但gcc正在抱怨error: ‘_mm_exp_pd’ was no

    6热度

    2回答

    我正在实现SSE类型之间的转换,并且发现对于SSE4.1之前的目标实现int8-> int64扩展转换非常麻烦。 直截了当的实现将是: inline __m128i convert_i8_i64(__m128i a) { #ifdef __SSE4_1__ return _mm_cvtepi8_epi64(a); #else a = _mm_unpacklo_epi8(a

    2热度

    1回答

    以下循环将整数矩阵转置为另一个整数矩阵。当我编译有趣的时候,它会生成movaps指令将结果存储到输出矩阵中。为什么gcc这样做? 数据: int __attribute__((aligned(16))) t[N][M] , __attribute__((aligned(16))) c_tra[N][M]; 循环: for(i=0; i<N; i+=4){ for(j=0;

    0热度

    1回答

    明确运行我有一个应用程序(makeahmap)的报告崩溃,当执行SIMD代码: https://github.com/artyom-beilis/makeahmap/blob/master/sources/makeahmap.cpp#L947 我不能准确地重现该问题我的机器上相同的输入: 无论是Windows 7,我用我的Windows开发 也不在Linux上 - 还不止这些,该方案具有完美的va

    1热度

    2回答

    考虑我有一个SSE阵列具有16位的数据: {1,2,3,4,5,6,7,8} 现在我需要通过只存储低位字节此SSE数组转换成8个数据在像第一8个字节的16个的数据: {1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0}. 是否有任何SSE指令来执行此操作?

    0热度

    1回答

    我正在读取来自2个未对齐的向量vec1和vec2的整数,使用SSE指令_mm_loadu_si128从对齐和未对齐的内存中读取数据。然后我进行按位操作,然后使用_mm_storeu_si128存储结果,该数据将数据存储到未对齐的内存中。该商店的目标是一个名为arr1的数组。看来在商店之前,我可以访问arr1,但在店铺访问arr1后给出了未定义的行为(有时会出现段错误)。 #include <vec

    3热度

    1回答

    如何使用SSE内在函数将16位8位整数除以4(或将它们向右移2)?

    2热度

    1回答

    我认为我对延迟和吞吐量之间的差异有一个很好的理解。但是,对于Intel Intrinsics而言,延迟对指令吞吐量的影响对我来说并不明确,特别是在按顺序(或几乎按顺序)使用多个内部调用时。 例如,让我们考虑: _mm_cmpestrc 此为11延迟,并且在处理器的Haswell吞吐量7。如果我在一个循环中运行这个指令,我会在11个周期后得到一个连续的每个周期输出吗?由于这需要一次运行11条指令

    5热度

    1回答

    我想查找一个角色的第一个实例,在这种情况下使用simd(AVX2或更早版本)'''。我想使用_mm256_cmpeq_epi8,但是我需要一个快速的方法来查找__m256i中的任何结果字节是否已被设置为0xFF,然后计划使用_mm256_movemask_epi8将结果从字节转换为位,并使用ffs来获得匹配的索引。使用_mm_movemask_epi8一次搬出的一部分的任何其他建议

    6热度

    1回答

    标题可能看起来是无稽之谈,但让我解释一下。我正在研究一个方案有一天,当我遇到以下汇编代码: movaps xmm3, xmmword ptr [rbp-30h] lea rdx, [rdi+1320h] movaps xmm5, xmm3 movaps xmm6, xmm3 movaps xmm0, xmm3 movss dword ptr [rdx], xmm3 shufps xm