http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53712
--- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2012-06-18 17:42:36 UTC --- BTW: I am testing attached patch with following lex.c patch: --cut here-- Index: libcpp/lex.c =================================================================== --- libcpp/lex.c (revision 188736) +++ libcpp/lex.c (working copy) @@ -420,6 +420,7 @@ { typedef char v16qi __attribute__ ((__vector_size__ (16))); static const v16qi search = { '\n', '\r', '?', '\\' }; + v16qi sv; uintptr_t si = (uintptr_t)s; uintptr_t index; @@ -439,8 +440,9 @@ /* ??? The builtin doesn't understand that the PCMPESTRI read from memory need not be aligned. */ - __asm ("%vpcmpestri $0, (%1), %2" - : "=c"(index) : "r"(s), "x"(search), "a"(4), "d"(16)); + sv = __builtin_ia32_loaddqu ((const char *) s); + index = __builtin_ia32_pcmpestri128 (search, 4, sv, 16, 0); + if (__builtin_expect (index < 16, 0)) goto found; --cut here--