From 86cbc418ce764b877c2db8993f1f7a05d9be7702 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 3 Feb 2014 23:31:51 +0000 Subject: target-arm: A64: Implement 2-reg-misc CNT, NOT and RBIT Implement the 2-reg-misc CNT, NOT and RBIT instructions. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target-arm/neon_helper.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'target-arm/neon_helper.c') diff --git a/target-arm/neon_helper.c b/target-arm/neon_helper.c index be6fbd997e..b4c86904f4 100644 --- a/target-arm/neon_helper.c +++ b/target-arm/neon_helper.c @@ -1133,6 +1133,18 @@ uint32_t HELPER(neon_cnt_u8)(uint32_t x) return x; } +/* Reverse bits in each 8 bit word */ +uint32_t HELPER(neon_rbit_u8)(uint32_t x) +{ + x = ((x & 0xf0f0f0f0) >> 4) + | ((x & 0x0f0f0f0f) << 4); + x = ((x & 0x88888888) >> 3) + | ((x & 0x44444444) >> 1) + | ((x & 0x22222222) << 1) + | ((x & 0x11111111) << 3); + return x; +} + #define NEON_QDMULH16(dest, src1, src2, round) do { \ uint32_t tmp = (int32_t)(int16_t) src1 * (int16_t) src2; \ if ((tmp ^ (tmp << 1)) & SIGNBIT) { \ -- cgit v1.2.1