http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49411
Summary: [4.6/4.7] ICE: unrecognizable insn with -mxop in _mm_roti_epi8 with negative number Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: qne...@gcc.gnu.org Using _mm_roti_epi8 in xopintrin.h with a negative number produces an ICE in 4.6/4.7; the negative number is how you use VPROT[BWDQ] to rotate right, see http://support.amd.com/us/Processor_TechDocs/26568.pdf ------ testcase.c ------ #include <x86intrin.h> void f(void) { __m128 s; __m128i d; return _mm_roti_epi8(s, -1); } ------ output ------ $ gcc -mxop -c vprotbi1.c vprotbi1.c: In function ‘f’: vprotbi1.c:6:2: warning: ‘return’ with a value, in function returning void [enabled by default] vprotbi1.c:7:1: error: unrecognizable insn: (insn 6 5 7 3 (set (reg:V16QI 60 [ D.8650 ]) (rotate:V16QI (reg:V16QI 59 [ D.8648 ]) (const_int -1 [0xffffffffffffffff]))) vprotbi1.c:6 -1 (nil)) vprotbi1.c:7:1: internal compiler error: in extract_insn, at recog.c:2113 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions.