Skip to content

Commit 5ff9378

Browse files
authored
Merge pull request #418 from Laserdance100/master
Allow to be compiled with speed optimizations
2 parents d6de27e + fa984d4 commit 5ff9378

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

Adafruit_NeoPixel.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ void Adafruit_NeoPixel::show(void) {
11521152
next = lo;
11531153
bit = 8;
11541154

1155-
asm volatile("head20:"
1155+
asm volatile("head20%=:"
11561156
"\n\t" // Clk Pseudocode (T = 0)
11571157
"st %a[port], %[hi]"
11581158
"\n\t" // 2 PORT = hi (T = 2)
@@ -1166,7 +1166,7 @@ void Adafruit_NeoPixel::show(void) {
11661166
"\n\t" // 1 next = lo (T = 7)
11671167
"dec %[bit]"
11681168
"\n\t" // 1 bit-- (T = 8)
1169-
"breq nextbyte20"
1169+
"breq nextbyte20%="
11701170
"\n\t" // 1-2 if(bit == 0)
11711171
"rol %[byte]"
11721172
"\n\t" // 1 b <<= 1 (T = 10)
@@ -1178,9 +1178,9 @@ void Adafruit_NeoPixel::show(void) {
11781178
"\n\t" // 2 nop nop (T = 16)
11791179
"rjmp .+0"
11801180
"\n\t" // 2 nop nop (T = 18)
1181-
"rjmp head20"
1181+
"rjmp head20%="
11821182
"\n\t" // 2 -> head20 (next bit out)
1183-
"nextbyte20:"
1183+
"nextbyte20%=:"
11841184
"\n\t" // (T = 10)
11851185
"st %a[port], %[lo]"
11861186
"\n\t" // 2 PORT = lo (T = 12)
@@ -1192,7 +1192,7 @@ void Adafruit_NeoPixel::show(void) {
11921192
"\n\t" // 2 b = *ptr++ (T = 16)
11931193
"sbiw %[count], 1"
11941194
"\n\t" // 2 i-- (T = 18)
1195-
"brne head20"
1195+
"brne head20%="
11961196
"\n" // 2 if(i != 0) -> (next byte)
11971197
: [port] "+e"(port), [byte] "+r"(b), [bit] "+r"(bit),
11981198
[next] "+r"(next), [count] "+w"(i)
@@ -1701,7 +1701,7 @@ void Adafruit_NeoPixel::show(void) {
17011701
next = lo;
17021702
bit = 8;
17031703

1704-
asm volatile("head20:"
1704+
asm volatile("head20%=:"
17051705
"\n\t" // Clk Pseudocode (T = 0)
17061706
"st %a[port], %[hi]"
17071707
"\n\t" // 2 PORT = hi (T = 2)
@@ -1715,7 +1715,7 @@ void Adafruit_NeoPixel::show(void) {
17151715
"\n\t" // 2 PORT = next (T = 7)
17161716
"mov %[next] , %[lo]"
17171717
"\n\t" // 1 next = lo (T = 8)
1718-
"breq nextbyte20"
1718+
"breq nextbyte20%="
17191719
"\n\t" // 1-2 if(bit == 0) (from dec above)
17201720
"rol %[byte]"
17211721
"\n\t" // 1 b <<= 1 (T = 10)
@@ -1729,9 +1729,9 @@ void Adafruit_NeoPixel::show(void) {
17291729
"\n\t" // 1 nop (T = 16)
17301730
"rjmp .+0"
17311731
"\n\t" // 2 nop nop (T = 18)
1732-
"rjmp head20"
1732+
"rjmp head20%="
17331733
"\n\t" // 2 -> head20 (next bit out)
1734-
"nextbyte20:"
1734+
"nextbyte20%=:"
17351735
"\n\t" // (T = 10)
17361736
"ldi %[bit] , 8"
17371737
"\n\t" // 1 bit = 8 (T = 11)
@@ -1743,7 +1743,7 @@ void Adafruit_NeoPixel::show(void) {
17431743
"\n\t" // 1 nop (T = 16)
17441744
"sbiw %[count], 1"
17451745
"\n\t" // 2 i-- (T = 18)
1746-
"brne head20"
1746+
"brne head20%="
17471747
"\n" // 2 if(i != 0) -> (next byte)
17481748
: [port] "+e"(port), [byte] "+r"(b), [bit] "+r"(bit),
17491749
[next] "+r"(next), [count] "+w"(i)
@@ -1764,7 +1764,7 @@ void Adafruit_NeoPixel::show(void) {
17641764
next = lo;
17651765
bit = 8;
17661766

1767-
asm volatile("head40:"
1767+
asm volatile("head40%=:"
17681768
"\n\t" // Clk Pseudocode (T = 0)
17691769
"st %a[port], %[hi]"
17701770
"\n\t" // 2 PORT = hi (T = 2)
@@ -1796,7 +1796,7 @@ void Adafruit_NeoPixel::show(void) {
17961796
"\n\t" // 1 next = lo (T = 24)
17971797
"dec %[bit]"
17981798
"\n\t" // 1 bit-- (T = 25)
1799-
"breq nextbyte40"
1799+
"breq nextbyte40%="
18001800
"\n\t" // 1-2 if(bit == 0)
18011801
"rol %[byte]"
18021802
"\n\t" // 1 b <<= 1 (T = 27)
@@ -1812,9 +1812,9 @@ void Adafruit_NeoPixel::show(void) {
18121812
"\n\t" // 2 nop nop (T = 36)
18131813
"rjmp .+0"
18141814
"\n\t" // 2 nop nop (T = 38)
1815-
"rjmp head40"
1815+
"rjmp head40%="
18161816
"\n\t" // 2 -> head40 (next bit out)
1817-
"nextbyte40:"
1817+
"nextbyte40%=:"
18181818
"\n\t" // (T = 27)
18191819
"ldi %[bit] , 8"
18201820
"\n\t" // 1 bit = 8 (T = 28)
@@ -1828,7 +1828,7 @@ void Adafruit_NeoPixel::show(void) {
18281828
"\n\t" // 2 nop nop (T = 36)
18291829
"sbiw %[count], 1"
18301830
"\n\t" // 2 i-- (T = 38)
1831-
"brne head40"
1831+
"brne head40%="
18321832
"\n" // 1-2 if(i != 0) -> (next byte)
18331833
: [port] "+e"(port), [byte] "+r"(b), [bit] "+r"(bit),
18341834
[next] "+r"(next), [count] "+w"(i)

0 commit comments

Comments
 (0)