|
|
1.1 root 1: /* Declarations for interface to insn recognizer and insn-output.c.
2: Copyright (C) 1987 Free Software Foundation, Inc.
3:
4: This file is part of GNU CC.
5:
6: GNU CC 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 2, or (at your option)
9: any later version.
10:
11: GNU CC 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 GNU CC; see the file COPYING. If not, write to
18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19:
20: /* Recognize an insn and return its insn-code,
21: which is the sequence number of the DEFINE_INSN that it matches.
22: If the insn does not match, return -1. */
23:
24: extern int recog_memoized ();
25:
26: /* Determine whether a proposed change to an insn or MEM will make it
27: invalid. Make the change if not. */
28:
29: extern int validate_change ();
30:
31: /* Apply a group of changes if valid. */
32:
33: extern int apply_change_group ();
34:
35: /* Return the number of changes so far in the current group. */
36:
37: extern int num_validated_changes ();
38:
39: /* Retract some changes. */
40:
41: extern void cancel_changes ();
42:
43: /* Nonzero means volatile operands are recognized. */
44:
45: extern int volatile_ok;
46:
47: /* Extract the operands from an insn that has been recognized. */
48:
49: extern void insn_extract ();
50:
51: /* The following vectors hold the results from insn_extract. */
52:
53: /* Indexed by N, gives value of operand N. */
54: extern rtx recog_operand[];
55:
56: /* Indexed by N, gives location where operand N was found. */
57: extern rtx *recog_operand_loc[];
58:
59: /* Indexed by N, gives location where the Nth duplicate-appearance of
60: an operand was found. This is something that matched MATCH_DUP. */
61: extern rtx *recog_dup_loc[];
62:
63: /* Indexed by N, gives the operand number that was duplicated in the
64: Nth duplicate-appearance of an operand. */
65: extern char recog_dup_num[];
66:
67: #ifndef __STDC__
68: #ifndef const
69: #define const
70: #endif
71: #endif
72:
73: /* Access the output function for CODE. */
74:
75: #define OUT_FCN(CODE) (*insn_outfun[(int) (CODE)])
76:
77: /* Tables defined in insn-output.c that give information about
78: each insn-code value. */
79:
80: /* These are vectors indexed by insn-code. Details in genoutput.c. */
81:
82: extern char *const insn_template[];
83:
84: extern char *(*const insn_outfun[]) ();
85:
86: extern const int insn_n_operands[];
87:
88: extern const int insn_n_dups[];
89:
90: /* Indexed by insn code number, gives # of constraint alternatives. */
91:
92: extern const int insn_n_alternatives[];
93:
94: /* These are two-dimensional arrays indexed first by the insn-code
95: and second by the operand number. Details in genoutput.c. */
96:
97: #ifdef REGISTER_CONSTRAINTS /* Avoid undef sym in certain broken linkers. */
98: extern char *const insn_operand_constraint[][MAX_RECOG_OPERANDS];
99: #endif
100:
101: #ifndef REGISTER_CONSTRAINTS /* Avoid undef sym in certain broken linkers. */
102: extern const char insn_operand_address_p[][MAX_RECOG_OPERANDS];
103: #endif
104:
105: extern const enum machine_mode insn_operand_mode[][MAX_RECOG_OPERANDS];
106:
107: extern const char insn_operand_strict_low[][MAX_RECOG_OPERANDS];
108:
109: extern int (*const insn_operand_predicate[][MAX_RECOG_OPERANDS]) ();
110:
111: extern char * insn_name[];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.