Valgrind非法指令AVX
Valgrind illegal instruction AVX
我在使用valgrind评估程序时收到一些错误。更准确地说,我会得到像这样的错误
vex amd64->IR:未处理的指令字节:0xC5 0xF8 0x28 0x0 0xC5 0xF80x29 0x45。。。。。。非法指令
我把这个问题孤立到一个非常简单的例子中
#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;
}
该程序是使用带有选项-mavx的gcc编译的。如果改为使用SSE2指令_mm_set1_ps,则会发生相同的错误,但仅当使用-mavx编译时才会发生。当使用-msse2编译程序时,valgrind报告没有错误。
我怀疑这是一个valgrind错误,但找不到任何关于x86的报告。我的机器是Core-i7 Sandy Bridge和valgrind 3.7.0版本。
如果有人有更好的替代valgrind的注册意识编程,我想知道。
提前感谢
您使用的是2011年11月发布的非常旧的valgrind 3.7.0。它不支持AVX/AVX2。
3.8.0中添加了对AVX的支持,3.9.0中增加了对AVX2的支持。最新的可用版本是2014年11月发布的3.10.1。
当前版本
发行说明
mm_broadcast_ss
转换为单个CPU指令,它需要AVX指令集。您可能需要一个最新的valgrind来支持该指令,至少版本3.8.0(2012年8月10日)。
有关解释,请参阅Valgrind核心文档。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++:对不存在的命名空间使用命名空间指令
- 用于AVX的ln(x)的实现,m256
- 函数名是c中该函数的第一条指令的地址吗
- 错误:无效的预处理指令 #i 的意思是 #if?
- 在AVX通道中混洗的最佳方式
- 组装指令中乘法的下部和上部是什么
- OpenMP 与有序和关键指令并行
- AVX 指令中寄存器和指针之间的客观差异
- VS2008中的AVX-512指令库
- 如何检查编译的代码是否使用了 SSE 和 AVX 指令?
- 模拟 AVX-512 掩码指令
- 在英特尔x86体系结构上使用非AVX指令修改xmm整数寄存器值
- 如何使用 avx 指令将浮点数向量转换为短整型?
- 英特尔酷睿i7的AVX上存在非法指令
- 强制AVX内部函数使用SSE指令
- 使用gcc 4.6.1在mex中启用AVX指令
- 英特尔指令集扩展和用户机(AVX, IMCI…)
- Valgrind非法指令AVX