首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非法指令AVX

非法指令AVX
EN

Stack Overflow用户
提问于 2015-06-23 17:05:31
回答 2查看 2.3K关注 0票数 3

我在评估我的程序时遇到了一些错误。更确切地说,我会犯这样的错误

>IR:未处理指令字节:0xC50xF8 0x28 0x0xC50xF8 0x290x45.非法指令

我用一个非常简单的例子将这个问题隔离开来。

代码语言:javascript
复制
#include <immintrin.h>
int main() {
  float f __attribute__((aligned(16))); // No need to be aligned
  f = 2.0f;
  __m128 a = _mm_broadcast_ss(&f);
  return 0;
}

该程序是用gcc和选项-mavx编译的。如果使用SSE2指令_mm_set1_ps,则会发生相同的错误,但仅在使用-mavx编译时才会发生。当使用-msse2编译程序时,valgrind没有报告错误。

我怀疑这是一个精打细算的错误,但在x86上找不到任何报告。我的机器是一个核心-i7砂桥和瓦莱尔版本3.7.0。

如果有人有一个更好的选择,比英勇为注册意识的编程,我想知道。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-23 17:15:18

mm_broadcast_ss转换成一个CPU指令,它需要AVX指令集。在最少3.8.0版(2012年8月10日),你可能需要一个最新的方法来支持这个指令.

有关解释,请参见瓦莱尔核心文件

票数 1
EN

Stack Overflow用户

发布于 2015-06-23 17:16:38

您使用的是2011年11月发布的非常老的valearch3.7.0。它不支持AVX / AVX2。

3.8.0中增加了对AVX的支持,3.9.0中增加了对AVX2的支持。最新版本是2014年11月发布的3.10.1版。

当前释放

发行说明

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31009094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档