【发布时间】:2014-02-04 07:46:57
【问题描述】:
Haswell 架构提出了几个新指令。其中之一是PEXT (parallel bits extract),其功能由这张图片解释(来源here):
它接受一个值r2 和一个掩码r3 并将r2 的提取位放入r1。
我的问题如下:纯标准 C++11 中优化的模板化函数的等效代码是什么,将来编译器可能会针对该指令进行优化.
【问题讨论】:
-
我认为编译器永远不会尝试确定一个函数是否正在执行此操作并将其编译为单个指令。如果有一些内置的方法可以做到这一点,当然,但每个人都会有不同的实现。所以我不确定你的问题是否可以回答。
-
我想不出你需要这样做的理由。为什么是模板?
-
希望我能对 cmets 投反对票。格雷厄姆,仅仅因为你不需要到处乱搞并不会使问题无效。当您编写低级代码(压缩?图形?)时,快速位杂耍可能非常有价值。
-
这个问题变相重复了? stackoverflow.com/questions/21141848 这是否仍然适用于进行数十亿次迭代的超级计算机?
-
@Mehrdad 您的评论无效。文森特,如果你想要这条指令,你可以通过内联汇编直接使用它,而不是在 C++ 中解决它。这样,您可以确定编译器执行您想要的操作,并且阅读起来应该更清晰。你用的是什么编译器?
标签: c++ c++11 bit-manipulation compiler-optimization instruction-set