diff options
Diffstat (limited to 'gcc/config/m68k/predicates.md')
-rw-r--r-- | gcc/config/m68k/predicates.md | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md index b43e55b..417989f 100644 --- a/gcc/config/m68k/predicates.md +++ b/gcc/config/m68k/predicates.md @@ -124,6 +124,11 @@ (and (match_code "eq,ne,gtu,ltu,geu,leu,gt,lt,ge,le") (match_test "valid_dbcc_comparison_p_2 (op, mode)"))) +(define_predicate "m68k_cstore_comparison_operator" + (if_then_else (match_test "TARGET_68881") + (match_operand 0 "comparison_operator") + (match_operand 0 "ordered_comparison_operator"))) + ;; Check for sign_extend or zero_extend. Used for bit-count operands. (define_predicate "extend_operator" @@ -193,6 +198,24 @@ (and (match_code "mem") (match_test "GET_CODE (XEXP (op, 0)) == PRE_DEC"))) +;; A zero constant. +(define_predicate "const0_operand" + (and (match_code "const_int,const_double,const_vector") + (match_test "op == CONST0_RTX (mode)"))) + +;; A one constant (operand for conditional_trap). +(define_predicate "const1_operand" + (and (match_code "const_int") + (match_test "op == const1_rtx"))) + +;; A valid operand for a HImode or QImode conditional operation. +;; ColdFire has tst patterns, but not cmp patterns. +(define_predicate "m68k_subword_comparison_operand" + (if_then_else (match_test "TARGET_COLDFIRE") + (and (match_code "const_int") + (match_test "op == const0_rtx")) + (match_operand 0 "general_src_operand"))) + ;; An operand for movsi_const0 pattern. (define_predicate "movsi_const0_operand" (and (match_operand 0 "nonimmediate_operand") |