让我说我使用_mm_fmadd_ss编写一个函数,据我所知,大多数(如果不是全部)AMD芯片不支持或拥有自己的版本。
在其中一个芯片上运行时,软件会发生什么?我可以编译多个芯片吗?该计划如何在他们之间做出选择?
起初我以为"哦,我只是做预处理器#ifdef无论什么"但后来我才意识到只有在代码预处理过程中通过这些条件的东西才能输出。
答案 0 :(得分:1)
如果程序包含无效指令,程序通常会终止或根本不执行。编写可移植SIMD代码的一种方法是使用gcc的vector extensions,但您仍需要设置有效的目标体系结构。另一方面,如果您在支持指令的虚拟机中运行代码,则代码可能运行得很好,即使主机CPU不支持指令也是如此。例如,我经常在QEMU下的x86计算机上测试NEON代码。此外,人们已将BOCHS移植到Android上,并在基于ARM的移动电话上运行x86代码(+ SSE)。