comparison gcc/config/rs6000/constraints.md @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents a06113de4d67
children b7f97abdc517
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
15 ;; 15 ;;
16 ;; You should have received a copy of the GNU General Public License 16 ;; You should have received a copy of the GNU General Public License
17 ;; along with GCC; see the file COPYING3. If not see 17 ;; along with GCC; see the file COPYING3. If not see
18 ;; <http://www.gnu.org/licenses/>. 18 ;; <http://www.gnu.org/licenses/>.
19 19
20 ;; Available constraint letters: "e", "k", "u", "A", "B", "C", "D"
21
20 ;; Register constraints 22 ;; Register constraints
21 23
22 (define_register_constraint "f" "TARGET_HARD_FLOAT && TARGET_FPRS 24 (define_register_constraint "f" "rs6000_constraints[RS6000_CONSTRAINT_f]"
23 ? FLOAT_REGS : NO_REGS" 25 "@internal")
26
27 (define_register_constraint "d" "rs6000_constraints[RS6000_CONSTRAINT_d]"
24 "@internal") 28 "@internal")
25 29
26 (define_register_constraint "b" "BASE_REGS" 30 (define_register_constraint "b" "BASE_REGS"
27 "@internal") 31 "@internal")
28 32
47 (define_register_constraint "y" "CR_REGS" 51 (define_register_constraint "y" "CR_REGS"
48 "@internal") 52 "@internal")
49 53
50 (define_register_constraint "z" "XER_REGS" 54 (define_register_constraint "z" "XER_REGS"
51 "@internal") 55 "@internal")
56
57 ;; Use w as a prefix to add VSX modes
58 ;; vector double (V2DF)
59 (define_register_constraint "wd" "rs6000_constraints[RS6000_CONSTRAINT_wd]"
60 "@internal")
61
62 ;; vector float (V4SF)
63 (define_register_constraint "wf" "rs6000_constraints[RS6000_CONSTRAINT_wf]"
64 "@internal")
65
66 ;; scalar double (DF)
67 (define_register_constraint "ws" "rs6000_constraints[RS6000_CONSTRAINT_ws]"
68 "@internal")
69
70 ;; any VSX register
71 (define_register_constraint "wa" "rs6000_constraints[RS6000_CONSTRAINT_wa]"
72 "@internal")
73
74 ;; Altivec style load/store that ignores the bottom bits of the address
75 (define_memory_constraint "wZ"
76 "Indexed or indirect memory operand, ignoring the bottom 4 bits"
77 (match_operand 0 "altivec_indexed_or_indirect_operand"))
52 78
53 ;; Integer constraints 79 ;; Integer constraints
54 80
55 (define_constraint "I" 81 (define_constraint "I"
56 "A signed 16-bit constant" 82 "A signed 16-bit constant"
107 (and (match_code "const_double") 133 (and (match_code "const_double")
108 (match_test "num_insns_constant (op, mode) == 3"))) 134 (match_test "num_insns_constant (op, mode) == 3")))
109 135
110 ;; Memory constraints 136 ;; Memory constraints
111 137
138 (define_memory_constraint "es"
139 "A ``stable'' memory operand; that is, one which does not include any
140 automodification of the base register. Unlike @samp{m}, this constraint
141 can be used in @code{asm} statements that might access the operand
142 several times, or that might not access it at all."
143 (and (match_code "mem")
144 (match_test "GET_RTX_CLASS (GET_CODE (XEXP (op, 0))) != RTX_AUTOINC")))
145
112 (define_memory_constraint "Q" 146 (define_memory_constraint "Q"
113 "Memory operand that is just an offset from a reg" 147 "Memory operand that is an offset from a register (it is usually better
148 to use @samp{m} or @samp{es} in @code{asm} statements)"
114 (and (match_code "mem") 149 (and (match_code "mem")
115 (match_test "GET_CODE (XEXP (op, 0)) == REG"))) 150 (match_test "GET_CODE (XEXP (op, 0)) == REG")))
116 151
117 (define_memory_constraint "Y" 152 (define_memory_constraint "Y"
118 "Indexed or word-aligned displacement memory operand" 153 "Indexed or word-aligned displacement memory operand"
119 (match_operand 0 "word_offset_memref_operand")) 154 (match_operand 0 "word_offset_memref_operand"))
120 155
121 (define_memory_constraint "Z" 156 (define_memory_constraint "Z"
122 "Indexed or indirect memory operand" 157 "Memory operand that is an indexed or indirect from a register (it is
158 usually better to use @samp{m} or @samp{es} in @code{asm} statements)"
123 (match_operand 0 "indexed_or_indirect_operand")) 159 (match_operand 0 "indexed_or_indirect_operand"))
124 160
125 ;; Address constraints 161 ;; Address constraints
126 162
127 (define_address_constraint "a" 163 (define_address_constraint "a"
157 (not (match_operand 0 "mask64_operand")))) 193 (not (match_operand 0 "mask64_operand"))))
158 194
159 (define_constraint "W" 195 (define_constraint "W"
160 "vector constant that does not require memory" 196 "vector constant that does not require memory"
161 (match_operand 0 "easy_vector_constant")) 197 (match_operand 0 "easy_vector_constant"))
198
199 (define_constraint "j"
200 "Zero vector constant"
201 (match_test "(op == const0_rtx || op == CONST0_RTX (GET_MODE (op)))"))