http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55864
--- Comment #3 from beldmit at nm dot ru 2013-01-03 16:33:02 UTC --- If this case is better to reproduce the problem or I completely do not understand the asm usage? The mmx registers and operations are used to speedup the 64-bit xor. void _xor64_asm(const unsigned char * arg1, const unsigned char * arg2, unsigned char* out) { __asm__( "movq (%1), %%mm0;" "movq (%2), %%mm1;" "pxor %%mm0, %%mm1;" "movl %0, %%ecx;" "movq %%mm1, (%%ecx);" "emms" : "=ym"(out) : "r"(arg1), "r"(arg2) : "mm1", "mm2", "ecx"); }