On Fri, Jan 27, 2017 at 03:11:46PM +0000, Segher Boessenkool wrote:
> The fsel define_insn uses fpr_reg_operand for its predicates.  This
> won't work because passes can put a hard register in the operands: in
> the testcase, combine likes to forward the parameter registers to what
> then is still an smin, and then split1 uses "*s<minmax><mode>3_fpr"
> (which has gpc_reg_operand).  And then we have a GPR in the operand,
> which does not match fpr_reg_operand.
> 
> It seems to me the predicates should be gpc_reg_operand here as well.
> This patch changes that.  Mike, does this look correct?  Was there a
> reason it used fpr_reg_operand?
> 
> Bootstrapped and tested on powerpc64-linux.

I dunno, we need to look at why somebody is putting a GPR in there in the first
place.  The instruction doesn't support GPRs.  Perhaps the generator function
should do a copy before doing the call.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797

Reply via email to