Hi,

The pattern *vector_unordered<mode> performs a split that's intended to
match the nor<mode>3 pattern.  However, it doesn't use the proper
canonical form, so the resulting insn isn't recognized.  This patch
changes the split 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_unordered<mode>): Change split
        to use canonical form for nor<mode>3.


Index: gcc/config/rs6000/vector.md
===================================================================
--- gcc/config/rs6000/vector.md (revision 208062)
+++ gcc/config/rs6000/vector.md (working copy)
@@ -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