Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Since the permutation is constant, you should be able to come up with a better way than moving the bits one by one (if you're OK with publishing your secret permutation, I can have a go at it). The simplest improvement is moving bits that have the same distance (that can be a modular distance because you can use rotates) between them in the input and output at the same time. This is a very good methods if there are few such groups.</p> <p>If that didn't work out as well as you'd hoped, see if you can use <a href="http://programming.sirrida.de/perm_fn.html#bit_permute_step" rel="nofollow">bit_permute_step</a>s to move all or most of the bits. See the rest of that site for more ideas.</p> <p>If you can use PDEP and PEXT, you can move bits in groups where the distance between bits can arbitrarily change (but their order can not). It is, afaik, unknown how fast they will be though (and they're not available yet).</p> <p>The best method is probably going to be a combination of these and other tricks mentioned in other answers.</p> <p>There are too many possibilities to explore them all, really, so you're probably not going to find the <em>best</em> way to do the permutation, but using these ideas (and the others that were posted) you can doubtlessly find a better what than you're currently using.</p> <hr> <p>PDEP and PEXT have been available for a while now so their performance is known, at 3 cycle latency and 1/cycle throughput they're faster than most other useful permutation primitives (except trivial ones).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload