public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Sandiford <rdsandiford@googlemail.com>
To: Richard Biener <richard.guenther@gmail.com>
Cc: Kenneth Zadeck <zadeck@naturalbridge.com>,
	 Mike Stump <mikestump@comcast.net>,
	 gcc-patches <gcc-patches@gcc.gnu.org>,
	 Lawrence Crowl <crowl@google.com>,
	 Ian Lance Taylor <iant@google.com>
Subject: Re: patch to fix constant math -5th patch, rtl
Date: Fri, 03 May 2013 13:50:00 -0000	[thread overview]
Message-ID: <878v3wi355.fsf@sandifor-thinkpad.stglab.manchester.uk.ibm.com> (raw)
In-Reply-To: <CAFiYyc2P_+gf-_3G2Y8KwtdxK8E_mrDppQceR-kN+Y98Mw8Gtw@mail.gmail.com>	(Richard Biener's message of "Fri, 3 May 2013 14:53:12 +0200")

Richard Biener <richard.guenther@gmail.com> writes:
>> But storing the mode in the rtx is orthogonal to what Kenny is doing.
>> The mode of each rtx constant is already available in the places
>> that Kenny is changing, because we already do the work to keep track
>> of the mode separately.  Being able to get the mode directly from the
>> rtx would be simpler and IMO better, but the semantics are the same
>> either way.
>
> Well, you showed examples where it is impossible to get at the mode.

No, I showed examples where the mode is not inherent in the rtl.
That's a very different thing.  I wrote that in respnose to:

Richard Biener <richard.guenther@gmail.com> writes:
> Ok, so what wide-int provides is integer values encoded in 'len' HWI
> words that fit in 'precision' or more bits (and often in less).  wide-int
> also provides N-bit arithmetic operations.  IMHO both are tied
> too closely together.  A give constant doesn't really have a precision.
> Associating one with it to give a precision to an arithmetic operation
> looks wrong to me and are a source of mismatches.
>
> What RTL currently has looks better to me - operations have
> explicitely specified precisions.

That is, you seemed to be arguing that constants don't need a precision
because, whenever you do anything with them, the operator tells you
what precision the constant has.  And you seemed to be citing rtl
as proof of that.

What I was trying to show is that the operator _doesn't_ tell you the
precision in all cases.  Instead, the operands always have their own
precision, and there are rules about which combinations of operand and
operator precision are allowed.  For most binary operations the three
precisions have to be the same.  For things like popcount there's no
real restriction: the precision of the thing being counted and the
precision of the result can be arbitrarily different.  For things like
zero_extend the operator precision must be greater than the operand
precision.  Etc.

The onus is then on the rtl code to keep track of both the operator
and operand precisions where necessary.  _And the current rtl code
already tries to do that_[*].  The cselib example I gave is one place
where we take special measures.  See also things like:

  /* Now recursively process each operand of this operation.  We need to
     handle ZERO_EXTEND specially so that we don't lose track of the
     inner mode.  */
  if (GET_CODE (x) == ZERO_EXTEND)
    {
      new_rtx = make_compound_operation (XEXP (x, 0), next_code);
      tem = simplify_const_unary_operation (ZERO_EXTEND, GET_MODE (x),
					    new_rtx, GET_MODE (XEXP (x, 0)));
      if (tem)
	return tem;
      SUBST (XEXP (x, 0), new_rtx);
      return x;
    }

in combine.c, which is there specifically because this code still knows
the mode of both the operand and operator.

So all this was trying to dispel the idea that:

(a) rtl constants don't have a mode
(b) the mode of an operator tells you the mode of the operands

Neither is really true.  Instead, every rtl constant has a precision/mode.
Every tree constant likewise has a precision.  The main purpose of wide_int
is to handle compile-time arithmetic on rtl constants and tree constants,
and if both of those have a precision, it seems strange that wide_int
shouldn't.  It just pushes the onus of tracking the precision onto the
callers, like the current rtl representation does.  And the examples
I've been giving were supposed to show what a hassle that can be.

  [*] Highlighted because that's why storing a mode in a CONST_INT or
      CONST_DOUBLE isn't a prerequisite for Kenny's patch.  The mode
      is already to hand where it needs to be.

Thanks,
Richard

  reply	other threads:[~2013-05-03 13:50 UTC|newest]

Thread overview: 217+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-03 17:17 patch to fix Kenneth Zadeck
2012-10-03 20:47 ` Marc Glisse
2012-10-03 22:05   ` Kenneth Zadeck
2012-10-04 13:17     ` Marc Glisse
2012-10-04 15:19       ` Kenneth Zadeck
2012-10-04 16:55         ` Marc Glisse
2012-10-04 21:06     ` Marc Glisse
2012-10-04 23:02       ` Kenneth Zadeck
2012-10-05  7:05         ` Marc Glisse
2012-10-03 22:55   ` Mike Stump
2012-10-04 12:48 ` Richard Guenther
2012-10-04 13:55   ` patch to fix constant math Kenneth Zadeck
2012-10-04 16:58     ` Richard Guenther
2012-10-04 18:08       ` Kenneth Zadeck
2012-10-04 19:27         ` Richard Sandiford
2012-10-05  9:27           ` Richard Guenther
2012-10-05  9:29             ` Richard Guenther
2012-10-05  9:56             ` Richard Sandiford
2012-10-05 10:34               ` Richard Guenther
2012-10-05 11:24                 ` Richard Sandiford
2012-10-05 11:42                   ` Richard Guenther
2012-10-05 12:26                     ` Richard Sandiford
2012-10-05 12:39                       ` Richard Guenther
2012-10-05 13:11                         ` Richard Sandiford
2012-10-05 13:18                           ` Richard Sandiford
2012-10-05 13:53                             ` Richard Guenther
2012-10-05 14:15                               ` Richard Sandiford
2012-10-05 14:36                                 ` Richard Guenther
2012-10-05 14:41                                   ` Kenneth Zadeck
2012-10-05 14:53                                     ` Richard Sandiford
2012-10-05 13:49                         ` Richard Guenther
2012-10-05 16:34                           ` Kenneth Zadeck
2012-10-05 17:29                             ` Richard Sandiford
2012-10-05 17:53                               ` Kenneth Zadeck
2012-10-05 22:12                               ` patch to fix constant math - first small patch Kenneth Zadeck
2012-10-05 22:48                                 ` patch to fix constant math - second " Kenneth Zadeck
2012-10-06 15:55                                   ` patch to fix constant math - third " Kenneth Zadeck
2012-10-08  9:08                                     ` Richard Guenther
2012-10-08 11:37                                     ` Kenneth Zadeck
2012-10-08 12:11                                       ` Richard Guenther
2012-10-08 19:43                                       ` Richard Sandiford
2012-10-09 15:10                                         ` patch to fix constant math - 4th patch - the wide-int class Kenneth Zadeck
2012-10-23 14:33                                           ` Richard Biener
2012-10-23 16:25                                             ` Kenneth Zadeck
2012-10-23 18:52                                               ` Lawrence Crowl
2012-10-23 19:27                                                 ` Kenneth Zadeck
2012-10-23 20:51                                                   ` Lawrence Crowl
2012-10-23 21:34                                                     ` Kenneth Zadeck
2012-10-24 10:10                                               ` Richard Biener
2012-10-24 17:30                                                 ` Mike Stump
2012-10-25 10:55                                                   ` Richard Biener
2012-10-25 10:59                                                     ` Kenneth Zadeck
2012-10-25 12:12                                                       ` Richard Biener
2012-10-31 11:01                                                         ` Richard Sandiford
2012-10-31 12:01                                                           ` Richard Biener
2012-10-31 12:12                                                             ` Richard Sandiford
2012-10-31 12:14                                                               ` Richard Biener
2012-10-31 12:23                                                                 ` Richard Sandiford
2012-10-31 12:50                                                                   ` Richard Biener
2012-10-31 13:50                                                                     ` Richard Sandiford
2012-10-31 13:56                                                                       ` Richard Biener
2012-10-31 14:26                                                                         ` Kenneth Zadeck
2012-10-31 19:45                                                                         ` Mike Stump
2012-10-31 15:52                                                                       ` Kenneth Zadeck
2012-10-31 14:39                                                                     ` Kenneth Zadeck
2012-10-31 19:22                                                                     ` Mike Stump
2012-10-31 13:54                                                                 ` Kenneth Zadeck
2012-10-31 14:07                                                                   ` Richard Biener
2012-10-31 14:25                                                                     ` Kenneth Zadeck
2012-10-31 14:25                                                                       ` Richard Biener
2012-10-31 14:30                                                                         ` Kenneth Zadeck
2012-11-01 22:13                                                                         ` patch to fix constant math - 8th patch - tree-vrp.c Kenneth Zadeck
2012-11-01 22:28                                                                           ` Marc Glisse
2012-11-01 22:35                                                                             ` Kenneth Zadeck
2012-11-01 22:33                                                                           ` patch to fix constant math - 4th patch - wide-int.[ch] refresh Kenneth Zadeck
2012-11-01 22:36                                                                             ` Kenneth Zadeck
2012-11-30 16:46                                                                         ` patch to fix constant math - 4th patch - the wide-int class Kenneth Zadeck
2012-11-30 17:00                                                                           ` patch to fix constant math - 5th patch - the rtl level changes Kenneth Zadeck
2012-11-30 18:13                                                                             ` patch to add storage classes to wide int Kenneth Zadeck
2012-11-30 19:05                                                                               ` Kenneth Zadeck
2012-12-01  9:28                                                                               ` Richard Sandiford
2012-12-01 13:43                                                                                 ` Kenneth Zadeck
2013-02-27  1:59                                                                         ` patch to fix constant math - 4th patch - the wide-int class - patch ping for the next stage 1 Kenneth Zadeck
2013-03-27 14:54                                                                           ` Richard Biener
2013-04-04  8:08                                                                             ` Kenneth Zadeck
2013-04-02 15:40                                                                           ` Richard Biener
2013-04-02 19:23                                                                             ` Kenneth Zadeck
2013-04-03 10:44                                                                               ` Richard Biener
2013-04-03 13:36                                                                                 ` Kenneth Zadeck
2013-04-03 14:46                                                                                   ` Richard Biener
2013-04-03 19:18                                                                                     ` Kenneth Zadeck
2013-04-04 11:45                                                                                       ` Richard Biener
2013-04-08  5:28                                                                                         ` Comments on the suggestion to use infinite precision math for wide int Kenneth Zadeck
2013-04-08 10:32                                                                                           ` Florian Weimer
2013-04-08 13:58                                                                                             ` Kenneth Zadeck
2013-04-08 14:00                                                                                               ` Robert Dewar
2013-04-08 14:12                                                                                                 ` Kenneth Zadeck
2013-04-08 14:41                                                                                                   ` Robert Dewar
2013-04-08 15:10                                                                                                     ` Kenneth Zadeck
2013-04-08 17:18                                                                                                       ` Robert Dewar
2013-04-08 17:22                                                                                                         ` Kenneth Zadeck
2013-04-08 19:14                                                                                                           ` Robert Dewar
2013-04-08 23:48                                                                                                             ` Lawrence Crowl
2013-04-09  1:22                                                                                                               ` Robert Dewar
2013-04-09  1:56                                                                                                                 ` Kenneth Zadeck
2013-04-09  2:10                                                                                                                   ` Robert Dewar
2013-04-09  7:06                                                                                                                     ` Mike Stump
2013-04-09  8:20                                                                                                                       ` Robert Dewar
2013-04-09  8:22                                                                                                                         ` Kenneth Zadeck
2013-04-09  8:24                                                                                                                           ` Robert Dewar
2013-04-09 12:42                                                                                                                             ` Florian Weimer
2013-04-09 15:06                                                                                                                               ` Robert Dewar
2013-04-09 16:16                                                                                                                                 ` Florian Weimer
2013-04-08 13:12                                                                                           ` Richard Biener
2013-04-08 13:32                                                                                             ` Kenneth Zadeck
2013-04-08 13:44                                                                                               ` Robert Dewar
2013-04-08 14:26                                                                                                 ` Kenneth Zadeck
2013-04-08 14:35                                                                                                   ` Robert Dewar
2013-04-08 19:06                                                                                               ` Richard Biener
2013-04-08 22:34                                                                                               ` Lawrence Crowl
2013-04-09  9:47                                                                                                 ` Richard Biener
     [not found]                                                                                                   ` <CAGqM8fZ7NxiMnC6PTA8v6w_E6ZJ5HbjhJXzh-HAOJqaSx+7rnw@mail.gmail.com>
2013-04-10  9:44                                                                                                     ` Richard Biener
2013-04-10 17:43                                                                                                       ` Mike Stump
2013-04-10 17:53                                                                                                         ` Kenneth Zadeck
2013-04-08 23:46                                                                                             ` Lawrence Crowl
2013-04-22 21:39                                                                                         ` patch to fix constant math - 4th patch - the wide-int class - patch ping for the next stage 1 Richard Sandiford
2013-04-23  0:35                                                                                           ` Richard Biener
2013-04-23  6:47                                                                                             ` Richard Sandiford
2013-04-05 15:05                                                                             ` Kenneth Zadeck
2013-04-08 13:06                                                                               ` Richard Biener
2013-04-17  0:49                                                                                 ` Kenneth Zadeck
2013-04-17  3:41                                                                                   ` patch to fix constant math -5th patch, rtl Kenneth Zadeck
2013-04-24 13:25                                                                                     ` Richard Biener
2013-04-24 13:37                                                                                       ` Richard Sandiford
2013-04-24 14:18                                                                                         ` Richard Biener
2013-04-24 14:34                                                                                           ` Richard Sandiford
2013-04-24 14:37                                                                                             ` Richard Biener
2013-04-24 14:53                                                                                               ` Richard Sandiford
2013-04-24 15:07                                                                                                 ` Richard Biener
2013-04-24 15:13                                                                                                   ` Kenneth Zadeck
2013-04-24 15:45                                                                                                   ` Richard Sandiford
2013-04-24 16:51                                                                                                     ` Richard Biener
2013-04-24 18:24                                                                                                       ` Richard Sandiford
2013-05-03 11:28                                                                                                         ` Richard Biener
2013-05-03 12:38                                                                                                           ` Richard Sandiford
2013-05-03 12:53                                                                                                             ` Richard Biener
2013-05-03 13:50                                                                                                               ` Richard Sandiford [this message]
2013-05-03 14:27                                                                                                               ` Kenneth Zadeck
2013-04-25  8:38                                                                                                       ` Kenneth Zadeck
2013-05-03 11:34                                                                                                         ` Richard Biener
2013-05-03 11:50                                                                                                           ` Kenneth Zadeck
2013-05-03 12:12                                                                                                             ` Richard Biener
2013-05-03 12:31                                                                                                               ` Kenneth Zadeck
2013-05-03 12:40                                                                                                                 ` Richard Biener
2013-05-03 14:09                                                                                                                   ` Kenneth Zadeck
2013-05-03 12:48                                                                                                                 ` Richard Sandiford
2013-05-03 13:06                                                                                                                   ` Richard Biener
2013-05-03 13:23                                                                                                                     ` Richard Sandiford
2013-05-03 15:32                                                                                                                       ` Kenneth Zadeck
2013-04-24 14:57                                                                                           ` Kenneth Zadeck
2013-04-24 15:49                                                                                             ` Richard Biener
2013-04-24 17:11                                                                                               ` Richard Sandiford
2013-05-03 11:19                                                                                                 ` Richard Biener
2013-05-03 12:46                                                                                                   ` Kenneth Zadeck
2013-05-03 13:02                                                                                                     ` Richard Biener
2013-05-03 14:34                                                                                                       ` Kenneth Zadeck
2013-05-02 17:22                                                                                       ` Kenneth Zadeck
2013-04-17  7:34                                                                                   ` patch to fix constant math - builtins.c - the first of the tree level patches for wide-int Kenneth Zadeck
2013-05-02 17:53                                                                                     ` Kenneth Zadeck
2013-04-17 15:01                                                                                   ` patch to fix constant math - 4th patch - the wide-int class - patch ping for the next stage 1 Kenneth Zadeck
2013-04-19 15:35                                                                                   ` Richard Biener
2013-04-22  7:15                                                                                     ` Kenneth Zadeck
2013-04-22 15:21                                                                                       ` Richard Biener
2013-04-23  8:11                                                                                         ` Kenneth Zadeck
2013-04-22 18:53                                                                                     ` Kenneth Zadeck
2013-04-22 19:17                                                                                       ` richard, i accidently pushed send rather than save, the previous email was not finished, just ignore it Kenneth Zadeck
2013-05-02 17:21                                                                                     ` patch to fix constant math - 4th patch - the wide-int class - patch ping for the next stage 1 Kenneth Zadeck
2012-10-31 20:07                                                                     ` patch to fix constant math - 4th patch - the wide-int class Mike Stump
2012-10-23 18:10                                             ` Lawrence Crowl
2012-10-09 18:51                                         ` patch to fix constant math - patch 5 - the rest of the rtl stuff Kenneth Zadeck
2012-10-19 16:52                                           ` Richard Sandiford
2012-11-09 13:22                                         ` patch to fix constant math - third small patch Kenneth Zadeck
2012-10-08  9:07                                   ` patch to fix constant math - second " Richard Guenther
2012-11-08 18:14                                     ` Kenneth Zadeck
2012-11-26 15:31                                       ` Richard Biener
2013-02-27  0:28                                   ` patch to fix constant math - second small patch -patch ping for next stage 1 Kenneth Zadeck
2013-03-27 14:18                                     ` Richard Biener
2013-03-27 14:23                                       ` Kenneth Zadeck
2013-03-27 15:07                                         ` Richard Biener
2013-03-28 14:47                                           ` Kenneth Zadeck
2012-10-06  0:14                                 ` patch to fix constant math - first small patch Joseph S. Myers
2012-10-08 19:25                                   ` Kenneth Zadeck
2012-11-08 17:37                                   ` Kenneth Zadeck
2013-02-27  0:23                                   ` patch to fix constant math - first small patch - patch ping for the next stage 1 Kenneth Zadeck
2013-03-27 14:13                                     ` Richard Biener
2013-03-28 15:06                                       ` Kenneth Zadeck
2013-03-31 17:51                                       ` Kenneth Zadeck
2013-04-02  9:45                                         ` Richard Biener
2013-04-02 14:34                                           ` Kenneth Zadeck
2013-04-02 15:29                                             ` Richard Biener
2013-04-02 22:43                                               ` Kenneth Zadeck
2013-04-03 10:48                                                 ` Richard Biener
2013-04-03 12:21                                                   ` Kenneth Zadeck
2013-04-03 13:38                                                     ` Richard Biener
2013-04-04  3:13                                                       ` Kenneth Zadeck
2012-10-07 12:47                             ` patch to fix constant math Richard Guenther
2012-10-07 13:11                               ` Kenneth Zadeck
2012-10-07 13:19                                 ` Richard Guenther
2012-10-07 14:58                                   ` Kenneth Zadeck
2012-10-08  9:27                                     ` Richard Guenther
2012-10-08 15:01                                       ` Nathan Froyd
2012-10-08 15:11                                         ` Robert Dewar
2012-10-08 19:55                                           ` Richard Sandiford
2012-10-09  7:09                                             ` Richard Guenther
2012-10-08 16:18                                         ` Richard Guenther
2012-10-05 13:11                     ` Kenneth Zadeck
2012-10-04 15:39   ` patch to fix Kenneth Zadeck

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=878v3wi355.fsf@sandifor-thinkpad.stglab.manchester.uk.ibm.com \
    --to=rdsandiford@googlemail.com \
    --cc=crowl@google.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=iant@google.com \
    --cc=mikestump@comcast.net \
    --cc=richard.guenther@gmail.com \
    --cc=zadeck@naturalbridge.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).