diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-05-22 12:30:13 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-05-22 12:30:13 +0100 |
commit | f5790c3bc81702c98c7ddadedb274758cff8cbe7 (patch) | |
tree | f07545c8ffc9ef71f0de6ab5e0de9a44c51c3fe2 /target-alpha/int_helper.c | |
parent | 27e1259a69c49ee2dd53385f4ca4ca14b822191d (diff) | |
download | qemu-f5790c3bc81702c98c7ddadedb274758cff8cbe7.zip qemu-f5790c3bc81702c98c7ddadedb274758cff8cbe7.tar.gz qemu-f5790c3bc81702c98c7ddadedb274758cff8cbe7.tar.bz2 |
Revert "target-alpha: Add vector implementation for CMPBGE"
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>
Diffstat (limited to 'target-alpha/int_helper.c')
-rw-r--r-- | target-alpha/int_helper.c | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/target-alpha/int_helper.c b/target-alpha/int_helper.c index 29e927f..74f38cb 100644 --- a/target-alpha/int_helper.c +++ b/target-alpha/int_helper.c @@ -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) |