From: Toshiyasu Morita <tm@netcom.com>
To: law@cygnus.com
Cc: egcs@cygnus.com
Subject: Re: GCC 2.7.2.3 good, EGCS 1.0.3 bad for x86 subtract then test
Date: Thu, 24 Dec 1998 01:11:00 -0000 [thread overview]
Message-ID: <199812240911.BAA06099@netcom8.netcom.com> (raw)
In-Reply-To: <12174.914475308@hurl.cygnus.com>
>> This is solved by a patch Jeff sent me just yesterday.
>
> Yea. But it seems to generally create worse code -- too aggressive about
> copying the source to the destination. Some tweaking of the heuristic for
> when to copy the source to the destination may be needed to make the change
> generally useful.
>
> jeff
The patch seems to help some on the SH4; I see it now loading
values directly into fr0 occasionally where it didn't before:
4873:graph3d.ii **** min_z = M*(poly.vertices[0].sx-width2) +
N*(poly.vertices[0].sy-height2) + O;
1567 0308 57A5 mov.l @(20,r10),r7 <- bad!
1569 030a 7104 add #4,r1
1571 030c 475A lds r7,fpul <- bad!
1573 030e F418 fmov.s @r1,fr4
1575 0310 F12D float fpul,fr1 <- bad!
1577 0312 71FC add #-4,r1
1579 0314 F218 fmov.s @r1,fr2
1580 0316 52A6 mov.l @(24,r10),r2
1581 0318 F211 fsub fr1,fr2
1582 031a 425A lds r2,fpul
1583 031c F12D float fpul,fr1
1585 031e F54C fmov fr4,fr5
1587 0320 F35C fmov fr5,fr3
1588 0322 E044 mov #68,r0
1589 0324 F311 fsub fr1,fr3
1590 0326 F0E6 fmov.s @(r0,r14),fr0
1591 0328 F302 fmul fr0,fr3
1592 032a E040 mov #64,r0
1593 032c F0E6 fmov.s @(r0,r14),fr0 <- here
1594 032e F32E fmac fr0,fr2,fr3 <- here
1595 0330 E048 mov #72,r0
1596 0332 F0E6 fmov.s @(r0,r14),fr0
1597 0334 F300 fadd fr0,fr3
...
1639 0374 F0E6 fmov.s @(r0,r14),fr0
1640 0376 FC2E fmac fr0,fr2,fr12
...but the majority of the cases seem to be missed:
1731 03f8 FA19 fmov.s @r1+,fr10 <- here
1733 03fa F522 fmul fr2,fr5
1734 03fc F08C fmov fr8,fr0
4911:graph3d.ii **** Q1 = poly.plane.m_cam2tex->m21;
1736 03fe F619 fmov.s @r1+,fr6 <- here
1738 0400 F53E fmac fr0,fr3,fr5
1739 0402 7308 add #8,r3
4912:graph3d.ii **** Q2 = poly.plane.m_cam2tex->m22;
1741 0404 F719 fmov.s @r1+,fr7
1743 0406 F138 fmov.s @r3,fr1
1744 0408 F0AC fmov fr10,fr0 <- here
4913:graph3d.ii **** Q3 = poly.plane.m_cam2tex->m23;
4914:graph3d.ii **** Q4 = -(Q1*poly.plane.v_cam2tex->x +
Q2*poly.plane.v_cam2tex->y + Q3*poly.plane.v_cam2tex->z);
1746 040a F47C fmov fr7,fr4
1748 040c F51E fmac fr0,fr1,fr5 <- here
1750 040e F422 fmul fr2,fr4
1751 0410 F06C fmov fr6,fr0 <- here
1752 0412 F43E fmac fr0,fr3,fr4 <- here
1754 0414 FB18 fmov.s @r1,fr11 <- here
4915:graph3d.ii ****
4916:graph3d.ii **** if (Scan::tmap2)
1756 0416 D26A mov.l L464,r2
1758 0418 F0BC fmov fr11,fr0 <- here
1759 041a F41E fmac fr0,fr1,fr4 <- here
...
4939:graph3d.ii **** J1 = P1*Camera::inv_aspect + P4*M;
1842 04a8 E040 mov #64,r0
1843 L585:
1844 04aa F2E6 fmov.s @(r0,r14),fr2
1845 04ac F05C fmov fr5,fr0
1846 04ae D13F mov.l L459,r1
1847 04b0 F022 fmul fr2,fr0 <- here
1848 04b2 F118 fmov.s @r1,fr1
1849 04b4 F20C fmov fr0,fr2 <- here
1850 04b6 F08C fmov fr8,fr0
1851 04b8 F21E fmac fr0,fr1,fr2 <- here
1852 04ba E04C mov #76,r0
1853 04bc FE27 fmov.s fr2,@(r0,r14)
4940:graph3d.ii **** J2 = P2*Camera::inv_aspect + P4*N;
1855 04be E044 mov #68,r0
1856 04c0 F2E6 fmov.s @(r0,r14),fr2 <- here
1857 04c2 F05C fmov fr5,fr0
1858 04c4 F022 fmul fr2,fr0 <- here
1859 04c6 F20C fmov fr0,fr2 <- here
1860 04c8 F09C fmov fr9,fr0
1861 04ca F21E fmac fr0,fr1,fr2 <- here
1862 04cc E050 mov #80,r0
1863 04ce FE27 fmov.s fr2,@(r0,r14)
...
4942:graph3d.ii **** K1 = Q1*Camera::inv_aspect + Q4*M;
1871 04da E040 mov #64,r0
1872 04dc F2E6 fmov.s @(r0,r14),fr2 <- here
1873 04de F04C fmov fr4,fr0
1874 04e0 F022 fmul fr2,fr0 <- here
1875 04e2 F20C fmov fr0,fr2 <- here
1876 04e4 F06C fmov fr6,fr0
1877 04e6 F21E fmac fr0,fr1,fr2
1878 04e8 E058 mov #88,r0
1879 04ea FE27 fmov.s fr2,@(r0,r14)
4943:graph3d.ii **** K2 = Q2*Camera::inv_aspect + Q4*N;
1881 04ec E044 mov #68,r0
1882 04ee F2E6 fmov.s @(r0,r14),fr2 <- here
1883 04f0 F04C fmov fr4,fr0
1884 04f2 F022 fmul fr2,fr0 <- here
1885 04f4 F20C fmov fr0,fr2 <- here
1886 04f6 F07C fmov fr7,fr0
1887 04f8 F21E fmac fr0,fr1,fr2 <- here
1888 04fa E05C mov #92,r0
...
Sometimes these sequences are justified because the value is reused;
e.g.:
fmov @rm,fr9
fmov fr9,fr0
fmac fr0,frm,frn
...
(fr0 clobbered)
fmov fr9,fr0
fmac fr0,frm,frn
however it would be nice if gcc could recognize this and convert this
to:
fmov @rm,fr0
fmov fr0,fr9
fmac fr0,frm,frn
...
(fr0 clobbered)
fmov fr9,fr0
fmac fr0,frm,frn
because this sequence gives the scheduler more freedom to move the second
instruction (fmov fr0,fr9) - it can be moved below the fmac instruction
if necessary.
The file graph3d.ii is from my stress suite at
ftp://shell14.ba.best.com/pub.t/~tm2/stress-1.4.tar.gz .
The file matrix.i from the stress suite also elicits the same behavior
from egcs as well.
Toshi
next prev parent reply other threads:[~1998-12-24 1:11 UTC|newest]
Thread overview: 168+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <no.id>
1997-09-30 8:09 ` Mini-patch for cccp.c Thomas Koenig
1997-09-30 23:24 ` Jeffrey A Law
1997-10-06 8:25 ` Thomas Koenig
1997-11-16 18:42 ` A new bug in 971114 H.J. Lu
1998-04-20 11:44 ` egcs 1.0.3 on linux/alpha H.J. Lu
1998-07-17 16:48 ` -Wall stops compiling of egcs-1.0.3 Joe Buck
1998-10-30 19:14 ` A bad EH bug H.J. Lu
[not found] ` <19981218003619.B28066@cerebro.laendle>
[not found] ` <19981220010520.A4999@tantalophile.demon.co.uk>
[not found] ` <19981220223834.D16580@cerebro.laendle>
1998-12-21 2:53 ` GCC 2.7.2.3 good, EGCS 1.0.3 bad for x86 subtract then test Jamie Lokier
1998-12-23 14:19 ` Richard Henderson
1998-12-23 20:57 ` Jeffrey A Law
1998-12-24 1:11 ` Toshiyasu Morita [this message]
1998-12-25 18:17 ` Michael Hayes
1998-12-25 21:57 ` Jeffrey A Law
1998-12-26 2:07 ` Michael Hayes
1998-12-27 0:13 ` Jeffrey A Law
1998-12-27 0:59 ` Michael Hayes
2000-12-19 21:48 ` FWIW: VAX fix backport and gcc built on 4.3BSD first time ever! John David Anglin
2000-12-21 14:32 ` John David Anglin
2001-01-01 16:37 ` pa reload problem John David Anglin
2001-01-03 20:57 ` Jeffrey A Law
2001-01-03 22:08 ` John David Anglin
2001-01-04 9:55 ` Jeffrey A Law
2001-01-04 11:12 ` John David Anglin
2001-01-04 11:35 ` John David Anglin
2001-01-04 11:48 ` Alexandre Oliva
2001-01-04 13:06 ` John David Anglin
2001-01-04 13:18 ` Alexandre Oliva
2001-01-04 14:12 ` John David Anglin
2001-01-12 19:40 ` RFC: Jump to const_int John David Anglin
2001-01-12 21:10 ` Fergus Henderson
2001-04-17 19:11 ` GCC 3.0 Status Report John David Anglin
2001-04-18 0:55 ` Mark Mitchell
2001-04-18 9:00 ` John David Anglin
2001-04-18 13:51 ` John David Anglin
2001-04-20 13:36 ` Mark Mitchell
2001-04-21 19:33 ` C++ Issue on GCC 3.0 branch John David Anglin
2001-04-23 2:18 ` Bernd Schmidt
2001-04-23 7:51 ` law
2001-04-23 7:55 ` Bernd Schmidt
2001-04-23 7:56 ` Bernd Schmidt
2001-04-23 8:14 ` law
2001-04-25 10:26 ` Mark Mitchell
2001-04-25 14:04 ` John David Anglin
2001-04-25 17:31 ` Mark Mitchell
2001-04-26 8:31 ` John David Anglin
2001-04-26 10:25 ` Mark Mitchell
2001-04-26 10:02 ` law
2001-04-23 15:21 ` John David Anglin
2001-04-24 19:21 ` law
2001-04-24 20:23 ` John David Anglin
2001-04-26 16:45 ` law
2001-04-26 17:02 ` Mark Mitchell
2001-04-26 17:29 ` law
2001-04-27 10:43 ` John David Anglin
2001-04-27 15:14 ` John David Anglin
2001-04-28 9:55 ` law
2001-04-30 8:59 ` John David Anglin
2001-05-16 16:22 ` gcc 2.95.2 Joe Buck
2001-06-14 9:58 ` STL warnings recently appeared in the 3.0 branch John David Anglin
2001-06-14 11:34 ` Possible corruption of gcc-3.0-20010614.tar.bz2 John David Anglin
2001-06-14 15:56 ` PATCH: Fix invalid loader fixups from shared libobjc with John David Anglin
2001-08-09 15:12 ` Simple returns are broken in gcc 3.X John David Anglin
2001-08-09 15:48 ` Richard Henderson
2001-12-12 8:49 ` Question regarding ICE in instantiate_virtual_regs_1, at function.c:3880 John David Anglin
2001-12-12 15:58 ` John David Anglin
2001-12-13 1:28 ` Jan Hubicka
2001-12-13 11:57 ` John David Anglin
2001-12-13 12:05 ` Jan Hubicka
2001-12-14 13:26 ` John David Anglin
2002-01-30 17:36 ` condition codes, haifa-sched and virtual-stack-vars Ulrich Weigand
2002-02-21 13:31 ` Help! DW function pointer encoding for PA John David Anglin
2002-02-21 19:28 ` David Edelsohn
2002-04-05 12:45 ` middle-end/6180: Infinite loop in cc1 during dbr pass John David Anglin
2002-04-05 13:54 ` Richard Henderson
2002-04-06 12:58 ` John David Anglin
2002-04-06 14:51 ` Richard Henderson
2002-04-10 15:30 ` gcc-64 on HP-UX 11.00 John David Anglin
2002-04-11 10:25 ` John David Anglin
2002-04-11 10:43 ` H.Merijn Brand
2002-04-11 11:04 ` law
2002-04-15 13:39 ` John David Anglin
2002-04-16 13:14 ` law
2002-04-16 15:25 ` John David Anglin
2002-11-13 3:37 ` gcc-64 20021111 broken " H.Merijn Brand
2002-11-13 5:38 ` H.Merijn Brand
2002-11-13 8:31 ` John David Anglin
2002-11-13 13:12 ` John David Anglin
2002-11-15 9:54 ` H.Merijn Brand
2002-11-13 8:30 ` John David Anglin
2002-04-26 10:43 ` bison 1.33 problem with mainline c-parse.in: yyfree_stacks John David Anglin
2002-05-11 20:28 ` corrections to recent profile-arcs change John David Anglin
2002-06-01 17:01 ` vax double precision broken Joe Buck
2002-07-11 6:34 ` Bootstrapping hppa64? CPP problem John David Anglin
2002-07-16 13:21 ` [parisc-linux] gcc-3.[02] alignment problem John David Anglin
2002-07-16 13:43 ` Randolph Chung
2002-07-16 13:45 ` Matthew Wilcox
2002-07-17 5:26 ` Randolph Chung
2002-07-16 14:26 ` Richard Henderson
2002-07-26 20:16 ` mainline bootstrap failure in bitmap.c on sparcv9-sun-solaris2.8 John David Anglin
2002-07-27 18:50 ` Richard Henderson
2002-07-28 4:50 ` Richard Henderson
2002-07-28 13:08 ` John David Anglin
2002-07-28 21:35 ` John David Anglin
2002-08-01 12:02 ` gcc 3.2's cpp breaks configure scripts John David Anglin
2002-10-08 16:26 ` soft-float support Graeme Peterson
2002-11-13 14:19 ` gcc-64 20021111 broken on HP-UX 11.00 John David Anglin
2002-11-23 0:26 ` HP-UX IA64 Patch to fix earlier patch John David Anglin
2002-12-17 9:52 ` Setting LD tool default to ld breaks configure check for ld used by GCC John David Anglin
2002-12-20 17:39 ` John David Anglin
2003-01-02 17:48 ` Miscompilation of glibc with CVS mainline John David Anglin
2003-01-02 17:54 ` Jakub Jelinek
2003-01-02 18:58 ` John David Anglin
2003-01-02 17:57 ` Daniel Jacobowitz
2003-02-03 5:02 ` hppa-linux regressions and 3.2.2 release John David Anglin
2003-02-03 11:03 ` Gabriel Dos Reis
2003-02-03 16:26 ` John David Anglin
2003-02-03 16:54 ` Gabriel Dos Reis
2003-02-03 18:02 ` John David Anglin
2003-02-11 19:37 ` Bootstrap failure on hppa-unknown-linux-gnu, trunk John David Anglin
2003-02-11 22:37 ` Josef Zlomek
2003-02-11 22:51 ` John David Anglin
2003-03-05 22:03 ` Josef Zlomek
2003-03-05 22:05 ` Josef Zlomek
2003-02-11 19:59 ` Altivec + 16 byte alignment John David Anglin
2003-02-11 21:02 ` Mike Stump
2003-02-12 5:55 ` Fergus Henderson
2003-02-12 16:39 ` John David Anglin
2003-05-07 1:13 ` GCC 3.3 Prelease broken on s390 Ulrich Weigand
2003-05-07 1:27 ` Richard Henderson
2003-05-07 5:53 ` Mark Mitchell
2003-05-07 14:54 ` Ulrich Weigand
2003-05-07 15:53 ` Mark Mitchell
2003-05-07 16:03 ` Joe Buck
2003-05-07 16:13 ` Mark Mitchell
2003-05-07 17:02 ` Ulrich Weigand
2003-05-07 17:09 ` Joe Buck
2003-05-07 17:11 ` Mark Mitchell
2003-05-07 19:39 ` Ulrich Weigand
2003-05-07 19:45 ` Mark Mitchell
2003-05-07 18:19 ` Jonathan Lennox
2003-05-07 18:27 ` Mark Mitchell
2003-05-07 18:30 ` Jonathan Lennox
2003-05-07 18:36 ` Mark Mitchell
2003-05-07 18:49 ` Daniel Jacobowitz
2003-05-07 17:51 ` Richard Henderson
2003-05-07 19:42 ` Ulrich Weigand
2003-05-07 19:46 ` Mark Mitchell
2003-07-05 17:01 ` Solaris 8/SPARC bootstrap broken building 64-bit libgcc John David Anglin
2003-10-08 3:11 ` Someone broke bootstrap John David Anglin
2003-10-08 7:25 ` Eric Christopher
2003-10-08 17:26 ` John David Anglin
2004-01-06 0:43 ` autoconf changes break bootstrap on hppa*-*-hpux* John David Anglin
2007-04-15 19:13 ` Call to arms: testsuite failures on various targets John David Anglin
2002-04-04 2:03 gcc-64 on HP-UX 11.00 H.Merijn Brand
2002-04-04 8:22 ` law
[not found] ` <200204041958.g34JwTbA011272@hiauly1.hia.nrc.ca>
2002-04-05 4:51 ` H.Merijn Brand
2002-04-05 5:01 ` H.Merijn Brand
2002-04-05 9:19 ` John David Anglin
2002-04-07 7:26 ` H.Merijn Brand
2002-04-07 12:17 ` John David Anglin
2002-04-10 3:39 ` H.Merijn Brand
2002-04-10 11:21 ` John David Anglin
2002-04-10 11:56 ` H.Merijn Brand
2002-04-10 12:50 ` John David Anglin
2002-04-11 2:19 ` H.Merijn Brand
2002-04-11 8:59 ` John David Anglin
2002-04-11 9:15 ` H.Merijn Brand
2002-04-11 9:19 ` law
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=199812240911.BAA06099@netcom8.netcom.com \
--to=tm@netcom.com \
--cc=egcs@cygnus.com \
--cc=law@cygnus.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).