Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 警告C4752:使用_mm256_setr_epi16时发现英特尔(R)高级向量扩展_C++_Visual Studio 2015_Avx_Avx2 - Fatal编程技术网

C++ 警告C4752:使用_mm256_setr_epi16时发现英特尔(R)高级向量扩展

C++ 警告C4752:使用_mm256_setr_epi16时发现英特尔(R)高级向量扩展,c++,visual-studio-2015,avx,avx2,C++,Visual Studio 2015,Avx,Avx2,我在Visual Studio 2015上使用/ARC:AVX2编写C++程序,并添加< >包含 大多数AVX方法工作正常,包括\u mm256\u setr\u epi32() 但是,当我尝试使用\u mm256\u setr\u epi16()时,出现以下错误: 警告C4752:发现英特尔(R)高级向量扩展;考虑使用/ARC:AVX 所有输入参数都是短整数。我已经将错误隔离到第9到第16个参数——当它们是常数时——一切都正常,但是当我在其中一些地方放置一个短变量时,我得到了一个错误 编辑:

我在Visual Studio 2015上使用/ARC:AVX2编写C++程序,并添加< <代码> >包含

大多数AVX方法工作正常,包括

\u mm256\u setr\u epi32()

但是,当我尝试使用
\u mm256\u setr\u epi16()
时,出现以下错误:

警告C4752:发现英特尔(R)高级向量扩展;考虑使用/ARC:AVX

所有输入参数都是短整数。我已经将错误隔离到第9到第16个参数——当它们是常数时——一切都正常,但是当我在其中一些地方放置一个短变量时,我得到了一个错误

编辑: 未找到解决方案,但使用了此解决方法

#pragma warning(disable:4752) {my method here} #pragma warning(default:4752)

这会消除任何警告,但会正确编译和运行。

奇怪的是(显然,在启用AVX2时允许使用AVX),实际上在大多数情况下,集合宏中不应该有非常量(某些特定模式可以)考虑代码和性能嗅觉,对于任何超过2个参数的集合,使用非常量。我把常数作为错误位置的一个例子。显然,我使用非常量参数作为method@HaimItzhayek不应使用非常量参数。如果你看一下它们是如何编译的,你会发现除非所有的参数都是常量,否则编译速度会非常慢。如果集合本身不是性能关键型的(比如一些初始化向量或其他东西),那就好了。虽然这很奇怪(当AVX2被启用时,显然允许使用AVX),但集合宏中确实不应该有非常量(一些特定的模式是可以的)考虑代码和性能嗅觉,对于任何超过2个参数的集合,使用非常量。我把常数作为错误位置的一个例子。显然,我使用非常量参数作为method@HaimItzhayek不应使用非常量参数。如果你看一下它们是如何编译的,你会发现除非所有的参数都是常量,否则编译速度会非常慢。如果集合本身不是性能关键的(比如一些初始化向量或其他东西),那么这很好。