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