40#if defined(ARDUINO_ARCH_ESP32) || defined(ESP_PLATFORM)
49 if (iters_in > 200000) {
52 result.iters =
static_cast<fl::u32
>(iters_in);
55 fl::ChipsetTiming timing;
64 for (
int i = 0; i < 16; ++i) {
65 lanes[i] =
static_cast<fl::u8>(i * 17 + 3);
67 fl::Wave8Byte out[16];
68 volatile fl::u32 sink = 0;
71 for (
int i = 0; i < 16; ++i) {
75 fl::u8 transposed[16 *
sizeof(fl::Wave8Byte)];
77 reinterpret_cast<fl::u8(&)[16 * sizeof(fl::Wave8Byte)]
>(transposed));
79 reinterpret_cast<fl::u8(&)[16 * sizeof(fl::Wave8Byte)]
>(transposed));
81 const int iters = iters_in;
86 for (
int it = 0; it < iters; ++it) {
87 lanes[0] =
static_cast<fl::u8>(it);
88 lanes[8] =
static_cast<fl::u8>(~it);
89 for (
int i = 0; i < 16; ++i) {
92 sink ^= out[0].symbols[0].data ^ out[15].symbols[7].data;
100 for (
int it = 0; it < iters; ++it) {
101 lanes[0] =
static_cast<fl::u8>(it);
102 lanes[8] =
static_cast<fl::u8>(~it);
103 for (
int i = 0; i < 16; ++i) {
106 sink ^= out[0].symbols[0].data ^ out[15].symbols[7].data;
114 for (
int it = 0; it < iters; ++it) {
115 lanes[0] =
static_cast<fl::u8>(it);
116 lanes[8] =
static_cast<fl::u8>(~it);
119 for (
int i = 0; i < 16; ++i) {
124 for (
int i = 0; i < 16; ++i) {
129 sink ^= out[0].symbols[0].data ^ out[15].symbols[7].data;
137 for (
int it = 0; it < iters; ++it) {
138 lanes[0] =
static_cast<fl::u8>(it);
139 lanes[8] =
static_cast<fl::u8>(~it);
141 reinterpret_cast<fl::u8(&)[16 * sizeof(fl::Wave8Byte)]
>(transposed));
142 sink ^= transposed[0] ^ transposed[127];
150 for (
int it = 0; it < iters; ++it) {
151 lanes[0] =
static_cast<fl::u8>(it);
152 lanes[8] =
static_cast<fl::u8>(~it);
154 reinterpret_cast<fl::u8(&)[16 * sizeof(fl::Wave8Byte)]
>(transposed));
155 sink ^= transposed[0] ^ transposed[127];
160 result.sink =
static_cast<fl::u32
>(sink);
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void wave8_convert_byte_to_wave8byte(u8 byte_value, const Wave8BitExpansionLut &lut, Wave8Byte *output)
Helper: Convert byte to Wave8Byte using nibble LUT (internal use only)
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void wave8_expand_byte(u8 byte_value, const Wave8ByteExpansionLut &lut, Wave8Byte *output)
Byte-indexed expansion (#2526): one indexed 8-byte copy.