我试图使用带有新关键字的SIMD成员初始化C ++对象。这是我的代码:
#include <immintrin.h>
class simd_obj {
protected:
// float a;
__m256 a;
public:
simd_obj(float f) {
// a = f;
a = _mm256_set1_ps(f);
}
};
int main() {
simd_obj* a = new simd_obj(1.3);
return 0;
}
可以使用带有-mavx
标志的g ++ 5.3.0在Windows 7中编译(通过mingw)。但是,当它运行时,它会崩溃。
当我将a
的类型更改为float并使用简单的赋值(请参阅注释行)时,它正如预期的那样运行良好。
此外,当我将初始化更改为simd_obj a(1.3)
时,即使__m256
类型为a
,也可以正常运行。
你知道为什么上面的代码不起作用吗?