Re: [avr-gcc-list] Inversion of logic improves size speed

2007-08-27 Thread Wouter van Gulik

Anatoly Sokolov wrote:

Hi.

This patch optimizes logic left shift of unsigned char by 4, 5, and 6, 
excluding double 'andi' instructions in some cases.




snip




Now:

0092 getBit4InvShift:
  92: 82 95swap r24
  94: 81 70andi r24, 0x01 ; 1
  96: 08 95ret

0098 getBit5InvShift:
  98: 82 95swap r24
  9a: 86 95lsr r24
  9c: 81 70andi r24, 0x01 ; 1
  9e: 08 95ret

00a0 getBit6InvShift:
  a0: 82 95swap r24
  a2: 86 95lsr r24
  a4: 86 95lsr r24
  a6: 81 70andi r24, 0x01 ; 1
  a8: 08 95ret




That's good news! No more clr r25 and no double and anymore!
Does this fix the double and in more situations? Is this because the 
swapand is now exposed to the upperlayers?


One thing, the patch is not in this e-mail (the list). And I did not 
receive your e-mail on my private e-mail. Maybe it's filtered. Will 
check my junk map.


Thanks,

Wouter


___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


RE: [avr-gcc-list] Inversion of logic improves size speed

2007-08-27 Thread Eric Weddington


 -Original Message-
 From:
 [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED]
 org] On Behalf Of Wouter van Gulik
 Sent: Monday, August 27, 2007 3:25 AM
 To: Anatoly Sokolov
 Cc: avr-gcc-list@nongnu.org
 Subject: Re: [avr-gcc-list] Inversion of logic improves size speed

 One thing, the patch is not in this e-mail (the list). And I did not
 receive your e-mail on my private e-mail. Maybe it's filtered. Will
 check my junk map.

Patch was not attached to email. However, Anatoly attached the patch to the
bug report.

Eric Weddington




___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


Re: [avr-gcc-list] Inversion of logic improves size speed

2007-08-27 Thread Wouter van Gulik

Eric Weddington schreef:


Patch was not attached to email. However, Anatoly attached the patch to the
bug report.



What bug report?
I looked at:

Non optimal bit extraction
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33049

No register save:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33050

Double and:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11259

I can't find them there or I need some more coffee... it's after all 
still monday ;)


Wouter



___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


Re: [avr-gcc-list] Inversion of logic improves size speed

2007-08-27 Thread Anatoly Sokolov

 Anatoly Sokolov wrote:
 Hi.

 This patch optimizes logic left shift of unsigned char by 4, 5, and 6,
 excluding double 'andi' instructions in some cases.


Patch.

Anatoly.



begin 666 gcc_fix_11259_33028.txt
[EMAIL PROTECTED](=C8R]R96-O9RYCCT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM
M(=C8R]R96-O9RYC2AR979IVEO;B Q,CW.3DIBLK*R!G8V,OF5C;VN
M8PDH=V]R:VEN9R!C;W!Y*0I 0 M,CDV.PV([EMAIL PROTECTED] *( D)( O
M*B!)9B!A;B!I;G-N(AAR!25%A?1E)!345?4D5,051%1%]0('-E=P@5E
MAO;4*( D)( @(!S=6)S=ET=71I;[EMAIL PROTECTED];0@;]S92!T:4*( D)
M( @(!214=?1E)!345?4D5,051%1%]%6%!2('1H870@:7,@871T86-H960N
M( J+PHK0D@(9OB H:2 ](# [(D@/!-05A?24Y33E-?4$527U!%15 R
M(L@,[EMAIL PROTECTED]0D@( @5E#)?:6YS;E]D871A6VE=+FENVX@/2!.
M54Q,7U)46#L**PD)(!P965P,E]I;G-N7V1A=%;5E#)?8W5RF5N=%TN
M:6YS;B ](%!%15 R7T5/0CL*( D)(!P965P,E]C=7)R96YT7V-O=6YT(#T@
M,#L*( D)(!TGD@/2!.54Q,.PH@0E]DEN95X.B!G8V,O8V]N9FEG+V%V
MB]A=G(N;60*/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/[EMAIL PROTECTED];F9I
M9R]A=G(O879R+FUD2AR979IVEO;B Q,CW.3DIBLK*R!G8V,O8V]N9FEG
M+V%VB]A=G(N;60)*'=OFMI;F@8V]P2D*0$ @[EMAIL PROTECTED],3@@[EMAIL PROTECTED]
M.#(@0$ *( @6RAS971?871TB B;5N9W1H(B B,PT+#0L,3 B*0H@( @
M*'-E=%]A='1R()C8R(@(FYO;F4L8VQO8F)EBQS971?;BQC;]B8F5R(BE=
M*0H@BLH95F:6YE7VENVX@(G)O=QQ:3,BBL@(%LHV5T(AM871C:%]O
M5R86YD.E%)(# @(G)E9VES=5R7V]P97)A;F0B((]B(IBL)*')O=%T
M93I122 H;6%T8VA?;W!EF%N9#I122 Q()R96=IW1EE]O5R86YD(B B
M,(IBL)2 @(AC;VYS=%]I;[EMAIL PROTECTED]DI*5T**R @(B(**R @(G-W87 @)3 B
MBL@(%LHV5T7V%T='(@(FQE;F=T:(@(C$B*0HK( @*'-E=%]A='1R()C
M8R(@(FYO;F4B*5TIBL*(#L[(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^
M(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^(#X^
M(#X^B [.R!L;V=I8V%L('-H:69T(')I9VATB *+2AD969I;F5?:6YS;B B
M;'-HG%I,R(**RAD969I;F5?97AP86YD()LVAR6DS(@H@(!;*'-E= H
M;6%T8VA?;W!EF%N9#I122 P()R96=IW1EE]O5R86YD(B @( @( @
M( @( B/7(LBQR+'(L(60LBQR(BD*( DH;'-H:69T[EMAIL PROTECTED]UA=-H
M7V]P97)A;F0Z44D@,2 BF5G:7-T97)?;W!EF%N9(@(C L,PP+# L,PP
M+# B*0H@0D@( @(AM871C:%]O5R86YD.E%)(#(@(F=E;F5R86Q?;W!E
MF%N9(@()R+$PL4Q++XL;BQ1;2(I*2E=B @((BBL@((B*0HKBLH
M95F:6YE7VENVY?86YD7W-P;ET((J;'-HG%I,U]C;VYS=#0BBL@(%LH
MV5T(AM871C:%]O5R86YD.E%)(# @(F1?F5G:7-T97)?;W!EF%N9(@
M( @( @( @( @(CUD(BD**PDH;'-H:69T[EMAIL PROTECTED]UA=-H7V]P97)A
M;F0Z44D@,2 B9%]R96=IW1EE]O5R86YD(B B,(IBL)2 @( @*-O
M;G-T7VEN= T*2DI70HK( B(@HK( B(R(**R @(B(**R @[EMAIL PROTECTED]UA
M=-H7V1U P*2 HF]T871E.E%)(AM871C:%]D=7 @,[EMAIL PROTECTED]-O;G-T7VEN
M= T*2DIBL@( HV5T(AM871C:%]D=7 @,[EMAIL PROTECTED]%N9#I122 H;6%T8VA?
M9'5P(# I(AC;VYS=%]I;G0@,34I*2E=BL@((B*0HKBLH95F:6YE7VEN
MVY?86YD7W-P;ET((J;'-HG%I,U]C;VYS=#4BBL@(%LHV5T(AM871C
M:%]O5R86YD.E%)(# @(F1?F5G:7-T97)?;W!EF%N9(@( @( @( @
M( @(CUD(BD**PDH;'-H:69T[EMAIL PROTECTED]UA=-H7V]P97)A;F0Z44D@,2 B
M9%]R96=IW1EE]O5R86YD(B B,(IBL)2 @( @*-O;G-T7VEN= U
M*2DI70HK( B(@HK( B(R(**R @(B(**R @[EMAIL PROTECTED]UA=-H7V1U P
M*2 HF]T871E.E%)(AM871C:%]D=7 @,[EMAIL PROTECTED]-O;G-T7VEN= T*2DIBL@
M( HV5T(AM871C:%]D=7 @,[EMAIL PROTECTED]QS:EF=')T.E%)(AM871C:%]D=7 @
M,[EMAIL PROTECTED]-O;G-T7VEN= Q*2DIBL@( HV5T(AM871C:%]D=7 @,[EMAIL 
PROTECTED]%N
M9#I122 H;6%T8VA?9'5P(# I(AC;VYS=%]I;[EMAIL PROTECTED] @(B(IBL*
M*RAD969I;F5?:6YS;E]A;F1?W!L:70@(BILVAR6DS7V-O;G-T-B(**R @
[EMAIL PROTECTED]UA=-H7V]P97)A;F0Z44D@, B9%]R96=IW1EE]O5R86YD
M(B @( @( @( @( B/60B*0HK2ALVAI9G1R=#I122 H;6%T8VA?;W!E
MF%N9#I122 Q()D7W)E9VES=5R7V]P97)A;F0B((P(BD**PD)( @( H
M8V]NW1?:6YT(#8I*2E=BL@((BBL@((C(@HK( B(@HK(!;*'-E= H
M;6%T8VA?9'5P(# I(AR;W1A=[EMAIL PROTECTED]UA=-H7V1U P*2 H8V]NW1?
M:6YT(#0I*2D**R @([EMAIL PROTECTED]UA=-H7V1U P*2 H;'-H:69TG0Z44D@
M*UA=-H7V1U P*2 H8V]NW1?:6YT(#(I*2D**R @([EMAIL PROTECTED]UA=-H
M7V1U P*2 H86YD.E%)(AM871C:%]D=7 @,[EMAIL PROTECTED]-O;G-T7VEN= S*2DI
M70HK( B(BD**PHK*1E9FEN95]I;G-N((J;'-HG%I,R(**R @6RAS970@
M*UA=-H7V]P97)A;F0Z44D@, BF5G:7-T97)?;W!EF%N9(@( @( @
M( @( @(CUR+'(LBQR+%D+'(LB(IBL)*QS:EF=')T.E%)(AM871C
M:%]O5R86YD.E%)(#$@(G)E9VES=5R7V]P97)A;F0B((P+# L,PP+# L
M,PP(BD**PD)( @( H;6%T8VA?;W!EF%N9#I122 R()G96YEF%L7V]P
M97)A;F0B( BBQ,+% L2RQN+XL46TB*2DI70HK( B(@H@( B*B!R971U
MFX@;'-HG%I,[EMAIL PROTECTED]ENVXL(]P97)A;F1S+!.54Q,*3LBB @(%LH
MV5T7V%T='(@(FQE;F=T:(@(C4L,PQ+#(L-PV+#DB*0H@( @*'-E=%]A
M='1R()C8R(@(F-L;V)B97(L;F]N92QS971?8WIN+'-E=%]CFXLV5T7V-Z
M;BQS971?8WIN+-L;V)B97(B*5TIB **RAD969I;F5?5EAO;4R(#L@
M86YD:0HK(!;*'-E= H;6%T8VA?;W!EF%N9#I122 P()D7W)E9VES=5R
M7V]P97)A;F0B((B*0HK( @( @( H86YD.E%)(AM871C:%]D=7 @,D*
M*PD@( @( @(AM871C:%]O5R86YD.E%)(#$@(F-O;G-T7VEN=%]O5R
M86YD(B B(BDI*0HK( @*'-E= H;6%T8VA?9'5P(# IBL@( @( @(AA
M;[EMAIL PROTECTED]UA=-H7V1U P*0HK2 @( @( @*UA=-H7V]P97)A;F0Z
M44D@,B B8V]NW1?:6YT7V]P97)A;F0B((B*2DI70HK( B(@HK(!;*'-E
M= H;6%T8VA?9'5P(# I(AA;[EMAIL PROTECTED]UA=-H7V1U P*2 H;6%T8VA?
M9'5P(#$I*2E=BL@('L**R @(!O5R86YDULQ72 ]($=%3E])[EMAIL PROTECTED]
M5%9!3 H;W!EF%N9'-;,5TI([EMAIL PROTECTED],(AO5R86YDULR72DI.PHK
M(!]*0HKB H95F:6YE7VENVX@(FQS:')H:3,BB @(%LHV5T(AM871C
M:%]O5R86YD.DA)(# @(G)E9VES=5R7V]P97)A;F0B( @( @( @( @
M((]BQR+'(LBQR+'(LB(IB 

RE: [avr-gcc-list] Inversion of logic improves size speed

2007-08-27 Thread Eric Weddington


 -Original Message-
 From: Wouter van Gulik [mailto:[EMAIL PROTECTED]
 Sent: Monday, August 27, 2007 7:04 AM
 To: Eric Weddington
 Cc: 'Anatoly Sokolov'; avr-gcc-list@nongnu.org
 Subject: Re: [avr-gcc-list] Inversion of logic improves size speed

 Eric Weddington schreef:
 
  Patch was not attached to email. However, Anatoly attached
 the patch to the
  bug report.
 

 What bug report?
 I looked at:

 Non optimal bit extraction
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33049

 No register save:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33050

 Double and:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11259

 I can't find them there or I need some more coffee... it's after all
 still monday ;)

Bug #33028.

But Anatoly has now kindly sent this to the list. :-)

Eric Weddington




___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


RE: [avr-gcc-list] Inversion of logic improves size speed

2007-08-27 Thread Eric Weddington


 -Original Message-
 From:
 [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED]
 org] On Behalf Of Anatoly Sokolov
 Sent: Monday, August 27, 2007 7:14 AM
 To: Wouter van Gulik
 Cc: avr-gcc-list@nongnu.org
 Subject: Re: [avr-gcc-list] Inversion of logic improves size speed


  Anatoly Sokolov wrote:
  Hi.
 
  This patch optimizes logic left shift of unsigned char by
 4, 5, and 6,
  excluding double 'andi' instructions in some cases.
 

 Patch.

 Anatoly.


Hi Anatoly,

I build gcc 4.2.1 with this patch.

Interestingly, for bug #33028 there is no difference between 4.1.2, and
4.2.1 with this patch. I see the bug show up in 4.3.0 snapshot, but I have
not tried the patch with 4.3.x yet.

For bug #11259, the testcase in question generates this:

in r24,50-0x20
swap r24
andi r24,0x0f
andi r24,lo8(12)

With this patch it transformed it to:

in r24,50-0x20
swap r24
andi r24,lo8(12)

Which looks to be correct.

Thanks,
Eric Weddington




___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list