public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/22563] [3.4/4.0/4.1 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
@ 2005-10-27  0:20 ` pinskia at gcc dot gnu dot org
  2005-10-31  4:12 ` mmitchel at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-10-27  0:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from pinskia at gcc dot gnu dot org  2005-10-27 00:20 -------
Hmm, this is truely all bit-field issues.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
OtherBugsDependingO|                            |19466
              nThis|                            |
           Severity|normal                      |minor


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


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

* [Bug rtl-optimization/22563] [3.4/4.0/4.1 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
  2005-10-27  0:20 ` [Bug rtl-optimization/22563] [3.4/4.0/4.1 Regression] performance regression for gcc newer than 2.95 pinskia at gcc dot gnu dot org
@ 2005-10-31  4:12 ` mmitchel at gcc dot gnu dot org
  2005-11-03 22:54 ` hubicka at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2005-10-31  4:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from mmitchel at gcc dot gnu dot org  2005-10-31 04:12 -------
Leaving as P2.

I've seen reports of similar bitfield problems on a variety of problems.  This
kind of code doesn't show up much in scientific computing, but it does show up
in network applications, operating-system kernels, etc.


-- 


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


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

* [Bug rtl-optimization/22563] [3.4/4.0/4.1 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
  2005-10-27  0:20 ` [Bug rtl-optimization/22563] [3.4/4.0/4.1 Regression] performance regression for gcc newer than 2.95 pinskia at gcc dot gnu dot org
  2005-10-31  4:12 ` mmitchel at gcc dot gnu dot org
@ 2005-11-03 22:54 ` hubicka at gcc dot gnu dot org
  2006-02-16  2:08 ` [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 " ian at airs dot com
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2005-11-03 22:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from hubicka at gcc dot gnu dot org  2005-11-03 22:54 -------
Actually the code 4.1 in comment #5 should execute faster on true i686. It is
longer and will trigger partial memory stalls on later chips.

Honza


-- 


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


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

* [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2005-11-03 22:54 ` hubicka at gcc dot gnu dot org
@ 2006-02-16  2:08 ` ian at airs dot com
  2006-02-24  0:26 ` mmitchel at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: ian at airs dot com @ 2006-02-16  2:08 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from ian at airs dot com  2006-02-16 02:08 -------
FYI, this code looks OK to me on mainline, entering the loop at .L18:

.L29:
        andl    $-16, %edx
        cmpb    $80, %dl
        jne     .L27
        subl    $1, %ecx
        je      .L28
.L18:
        movl    $86, %edx
        movl    %edx, %eax
        andl    $7, %eax
        cmpb    $6, %al
        movb    $86, b_rec
        je      .L29
.L27:
        call    abort
.L28:

Still looks kind of sloppy in 4.1, though.

I haven't tried to figure out what fixed it on mainline.


-- 

ian at airs dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ian at airs dot com


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


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

* [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2006-02-16  2:08 ` [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 " ian at airs dot com
@ 2006-02-24  0:26 ` mmitchel at gcc dot gnu dot org
  2006-04-06  1:33 ` pinskia at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-02-24  0:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from mmitchel at gcc dot gnu dot org  2006-02-24 00:25 -------
This issue will not be resolved in GCC 4.1.0; retargeted at GCC 4.1.1.


-- 

mmitchel at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.0.3                       |4.1.1


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


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

* [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2006-02-24  0:26 ` mmitchel at gcc dot gnu dot org
@ 2006-04-06  1:33 ` pinskia at gcc dot gnu dot org
  2006-04-06  2:46 ` ian at airs dot com
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-04-06  1:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from pinskia at gcc dot gnu dot org  2006-04-06 01:33 -------
(In reply to comment #9)
> FYI, this code looks OK to me on mainline, entering the loop at .L18:
Except for the fact the bit-fields that are looked at are constant :).


-- 


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


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

* [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2006-04-06  1:33 ` pinskia at gcc dot gnu dot org
@ 2006-04-06  2:46 ` ian at airs dot com
  2006-05-09 11:59 ` [Bug rtl-optimization/22563] [4.0/4.1/4.2 " hubicka at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: ian at airs dot com @ 2006-04-06  2:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from ian at airs dot com  2006-04-06 02:46 -------
Yes, true.  I can get constant code by not producing BIT_FIELD_REF so early. 
But that disables other worthy optimizations.  I don't have a coherent patch
yet.


-- 


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


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

* [Bug rtl-optimization/22563] [4.0/4.1/4.2 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (6 preceding siblings ...)
  2006-04-06  2:46 ` ian at airs dot com
@ 2006-05-09 11:59 ` hubicka at gcc dot gnu dot org
  2006-05-14 15:48 ` sayle at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: hubicka at gcc dot gnu dot org @ 2006-05-09 11:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from hubicka at gcc dot gnu dot org  2006-05-09 11:59 -------
The simplified testcase seems to be solved now (on mainline and Athlon):
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ gcc-2.95 -O3 t.C -march=i686  
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ ./a.out
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ time ./a.out

real    0m1.809s
user    0m1.798s
sys     0m0.000s
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ time ./a.out

real    0m1.841s
user    0m1.796s
sys     0m0.002s
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ /aux/hubicka/egcs-mainline/bin/g++
 -O3 t.C -static  -march=i686  
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ time ./a.out

real    0m1.713s
user    0m1.676s
sys     0m0.003s
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ time ./a.out

real    0m1.719s
user    0m1.700s
sys     0m0.000s
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ /aux/hubicka/egcs-mainline/bin/g++
 -O3 t.C -static  -march=athlon
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ time ./a.out
real    0m1.353s
user    0m1.347s
sys     0m0.002s
hubicka@kampanus:/aux/hubicka/gcc/build/gcc$ 

The assembly looks comparable to 2.95 one (instruction count wise, form is
closer to 4.0)
.L29:
        andl    $-16, %edx
        cmpb    $80, %dl
        jne     .L27
        decl    %ecx
        je      .L28
.L18:
        movl    $86, %edx
        movb    $86, b_rec
        movl    %edx, %eax
        andl    $7, %eax
        cmpb    $6, %al
        je      .L29
.L27:
        call    abort


Since no direct testcase for code in comment 5 is attached, can I ask if the
problem presist with generic model?  It looks like the benchmark was executed
on different core than i686 but compiled with i686.  With generic we should now
assume the partial memory stores and thus avoid the integer moves by halves of
destination.

Honza


-- 

hubicka at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |WAITING


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


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

* [Bug rtl-optimization/22563] [4.0/4.1/4.2 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (7 preceding siblings ...)
  2006-05-09 11:59 ` [Bug rtl-optimization/22563] [4.0/4.1/4.2 " hubicka at gcc dot gnu dot org
@ 2006-05-14 15:48 ` sayle at gcc dot gnu dot org
  2006-05-14 19:03 ` [Bug rtl-optimization/22563] [4.0/4.1 " pinskia at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: sayle at gcc dot gnu dot org @ 2006-05-14 15:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from sayle at gcc dot gnu dot org  2006-05-14 15:48 -------
Subject: Bug 22563

Author: sayle
Date: Sun May 14 15:48:11 2006
New Revision: 113762

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113762
Log:

        PR rtl-optimization/22563
        * expmed.c (store_fixed_bit_field): When using AND and IOR to store
        a fixed width bitfield, always force the intermediates into psuedos.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/expmed.c


-- 


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


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

* [Bug rtl-optimization/22563] [4.0/4.1 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (8 preceding siblings ...)
  2006-05-14 15:48 ` sayle at gcc dot gnu dot org
@ 2006-05-14 19:03 ` pinskia at gcc dot gnu dot org
  2006-05-15  4:43 ` sayle at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-05-14 19:03 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW
      Known to work|2.95.3                      |2.95.3 4.2.0
   Last reconfirmed|2006-02-06 16:52:04         |2006-05-14 19:03:37
               date|                            |
            Summary|[4.0/4.1/4.2 Regression]    |[4.0/4.1 Regression]
                   |performance regression for  |performance regression for
                   |gcc newer than 2.95         |gcc newer than 2.95


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


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

* [Bug rtl-optimization/22563] [4.0/4.1 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (9 preceding siblings ...)
  2006-05-14 19:03 ` [Bug rtl-optimization/22563] [4.0/4.1 " pinskia at gcc dot gnu dot org
@ 2006-05-15  4:43 ` sayle at gcc dot gnu dot org
  2006-05-15 16:55 ` [Bug rtl-optimization/22563] [4.0 " pinskia at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 14+ messages in thread
From: sayle at gcc dot gnu dot org @ 2006-05-15  4:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from sayle at gcc dot gnu dot org  2006-05-15 04:43 -------
Subject: Bug 22563

Author: sayle
Date: Mon May 15 04:43:05 2006
New Revision: 113775

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113775
Log:

        PR rtl-optimization/22563
        Backports from mainline
        * expmed.c (store_fixed_bit_field): When using AND and IOR to store
        a fixed width bitfield, always force the intermediates into pseudos.
        Also check whether the bitsize is valid for the machine's "insv"
        instruction before moving the target into a pseudo for use with
        the insv.
        * config/i386/predicates.md (const8_operand): New predicate.
        * config/i386/i386.md (extv, extzv, insv): Use the new
        const8_operand predicate where appropriate.


Modified:
    branches/gcc-4_1-branch/gcc/ChangeLog
    branches/gcc-4_1-branch/gcc/config/i386/i386.md
    branches/gcc-4_1-branch/gcc/config/i386/predicates.md
    branches/gcc-4_1-branch/gcc/expmed.c


-- 


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


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

* [Bug rtl-optimization/22563] [4.0 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (10 preceding siblings ...)
  2006-05-15  4:43 ` sayle at gcc dot gnu dot org
@ 2006-05-15 16:55 ` pinskia at gcc dot gnu dot org
  2006-05-16  1:17 ` sayle at gcc dot gnu dot org
  2007-02-03 15:33 ` gdr at gcc dot gnu dot org
  13 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-05-15 16:55 UTC (permalink / raw)
  To: gcc-bugs



-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|3.3.3 3.0.4 3.2.3 3.4.0     |3.3.3 3.0.4 3.2.3 3.4.0
                   |                            |4.1.0
      Known to work|2.95.3 4.2.0                |2.95.3 4.2.0 4.1.1
            Summary|[4.0/4.1 Regression]        |[4.0 Regression] performance
                   |performance regression for  |regression for gcc newer
                   |gcc newer than 2.95         |than 2.95
   Target Milestone|4.1.1                       |4.0.4


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


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

* [Bug rtl-optimization/22563] [4.0 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (11 preceding siblings ...)
  2006-05-15 16:55 ` [Bug rtl-optimization/22563] [4.0 " pinskia at gcc dot gnu dot org
@ 2006-05-16  1:17 ` sayle at gcc dot gnu dot org
  2007-02-03 15:33 ` gdr at gcc dot gnu dot org
  13 siblings, 0 replies; 14+ messages in thread
From: sayle at gcc dot gnu dot org @ 2006-05-16  1:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from sayle at gcc dot gnu dot org  2006-05-16 01:17 -------
Subject: Bug 22563

Author: sayle
Date: Tue May 16 01:17:13 2006
New Revision: 113810

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113810
Log:

        PR rtl-optimization/22563
        Backports from mainline
        * expmed.c (store_fixed_bit_field): When using AND and IOR to store
        a fixed width bitfield, always force the intermediates into pseudos.
        Also check whether the bitsize is valid for the machine's "insv"
        instruction before moving the target into a pseudo for use with
        the insv.
        * config/i386/predicates.md (const8_operand): New predicate.
        * config/i386/i386.md (extv, extzv, insv): Use the new
        const8_operand predicate where appropriate.


Modified:
    branches/gcc-4_0-branch/gcc/ChangeLog
    branches/gcc-4_0-branch/gcc/config/i386/i386.md
    branches/gcc-4_0-branch/gcc/config/i386/predicates.md
    branches/gcc-4_0-branch/gcc/expmed.c


-- 


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


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

* [Bug rtl-optimization/22563] [4.0 Regression] performance regression for gcc newer than 2.95
       [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
                   ` (12 preceding siblings ...)
  2006-05-16  1:17 ` sayle at gcc dot gnu dot org
@ 2007-02-03 15:33 ` gdr at gcc dot gnu dot org
  13 siblings, 0 replies; 14+ messages in thread
From: gdr at gcc dot gnu dot org @ 2007-02-03 15:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from gdr at gcc dot gnu dot org  2007-02-03 15:32 -------
Fixed in GCC-4.1.1 and higher.


-- 

gdr at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|4.0.4                       |4.1.1


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


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

end of thread, other threads:[~2007-02-03 15:33 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-22563-10914@http.gcc.gnu.org/bugzilla/>
2005-10-27  0:20 ` [Bug rtl-optimization/22563] [3.4/4.0/4.1 Regression] performance regression for gcc newer than 2.95 pinskia at gcc dot gnu dot org
2005-10-31  4:12 ` mmitchel at gcc dot gnu dot org
2005-11-03 22:54 ` hubicka at gcc dot gnu dot org
2006-02-16  2:08 ` [Bug rtl-optimization/22563] [3.4/4.0/4.1/4.2 " ian at airs dot com
2006-02-24  0:26 ` mmitchel at gcc dot gnu dot org
2006-04-06  1:33 ` pinskia at gcc dot gnu dot org
2006-04-06  2:46 ` ian at airs dot com
2006-05-09 11:59 ` [Bug rtl-optimization/22563] [4.0/4.1/4.2 " hubicka at gcc dot gnu dot org
2006-05-14 15:48 ` sayle at gcc dot gnu dot org
2006-05-14 19:03 ` [Bug rtl-optimization/22563] [4.0/4.1 " pinskia at gcc dot gnu dot org
2006-05-15  4:43 ` sayle at gcc dot gnu dot org
2006-05-15 16:55 ` [Bug rtl-optimization/22563] [4.0 " pinskia at gcc dot gnu dot org
2006-05-16  1:17 ` sayle at gcc dot gnu dot org
2007-02-03 15:33 ` gdr at gcc dot gnu dot 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).