|
From: | Christian \"Eddie\" Dost |
Subject: | Re: [Qemu-devel] Mips 64 emulation not compiling |
Date: | Sat, 27 Oct 2007 15:27:01 +0200 |
User-agent: | Thunderbird 2.0.0.6 (Macintosh/20070728) |
static always_inline int ctpop32 (uint32_t val) { uint32_t i; i = (val & 0x55555555) + ((val >> 1) & 0x55555555); i = (i & 0x33333333) + ((i >> 2) & 0x33333333); i = (i & 0x0f0f0f0f) + ((i >> 4) & 0x0f0f0f0f); i = (i & 0x00ff00ff) + ((i >> 8) & 0x00ff00ff); i = (i & 0x0000ffff) + ((i >> 16) & 0x0000ffff); return i; } For the 64 bit version see target-sparc/op_helper.c Best regards, Eddie Blue Swirl wrote:
On 10/27/07, J. Mayer <address@hidden> wrote:I also got optimized versions of bit population count which could also be shared: static always_inline int ctpop32 (uint32_t val) { int i; for (i = 0; val != 0; i++) val = val ^ (val - 1); return i; } If you prefer, I can add those shared functions (ctz32, ctz64, cto32, cto64, ctpop32, ctpop64) later, as they do not seem as widely used as clxxx functions.This would be interesting for Sparc64. Could you compare your version to do_popc() in target-sparc/op_helper.c?
-- ___________________________________________________brainaid_____________ Eddie C. Dost Rue de la Chapelle 51 phone +32 87 788817 B-4850 Moresnet fax +32 87 788818 address@hidden Belgium cell +49 172 9312808
[Prev in Thread] | Current Thread | [Next in Thread] |