使用valgrind评估我的程序时收到一些错误.更准确地说,我得到的错误就像
vex amd64-> IR:未处理的指令字节:0xC5 0xF8 0x28 0x0 0xC5 0xF8 0x29 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;
}
Run Code Online (Sandbox Code Playgroud)
该程序使用gcc编译,选项为-mavx.如果使用SSE2指令_mm_set1_ps,则会发生相同的错误,但仅在使用-mavx编译时才会发生.使用-msse2编译程序时,valgrind报告没有错误.
我怀疑这是一个valgrind错误,但是找不到关于x86的任何报告.我的机器是Core-i7 Sandy-Bridge和valgrind版本3.7.0.
如果有人有更好的替代valgrind的寄存器感知编程,我想知道.
提前致谢