如何解决 vfmadd213ps 的 "illegal instruction"?
How to solve "illegal instruction" for vfmadd213ps?
我已经尝试过 AVX 内在函数。但是造成了"Unhandled exception at 0x00E01555 in test.exe: 0xC000001D: Illegal Instruction."
我用的是Visual studio 2015,异常错误是在"vfmadd213ps ymm2,ymm1,ymm0"指令处引起的。
我已经尝试设置“/arch:AVX”和“/arch:AVX2”,但仍然导致错误。
下面是我的代码。
#include <immintrin.h>
int main(int argc, char *argv[])
{
float a[8] = { 0 };
float b[8] = { 0 };
float c[8] = { 0 };
__m256 _a = _mm256_loadu_ps(a);
__m256 _b = _mm256_loadu_ps(b);
__m256 _c = _mm256_loadu_ps(c);
__m256 result = _mm256_fmadd_ps(_a, _b, _c);
_mm256_storeu_ps(c, result);
return 0;
}
"__m256 result = _mm256_fmadd_ps(_a, _b, _c);" is disassembly
vmovups ymm0,ymmword ptr [_c]
vmovups ymm1,ymmword ptr [_b]
vmovups ymm2,ymmword ptr [_a]
vfmadd213ps ymm2,ymm1,ymm0
vmovups ymmword ptr [ebp-160h],ymm2
vmovups ymm0,ymmword ptr [ebp-160h]
vmovups ymmword ptr [result],ymm0
以及在 "vfmadd213ps ymm2,ymm1,ymm0" 处导致的错误。
那我做错了什么? OS 是 win 7 64 位,CPU 是 Intel(R) Core(TM) i7-3520M CPU @ 2.90Ghz (4 CPUs), ~2.9Ghz.
因为您的处理器不支持该指令。
FVMADD213PS 是 FMA3 指令集扩展的一部分。英特尔在 Haswell ("fourth-generation core") 英特尔微架构中添加了对该指令集扩展的支持;您笔记本电脑中的处理器是 Ivy Bridge ("third-generation core") 部件,因此它太旧,无法支持此功能。
我已经尝试过 AVX 内在函数。但是造成了"Unhandled exception at 0x00E01555 in test.exe: 0xC000001D: Illegal Instruction."
我用的是Visual studio 2015,异常错误是在"vfmadd213ps ymm2,ymm1,ymm0"指令处引起的。 我已经尝试设置“/arch:AVX”和“/arch:AVX2”,但仍然导致错误。 下面是我的代码。
#include <immintrin.h>
int main(int argc, char *argv[])
{
float a[8] = { 0 };
float b[8] = { 0 };
float c[8] = { 0 };
__m256 _a = _mm256_loadu_ps(a);
__m256 _b = _mm256_loadu_ps(b);
__m256 _c = _mm256_loadu_ps(c);
__m256 result = _mm256_fmadd_ps(_a, _b, _c);
_mm256_storeu_ps(c, result);
return 0;
}
"__m256 result = _mm256_fmadd_ps(_a, _b, _c);" is disassembly
vmovups ymm0,ymmword ptr [_c]
vmovups ymm1,ymmword ptr [_b]
vmovups ymm2,ymmword ptr [_a]
vfmadd213ps ymm2,ymm1,ymm0
vmovups ymmword ptr [ebp-160h],ymm2
vmovups ymm0,ymmword ptr [ebp-160h]
vmovups ymmword ptr [result],ymm0
以及在 "vfmadd213ps ymm2,ymm1,ymm0" 处导致的错误。
那我做错了什么? OS 是 win 7 64 位,CPU 是 Intel(R) Core(TM) i7-3520M CPU @ 2.90Ghz (4 CPUs), ~2.9Ghz.
因为您的处理器不支持该指令。
FVMADD213PS 是 FMA3 指令集扩展的一部分。英特尔在 Haswell ("fourth-generation core") 英特尔微架构中添加了对该指令集扩展的支持;您笔记本电脑中的处理器是 Ivy Bridge ("third-generation core") 部件,因此它太旧,无法支持此功能。