[PR,target/80083,7,regression] fix power9 vsx-small-integer issue caused by wrong constraints

Submitted by Aaron Sawdey on March 20, 2017, 6:05 p.m.

Details

Message ID 1490033115.5885.8.camel@linux.vnet.ibm.com
State New
Headers show

Commit Message

Aaron Sawdey March 20, 2017, 6:05 p.m.
On Mon, 2017-03-20 at 11:11 -0500, Aaron Sawdey wrote:
> Test libgomp doacross2.f90 failed only at -O1 because an incorrect
> constraint on movsi_internal1 (for vspltisw) led to confusion between
> vsx and float registers (fix credit to Meissner). In subsequent
> discussion David Edelsohn pointed out that there was an additional
> error on the constraint for xxspltib -1 that is also fixed now.
> 
> Bootstrap/regtest reveals no errors on either power8 or power9. Ok
> for
> trunk?
> 
> 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
> 
> 	PR target/80083
> 	* config/rs6000/rs6000.md (*movsi_internal1): incorrect
> constraints
> 	for alternatives 14/15.
>  

Forgot the patch!

Comments

Segher Boessenkool March 20, 2017, 6:43 p.m.
On Mon, Mar 20, 2017 at 01:05:15PM -0500, Aaron Sawdey wrote:
> > 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
> > 
> > 	PR target/80083
> > 	* config/rs6000/rs6000.md (*movsi_internal1): incorrect
> > constraints
> > 	for alternatives 14/15.

A changelog line should describe what is changed, not what was wrong;
it should start with a capital; and you changed alternatives 13 and 14
(they start counting at 0).

> --- gcc/config/rs6000/rs6000.md	(revision 246224)
> +++ gcc/config/rs6000/rs6000.md	(working copy)
> @@ -6727,7 +6727,7 @@
>    [(set (match_operand:SI 0 "rs6000_nonimmediate_operand"
>  		"=r,         r,           r,           ?*wI,        ?*wH,
>  		 m,          ?Z,          ?Z,          r,           r,
> -		 r,          ?*wIwH,      ?*wJwK,      ?*wK,        ?*wJwK,
> +		 r,          ?*wIwH,      ?*wJwK,      ?*wJwK,      ?*wu,
>  		 ?*wJwK,     ?*wH,        ?*wK,        ?*wIwH,      ?r,
>  		 r,          *c*l,        *h,          *h")

The change to alt 13 is obvious enough.  Could you explain alt 14 a
bit more though?  It used to allow more than it does after this patch;
are those handled by other alternatives?


Segher
Segher Boessenkool March 20, 2017, 8:37 p.m.
On Mon, Mar 20, 2017 at 01:43:37PM -0500, Segher Boessenkool wrote:
> > --- gcc/config/rs6000/rs6000.md	(revision 246224)
> > +++ gcc/config/rs6000/rs6000.md	(working copy)
> > @@ -6727,7 +6727,7 @@
> >    [(set (match_operand:SI 0 "rs6000_nonimmediate_operand"
> >  		"=r,         r,           r,           ?*wI,        ?*wH,
> >  		 m,          ?Z,          ?Z,          r,           r,
> > -		 r,          ?*wIwH,      ?*wJwK,      ?*wK,        ?*wJwK,
> > +		 r,          ?*wIwH,      ?*wJwK,      ?*wJwK,      ?*wu,
> >  		 ?*wJwK,     ?*wH,        ?*wK,        ?*wIwH,      ?r,
> >  		 r,          *c*l,        *h,          *h")
> 
> The change to alt 13 is obvious enough.  Could you explain alt 14 a
> bit more though?  It used to allow more than it does after this patch;
> are those handled by other alternatives?

Okay, so it is handled by alt 18 (and a reload of the second operand)
in that case; thanks for looking!

The patch is okay (with the changelog fixed).  Thanks,


Segher

Patch hide | download patch | download mbox

Index: gcc/config/rs6000/rs6000.md
===================================================================
--- gcc/config/rs6000/rs6000.md	(revision 246224)
+++ gcc/config/rs6000/rs6000.md	(working copy)
@@ -6727,7 +6727,7 @@ 
   [(set (match_operand:SI 0 "rs6000_nonimmediate_operand"
 		"=r,         r,           r,           ?*wI,        ?*wH,
 		 m,          ?Z,          ?Z,          r,           r,
-		 r,          ?*wIwH,      ?*wJwK,      ?*wK,        ?*wJwK,
+		 r,          ?*wIwH,      ?*wJwK,      ?*wJwK,      ?*wu,
 		 ?*wJwK,     ?*wH,        ?*wK,        ?*wIwH,      ?r,
 		 r,          *c*l,        *h,          *h")