Re: Ping #2: [Patch,AVR] Light-weight DImode implementation.

2011-12-25 Thread Denis Chertykov
2011/12/15 Georg-Johann Lay a...@gjlay.de:
 http://gcc.gnu.org/ml/gcc-patches/2011-12/msg00471.html

 Georg-Johann Lay wrote:
 Georg-Johann Lay wrote:
 Denis Chertykov wrote:

 The only question that remains is what the -m64 option should be like?

 [ ] Omit it altogether
 [ ] Leave it as is (off per default)
 [ ] Set it on per default

 As soon as the direction is clear, I'll post a follow-up patch to
 add the missing bits like, e.g., documentation for the new switch.
 I'll leave the decision to Denis, but I'm for omitting it.
 I will also defer to Denis, but I'd rather avoid having another option,
 if we can. Keep it simple for the users.
 It might also be a hidden option like -morder2 and on per default.
 Such thing is nice for developers to play :-)

 I'm agree with Richard. I'm for omitting it.
 Denis.

 Here is a combined patch if that is more convenient for review.

 The variable avr_have_dimode that was originally set in avr.opt is still 
 there
 but always set to true in avr.c. Option -m64 is omitted and thus avr.opt is
 unchanged.

 Passed without regressions.

 Ok?

 Johann

 gcc/
       * config/avr/avr-dimode.md: New file.
       * config/avr/avr.md: Include it.
       (adjust_len): Add alternatives: plus64, compare64.
       (HIDI): Remove code iterator.
       (code_stdname): New code attribute.
       (rotx, rotsmode): Remove DI from interators.
       (rotlmode3, *rotwmode, *rotbmode): Use HISI instead of HIDI
       as code iterator.
       * config/avr/avr-protos.h (avr_have_dimode): New.
       (avr_out_plus64, avr_out_compare64): New.
       * config/avr/avr.c (avr_out_compare): Handle DImode.
       (avr_have_dimode): New variable definition and initialization.
       (avr_out_compare64, avr_out_plus64): New functions.
       (avr_out_plus_1): Use simplify_unary_operation to negate xval.
       (adjust_insn_length): Handle ADJUST_LEN_COMPARE64, ADJUST_LEN_PLUS64.
       (avr_compare_pattern): Skip DImode comparisons.

 libgcc/
       * config/avr/t-avr (LIB1ASMFUNCS): Add _adddi3, _adddi3_s8,
       _subdi3, _cmpdi2, _cmpdi2_s8, _rotldi3.
       * config/avr/lib1funcs.S (__adddi3, __adddi3_s8, __subdi3,
       __cmpdi2, __cmpdi2_s8, __rotldi3): New functions.



Approved.

Denis.


Re: Ping #2: [Patch,AVR] Light-weight DImode implementation.

2011-12-15 Thread Georg-Johann Lay
http://gcc.gnu.org/ml/gcc-patches/2011-12/msg00471.html

Georg-Johann Lay wrote:
 Georg-Johann Lay wrote:
 Denis Chertykov wrote:

 The only question that remains is what the -m64 option should be like?

 [ ] Omit it altogether
 [ ] Leave it as is (off per default)
 [ ] Set it on per default

 As soon as the direction is clear, I'll post a follow-up patch to
 add the missing bits like, e.g., documentation for the new switch.
 I'll leave the decision to Denis, but I'm for omitting it.
 I will also defer to Denis, but I'd rather avoid having another option,
 if we can. Keep it simple for the users.
 It might also be a hidden option like -morder2 and on per default.
 Such thing is nice for developers to play :-)

 I'm agree with Richard. I'm for omitting it.
 Denis.
 
 Here is a combined patch if that is more convenient for review.
 
 The variable avr_have_dimode that was originally set in avr.opt is still there
 but always set to true in avr.c. Option -m64 is omitted and thus avr.opt is
 unchanged.
 
 Passed without regressions.
 
 Ok?
 
 Johann
 
 gcc/
   * config/avr/avr-dimode.md: New file.
   * config/avr/avr.md: Include it.
   (adjust_len): Add alternatives: plus64, compare64.
   (HIDI): Remove code iterator.
   (code_stdname): New code attribute.
   (rotx, rotsmode): Remove DI from interators.
   (rotlmode3, *rotwmode, *rotbmode): Use HISI instead of HIDI
   as code iterator.
   * config/avr/avr-protos.h (avr_have_dimode): New.
   (avr_out_plus64, avr_out_compare64): New.
   * config/avr/avr.c (avr_out_compare): Handle DImode.
   (avr_have_dimode): New variable definition and initialization.
   (avr_out_compare64, avr_out_plus64): New functions.
   (avr_out_plus_1): Use simplify_unary_operation to negate xval.
   (adjust_insn_length): Handle ADJUST_LEN_COMPARE64, ADJUST_LEN_PLUS64.
   (avr_compare_pattern): Skip DImode comparisons.
 
 libgcc/
   * config/avr/t-avr (LIB1ASMFUNCS): Add _adddi3, _adddi3_s8,
   _subdi3, _cmpdi2, _cmpdi2_s8, _rotldi3.
   * config/avr/lib1funcs.S (__adddi3, __adddi3_s8, __subdi3,
   __cmpdi2, __cmpdi2_s8, __rotldi3): New functions.