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