https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78132
Bug ID: 78132 Summary: GCC produces invalid instruction (kmovd and kmovq) for KNL. Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 39909 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39909&action=edit Reproducer. GCC produces invalid instruction (kmovd and kmovq) for KNL. The reproducer for kmovq was attached, but I there is exist similar error for kmovd. Reproducer: unsigned short c; char a, d, f, b; short e; long g; int main() { g = c; f = c & e; d = c & a | e; if (a) b = c; } GCC version: >$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/vlivinsk/workspace/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/vlivinsk/workspace/gcc-dev/trunk/configure --prefix=/home/vlivinsk/workspace/gcc-dev/bin-trunk Thread model: posix gcc version 7.0.0 20161026 (experimental) (GCC) Error: >$ g++ -O3 -march=knl small.cpp >$ sde -knl -- ./a.out TID 0 SDE-ERROR: Executed instruction not valid for specified chip (KNL): 0x400436: kmovq k0, rax Image: a.out+0x436 (in multi-region image, region# 0) Function: main Instruction bytes are: c4 e1 fb 92 c0