Mercurial > hg > CbC > CbC_gcc
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 |