comparison gcc/config/pdp11/constraints.md @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 ;;- Constraint definitions for the pdp11 for GNU C compiler 1 ;;- Constraint definitions for the pdp11 for GNU C compiler
2 ;; Copyright (C) 2010-2018 Free Software Foundation, Inc. 2 ;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
3 ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at). 3 ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
4 4
5 ;; This file is part of GCC. 5 ;; This file is part of GCC.
6 6
7 ;; GCC is free software; you can redistribute it and/or modify 7 ;; GCC is free software; you can redistribute it and/or modify
86 "Memory reference that is encoded within the opcode, and not push or pop" 86 "Memory reference that is encoded within the opcode, and not push or pop"
87 (and (match_code "mem") 87 (and (match_code "mem")
88 (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0)) 88 (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0))
89 && no_side_effect_operand (op, GET_MODE (op))"))) 89 && no_side_effect_operand (op, GET_MODE (op))")))
90 90
91 ;; What follows is a set of constraints used to prevent the generation
92 ;; of insns that have a register as source, and an auto-increment or
93 ;; auto-decrement memory reference as the destination where the register
94 ;; is the same as the source. On the PDP11, such instructions are not
95 ;; implemented consistently across the models and often do something
96 ;; different from what the RTL intends.
97 (define_register_constraint "Z0" "NOTR0_REG" "Register other than 0")
98 (define_register_constraint "Z1" "NOTR1_REG" "Register other than 1")
99 (define_register_constraint "Z2" "NOTR2_REG" "Register other than 2")
100 (define_register_constraint "Z3" "NOTR3_REG" "Register other than 3")
101 (define_register_constraint "Z4" "NOTR4_REG" "Register other than 4")
102 (define_register_constraint "Z5" "NOTR5_REG" "Register other than 5")
103 (define_register_constraint "Z6" "NOTSP_REG"
104 "Register other than stack pointer (register 6)")
105 (define_memory_constraint "Za" "R0 push/pop"
106 (match_test "pushpop_regeq (op, 0)"))
107 (define_memory_constraint "Zb" "R1 push/pop"
108 (match_test "pushpop_regeq (op, 1)"))
109 (define_memory_constraint "Zc" "R2 push/pop"
110 (match_test "pushpop_regeq (op, 2)"))
111 (define_memory_constraint "Zd" "R3 push/pop"
112 (match_test "pushpop_regeq (op, 3)"))
113 (define_memory_constraint "Ze" "R4 push/pop"
114 (match_test "pushpop_regeq (op, 4)"))
115 (define_memory_constraint "Zf" "R5 push/pop"
116 (match_test "pushpop_regeq (op, 5)"))
117 (define_memory_constraint "Zg" "SP push/pop"
118 (match_test "pushpop_regeq (op, 6)"))
119