Whoops, just noticed the obvious error in the patch. Must have crossed my eyes and seen a "not" that wasn't there. Will re-fix shortly.
Bill On Mon, 2014-02-24 at 18:41 -0600, Bill Schmidt wrote: > Hi, > > The patterns *vector_ordered<mode> and *vector_unordered<mode> perform a > split that's intended to match the nor<mode>3 pattern. However, they > don't use the proper canonical form, so the resulting insn isn't > recognized. This patch changes the splits to use the canonical form. > > Bootstrapped and tested on powerpc64{,le}-unknown-linux-gnu with no > regressions. Is this ok for trunk? > > Thanks, > Bill > > > 2014-02-24 Bill Schmidt <wschm...@linux.vnet.ibm.com> > > * config/rs6000/vector.md (*vector_ordered<mode>): Change split to > use canonical form for nor<mode>3. > (*vector_unordered<mode>): Likewise. > > > Index: gcc/config/rs6000/vector.md > =================================================================== > --- gcc/config/rs6000/vector.md (revision 208062) > +++ gcc/config/rs6000/vector.md (working copy) > @@ -586,8 +586,8 @@ > (ge:VEC_F (match_dup 2) > (match_dup 1))) > (set (match_dup 0) > - (ior:VEC_F (match_dup 3) > - (match_dup 4)))] > + (and:VEC_F (not:VEC_F (match_dup 3)) > + (not:VEC_F (match_dup 4))))] > " > { > operands[3] = gen_reg_rtx (<MODE>mode); > @@ -608,8 +608,8 @@ > (ge:VEC_F (match_dup 2) > (match_dup 1))) > (set (match_dup 0) > - (not:VEC_F (ior:VEC_F (match_dup 3) > - (match_dup 4))))] > + (and:VEC_F (not:VEC_F (match_dup 3)) > + (not:VEC_F (match_dup 4))))] > " > { > operands[3] = gen_reg_rtx (<MODE>mode); > >