1 /*
2 * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
136
137 // Parse components of a peephole rule
138 void peep_match_parse(Peephole &peep); // Parse the peephole match rule
139 void peep_constraint_parse(Peephole &peep);// Parse the peephole constraints
140 void peep_replace_parse(Peephole &peep); // Parse peephole replacement rule
141
142 // Parse the peep match rule tree
143 InstructForm *peep_match_child_parse(PeepMatch &match, int parent, int &position, int input);
144
145 // Parse components of an operand and/or instruction form
146 Predicate *pred_parse(void); // Parse predicate rule
147 // Parse match rule, and internal nodes
148 MatchRule *match_parse(FormDict &operands);
149 MatchNode *matchNode_parse(FormDict &operands, int &depth,
150 int &numleaves, bool atroot);
151 MatchNode *matchChild_parse(FormDict &operands, int &depth,
152 int &numleaves, bool atroot);
153
154 Attribute *attr_parse(char *ident);// Parse instr/operand attribute rule
155 // Parse instruction encode rule
156 InsEncode *ins_encode_parse(InstructForm &inst);
157 InsEncode *ins_encode_parse_block(InstructForm &inst);
158 Opcode *opcode_parse(InstructForm *insr); // Parse instruction opcode
159 char *size_parse(InstructForm *insr); // Parse instruction size
160 Interface *interface_parse(); // Parse operand interface rule
161 Interface *mem_interface_parse(); // Parse memory interface rule
162 Interface *cond_interface_parse(); // Parse conditional interface rule
163 char *interface_field_parse(const char** format = NULL);// Parse field contents
164
165 FormatRule *format_parse(void); // Parse format rule
166 FormatRule *template_parse(void); // Parse format rule
167 void effect_parse(InstructForm *instr); // Parse effect rule
168 ExpandRule *expand_parse(InstructForm *instr); // Parse expand rule
169 RewriteRule *rewrite_parse(void); // Parse rewrite rule
170 Constraint *constraint_parse(void); // Parse constraint rule
171 ConstructRule *construct_parse(void); // Parse construct rule
172 void ins_pipe_parse(InstructForm &instr); // Parse ins_pipe rule
173
174 // ***** Preprocessor functions *****
175 void begin_if_def(bool taken) {
176 assert(_preproc_depth < _preproc_limit, "#ifdef nesting limit");
177 int ppn = _preproc_depth++;
|
1 /*
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
136
137 // Parse components of a peephole rule
138 void peep_match_parse(Peephole &peep); // Parse the peephole match rule
139 void peep_constraint_parse(Peephole &peep);// Parse the peephole constraints
140 void peep_replace_parse(Peephole &peep); // Parse peephole replacement rule
141
142 // Parse the peep match rule tree
143 InstructForm *peep_match_child_parse(PeepMatch &match, int parent, int &position, int input);
144
145 // Parse components of an operand and/or instruction form
146 Predicate *pred_parse(void); // Parse predicate rule
147 // Parse match rule, and internal nodes
148 MatchRule *match_parse(FormDict &operands);
149 MatchNode *matchNode_parse(FormDict &operands, int &depth,
150 int &numleaves, bool atroot);
151 MatchNode *matchChild_parse(FormDict &operands, int &depth,
152 int &numleaves, bool atroot);
153
154 Attribute *attr_parse(char *ident);// Parse instr/operand attribute rule
155 // Parse instruction encode rule
156 void ins_encode_parse(InstructForm &inst);
157 void ins_encode_parse_block(InstructForm &inst);
158 void ins_encode_parse_block_impl(InstructForm& inst, EncClass* encoding, char* ec_name);
159
160 void constant_parse(InstructForm& inst);
161 void constant_parse_expression(EncClass* encoding, char* ec_name);
162
163 Opcode *opcode_parse(InstructForm *insr); // Parse instruction opcode
164 char *size_parse(InstructForm *insr); // Parse instruction size
165 Interface *interface_parse(); // Parse operand interface rule
166 Interface *mem_interface_parse(); // Parse memory interface rule
167 Interface *cond_interface_parse(); // Parse conditional interface rule
168 char *interface_field_parse(const char** format = NULL);// Parse field contents
169
170 FormatRule *format_parse(void); // Parse format rule
171 FormatRule *template_parse(void); // Parse format rule
172 void effect_parse(InstructForm *instr); // Parse effect rule
173 ExpandRule *expand_parse(InstructForm *instr); // Parse expand rule
174 RewriteRule *rewrite_parse(void); // Parse rewrite rule
175 Constraint *constraint_parse(void); // Parse constraint rule
176 ConstructRule *construct_parse(void); // Parse construct rule
177 void ins_pipe_parse(InstructForm &instr); // Parse ins_pipe rule
178
179 // ***** Preprocessor functions *****
180 void begin_if_def(bool taken) {
181 assert(_preproc_depth < _preproc_limit, "#ifdef nesting limit");
182 int ppn = _preproc_depth++;
|