public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode
@ 2011-10-31 13:02 gjl at gcc dot gnu.org
  2011-10-31 13:04 ` [Bug target/50931] " gjl at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-10-31 13:02 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50931

             Bug #: 50931
           Summary: [avr] Support a 24-bit scalar integer mode
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: target
        AssignedTo: gjl@gcc.gnu.org
        ReportedBy: gjl@gcc.gnu.org
                CC: eric.weddington@atmel.com
            Target: avr


In order to support the upcoming named address spaces, a 24-bit wide mode is
needed because 32-bit mode is too expensive.

As a byproduct, 24-bit arithmetic can be exposed to user for general integer
arithmetic by means of built-in types. This is advantageous if 32-bit
arithmetic is too expensive and 16-bit arithmetic is too unprecise.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug target/50931] [avr] Support a 24-bit scalar integer mode
  2011-10-31 13:02 [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode gjl at gcc dot gnu.org
@ 2011-10-31 13:04 ` gjl at gcc dot gnu.org
  2011-11-04 16:21 ` gjl at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-10-31 13:04 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50931

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2011-10-31
             Blocks|                            |49868
   Target Milestone|---                         |4.7.0
     Ever Confirmed|0                           |1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug target/50931] [avr] Support a 24-bit scalar integer mode
  2011-10-31 13:02 [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode gjl at gcc dot gnu.org
  2011-10-31 13:04 ` [Bug target/50931] " gjl at gcc dot gnu.org
@ 2011-11-04 16:21 ` gjl at gcc dot gnu.org
  2011-12-14 10:20 ` gjl at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-11-04 16:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50931

--- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-11-04 16:20:28 UTC ---
Author: gjl
Date: Fri Nov  4 16:20:18 2011
New Revision: 180962

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180962
Log:
gcc/
    PR target/50931
    * config/avr/avr-modes.def: New file defining PSImode.
    * config/avr/avr-c.c (__INT24_MAX__, __INT24_MIN__,
    __UINT24_MAX__): New built-in defines.
    * config/avr/avr.md (adjust_len): Add tstpsi, mov24,  reload_in24,
    ashlpsi, ashrpsi, lshrpsi.
    (QISO, QIDI, HISI, HIDI, MPUSH, rotx, rotsmode): Add PSI.
    (MOVMODE): New mode iterator.
    (movpsi): New expander.
    (movqi, movhi, movsi, movsf, movpsi): Write as one using MOVMODE.
    (*reload_inpsi, *movpsi): New insns.
    (*reload_inpsi): New RTL peephole.
    (addpsi3, *addpsi3_zero_extend.qi, *addpsi3_zero_extend.hi,
    *addpsi3_sign_extend.hi): New insns.
    (subpsi3, *subpsi3_zero_extend.qi, *subpsi3_zero_extend.hi,
    *subpsi3_sign_extend.hi): New insns.
    (divmodpsi4, udivmodpsi4): New define insn-and-split.
    (*divmodpsi4_call, *udivmodpsi4_call): New insns.
    (andpsi3, iorpsi3, xorpsi3): New insns.
    (*rotlpsi2.1, *rotlpsi2.23): New insns.
    (*rotw<mode>): Insn condition only allow even-sized modes.
    (*rotb<mode>): Insn condition allows odd-sized modes.
    (ashlpsi3, ashrpsi3, lshrpsi3, *addpsi3.lt0): New insns.
    (negpsi2, one_cmplpsi2): New insns.
    (extendqipsi2, extendhipsi2, extendpsisi2): New insns.
    (zero_extendqipsi2, zero_extendhipsi2, zero_extendpsisi2): New
    insn-and-splits.
    (*cmppsi, *negated_tstpsi, *reversed_tstpsi): New insns.
    (cbranchpsi4): New expander.
    * config/avr/constraints.md (Ca3, Co3, Cx3): New constraints.
    * config/avr/avr-protos.h (avr_out_tstpsi, avr_out_movpsi,
    avr_out_ashlpsi3, avr_out_ashrpsi3, avr_out_lshrpsi3,
    avr_out_reload_inpsi): New prototypes.

    * config/avr/avr.c (TARGET_SCALAR_MODE_SUPPORTED_P): Define to...
    (avr_scalar_mode_supported_p): ...this new static function.
    (avr_asm_len): Always return "".
    (avr_out_load_psi, avr_out_store_psi): New static functions.
    (avr_out_movpsi, avr_out_reload_inpsi): New functions.
    (avr_out_tstpsi): New function.
    (avr_out_ashlpsi3, avr_out_ashrpsi3, avr_out_lshrpsi3): New functions.
    (avr_out_plus_1, output_reload_in_const): Handle 3-byte types.
    (avr_simplify_comparison_p): Ditto.
    (adjust_insn_length): Handle ADJUST_LEN_RELOAD_IN24,
    ADJUST_LEN_MOV24, ADJUST_LEN_TSTPSI, ADJUST_LEN_ASHLPSI,
    ADJUST_LEN_ASHRPSI, ADJUST_LEN_LSHRPSI.
    (avr_rtx_costs_1): Report PSI costs.
    (avr_libcall_value): Handle odd-sized parameters.
    (avr_init_builtin_int24): New static function to define built-in
    24-bit types __int24 and __uint24.
    (avr_init_builtins): Use it.

libgcc/
    PR target/50931
    * config/t-avr (LIB1ASMFUNCS): Add _divmodpsi4, _udivmodpsi4.
    * config/lib1funcs.S (__udivmodpsi4, __divmodpsi4): New functions.


Added:
    trunk/gcc/config/avr/avr-modes.def
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr-c.c
    trunk/gcc/config/avr/avr-protos.h
    trunk/gcc/config/avr/avr.c
    trunk/gcc/config/avr/avr.md
    trunk/gcc/config/avr/constraints.md
    trunk/libgcc/ChangeLog
    trunk/libgcc/config/avr/lib1funcs.S
    trunk/libgcc/config/avr/t-avr


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug target/50931] [avr] Support a 24-bit scalar integer mode
  2011-10-31 13:02 [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode gjl at gcc dot gnu.org
  2011-10-31 13:04 ` [Bug target/50931] " gjl at gcc dot gnu.org
  2011-11-04 16:21 ` gjl at gcc dot gnu.org
@ 2011-12-14 10:20 ` gjl at gcc dot gnu.org
  2012-03-22  9:28 ` rguenth at gcc dot gnu.org
  2012-03-28 12:29 ` gjl at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: gjl at gcc dot gnu.org @ 2011-12-14 10:20 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50931

--- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-12-14 10:01:04 UTC ---
Author: gjl
Date: Wed Dec 14 10:00:56 2011
New Revision: 182328

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182328
Log:
libgcc/
    PR target/50931
    * config/avr/t-avr (LIB1ASMSRC): Add _mulpsi3, _mulsqipsi3.
    * config/avr/lib1funcs.S (__mulpsi3, __mulsqipsi3): New functions.
gcc/
    PR target/50931
    * config/avr/avr.md (mulpsi3): New expander.
    (*umulqihipsi3, *umulhiqipsi3): New insns.
    (*mulsqipsi3.libgcc, *mulpsi3.libgcc): New insns.
    (mulsqipsi3, *mulpsi3): New insn-and-splits.
    (ashlpsi3): Turn to expander.  Move insn code to...
    (*ashlpsi3): ...this new insn.
testsuite/
    PR target/50931
    * gcc.target/avr/torture/int24-mul.c: New testcase.


Added:
    trunk/gcc/testsuite/gcc.target/avr/torture/int24-mul.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr.md
    trunk/gcc/testsuite/ChangeLog
    trunk/libgcc/ChangeLog
    trunk/libgcc/config/avr/lib1funcs.S
    trunk/libgcc/config/avr/t-avr


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug target/50931] [avr] Support a 24-bit scalar integer mode
  2011-10-31 13:02 [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode gjl at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2011-12-14 10:20 ` gjl at gcc dot gnu.org
@ 2012-03-22  9:28 ` rguenth at gcc dot gnu.org
  2012-03-28 12:29 ` gjl at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-03-22  9:28 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50931

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.7.0                       |4.7.1

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-03-22 08:27:31 UTC ---
GCC 4.7.0 is being released, adjusting target milestone.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug target/50931] [avr] Support a 24-bit scalar integer mode
  2011-10-31 13:02 [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode gjl at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2012-03-22  9:28 ` rguenth at gcc dot gnu.org
@ 2012-03-28 12:29 ` gjl at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-03-28 12:29 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50931

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|documentation               |
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|4.7.1                       |4.7.0

--- Comment #4 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-28 11:07:26 UTC ---
Fixed in 4.7.0 (up to documentation)


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-03-28 11:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-31 13:02 [Bug target/50931] New: [avr] Support a 24-bit scalar integer mode gjl at gcc dot gnu.org
2011-10-31 13:04 ` [Bug target/50931] " gjl at gcc dot gnu.org
2011-11-04 16:21 ` gjl at gcc dot gnu.org
2011-12-14 10:20 ` gjl at gcc dot gnu.org
2012-03-22  9:28 ` rguenth at gcc dot gnu.org
2012-03-28 12:29 ` gjl at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).