== Quote from bearophile (bearophileh...@lycos.com)'s article
> Tom:
> > What is the most efficient way of implement a rotation of ubyte[4] array?
> >
> > By rotation I mean: rotateRight([1, 2, 3, 4]) -> [4, 1, 2, 3]
> Two versions, I have done no benchmarks so far:
> import std.c.stdio: printf;
> union Four {
>     ubyte[4] a;
>     uint u;
> }
> void showFour(Four f) {
>     printf("f.u: %u\n", f.u);
>     printf("f.a: [%d, %d, %d, %d]\n",
>            cast(int)f.a[0], cast(int)f.a[1],
>            cast(int)f.a[2], cast(int)f.a[3]);
> }
> void main() {
>     Four f;
>     f.a[] = [1, 2, 3, 4];
>     showFour(f);
>     f.u = (f.u << 8) | (f.u >> 24);
>     showFour(f);
>     printf("\n");
>     // alternative
>     f.a[] = [1, 2, 3, 4];
>     uint u2 = f.u;
>     showFour(f);
>     printf("u2: %u\n", u2);
>     asm {
>         rol  u2, 8;
>     }
>     f.u = u2;
>     showFour(f);
> }
> Bye,
> bearophile

I am offend!

Reply via email to