diff options
Diffstat (limited to 'gcc/config/arc/predicates.md')
-rw-r--r-- | gcc/config/arc/predicates.md | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/config/arc/predicates.md b/gcc/config/arc/predicates.md index fba878bb452..52ac2ac5517 100644 --- a/gcc/config/arc/predicates.md +++ b/gcc/config/arc/predicates.md @@ -783,4 +783,15 @@ (match_code "reg" "0"))) (define_predicate "any_mem_operand" - (match_code "mem"))
\ No newline at end of file + (match_code "mem")) + +; Special predicate to match even-odd double register pair +(define_predicate "even_register_operand" + (match_code "reg") + { + if ((GET_MODE (op) != mode) && (mode != VOIDmode)) + return 0; + + return (REG_P (op) && ((REGNO (op) >= FIRST_PSEUDO_REGISTER) + || ((REGNO (op) & 1) == 0))); + }) |