aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm/predicates.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/arm/predicates.md')
-rw-r--r--gcc/config/arm/predicates.md12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
index f493d82..f301df2 100644
--- a/gcc/config/arm/predicates.md
+++ b/gcc/config/arm/predicates.md
@@ -270,6 +270,18 @@
(define_special_predicate "lt_ge_comparison_operator"
(match_code "lt,ge"))
+;; The vsel instruction only accepts the ARM condition codes listed below.
+(define_special_predicate "arm_vsel_comparison_operator"
+ (and (match_operand 0 "expandable_comparison_operator")
+ (match_test "maybe_get_arm_condition_code (op) == ARM_GE
+ || maybe_get_arm_condition_code (op) == ARM_GT
+ || maybe_get_arm_condition_code (op) == ARM_EQ
+ || maybe_get_arm_condition_code (op) == ARM_VS
+ || maybe_get_arm_condition_code (op) == ARM_LT
+ || maybe_get_arm_condition_code (op) == ARM_LE
+ || maybe_get_arm_condition_code (op) == ARM_NE
+ || maybe_get_arm_condition_code (op) == ARM_VC")))
+
(define_special_predicate "noov_comparison_operator"
(match_code "lt,ge,eq,ne"))