intrinsics

    0热度

    1回答

    我在AVX2的新版本程序中使用256位变量(__m256i类型),并使用了Intel内在函数。之前,使用64位块来处理数据。所以,_mm_crc32_u64函数用于CRC计算。 crc = _mm_crc32_u64(seed,*chunk_64bit); 但现在,为了提高性能,我想计算CRC每个256个数据块(至少128个数据块)seperately。 一种方法可以像这样在每个块上应用_mm

    0热度

    1回答

    我试图平移该C/C++代码,以SIMD内在功能。 for(int i=0 ; i < length ; i++) A[i] = B[C[i]]; 我能翻译下面的代码(C/C++) for(int i=0 ; i < length ; i++) A[i] = B[i]; 到SIMD代码(使用本征函数) for(int i=0 ; i < length-16 ; i+=16

    4热度

    1回答

    我有一些产品代码,内核实现了各种SIMD指令集,包括AVX,AVX2和AVX512。该代码可以在目标机器上编译成类似./configure --enable-proc=AVX CXXFLAGS="-mavx"的目标机器。 这也适用于暴露AVX intrinsics的Travis CI。我想至少编译AVX2和AVX512版本,以查看是否所有文件都已签入。但似乎编译一个不同的ISA并不容易。 一个简单

    2热度

    1回答

    我试图编译一个使用gcc编译icpc和mkl数学库的大代码。 这是需要AVX的代码。 #include <immintrin.h> #include <stdint.h> #include <math.h> . . _mm256_set_m128d( _mm256_extractf128_pd(t2, 0) + _mm256_extractf128_pd(t2, 1),

    8热度

    1回答

    除了测试单个寄存器是否全零之外,您还可以使用SSE4.1 ptest做什么? 您可以使用SF和CF的组合来测试关于两个未知输入寄存器的任何有用信息吗? 什么是PTEST的好处?你可能会认为这将是很好的检查结果为填充比较(如PCMPEQD或CMPPS),但至少在英特尔CPU,it costs more uops to compare-and-branch using PTEST + JCC than

    0热度

    2回答

    问题听起来令人痛苦熟悉。 假设你有枚举: enum MyEnum {first, second, third}; 现在我想一些INT转换为MyEnum。天真的做法 int i = 2; MyEnum e = (MyEnum)i; 看起来好,但事实并非如此。首先,2将被转换为“第三”,而不是人们所期望的“第二”。其次,这种转换是愚蠢的,我想要一个聪明的。 动机如下: void foo(My

    1热度

    1回答

    条件语句我想为我的游戏做了一些计算,我试图来计算两个点之间的距离。实质上,我使用圆的方程来查看点是否在我定义的半径内。 (x - x1)^2 + (y - y1)^2 <= r^2 我的问题是:我如何用SSE评估条件语句并解释结果?到目前为止,我有这个: float distSqr4 = (pow(x4 - k->getPosition().x, 2) + pow(y4 - k->getPos

    0热度

    1回答

    当我试图用icpc进行编译时,它显示“表达式必须具有类类型”。对此感到困惑。请帮忙。 int main() { __m256d temp; temp.m256d_f64[0] = 1; return 0; }

    1热度

    1回答

    当我尝试加载使用内在函数生成的某些密文时,出现段错误。我根本不明白这个错误。代码示例: unsigned char c[177]; unsigned char m[161]; auth = _mm_setzero_si128(); unsigned char M_star[BLOCKSIZE]; __m128i tag = auth; for(i=0;i<numblocks_mes;++

    11热度

    1回答

    我在旁边的其他人的代码中,并试图找出为什么_mm_load_si128存在。 从本质上讲,我试图与 _ra = *reinterpret_cast<__m128i*>(&cd->data[idx]); 更换 _ra = _mm_load_si128(reinterpret_cast<__m128i*>(&cd->data[idx])); 和它的工作原理,准确地执行相同的。 我计算过,对于较