On Fri, Nov 16, 2018 at 01:33:58PM -0600, Peter Bergner wrote:
> On 11/16/18 11:06 AM, Segher Boessenkool wrote:
> > "W" is easy_vector_constant, which requires const_vector always; is that
> > okay here?
> 
> Well, "wM" calls all_ones_constant which also requires const_vector, so

Does it?

(define_predicate "all_ones_constant"
  (and (match_code "const_int,const_double,const_wide_int,const_vector")
       (match_test "op == CONSTM1_RTX (mode) && !FLOAT_MODE_P (mode)")))

And "j" is defined as

(define_constraint "j"
  "Zero vector constant"
  (match_test "op == const0_rtx || op == CONST0_RTX (mode)"))

> if it isn't correct now, then it wasn't correct before my patch either.
> Since I'm using the (new) mode iterator <nW> and the "W" is only used
> for the vector modes, I think we're ok here, aren't we?

That's a good point yes.  Okay.

> >> I'll note I didn't change the vsx_mov<mode>_32bit pattern, since TImode
> >> isn't supported with -m32.  However, if you want, I could remove the
> >> redundant "*r" <- "jwM" alternative there too?
> > 
> > Yeah, please keep the patterns in synch.
> 
> Ok, I'll do the same thing and retest.

Could you also check (manually) that the compiler still handles things as
it should here?  Okay for trunk if it does.  Thanks!


Segher

Reply via email to