Revert "target-alpha: Add vector implementation for CMPBGE"
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 22 May 2015 11:30:13 +0000 (12:30 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 22 May 2015 11:30:13 +0000 (12:30 +0100)
This reverts commit 32ad48abd74a997220b841e4e913edeb267aa362.

Unfortunately the SSE2 code here fails to compile on some versions
of gcc:
 target-alpha/int_helper.c:77:24: error: invalid operands to binary >=
 (have '__vector(16) unsigned char' and '__vector(16) unsigned char')

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target-alpha/int_helper.c

index 29e927f53fe3ae94d67137a9affd18b4b34fb33c..74f38cbe7bf218ad593f5f90f4fd8f8e41872cd2 100644 (file)
@@ -60,42 +60,6 @@ uint64_t helper_zap(uint64_t val, uint64_t mask)
 
 uint64_t helper_cmpbge(uint64_t op1, uint64_t op2)
 {
-#if defined(__SSE2__)
-    uint64_t r;
-
-    /* The cmpbge instruction is heavily used in the implementation of
-       every string function on Alpha.  We can do much better than either
-       the default loop below, or even an unrolled version by using the
-       native vector support.  */
-    {
-        typedef uint64_t Q __attribute__((vector_size(16)));
-        typedef uint8_t B __attribute__((vector_size(16)));
-
-        Q q1 = (Q){ op1, 0 };
-        Q q2 = (Q){ op2, 0 };
-
-        q1 = (Q)((B)q1 >= (B)q2);
-
-        r = q1[0];
-    }
-
-    /* Select only one bit from each byte.  */
-    r &= 0x0101010101010101;
-
-    /* Collect the bits into the bottom byte.  */
-    /* .......A.......B.......C.......D.......E.......F.......G.......H */
-    r |= r >> (8 - 1);
-
-    /* .......A......AB......BC......CD......DE......EF......FG......GH */
-    r |= r >> (16 - 2);
-
-    /* .......A......AB.....ABC....ABCD....BCDE....CDEF....DEFG....EFGH */
-    r |= r >> (32 - 4);
-
-    /* .......A......AB.....ABC....ABCD...ABCDE..ABCDEF.ABCDEFGABCDEFGH */
-    /* Return only the low 8 bits.  */
-    return r & 0xff;
-#else
     uint8_t opa, opb, res;
     int i;
 
@@ -108,7 +72,6 @@ uint64_t helper_cmpbge(uint64_t op1, uint64_t op2)
         }
     }
     return res;
-#endif
 }
 
 uint64_t helper_minub8(uint64_t op1, uint64_t op2)
This page took 0.027843 seconds and 4 git commands to generate.