Visual Studio 2015 C ++编译器可能提供代码内指令集标记

杰罗恩·博斯玛(Jeroen Boschma)

也许是错误的问题。请告诉我,我的假设是在没有SSE可用的情况下,带有SSE标志打开的编译代码将在CPU上崩溃...

我在C ++中有一段FFT代码,我想使用可用的指令集尽可能高效/快速地运行,并编译为DLL。是否可以在C ++代码中使用标签/编译指示,以便我可以为不同的指令集编译同一段代码?简化的伪代码将是:

void do_FFT(double *ptr)
{
    // Detect available instruction set.

    bool MMX_available = ...;
    bool SSE_available = ...;

    // Call correct function.

    if (MMX_available)
        do_FFT_MMX(ptr);
    else if (SSE_available)
        do_FFT_SSE(ptr);
    else
        do_FFT_plain(ptr);
}

[compile next function using MMX instructions]
void do_FFT_MMX(double *ptr)
{
}

[compile next function using SSE instructions]
void do_FFT_SSE(double *ptr)
{
}

[compile next function using plain x86/64 instructions]
void do_FFT_plain(double *ptr)
{
}

这可能吗?还是我必须为每个指令集制作不同的DLL?

索罗尼尔·海蒂尔

您不必将其作为单独的DLL来执行,只需将每个函数放在不同的文件中,并在每个文件而不是整个项目的基础上设置编译标志。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Visual Studio 2015中的C代码错误

可能的Visual Studio 2015 C ++编译器和IntelliSense错误

是否可以将Visual C ++ v120编译器工具集添加到Visual Studio 2015?

Visual Studio 2015 C ++和程序集未生成

Python 3,如何设置Visual Studio C ++ 2015编译器?

也许是Visual Studio 2015中的C#编译器错误

Visual Studio 2015更新3-C ++编译器错误?

如何在Visual Studio 2015中使用roslyn C#编译器?

Visual Studio 2015更新1中C ++的内部编译器错误

Visual Studio 2015-编译器警告(等级2)C4146

Visual Studio 2015 <=> QtCreator 5(c ++)代码可移植性

使用 Visual Studio 2015 的 C 预处理器

Visual Studio 2015 C#XAML设计器无法加载

Visual Studio 2015 c#计时器问题

如何使Visual Studio 2015 C ++项目与Visual Studio 2010兼容?

Visual Studio 2015更新1,c错误

使用C和Visual Studio 2015的ANSI

Visual Studio 2015中的编译器是什么

Visual Studio 2015-缺少64位编译器

Visual Studio 2013和2015中的C ++编译器错误C2280“试图引用已删除的函数”

用于Visual Studio 2015的Wine Visual C ++可重新分发

使用 Visual Studio Shell (Isolated) 2015 编译

Visual Studio 2015从代码生成UML

Visual Studio 2015制作颜色代码

更改默认代码Visual Studio 2015社区

Visual Studio 2015-代码样式设置

当禁用了“增强指令集”标志时,Visual C ++编译器遇到AVX指令时会发生什么?

在Visual Studio项目中使用在vs80(Visual Studio 2005)下编译的C ++的静态库在c ++ vs140(Visual Studio 2015)下编译的

Visual Studio 2015缺少的模拟器