Hi,
  This patch add const_vector into any_operand predicate. From my
understanding, any_operand should include all kinds of operands.
The const_vector should be included. As emit_move_insn doesn't check
the predicate, the const_vector is actually supported by vector mode
move expand. So it should be added into any_operand in case other gen
function (for instance, maybe_gen_insn) checks the predicate.

  Bootstrapped and tested on x86 and powerpc64-linux BE and LE with no
regressions. Is it OK for trunk?

Thanks
Gui Haochen

ChangeLog
rs6000: Add const_vector into any_operand predicate

gcc/
        * config/rs6000/predicates.md (any_operand): Add const_vector.

patch.diff
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index d23ce9a77a3..12600368c43 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -19,7 +19,7 @@

 ;; Return 1 for anything except PARALLEL.
 (define_predicate "any_operand"
-  (match_code 
"const_int,const_double,const_wide_int,const,symbol_ref,label_ref,subreg,reg,mem"))
+  (match_code 
"const_int,const_double,const_wide_int,const,symbol_ref,label_ref,subreg,reg,mem,const_vector"))

 ;; Return 1 for any PARALLEL.
 (define_predicate "any_parallel_operand"

Reply via email to