我已经对AMD64 (x86-64)指令做了大量的研究,这有点让人困惑。很多时候,官方CPU文档并没有将指令指定为特定集合的一部分,有时会将特定指令所属的指令集划分到internet上。这方面的一个例子是SFENCE,一些消息来源声称它是EMMX的一部分,而另一些则声称它是SSE的一部分。
我试着把它们组织在一个电子表格中,以帮助学习,但在一个技术和精确的领域,这些不一致之处令人难以置信地令人沮丧。
发布于 2022-03-03 18:00:36
EMMX是SSE的一个子集,sfence是两者的一部分。
AMD没有立即支持所有的SSE指令,但在最初的获取不需要新XMM寄存器的子集。 (见近底部的PDF),这成为众所周知的EMMX。例如,它包括pavgb mm0, mm1 (但不包括pavgb xmm0, xmm1),也包括sfence。
EMMX中的所有指令也在SSE中,支持SSE的处理器可以执行EMMX代码,不管它们是否“显式”支持EMMX (EMMX有一个专用的CPUID功能标志)。Zen 1--也就是你链接的峰会岭--隐式地支持EMMX :它没有相应的特性标志集,但是由于它支持SSE,所以它也最终支持EMMX。在Zen之前,带有SSE的AMD处理器也用来设置EMMX功能标志。
https://stackoverflow.com/questions/71340491
复制相似问题