从C11-memory_order中我们知道:http://en.cppreference.com/w/c/atomic/memory_order

与C++ 11-std::memory_order相同:http://en.cppreference.com/w/cpp/atomic/memory_order



但这是否适用于x86-SSE指令([NT]除外-非时间性的,我们必须始终使用L/S/MFENCE)?

在这里说,"sse instructions ... is no requirement on backwards compatibility and memory order is undefined"。可以认为,在需要时,严格的可订购性是为了与较早版本的x86处理器兼容,但是新命令,即SSE([NT]除外)-会自动取消获得订单的命令,对吗?

最佳答案

以下是Intel's Software Developers Manual, volume 3第8.2.2节(2014年9月的版本325384-052US)的摘录:



前三个项目符号描述了发布获取顺序,其中明确列出了异常(exception)。如您所见,异常(exception)列表中仅包含可缓存性控制指令(MOVNT*),而其余的SSE/SSE2和其他矢量指令则遵循常规的内存排序规则,并且不需要使用[LSM]FENCE

关于c++11 - x86-SSE指令是否具有自动发布获取指令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19093137/

10-13 07:01