Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/alpha/constraints.md @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 ;; Constraint definitions for DEC Alpha. | |
2 ;; Copyright (C) 2007 Free Software Foundation, Inc. | |
3 ;; | |
4 ;; This file is part of GCC. | |
5 ;; | |
6 ;; GCC is free software; you can redistribute it and/or modify | |
7 ;; it under the terms of the GNU General Public License as published by | |
8 ;; the Free Software Foundation; either version 3, or (at your option) | |
9 ;; any later version. | |
10 ;; | |
11 ;; GCC is distributed in the hope that it will be useful, | |
12 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 ;; GNU General Public License for more details. | |
15 ;; | |
16 ;; You should have received a copy of the GNU General Public License | |
17 ;; along with GCC; see the file COPYING3. If not see | |
18 ;; <http://www.gnu.org/licenses/>. | |
19 | |
20 ;;; Unused letters: | |
21 ;;; ABCDEF V YZ | |
22 ;;; de ghijklmnopq stu wxyz | |
23 | |
24 ;; Integer register constraints. | |
25 | |
26 (define_register_constraint "a" "R24_REG" | |
27 "General register 24, input to division routine") | |
28 | |
29 (define_register_constraint "b" "R25_REG" | |
30 "General register 24, input to division routine") | |
31 | |
32 (define_register_constraint "c" "R27_REG" | |
33 "General register 27, function call address") | |
34 | |
35 (define_register_constraint "f" "FLOAT_REGS" | |
36 "Any floating-point register") | |
37 | |
38 (define_register_constraint "v" "R0_REG" | |
39 "General register 0, function value return address") | |
40 | |
41 ;; Integer constant constraints. | |
42 (define_constraint "I" | |
43 "An unsigned 8 bit constant" | |
44 (and (match_code "const_int") | |
45 (match_test "ival >= 0 && ival <= 255"))) | |
46 | |
47 (define_constraint "J" | |
48 "The constant zero" | |
49 (and (match_code "const_int") | |
50 (match_test "ival == 0"))) | |
51 | |
52 (define_constraint "K" | |
53 "Signed 16-bit integer constant" | |
54 (and (match_code "const_int") | |
55 (match_test "ival >= -32768 && ival < 32768 "))) | |
56 | |
57 (define_constraint "L" | |
58 "A shifted signed 16-bit constant appropriate for LDAH" | |
59 (and (match_code "const_int") | |
60 (match_test "(ival & 0xffff) == 0 | |
61 && (ival >> 31 == -1 || ival >> 31 == 0)"))) | |
62 | |
63 (define_constraint "M" | |
64 "A valid operand of a ZAP insn" | |
65 (and (match_code "const_int") | |
66 (match_test "zap_mask (ival) != 0"))) | |
67 | |
68 (define_constraint "N" | |
69 "A complemented unsigned 8-bit constant" | |
70 (and (match_code "const_int") | |
71 (match_test "~ival >= 0 && ~ival <= 255"))) | |
72 | |
73 (define_constraint "O" | |
74 "A negated unsigned 8-bit constant" | |
75 (and (match_code "const_int") | |
76 (match_test "-ival >= 0 && -ival <= 255"))) | |
77 | |
78 (define_constraint "P" | |
79 "The constant 1, 2 or 3" | |
80 (and (match_code "const_int") | |
81 (match_test "ival == 1 || ival == 2 || ival == 3"))) | |
82 | |
83 (define_constraint "H" | |
84 "A valid operand of a ZAP insn, when building with 32-bit HOST_WIDE_INT" | |
85 (and (match_code "const_double") | |
86 (match_test "mode == VOIDmode && zap_mask (hval) && zap_mask (lval)"))) | |
87 | |
88 ;; Floating-point constant constraints. | |
89 (define_constraint "G" | |
90 "The floating point zero constant" | |
91 (and (match_code "const_double") | |
92 (match_test "GET_MODE_CLASS (mode) == MODE_FLOAT | |
93 && op == CONST0_RTX (mode)"))) | |
94 | |
95 ;; "Extra" constraints. | |
96 (define_constraint "Q" | |
97 "@internal A normal_memory_operand" | |
98 (match_operand 0 "normal_memory_operand")) | |
99 | |
100 (define_constraint "R" | |
101 "@internal A direct_call_operand" | |
102 (match_operand:DI 0 "direct_call_operand")) | |
103 | |
104 (define_constraint "S" | |
105 "An unsigned 6-bit constant" | |
106 (and (match_code "const_int") | |
107 (match_test "ival >= 0 && ival <= 63"))) | |
108 | |
109 (define_constraint "T" | |
110 "@internal A high-part symbol" | |
111 (match_code "high")) | |
112 | |
113 (define_constraint "U" | |
114 "@internal A UNICOSMK symbol" | |
115 (and (match_test "TARGET_ABI_UNICOSMK") | |
116 (match_operand 0 "symbolic_operand"))) | |
117 | |
118 (define_constraint "W" | |
119 "A vector zero constant" | |
120 (and (match_code "const_vector") | |
121 (match_test "op == CONST0_RTX (mode)"))) |