FastLED 3.9.15
Loading...
Searching...
No Matches

◆ transpose8x1_MSB()

FASTLED_FORCE_INLINE void transpose8x1_MSB ( unsigned char * A,
unsigned char * B )

Simplified form of bits rotating function.

Based on code found here: https://web.archive.org/web/20190108225554/http://www.hackersdelight.org/hdcodetxt/transpose8.c.txt

Definition at line 220 of file bitswap.h.

220 {
221 fl::u32 x, y, t;
222
223 // Load the array and pack it into x and y.
224 y = *(unsigned int*)(A);
225 x = *(unsigned int*)(A+4);
226
227 // pre-transform x
228 t = (x ^ (x >> 7)) & 0x00AA00AA; x = x ^ t ^ (t << 7);
229 t = (x ^ (x >>14)) & 0x0000CCCC; x = x ^ t ^ (t <<14);
230
231 // pre-transform y
232 t = (y ^ (y >> 7)) & 0x00AA00AA; y = y ^ t ^ (t << 7);
233 t = (y ^ (y >>14)) & 0x0000CCCC; y = y ^ t ^ (t <<14);
234
235 // final transform
236 t = (x & 0xF0F0F0F0) | ((y >> 4) & 0x0F0F0F0F);
237 y = ((x << 4) & 0xF0F0F0F0) | (y & 0x0F0F0F0F);
238 x = t;
239
240 B[7] = y; y >>= 8;
241 B[6] = y; y >>= 8;
242 B[5] = y; y >>= 8;
243 B[4] = y;
244
245 B[3] = x; x >>= 8;
246 B[2] = x; x >>= 8;
247 B[1] = x; x >>= 8;
248 B[0] = x; /* */
249}
int y
Definition simple.h:93
int x
Definition simple.h:92
static uint32_t t
Definition Luminova.h:54

References FASTLED_FORCE_INLINE, t, x, and y.