On Tue, Mar 15, 2016 at 09:50:44AM -0500, Segher Boessenkool wrote:
> On Tue, Mar 15, 2016 at 02:18:33PM +0100, Jakub Jelinek wrote:
> > So do you prefer this instead?
> >
> > 2016-03-15 Jakub Jelinek
> >
> > PR rtl-optimization/70222
> > * combine.c (simplify_shift_const_1): For A >>
On Tue, Mar 15, 2016 at 02:18:33PM +0100, Jakub Jelinek wrote:
> So do you prefer this instead?
>
> 2016-03-15 Jakub Jelinek
>
> PR rtl-optimization/70222
> * combine.c (simplify_shift_const_1): For A >> B >> C LSHIFTRT
> optimization if mode is different from result_mode, qu
On Tue, Mar 15, 2016 at 01:08:50PM +0100, Bernd Schmidt wrote:
> This looks really specialized, and I'd be worrying about whether it really
> is the right condition. Where exactly was the constant shifted by 31 and
> count set to 0? Must be here, right?
Yes, it is that spot.
>
>/* If we have
On 03/15/2016 12:14 PM, Jakub Jelinek wrote:
- if (orig_code == LSHIFTRT && result_mode != shift_mode)
+ turn off all the bits that the shift would have turned off.
+ Similarly do this if we've optimized varop so that we don't perform
+ any shift. */
+ if (orig_code == LSHIFTRT
+
Hi!
As mentioned in the PR, if we have
simplify_shift_const_1 (code=LSHIFTRT, result_mode=SImode,
varop=0x7184de70, orig_count=31)
where varop is:
(subreg:SI (lshiftrt:DI (const_int -1 [0x])
(subreg:QI (reg:SI 100) 0)) 0),
we optimize the inner shift (mode == DImode) i