16#if defined(FASTLED_ARM) || defined(FASTLED_ESP8266) || defined(FASTLED_DOXYGEN)
84#define SWAPSA(X,N) out. X ## 0 = in.a.a ## N; \
85 out. X ## 1 = in.a.b ## N; \
86 out. X ## 2 = in.a.c ## N; \
87 out. X ## 3 = in.a.d ## N;
94#define SWAPSB(X,N) out. X ## 0 = in.b.a ## N; \
95 out. X ## 1 = in.b.b ## N; \
96 out. X ## 2 = in.b.c ## N; \
97 out. X ## 3 = in.b.d ## N;
104#define SWAPS(X,N) out. X ## 0 = in.a.a ## N; \
105 out. X ## 1 = in.a.b ## N; \
106 out. X ## 2 = in.a.c ## N; \
107 out. X ## 3 = in.a.d ## N; \
108 out. X ## 4 = in.b.a ## N; \
109 out. X ## 5 = in.b.b ## N; \
110 out. X ## 6 = in.b.c ## N; \
111 out. X ## 7 = in.b.d ## N;
146 for(
int i = 0; i < 8; ++i) {
148 work.a3 = in.
word[0] >> 31;
149 work.a2 = in.
word[0] >> 23;
150 work.a1 = in.
word[0] >> 15;
151 work.a0 = in.
word[0] >> 7;
153 work.a7 = in.
word[1] >> 31;
154 work.a6 = in.
word[1] >> 23;
155 work.a5 = in.
word[1] >> 15;
156 work.a4 = in.
word[1] >> 7;
165 for(
int row = 0; row < 7; ++row) {
169 unsigned char *p = B;
170 for(fl::u32 mask = 1<<7 ; mask ; mask >>= 1) {
198 y = *(
unsigned int*)(A);
199 x = *(
unsigned int*)(A+4);
202 t = (
x ^ (
x >> 7)) & 0x00AA00AA;
x =
x ^
t ^ (
t << 7);
203 t = (
x ^ (
x >>14)) & 0x0000CCCC;
x =
x ^
t ^ (
t <<14);
206 t = (
y ^ (
y >> 7)) & 0x00AA00AA;
y =
y ^
t ^ (
t << 7);
207 t = (
y ^ (
y >>14)) & 0x0000CCCC;
y =
y ^
t ^ (
t <<14);
210 t = (
x & 0xF0F0F0F0) | ((
y >> 4) & 0x0F0F0F0F);
211 y = ((
x << 4) & 0xF0F0F0F0) | (
y & 0x0F0F0F0F);
215 *((uint32_t*)(B+4)) =
x;
224 y = *(
unsigned int*)(A);
225 x = *(
unsigned int*)(A+4);
228 t = (
x ^ (
x >> 7)) & 0x00AA00AA;
x =
x ^
t ^ (
t << 7);
229 t = (
x ^ (
x >>14)) & 0x0000CCCC;
x =
x ^
t ^ (
t <<14);
232 t = (
y ^ (
y >> 7)) & 0x00AA00AA;
y =
y ^
t ^ (
t << 7);
233 t = (
y ^ (
y >>14)) & 0x0000CCCC;
y =
y ^
t ^ (
t <<14);
236 t = (
x & 0xF0F0F0F0) | ((
y >> 4) & 0x0F0F0F0F);
237 y = ((
x << 4) & 0xF0F0F0F0) | (
y & 0x0F0F0F0F);
253template<
int m,
int n>
259 y = *(
unsigned int*)(A);
260 x = *(
unsigned int*)(A+4);
262 x = (A[0]<<24) | (A[m]<<16) | (A[2*m]<<8) | A[3*m];
263 y = (A[4*m]<<24) | (A[5*m]<<16) | (A[6*m]<<8) | A[7*m];
267 t = (
x ^ (
x >> 7)) & 0x00AA00AA;
x =
x ^
t ^ (
t << 7);
268 t = (
x ^ (
x >>14)) & 0x0000CCCC;
x =
x ^
t ^ (
t <<14);
271 t = (
y ^ (
y >> 7)) & 0x00AA00AA;
y =
y ^
t ^ (
t << 7);
272 t = (
y ^ (
y >>14)) & 0x0000CCCC;
y =
y ^
t ^ (
t <<14);
275 t = (
x & 0xF0F0F0F0) | ((
y >> 4) & 0x0F0F0F0F);
276 y = ((
x << 4) & 0xF0F0F0F0) | (
y & 0x0F0F0F0F);
central include file for FastLED, defines the CFastLED class/object
FASTLED_FORCE_INLINE void swapbits8(bitswap_type in, bitswap_type &out)
Do an 8-byte by 8-bit rotation.
FASTLED_FORCE_INLINE void transpose8x1_MSB(unsigned char *A, unsigned char *B)
Simplified form of bits rotating function.
FASTLED_FORCE_INLINE void transpose8x1(unsigned char *A, unsigned char *B)
Simplified form of bits rotating function.
FASTLED_FORCE_INLINE void slowswap(unsigned char *A, unsigned char *B)
Slow version of the 8 byte by 8 bit rotation.
void transpose8x1_noinline(unsigned char *A, unsigned char *B)
Simplified form of bits rotating function.
FASTLED_FORCE_INLINE void transpose8(unsigned char *A, unsigned char *B)
Templated bit-rotating function.
fl::u32 a6
byte 'a', bit 6 (0x00000040)
sub4 a
32-bit access struct for bit swapping, upper four bytes (word[0] or bytes[0-3])
fl::u32 c7
byte 'c', bit 7 (0x00800000)
fl::u32 b4
byte 'b', bit 4 (0x00001000)
fl::u32 d6
byte 'd', bit 6 (0x40000000)
fl::u8 bytes[8]
eight 8-bit values to load for swapping
fl::u32 b3
byte 'b', bit 3 (0x00000800)
fl::u8 raw
the entire byte
fl::u32 c5
byte 'c', bit 5 (0x00200000)
fl::u32 c6
byte 'c', bit 6 (0x00400000)
fl::u32 c2
byte 'c', bit 2 (0x00040000)
fl::u32 c3
byte 'c', bit 3 (0x00080000)
fl::u32 a1
byte 'a', bit 1 (0x00000002)
fl::u32 d5
byte 'd', bit 5 (0x20000000)
fl::u32 d2
byte 'd', bit 2 (0x04000000)
fl::u32 b6
byte 'b', bit 6 (0x00004000)
fl::u32 b1
byte 'b', bit 1 (0x00000200)
fl::u32 b7
byte 'b', bit 7 (0x00008000)
fl::u32 a7
byte 'a', bit 7 (0x00000080)
sub4 b
32-bit access struct for bit swapping, lower four bytes (word[1] or bytes[4-7])
fl::u32 word[2]
two 32-bit values to load for swapping
fl::u32 b2
byte 'b', bit 2 (0x00000400)
fl::u32 d3
byte 'd', bit 3 (0x08000000)
fl::u32 d4
byte 'd', bit 4 (0x10000000)
fl::u32 c4
byte 'c', bit 4 (0x00100000)
fl::u32 c0
byte 'c', bit 0 (0x00010000)
fl::u32 a5
byte 'a', bit 5 (0x00000020)
fl::u32 c1
byte 'c', bit 1 (0x00020000)
fl::u32 a2
byte 'a', bit 2 (0x00000004)
fl::u32 d0
byte 'd', bit 0 (0x01000000)
fl::u32 d7
byte 'd', bit 7 (0x80000000)
fl::u32 a0
byte 'a', bit 0 (0x00000000)
fl::u32 b5
byte 'b', bit 5 (0x00002000)
fl::u32 a4
byte 'a', bit 4 (0x00000010)
fl::u32 a3
byte 'a', bit 3 (0x00000008)
fl::u32 d1
byte 'd', bit 1 (0x02000000)
fl::u32 b0
byte 'b', bit 0 (0x00000100)
Structure representing 8 bits of access.
Union containing a full 8 bytes to swap the bit orientation on.
Structure representing 32 bits of access.
#define FASTLED_FORCE_INLINE
#define FASTLED_NAMESPACE_END
#define FASTLED_NAMESPACE_BEGIN