public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Henderson <rth@redhat.com>
To: Bernd Schmidt <bernds@codesourcery.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [2/11] Neater tests for signbits
Date: Tue, 05 Jul 2011 19:10:00 -0000	[thread overview]
Message-ID: <4E136149.2000802@redhat.com> (raw)
In-Reply-To: <4E0E03FF.2090405@codesourcery.com>

On 07/01/2011 10:29 AM, Bernd Schmidt wrote:
> 	* cse.c (find_comparison_args): Use val_mode_signbit_set_p.
> 	* simplify-rtx.c (mode_signbit_p): Use GET_MODE_PRECISION.
> 	(val_mode_signbit_p, val_mode_signbit_set_p): New functions.
> 	(simplify_const_unary_operation, simplify_binary_operation_1,
> 	simplify_const_binary_operation,
> 	simplify_const_relational_operation): Use them.  Use
> 	GET_MODE_MASK for masking and sign-extensions.
> 	* combine.c (set_nonzero_bits_and_sign_copies, simplify_set,
> 	combine_simplify_rtx, force_to_mode, reg_nonzero_bits_for_combine,
> 	simplify_shift_const_1, simplify_comparison): Likewise.
> 	* expr.c (convert_modes): Likewise.
> 	* rtlanal.c (nonzero_bits1, canonicalize_condition): Likewise.
> 	* expmed.c (emit_cstore, emit_store_flag_1, emit_store_flag):
> 	Likewise.
> 	* rtl.h (val_mode_signbit_p, val_mode_signbit_set_p): Declare.

Ok, but,

>  	  /* We must sign or zero-extend in this case.  Start by
>  	     zero-extending, then sign extend if we need to.  */
> -	  val &= ((HOST_WIDE_INT) 1 << width) - 1;
> +	  val &= GET_MODE_MASK (oldmode);
>  	  if (! unsignedp
> -	      && (val & ((HOST_WIDE_INT) 1 << (width - 1))))
> -	    val |= (HOST_WIDE_INT) (-1) << width;
> +	      && val_signbit_known_set_p (oldmode, val))
> +	    val |= ~GET_MODE_MASK (oldmode);
>  
>  	  return gen_int_mode (val, mode);

Shouldn't that sign-extension already be done by gen_int_mode?

There are at least 4 more copies of this idiom in your patch.
As a follow-up could you pull that out into a new function?

Perhaps signextend_int_mode, akin to gen_int_mode?


r~

  reply	other threads:[~2011-07-05 19:09 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-01 17:26 [0/11] GET_MODE_PRECISION vs GET_MODE_BITSIZE Bernd Schmidt
2011-07-01 17:27 ` [1/11] Use targetm.shift_truncation_mask more consistently Bernd Schmidt
2011-07-04 15:29   ` Richard Henderson
2011-07-06 18:13   ` Richard Sandiford
2011-07-07  0:03     ` Bernd Schmidt
2011-07-07  8:07       ` Richard Sandiford
2011-07-01 17:30 ` [2/11] Neater tests for signbits Bernd Schmidt
2011-07-05 19:10   ` Richard Henderson [this message]
2011-07-05 21:35     ` Bernd Schmidt
2011-07-01 17:30 ` [3/11] Remove some dead code Bernd Schmidt
2011-07-05 19:12   ` Richard Henderson
2011-07-01 17:32 ` [4/11] Use precisions for TRULY_NOOP_TRUNCATION Bernd Schmidt
2011-07-05 19:16   ` Richard Henderson
2011-07-01 17:33 ` [5/11] Neater tests for paradoxical subregs Bernd Schmidt
2011-07-05 19:19   ` Richard Henderson
2011-07-01 17:34 ` [6/11] Tests for HOST_WIDE_INT representability Bernd Schmidt
2011-07-05 19:19   ` Richard Henderson
2011-07-01 17:36 ` [7/11] rtl optimizer changes Bernd Schmidt
2011-07-06 18:25   ` Richard Henderson
2011-07-01 17:37 ` [8/11] Expander changes Bernd Schmidt
2011-07-06 18:26   ` Richard Henderson
2011-07-01 17:38 ` [9/11] Fix units mismatch in comparison Bernd Schmidt
2011-07-06 18:27   ` Richard Henderson
2011-07-01 17:41 ` [10/11] Expander fixes for 40-bit integers Bernd Schmidt
2011-07-06 18:37   ` Richard Henderson
2011-07-01 17:42 ` [11/11] Fix get_mode_bounds Bernd Schmidt
2011-07-06 18:38   ` Richard Henderson
2011-07-06 23:16     ` Bernd Schmidt
2011-07-06 23:39       ` Richard Henderson
2011-07-11 10:38     ` Bernd Schmidt

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=4E136149.2000802@redhat.com \
    --to=rth@redhat.com \
    --cc=bernds@codesourcery.com \
    --cc=gcc-patches@gcc.gnu.org \
    /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).