C++11 Can';是否支持AVX2指令?

C++11 Can';是否支持AVX2指令?,c++11,valgrind,avx2,C++11,Valgrind,Avx2,我正在尝试使用valgrind评测用Intel AVX2指令编写的程序。程序在memcheck下运行平稳。但是当我使用callgrind(valgrind--tool=callgrind)运行时,它会以无法识别的指令错误终止。我检查了Valgrind 3.9.0的版本,它说支持英特尔AVX2指令。这仅适用于64位代码。。我用g++-4.8-std=c++11-mavx2-m64编译我的程序,但是错误仍然存在。部分输出如下: vex amd64->IR: unhandled instruct

我正在尝试使用valgrind评测用Intel AVX2指令编写的程序。程序在memcheck下运行平稳。但是当我使用callgrind(
valgrind--tool=callgrind
)运行时,它会以无法识别的指令错误终止。我检查了Valgrind 3.9.0的版本,它说
支持英特尔AVX2指令。这仅适用于64位代码。
。我用
g++-4.8-std=c++11-mavx2-m64编译我的程序,但是错误仍然存在。部分输出如下:

vex amd64->IR: unhandled instruction bytes: 0x16 0xC5 0xDD 0x64 0xD2 0xC5 0xF5 0xDB
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=NONE
vex amd64->IR:   PFX.66=0 PFX.F2=0 PFX.F3=0
 ==6775== valgrind: Unrecognised instruction at address 0x43d1c9.
==6775==    at 0x43D1C9: byteslice::ByteSliceColumnBlock<16ul, (byteslice::Direction)1>::Scan(bytes
lice::Comparator, unsigned long, byteslice::BitVectorBlock*, byteslice::Bitwise) const (avxintrin.h
:965)
==6775==    by 0x45DEAD: byteslice::Column::Scan(byteslice::Comparator, unsigned long, byteslice::B
itVector*, byteslice::Bitwise) const (column.cpp:113)
==6775==    by 0x4017C9: main (simple.cpp:89)
vex amd64->IR:未处理的指令字节:0x16 0xC5 0xDD 0x64 0xD2 0xC5 0xF5 0xDB
vex amd64->IR:REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:vex=0 vex.L=0 vex.nVVVV=0x0 ESC=NONE
vex amd64->IR:PFX.66=0 PFX.F2=0 PFX.F3=0
==6775==valgrind:地址0x43d1c9处的指令无法识别。
==6775==at 0x43D1C9:byteslice::byteslice ColumnBlock::Scan(字节)
比较器,无符号长,字节片::位向量块*,字节片::位)常量(avxintrin.h
:965)
==6775==by 0x45DEAD:byteslice::Column::Scan(byteslice::Comparator,unsigned long,byteslice::B
itVector*,字节片::按位)常量(column.cpp:113)
==6775==by 0x4017C9:main(simple.cpp:89)

编辑:我发现错误取决于优化级别。-O0没有错误。但是-O1和更高版本会出现错误。

您使用的是valgrind 3.9.0还是更高版本?@Bааћ我使用的是valgrind 3.9.0。