Intrinsics Vs用于VC ++ 2K8中的SSE编码的内联ASM

时间:2010-04-01 16:12:51

标签: assembly sse simd visual-c++-2008

之前我已经为SSE做了一些内联ASM编码,即使对于不了解ASM的人来说,它也不是。但我注意到MS还提供了包含许多此类特殊指令的内在函数。

是否存在特定的性能差异,或者为什么应该在另一个之上使用的任何其他强有力的理由?

要从标题重复,这是专门涵盖VC ++ 2008为非托管本机C ++公开的内在函数。

4 个答案:

答案 0 :(得分:4)

Visual C ++ for x64中没有内联汇编。内在函数也可以在x64上使用。如果您想将代码移植到x64,则必须使用内在函数。

答案 1 :(得分:3)

一般情况下,最好使用内在函数 - 它对程序员来说效率更高,而且好的编译器(例如Intel ICC)会在寄存器分配,指令调度等方面做得不错。微软编译器在这方面不是很好但是它可能仍然有一个合理的工作 - 如果你需要获得更好的性能,你可以随后切换到ICC。

答案 2 :(得分:1)

内在函数与它们的等效汇编指令相同,如果可能的话你应该使用它们 - 编译器知道直接翻译它们,没有性能差异。

答案 3 :(得分:0)

使用内在函数。

使用装配通常会导致几天的不间断工作, 只是发现编译器击败你的最佳表现5%。 (如果你真的很好,则为5%;最有可能是30%。)