It seems that SSE3 _mm_monitor instrinsic doesn't work too well with 64bit.
[EMAIL PROTECTED] function]$ cat x.c #include <stdio.h> #include <pmmintrin.h> static void foo (char *p) { _mm_monitor(p, 0, 0); } main() { char *p = (char *)&foo; int fail = 1; int i; for (i = 0; i < 20; i++) { if (p[i] == 0x0f) { fail = 0; break; } } printf ("failed: %d\n", fail); return 0; } [EMAIL PROTECTED] function]$ make /usr/gcc-4.1/bin/gcc -O2 -msse3 x.c -o x x.c: In function \uffff\uffff\ufffffoo\uffff\uffff\uffff: x.c:8: error: unrecognizable insn: (insn 11 10 12 1 (unspec_volatile [ (reg/v/f:DI 58 [ p ]) (reg:SI 59) (reg:SI 60) ] 8) -1 (nil) (nil)) x.c:8: internal compiler error: in extract_insn, at recog.c:2084 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. make: *** [x] Error 1 [EMAIL PROTECTED] function]$ /usr/gcc-4.1/bin/gcc -O2 -msse3 x.c -o x -m32 [EMAIL PROTECTED] function]$ ./x failed: 0 -- Summary: SSE3 intrinsic bug Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl at lucon dot org GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24879