diff options
Diffstat (limited to 'gcc/config/rs6000/predicates.md')
-rw-r--r-- | gcc/config/rs6000/predicates.md | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index a2daf87..936f932 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -132,6 +132,17 @@ (ior (match_code "const_int") (match_operand 0 "gpc_reg_operand"))) +;; Return 1 if op is an integer meeting one of 'I','J','O','L'(TARGET_32BIT) +;; or 'J'(TARGET_64BIT) constraints or if it is a non-special register. +(define_predicate "scc_operand" + (if_then_else (match_code "const_int") + (match_test "CONST_OK_FOR_LETTER_P (INTVAL (op), 'I') + || CONST_OK_FOR_LETTER_P (INTVAL (op), 'K') + || CONST_OK_FOR_LETTER_P (INTVAL (op), 'O') + || CONST_OK_FOR_LETTER_P (INTVAL (op), + (TARGET_32BIT ? 'L' : 'J'))") + (match_operand 0 "gpc_reg_operand"))) + ;; Return 1 if op is a 32-bit signed constant integer valid for arithmetic ;; or non-special register. (define_predicate "reg_or_arith_cint_operand" |