Revert "target-alpha: Add vector implementation for CMPBGE"
This reverts commit 32ad48abd7
.
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>
This commit is contained in:
parent
27e1259a69
commit
f5790c3bc8
@ -60,42 +60,6 @@ uint64_t helper_zap(uint64_t val, uint64_t mask)
|
|||||||
|
|
||||||
uint64_t helper_cmpbge(uint64_t op1, uint64_t op2)
|
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;
|
uint8_t opa, opb, res;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -108,7 +72,6 @@ uint64_t helper_cmpbge(uint64_t op1, uint64_t op2)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t helper_minub8(uint64_t op1, uint64_t op2)
|
uint64_t helper_minub8(uint64_t op1, uint64_t op2)
|
||||||
|
Loading…
Reference in New Issue
Block a user