Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Andrew Reilly Newsgroups: comp.arch Subject: Re: Bit Interleaving, Instruction Set Support for Date: 6 Sep 2011 05:09:02 GMT Lines: 25 Message-ID: <9clo7eFsjmU1@mid.individual.net> References: <4E655A0D.40509@SPAM.comp-arch.net> <4E659C6E.D55BEE2E@sonic.net> <4E65A0CE.8060305@SPAM.comp-arch.net> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net om56ETayIyuR9G3hXujtmQqRo0vd4dJYn05hv8zF4LQ/4pla00 Cancel-Lock: sha1:4yVe8VnBRuyFy2BbbtT8qYQnFHg= User-Agent: Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 30dc37b master) Xref: x330-a1.tempe.blueboxinc.net comp.arch:3488 On Mon, 05 Sep 2011 21:25:50 -0700, Andy \"Krazy\" Glew wrote: > On 9/5/2011 9:07 PM, Mark Thorson wrote: >> While you're at it, what about bit reverse? >> >> for i = 0 to N do >> result.bit[i] := A.bit[N-i] >> >> If I recall correctly, this is supposed to be useful for address >> generation in FFT. It was supported in the hardware of a microcoded >> accelerator board I worked on at Weitek. > > I'm collecting as many bit munging operations as I can think of. Yes, > bit reverse is one, and transpose is another. I just write 'em up as I > have time. On recent ARM (perhaps only in the NEON set) there are both "shuffle" and "deal" instructions: shuffle is your 1:1 interleave and deal is the reverse (taking an interleaved double-length vector and producing two de- interleaved results). Cheers, -- Andrew