FastLED 3.9.15
Loading...
Searching...
No Matches
config.h
Go to the documentation of this file.
1#pragma once
2
3
4
5#if defined(__arm__)
6
7#if defined(FASTLED_TEENSY3)
8// Can use Cortex M4 DSP instructions
9#define QADD8_C 0
10#define QADD7_C 0
11#define QADD8_ARM_DSP_ASM 1
12#define QADD7_ARM_DSP_ASM 1
13#else
14// Generic ARM
15#define QADD8_C 1
16#define QADD7_C 1
17#endif // end of defined(FASTLED_TEENSY3)
18
19#define QSUB8_C 1
20#define SCALE8_C 1
21#define SCALE16BY8_C 1
22#define SCALE16_C 1
23#define ABS8_C 1
24#define MUL8_C 1
25#define QMUL8_C 1
26#define ADD8_C 1
27#define SUB8_C 1
28#define EASE8_C 1
29#define AVG8_C 1
30#define AVG8R_C 1
31#define AVG7_C 1
32#define AVG16_C 1
33#define AVG16R_C 1
34#define AVG15_C 1
35#define BLEND8_C 1
36
37// end of #if defined(__arm__)
38
39#elif defined(ARDUINO_ARCH_APOLLO3)
40
41// Default to using the standard C functions for now
42#define QADD8_C 1
43#define QADD7_C 1
44#define QSUB8_C 1
45#define SCALE8_C 1
46#define SCALE16BY8_C 1
47#define SCALE16_C 1
48#define ABS8_C 1
49#define MUL8_C 1
50#define QMUL8_C 1
51#define ADD8_C 1
52#define SUB8_C 1
53#define EASE8_C 1
54#define AVG8_C 1
55#define AVG8R_C 1
56#define AVG7_C 1
57#define AVG16_C 1
58#define AVG16R_C 1
59#define AVG15_C 1
60#define BLEND8_C 1
61
62// end of #elif defined(ARDUINO_ARCH_APOLLO3)
63
64#elif defined(__AVR__)
65
66// AVR ATmega and friends Arduino
67
68#define QADD8_C 0
69#define QADD7_C 0
70#define QSUB8_C 0
71#define ABS8_C 0
72#define ADD8_C 0
73#define SUB8_C 0
74#define AVG8_C 0
75#define AVG8R_C 0
76#define AVG7_C 0
77#define AVG16_C 0
78#define AVG16R_C 0
79#define AVG15_C 0
80
81#define QADD8_AVRASM 1
82#define QADD7_AVRASM 1
83#define QSUB8_AVRASM 1
84#define ABS8_AVRASM 1
85#define ADD8_AVRASM 1
86#define SUB8_AVRASM 1
87#define AVG8_AVRASM 1
88#define AVG8R_AVRASM 1
89#define AVG7_AVRASM 1
90#define AVG16_AVRASM 1
91#define AVG16R_AVRASM 1
92#define AVG15_AVRASM 1
93
94// Note: these require hardware MUL instruction
95// -- sorry, ATtiny!
96#if !defined(LIB8_ATTINY)
97#define SCALE8_C 0
98#define SCALE16BY8_C 0
99#define SCALE16_C 0
100#define MUL8_C 0
101#define QMUL8_C 0
102#define EASE8_C 0
103#define BLEND8_C 0
104#define SCALE8_AVRASM 1
105#define SCALE16BY8_AVRASM 1
106#define SCALE16_AVRASM 1
107#define MUL8_AVRASM 1
108#define QMUL8_AVRASM 1
109#define EASE8_AVRASM 1
110#define CLEANUP_R1_AVRASM 1
111#define BLEND8_AVRASM 1
112#else
113// On ATtiny, we just use C implementations
114#define SCALE8_C 1
115#define SCALE16BY8_C 1
116#define SCALE16_C 1
117#define MUL8_C 1
118#define QMUL8_C 1
119#define EASE8_C 1
120#define BLEND8_C 1
121#define SCALE8_AVRASM 0
122#define SCALE16BY8_AVRASM 0
123#define SCALE16_AVRASM 0
124#define MUL8_AVRASM 0
125#define QMUL8_AVRASM 0
126#define EASE8_AVRASM 0
127#define BLEND8_AVRASM 0
128#endif // end of !defined(LIB8_ATTINY)
129
130// end of #elif defined(__AVR__)
131
132#else
133
134// Doxygen: ignore these macros
136
137// unspecified architecture, so
138// no ASM, everything in C
139#define QADD8_C 1
140#define QADD7_C 1
141#define QSUB8_C 1
142#define SCALE8_C 1
143#define SCALE16BY8_C 1
144#define SCALE16_C 1
145#define ABS8_C 1
146#define MUL8_C 1
147#define QMUL8_C 1
148#define ADD8_C 1
149#define SUB8_C 1
150#define EASE8_C 1
151#define AVG8_C 1
152#define AVG8R_C 1
153#define AVG7_C 1
154#define AVG16_C 1
155#define AVG16R_C 1
156#define AVG15_C 1
157#define BLEND8_C 1
158
160
161#endif