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

◆ wave3_transpose_8()

FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void fl::detail::wave3_transpose_8 ( const Wave3Byte lane_waves[8],
u8 output[8 *sizeof(Wave3Byte)] )

Transpose 8 lanes of Wave3Byte data into interleaved format.

Parameters
lane_wavesArray of 8 Wave3Byte structures
outputOutput buffer (24 bytes = 8 * 3)

Spread-LUT transpose (#2533): ~1.9× faster than the unrolled naive on the ESP32-P4 (RV32), bit-exact. See bit_spread_lut.hpp. (wave3 = 3 symbols.)

Definition at line 147 of file wave3.hpp.

148 {
149 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
150 u8 l[8];
151 for (int lane = 0; lane < 8; lane++) {
152 l[lane] = lane_waves[lane].data[symbol_idx];
153 }
154 spread_transpose8_symbol(l, output + symbol_idx * 8);
155 }
156}
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void spread_transpose8_symbol(const u8 l[8], u8 out[8])
Transpose one symbol of 8 lanes (8 input bytes) into 8 output bytes: 8 pulses × 1 byte (bit L = lane ...
unsigned char u8
Definition stdint.h:131
u8 data[3]
Definition wave3.h:21

References fl::Wave3Byte::data, and spread_transpose8_symbol().

Referenced by fl::wave3Transpose_8().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: