diff options
Diffstat (limited to 'gcc/config/i386/predicates.md')
-rw-r--r-- | gcc/config/i386/predicates.md | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index 4ccbe11..770e2f0 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -1844,6 +1844,19 @@ return true; }) +;; Return true if OP is a const vector with duplicate value. +(define_predicate "const_vector_duplicate_operand" + (match_code "const_vector") +{ + rtx elt = XVECEXP (op, 0, 0); + int i, nelt = XVECLEN (op, 0); + + for (i = 1; i < nelt; ++i) + if (!rtx_equal_p (elt, XVECEXP (op, 0, i))) + return false; + return true; +}) + ;; Return true if OP is a parallel for a vbroadcast permute. (define_predicate "avx_vbroadcast_operand" (and (match_code "parallel") |