Mercurial > hg > CbC > CbC_gcc
diff gcc/config/pdp11/constraints.md @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/config/pdp11/constraints.md Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/config/pdp11/constraints.md Thu Oct 25 07:37:49 2018 +0900 @@ -1,5 +1,5 @@ ;;- Constraint definitions for the pdp11 for GNU C compiler -;; Copyright (C) 2010-2017 Free Software Foundation, Inc. +;; Copyright (C) 2010-2018 Free Software Foundation, Inc. ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). ;; This file is part of GCC. @@ -18,11 +18,14 @@ ;; along with GCC; see the file COPYING3. If not see ;; <http://www.gnu.org/licenses/>. +(define_register_constraint "a" "LOAD_FPU_REGS" + "FPU register that can be directly loaded from memory") + (define_register_constraint "f" "FPU_REGS" "Any FPU register") -(define_register_constraint "a" "LOAD_FPU_REGS" - "FPU register that can be directly loaded from memory") +(define_register_constraint "h" "NO_LOAD_FPU_REGS" + "FPU register that cannot be directly loaded from memory") (define_register_constraint "d" "MUL_REGS" "General register that can be used for 16-bit multiply (odd numbered)") @@ -60,22 +63,28 @@ (define_constraint "O" "Integer constant for which several individual shifts are better than one big one" (and (match_code "const_int") - (match_test "abs (ival) > 1 && abs (ival) <= 4"))) + (match_test "pdp11_small_shift (ival)"))) (define_constraint "G" "Defines a real zero constant." (and (match_code "const_double") (match_test "op == CONST0_RTX (GET_MODE (op))"))) -(define_constraint "Q" +(define_memory_constraint "Q" "Memory reference that requires an additional word after the opcode" (and (match_code "mem") (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0)) && !simple_memory_operand (op, GET_MODE (op))"))) -(define_constraint "R" +(define_memory_constraint "R" "Memory reference that is encoded within the opcode" (and (match_code "mem") (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0)) && simple_memory_operand (op, GET_MODE (op))"))) +(define_memory_constraint "D" + "Memory reference that is encoded within the opcode, and not push or pop" + (and (match_code "mem") + (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0)) + && no_side_effect_operand (op, GET_MODE (op))"))) +