草庐IT

c++ - 寻找非立即移位值的 sse 128 移位操作

内在的_mm_slli_si128将对128位寄存器进行逻辑左移,但仅限于立即移位值,并且按字节而不是位进行移位。我可以使用像_mm_sll_epi64或_mm_sll_epi32这样的内在函数来左移__m128i寄存器中的一组值,但这些不会携带“溢出”位。对于N位的移位,想象一下我可以执行以下操作:_mm_sll_epi64_mm_srr_epi64(对于我要携带的位:将它们移到低位)随机播放srr结果或者这些一起。(但可能还必须包括对N相对于64的检查)。有没有更好的办法? 最佳答案 不是您理想的解决方案,但如果您想将SSE寄存

c++ - 为什么 SSE 有 128 位加载功能?

我正在查看其他人的代码,目前正试图找出_mm_load_si128存在的原因。基本上,我尝试替换_ra=_mm_load_si128(reinterpret_cast(&cd->data[idx]));与_ra=*reinterpret_cast(&cd->data[idx]);它的工作原理和执行完全相同。我认为加载函数只是为了方便而存在于较小的类型中,这样人们就不必手动将它们打包到连续内存中,但是对于已经按正确顺序排列的数据,何必呢?_mm_load_si128还有其他功能吗?或者它本质上只是一种迂回的赋值方式? 最佳答案 SSE

c++ - 为什么 SSE 有 128 位加载功能?

我正在查看其他人的代码,目前正试图找出_mm_load_si128存在的原因。基本上,我尝试替换_ra=_mm_load_si128(reinterpret_cast(&cd->data[idx]));与_ra=*reinterpret_cast(&cd->data[idx]);它的工作原理和执行完全相同。我认为加载函数只是为了方便而存在于较小的类型中,这样人们就不必手动将它们打包到连续内存中,但是对于已经按正确顺序排列的数据,何必呢?_mm_load_si128还有其他功能吗?或者它本质上只是一种迂回的赋值方式? 最佳答案 SSE

c++ - clang 和 __float128 错误/错误

我已经成功编译了当前3.3的clang分支。但是随后任何文件的C++编译都会因错误/错误而失败。可以解决吗?Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/iostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/ostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../.

c++ - clang 和 __float128 错误/错误

我已经成功编译了当前3.3的clang分支。但是随后任何文件的C++编译都会因错误/错误而失败。可以解决吗?Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/iostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/ostream:39:Infileincludedfrom/usr/lib/gcc/x86_64-linux-gnu/4.7/../../.

c++ - 精确的大有限域线性代数库(例如 GF(2^128)/GF(2^256) )

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于StackOverflow来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion一般我正在寻找一个能够对大型有限域进行精确计算的库,例如GF(2128)/?2128和GF(2256)/?2256。我在下面列出了我需要的功能以及很酷的功能。显然,图书馆应该尽可能快:-)。啊,因为我不是C++大师(可能大多数库都是C++),所以示例代码

c++ - 精确的大有限域线性代数库(例如 GF(2^128)/GF(2^256) )

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于StackOverflow来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion一般我正在寻找一个能够对大型有限域进行精确计算的库,例如GF(2128)/?2128和GF(2256)/?2256。我在下面列出了我需要的功能以及很酷的功能。显然,图书馆应该尽可能快:-)。啊,因为我不是C++大师(可能大多数库都是C++),所以示例代码

c++ - AVX 256 位代码的性能略逊于等效的 128 位 SSSE3 代码

我正在尝试编写非常有效的汉明距离代码。灵感来自WojciechMuła极其聪明的SSE3popcountimplementation,我编写了一个AVX2等效解决方案,这次使用256位寄存器。我预计基于所涉及操作的双倍并行度至少有30%-40%的改进,但令我惊讶的是,AVX2代码有点慢(大约2%)!有人能告诉我我没有获得预期性能提升的可能原因吗?展开,两个64字节block的SSE3汉明距离:INT32SSE_PopCount(constUINT32*__restrictpA,constUINT32*__restrictpB){__m128ipaccum=_mm_setzero_si1

c++ - AVX 256 位代码的性能略逊于等效的 128 位 SSSE3 代码

我正在尝试编写非常有效的汉明距离代码。灵感来自WojciechMuła极其聪明的SSE3popcountimplementation,我编写了一个AVX2等效解决方案,这次使用256位寄存器。我预计基于所涉及操作的双倍并行度至少有30%-40%的改进,但令我惊讶的是,AVX2代码有点慢(大约2%)!有人能告诉我我没有获得预期性能提升的可能原因吗?展开,两个64字节block的SSE3汉明距离:INT32SSE_PopCount(constUINT32*__restrictpA,constUINT32*__restrictpB){__m128ipaccum=_mm_setzero_si1

c++ - 如何在 Visual Studio 上启用 __int128?

当我在VisualStudio的C++项目中键入__int128时,编辑器会将__int128的颜色更改为蓝色(类似于关键字)。但是当我编译源码时,出现以下错误:errorC4235:nonstandardextensionused:'__int128'keywordnotsupportedonthisarchitecture如何在VisualStudio上启用__int128? 最佳答案 MSDN没有将其列为可用,而最近的response同意,所以正式来说,不,没有名为__int128的类型,无法启用。此外,永远不要相信语法提示符