mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
target/arm: Vectorize integer comparison vs zero
These instructions are often used in glibc's string routines. They were the final uses of the 32-bit at a time neon helpers. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20200418162808.4680-1-richard.henderson@linaro.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
59ab136a9e
commit
6b375d3546
6 changed files with 278 additions and 123 deletions
|
@ -562,24 +562,6 @@ uint32_t HELPER(neon_hsub_u32)(uint32_t src1, uint32_t src2)
|
|||
return dest;
|
||||
}
|
||||
|
||||
#define NEON_FN(dest, src1, src2) dest = (src1 > src2) ? ~0 : 0
|
||||
NEON_VOP(cgt_s8, neon_s8, 4)
|
||||
NEON_VOP(cgt_u8, neon_u8, 4)
|
||||
NEON_VOP(cgt_s16, neon_s16, 2)
|
||||
NEON_VOP(cgt_u16, neon_u16, 2)
|
||||
NEON_VOP(cgt_s32, neon_s32, 1)
|
||||
NEON_VOP(cgt_u32, neon_u32, 1)
|
||||
#undef NEON_FN
|
||||
|
||||
#define NEON_FN(dest, src1, src2) dest = (src1 >= src2) ? ~0 : 0
|
||||
NEON_VOP(cge_s8, neon_s8, 4)
|
||||
NEON_VOP(cge_u8, neon_u8, 4)
|
||||
NEON_VOP(cge_s16, neon_s16, 2)
|
||||
NEON_VOP(cge_u16, neon_u16, 2)
|
||||
NEON_VOP(cge_s32, neon_s32, 1)
|
||||
NEON_VOP(cge_u32, neon_u32, 1)
|
||||
#undef NEON_FN
|
||||
|
||||
#define NEON_FN(dest, src1, src2) dest = (src1 < src2) ? src1 : src2
|
||||
NEON_POP(pmin_s8, neon_s8, 4)
|
||||
NEON_POP(pmin_u8, neon_u8, 4)
|
||||
|
@ -1135,12 +1117,6 @@ NEON_VOP(tst_u16, neon_u16, 2)
|
|||
NEON_VOP(tst_u32, neon_u32, 1)
|
||||
#undef NEON_FN
|
||||
|
||||
#define NEON_FN(dest, src1, src2) dest = (src1 == src2) ? -1 : 0
|
||||
NEON_VOP(ceq_u8, neon_u8, 4)
|
||||
NEON_VOP(ceq_u16, neon_u16, 2)
|
||||
NEON_VOP(ceq_u32, neon_u32, 1)
|
||||
#undef NEON_FN
|
||||
|
||||
/* Count Leading Sign/Zero Bits. */
|
||||
static inline int do_clz8(uint8_t x)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue