This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r242442 - in /trunk/gcc: ChangeLog combine.c

Author: rsandifo
Date: Tue Nov 15 17:57:53 2016
New Revision: 242442

Fix simplify_shift_const_1 handling of vector shifts

simplify_shift_const_1 handles both shifts of scalars by scalars
and shifts of vectors by scalars.  For vectors this means that
each element is shifted by the same amount.


(a) the two cases weren't always distinguished, so we'd try
        things for vectors that only made sense for scalars.

(b) a lot of the range and bitcount checks were based on the
        bitsize or precision of the full shifted operand, rather
        than the mode of each element.

Fixing (b) accidentally exposed more optimisation opportunities,
although that wasn't the point of the patch.

2016-11-15  Richard Sandiford  <>
	    Alan Hayward  <>
	    David Sherwood  <>

	* combine.c (simplify_shift_const_1): Use the number of bits
	in the inner mode to determine the range of the shift.
	When handling shifts of vectors, skip any rules that apply
	only to scalars.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]