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);
> 
> 

Reply via email to