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--

Reply via email to