Lines Matching refs:fp

56 static void defineRegNames(FILE *fp, RegisterForm *registers) {
58 fprintf(fp,"\n");
59 fprintf(fp,"// An array of character pointers to machine register names.\n");
60 fprintf(fp,"const char *Matcher::regName[REG_COUNT] = {\n");
69 fprintf(fp," \"%s\"%s\n", reg_def->_regname, comma);
73 fprintf(fp,"};\n");
75 fprintf(fp,"\n");
76 fprintf(fp,"// An array of character pointers to machine register names.\n");
77 fprintf(fp,"const VMReg OptoReg::opto2vm[REG_COUNT] = {\n");
84 fprintf(fp,"\t%s%s\n", reg_def->_concrete, comma);
87 fprintf(fp,"\t};\n");
88 fprintf(fp,"\n");
90 fprintf(fp," OptoReg::Name OptoReg::vm2opto[ConcreteRegisterImpl::number_of_registers];\n");
96 static void defineRegEncodes(FILE *fp, RegisterForm *registers) {
98 fprintf(fp,"\n");
99 fprintf(fp,"// An array of the machine register encode values\n");
100 fprintf(fp,"const unsigned char Matcher::_regEncode[REG_COUNT] = {\n");
112 fprintf(fp," %s%s // %s\n", register_encode, comma, reg_def->_regname);
116 fprintf(fp," (unsigned char)'\\x%X'%s // %s\n", encval, comma, reg_def->_regname);
120 fprintf(fp,"};\n");
126 static void defineRegClassEnum(FILE *fp, RegisterForm *registers) {
129 fprintf(fp,"\n");
130 fprintf(fp,"// Enumeration of register class names\n");
131 fprintf(fp, "enum machRegisterClass {\n");
135 fprintf(fp," %s,\n", class_name_to_upper);
139 fprintf(fp, " _last_Mach_Reg_Class\n");
140 fprintf(fp, "};\n");
1062 static void defineOut_RegMask(FILE *fp, const char *node, const char *regMask) {
1063 fprintf(fp,"const RegMask &%sNode::out_RegMask() const { return (%s); }\n",
1067 static void print_block_index(FILE *fp, int inst_position) {
1069 fprintf(fp, "block_index");
1071 fprintf(fp, " - %d", inst_position);
1076 static void check_peepmatch_instruction_sequence(FILE *fp, PeepMatch *pmatch, PeepConstraint *pconstraint) {
1081 fprintf(fp, " // Check instruction sub-tree\n");
1090 fprintf(fp, " // Identify previous instruction if inside this block\n");
1091 fprintf(fp, " if( ");
1092 print_block_index(fp, inst_position);
1093 fprintf(fp, " > 0 ) {\n Node *n = block->_nodes.at(");
1094 print_block_index(fp, inst_position);
1095 fprintf(fp, ");\n inst%d = (n->is_Mach()) ? ", inst_position);
1096 fprintf(fp, "n->as_Mach() : NULL;\n }\n");
1102 fprintf(fp, " matches = matches && (inst%d != NULL) && (inst%d->rule() == %s_rule);\n",
1114 static void build_instruction_index_mapping( FILE *fp, FormDict &globals, PeepMatch *pmatch ) {
1119 fprintf(fp, " // Build map to register info\n");
1133 inst->index_temps( fp, globals, inst_prefix, receiver );
1140 static void check_peepconstraints(FILE *fp, FormDict &globals, PeepMatch *pmatch, PeepConstraint *pconstraint) {
1141 fprintf(fp, "\n");
1142 fprintf(fp, " // Check constraints on sub-tree-leaves\n");
1145 build_instruction_index_mapping( fp, globals, pmatch );
1149 fprintf(fp, " matches = matches &&");
1154 fprintf(fp, "\n%s%s", indentation, (!first_constraint ? "&& " : " "));
1214 // fprintf(fp, "phase->eqv( ");
1215 // fprintf(fp, "inst%d->in(%d+%d) /* %s */, inst%d->in(%d+%d) /* %s */",
1218 // fprintf(fp, ")");
1232 fprintf(fp, "(inst%d->_opnds[%d]->reg(ra_,inst%d%s) /* %d.%s */",
1234 fprintf(fp, " == ");
1245 fprintf(fp, "/* %d.%s */ inst%d->_opnds[%d]->reg(ra_,inst%d%s)",
1248 fprintf(fp, "%s_enc", right_op );
1250 fprintf(fp,")");
1255 fprintf(fp, "(inst%d->_opnds[%d]->constant() /* %d.%s */",
1257 fprintf(fp, " == ");
1258 fprintf(fp, "/* %d.%s */ inst%d->_opnds[%d]->constant())",
1265 fprintf(fp, "( \n");
1266 fprintf(fp, " (inst%d->_opnds[%d]->base(ra_,inst%d,inst%d_idx%d) /* %d.%s$$base */",
1268 fprintf(fp, " == ");
1269 fprintf(fp, "/* %d.%s$$base */ inst%d->_opnds[%d]->base(ra_,inst%d,inst%d_idx%d)) &&\n",
1272 fprintf(fp, " (inst%d->_opnds[%d]->index(ra_,inst%d,inst%d_idx%d) /* %d.%s$$index */",
1274 fprintf(fp, " == ");
1275 fprintf(fp, "/* %d.%s$$index */ inst%d->_opnds[%d]->index(ra_,inst%d,inst%d_idx%d)) &&\n",
1278 fprintf(fp, " (inst%d->_opnds[%d]->scale() /* %d.%s$$scale */",
1280 fprintf(fp, " == ");
1281 fprintf(fp, "/* %d.%s$$scale */ inst%d->_opnds[%d]->scale()) &&\n",
1284 fprintf(fp, " (inst%d->_opnds[%d]->disp(ra_,inst%d,inst%d_idx%d) /* %d.%s$$disp */",
1286 fprintf(fp, " == ");
1287 fprintf(fp, "/* %d.%s$$disp */ inst%d->_opnds[%d]->disp(ra_,inst%d,inst%d_idx%d))\n",
1289 fprintf(fp, ") \n");
1308 fprintf(fp, ";\n");
1332 static void generate_peepreplace( FILE *fp, FormDict &globals, PeepMatch *pmatch, PeepConstraint *pconstraint, PeepReplace *preplace, int max_position ) {
1333 fprintf(fp, " // IF instructions and constraints matched\n");
1334 fprintf(fp, " if( matches ) {\n");
1335 fprintf(fp, " // generate the new sub-tree\n");
1336 fprintf(fp, " assert( true, \"Debug stopping point\");\n");
1343 fprintf(fp, " %sNode *root = new (C) %sNode();\n", root_inst, root_inst);
1365 fprintf(fp, " // ----- Initial setup -----\n");
1368 fprintf(fp, " root->add_req(_in[0]); // control edge\n");
1372 fprintf(fp, " root->add_req(inst%d->in(%d)); // unmatched ideal edge\n",
1378 fprintf(fp, " root->_bottom_type = inst%d->bottom_type();\n", inst_num);
1381 fprintf(fp, " ra_->add_reference(root, inst%d);\n", inst_num);
1382 fprintf(fp, " ra_->set_oop (root, ra_->is_oop(inst%d));\n", inst_num);
1383 fprintf(fp, " ra_->set_pair(root->_idx, ra_->get_reg_second(inst%d), ra_->get_reg_first(inst%d));\n", inst_num, inst_num);
1384 fprintf(fp, " root->_opnds[0] = inst%d->_opnds[0]->clone(C); // result\n", inst_num);
1385 fprintf(fp, " // ----- Done with initial setup -----\n");
1389 fprintf(fp, " for( unsigned x%d = inst%d_idx%d; x%d < inst%d_idx%d; x%d++ )\n",
1392 fprintf(fp, " root->add_req( inst%d->in(x%d) );\n",
1395 fprintf(fp, " // no ideal edge for constants after matching\n");
1397 fprintf(fp, " root->_opnds[%d] = inst%d->_opnds[%d]->clone(C);\n",
1408 fprintf(fp, " deleted = %d;\n", max_position+1 /*zero to one based*/);
1409 fprintf(fp, " return root; // return new root;\n");
1410 fprintf(fp, " }\n");
1415 void ArchDesc::definePeephole(FILE *fp, InstructForm *node) {
1417 fprintf(fp, "MachNode *%sNode::peephole( Block *block, int block_index, PhaseRegAlloc *ra_, int &deleted, Compile* C ) {\n", node->_ident);
1418 fprintf(fp, " bool matches = true;\n");
1436 fprintf(fp, " MachNode *inst0 = this;\n");
1438 fprintf(fp, " MachNode *inst%d = NULL;\n", i);
1457 fprintf(fp, " if( (OptoPeepholeAt == -1) || (OptoPeepholeAt==%d) ) {\n", peephole_number);
1458 fprintf(fp, " matches = true;\n");
1460 check_peepmatch_instruction_sequence( fp, pmatch, pconstraint );
1463 fprintf(fp, " // If instruction subtree matches\n");
1464 fprintf(fp, " if( matches ) {\n");
1467 check_peepconstraints( fp, _globalNames, pmatch, pconstraint );
1470 generate_peepreplace( fp, _globalNames, pmatch, pconstraint, preplace, max_position );
1473 fprintf(fp, " }\n");
1475 fprintf(fp, " } // end of peephole rule #%d\n", peephole_number);
1476 fprintf(fp, "\n");
1479 fprintf(fp, " return NULL; // No peephole rules matched\n");
1480 fprintf(fp, "}\n");
1481 fprintf(fp, "\n");
1485 void ArchDesc::defineExpand(FILE *fp, InstructForm *node) {
1490 fprintf(fp, "MachNode* %sNode::Expand(State* state, Node_List& proj_list, Node* mem) {\n", node->_ident);
1491 fprintf(fp, " Compile* C = Compile::current();\n");
1512 fprintf(fp," MachOper *op%d = new (C) %sOper();\n",
1516 fprintf(fp," MachOper *op%d = new (C) %sOper(%s);\n",
1525 fprintf(fp," MachNode *tmp%d = this;\n", i);
1528 fprintf(fp," MachNode *tmp%d = NULL;\n", i);
1532 fprintf(fp," unsigned num0 = 0;\n");
1534 fprintf(fp," unsigned num%d = opnd_array(%d)->num_edges();\n",i,i);
1538 fprintf(fp," unsigned idx0 = oper_input_base();\n");
1547 fprintf(fp," if (mem == (Node*)1) {\n");
1548 fprintf(fp," idx0--; // Adjust base because memory edge hasn't been inserted yet\n");
1549 fprintf(fp," }\n");
1553 fprintf(fp," unsigned idx%d = idx%d + num%d;\n",
1558 fprintf(fp," MachNode *result = NULL;\n");
1574 fprintf(fp,"\n %sNode *n%d = new (C) %sNode();\n", new_id, cnt, new_id);
1576 fprintf(fp," n%d->add_req(_in[0]);\n", cnt);
1584 fprintf(fp, " ((MachIfNode*)n%d)->_prob = _prob;\n",cnt);
1585 fprintf(fp, " ((MachIfNode*)n%d)->_fcnt = _fcnt;\n",cnt);
1589 fprintf(fp, " ((MachFastLockNode*)n%d)->_counters = _counters;\n",cnt);
1595 fprintf(fp, " ((MachTypeNode*)n%d)->_bottom_type = bottom_type();\n", cnt);
1599 fprintf(fp," n%d->set_opnd_array(0, state->MachOperGenerator( %s, C ));\n",
1614 fprintf(fp," if (mem != (Node*)1) {\n");
1615 fprintf(fp," n%d->add_req(_in[1]);\t// Add memory edge\n", cnt);
1616 fprintf(fp," }\n");
1633 fprintf(fp," n%d->set_opnd_array(%d, op%d->clone(C)); // %s\n",
1636 fprintf(fp," if(tmp%d != NULL)\n", exp_pos);
1637 fprintf(fp," n%d->add_req(tmp%d);\n", cnt, exp_pos);
1661 fprintf(fp," n%d->set_opnd_array(%d, opnd_array(%d)->clone(C)); // %s\n",
1664 fprintf(fp," if(tmp%d == this) {\n", exp_pos);
1666 fprintf(fp," for(unsigned i = 0; i < num%d; i++) {\n", exp_pos);
1667 fprintf(fp," n%d->add_req(_in[i + idx%d]);\n", cnt, exp_pos);
1668 fprintf(fp," }\n");
1669 fprintf(fp," }\n");
1671 fprintf(fp," else n%d->add_req(tmp%d);\n", cnt, exp_pos);
1682 fprintf(fp," tmp%d = n%d;\n", exp_pos, cnt);
1687 fprintf(fp," tmp%d = n%d;\n", exp_pos, cnt);
1692 fprintf(fp," result = n%d->Expand( state, proj_list, mem );\n", cnt);
1695 fprintf(fp,"\n");
1703 fprintf(fp," // Add projection edges for additional defs or kills\n");
1721 fprintf(fp, " // TEMP %s\n", comp->_name);
1724 fprintf(fp, " MachTempNode *def;\n");
1728 fprintf(fp," def = new (C) MachTempNode(state->MachOperGenerator( %s, C ));\n",
1730 fprintf(fp," add_req(def);\n");
1735 // fprintf(fp," set_opnd_array(%d, state->MachOperGenerator( %s, C ));\n",
1741 fprintf(fp, " // DEF/KILL %s\n", comp->_name);
1745 fprintf(fp, " MachProjNode *kill;\n");
1758 fprintf(fp," kill = ");
1759 fprintf(fp,"new (C) MachProjNode( %s, %d, (%s), Op_%s );\n",
1761 fprintf(fp," proj_list.push(kill);\n");
1773 fprintf(fp," unsigned num0 = 0;\n");
1775 fprintf(fp," unsigned num%d = opnd_array(%d)->num_edges();",i,i);
1776 fprintf(fp, " \t// %s\n", node->opnd_ident(i));
1779 fprintf(fp," unsigned idx0 = oper_input_base();\n");
1781 fprintf(fp," unsigned idx%d = idx%d + num%d;\n",
1801 fprintf(fp," set_opnd_array(%d, opnd_array(%d)->clone(C)); // %s\n",
1804 fprintf(fp," for(unsigned i = 0; i < num%d; i++) {\n", i);
1805 fprintf(fp," set_req(i + idx%d, _in[i + idx%d]);\n", new_num_opnds, i);
1806 fprintf(fp," }\n");
1807 fprintf(fp," num%d = num%d;\n", new_num_opnds, i);
1808 fprintf(fp," idx%d = idx%d + num%d;\n", new_num_opnds+1, new_num_opnds, new_num_opnds);
1813 fprintf(fp," for(int i = idx%d - 1; i >= (int)idx%d; i--) {\n", cur_num_opnds, new_num_opnds);
1814 fprintf(fp," del_req(i);\n");
1815 fprintf(fp," }\n");
1816 fprintf(fp," _num_opnds = %d;\n", new_num_opnds);
1824 fprintf(fp," add_req(C->mach_constant_base_node());\n");
1827 fprintf(fp,"\n");
1829 fprintf(fp," return result;\n");
1831 fprintf(fp," return this;\n");
1833 fprintf(fp,"}\n");
1834 fprintf(fp,"\n");
1892 DefineEmitState(FILE *fp, ArchDesc &AD, EncClass &encoding,
1894 : _AD(AD), _fp(fp), _encoding(encoding), _ins_encode(ins_encode), _inst(inst) {
2481 void ArchDesc::defineSize(FILE *fp, InstructForm &inst) {
2485 fprintf(fp,"uint %sNode::size(PhaseRegAlloc *ra_) const {\n",
2488 fprintf(fp, " assert(VerifyOops || MachNode::size(ra_) <= %s, \"bad fixed size\");\n", inst._size);
2492 fprintf(fp, " return (VerifyOops ? MachNode::size(ra_) : %s);\n", inst._size);
2495 fprintf(fp,"}\n");
2499 void ArchDesc::defineEmit(FILE* fp, InstructForm& inst) {
2504 fprintf(fp, "void %sNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const {\n", inst._ident);
2509 fprintf(fp, " // User did not define an encode section.\n");
2510 fprintf(fp, "}\n");
2515 fprintf(fp, " cbuf.set_insts_mark();\n");
2519 fprintf(fp, " ra_->C->constant_table().fill_jump_table(cbuf, (MachConstantNode*) this, _index2label);\n");
2523 inst.index_temps(fp, _globalNames);
2530 fprintf(fp, " {\n");
2548 DefineEmitState pending(fp, *this, *encoding, *encode, inst);
2560 fprintf(fp, "%s", ec_code);
2571 fprintf(fp, " }\n");
2576 fprintf(fp, " // User did not define which encode class to use.\n");
2580 fprintf(fp, "}\n\n");
2584 void ArchDesc::defineEvalConstant(FILE* fp, InstructForm& inst) {
2589 fprintf(fp, "void %sNode::eval_constant(Compile* C) {\n", inst._ident);
2593 fprintf(fp, " _constant = C->constant_table().add_jump_table(this);\n");
2599 fprintf(fp, " // User did not define an encode section.\n");
2600 fprintf(fp, "}\n");
2609 fprintf(fp, " {\n");
2627 DefineEmitState pending(fp, *this, *encoding, *encode, inst);
2639 fprintf(fp, "%s", ec_code);
2650 fprintf(fp, " }\n");
2655 fprintf(fp, " // User did not define which encode class to use.\n");
2659 fprintf(fp, "}\n");
2667 static void defineIn_RegMask(FILE *fp, FormDict &globals, OperandForm &oper) {
2671 fprintf(fp, "const RegMask *%sOper::in_RegMask(int index) const {\n",
2675 fprintf(fp, " assert(0 <= index && index < %d, \"index out of range\");\n",
2694 fprintf(fp," return &(Compile::current()->FIRST_STACK_mask());\n");
2697 fprintf(fp," return &%s_mask();\n", first_reg_class_to_upper);
2702 fprintf(fp," switch (index) {\n");
2708 fprintf(fp, " case %d: return &(Compile::current()->FIRST_STACK_mask());\n", index);
2711 fprintf(fp, " case %d: return &%s_mask();\n", index, reg_class_to_upper);
2715 fprintf(fp," }\n");
2716 fprintf(fp," ShouldNotReachHere();\n");
2717 fprintf(fp," return NULL;\n");
2721 fprintf(fp, "}\n\n");
2731 static void defineClone(FILE *fp, FormDict &globalNames, OperandForm &oper) {
2732 fprintf(fp,"MachOper *%sOper::clone(Compile* C) const {\n", oper._ident);
2737 fprintf(fp," return new (C) %sOper(", oper._ident);
2740 fprintf(fp,"_c%d", i);
2742 fprintf(fp,", _c%d", i);
2745 fprintf(fp,");\n");
2749 fprintf(fp," return new (C) %sOper();\n", oper._ident);
2752 fprintf(fp,"}\n");
2835 void ArchDesc::define_oper_interface(FILE *fp, OperandForm &oper, FormDict &globals,
2840 fprintf(fp," virtual int %s", name);
2843 fprintf(fp,"(PhaseRegAlloc *ra_, const Node *node, int idx) const { \n");
2846 fprintf(fp,"(PhaseRegAlloc *ra_, const Node *node, int idx) const { \n");
2848 fprintf(fp,"() const { \n");
2855 fprintf(fp," // Replacement variable: %s\n", encoding+1);
2870 fprintf(fp," return (int)ra_->get_encode(node->in(idx");
2871 if ( idx_offset > 0 ) fprintf(fp, "+%d",idx_offset);
2872 fprintf(fp,"));\n");
2875 fprintf(fp," if( idx != 0 ) {\n");
2876 fprintf(fp," // Access stack offset (register number) for input operand\n");
2877 fprintf(fp," return ra_->reg2offset(ra_->get_reg_first(node->in(idx)));/* sReg */\n");
2878 fprintf(fp," }\n");
2879 fprintf(fp," // Access stack offset (register number) from myself\n");
2880 fprintf(fp," return ra_->reg2offset(ra_->get_reg_first(node));/* sReg */\n");
2887 fprintf(fp," return (int)" );
2888 oper.access_constant(fp, globals, (uint)idx /* , const_type */);
2889 fprintf(fp,";\n");
2896 fprintf(fp," return %s;\n", encoding);
2900 fprintf(fp," }\n");
2903 fprintf(fp," virtual int %s_position() const { return %d; }\n", name, position);
2919 fprintf(fp," virtual const TypePtr *disp_as_type() const { return _c%d; }\n", idx);
2960 void ArchDesc::defineClasses(FILE *fp) {
2963 defineRegNames(fp, _register);
2965 defineRegEncodes(fp, _register);
2971 // build_register_masks(fp);
2977 fprintf(fp,"\n");
2978 fprintf(fp,"\n");
2979 fprintf(fp,"//------------------Define classes derived from MachOper---------------------\n");
2991 fprintf(fp,"MachOper *%sOper::clone(Compile* C) const {\n", oper->_ident);
2992 fprintf(fp," return new (C) %sOper(_label, _block_num);\n", oper->_ident);
2993 fprintf(fp,"}\n");
2995 fprintf(fp,"uint %sOper::opcode() const { return %s; }\n",
2998 // define_hash(fp, oper->_ident);
3000 // define_cmp(fp, oper->_ident);
3001 fprintf(fp,"\n");
3010 fprintf(fp,"MachOper *%sOper::clone(Compile* C) const {\n", oper->_ident);
3011 fprintf(fp," return new (C) %sOper(_method);\n", oper->_ident);
3012 fprintf(fp,"}\n");
3014 fprintf(fp,"uint %sOper::opcode() const { return %s; }\n",
3017 // define_hash(fp, oper->_ident);
3019 // define_cmp(fp, oper->_ident);
3020 fprintf(fp,"\n");
3025 defineIn_RegMask(fp, _globalNames, *oper);
3028 // define_hash(fp, oper->_ident);
3030 // define_cmp(fp, oper->_ident);
3033 extern void gen_oper_format(FILE *fp, FormDict &globals, OperandForm &oper, bool for_c_file);
3040 fprintf(fp,"//------------------Define members for classes derived from MachNode----------\n");
3070 used |= instr->define_cisc_version(*this, fp);
3073 used |= instr->define_short_branch_methods(*this, fp);
3077 define_fill_new_machnode(used, fp);
3089 fprintf(fp,"void %sNode::label_set( Label* label, uint block_num ) {\n", instr->_ident);
3090 fprintf(fp," labelOper* oper = (labelOper*)(opnd_array(%d));\n",
3092 fprintf(fp," oper->_label = label;\n");
3093 fprintf(fp," oper->_block_num = block_num;\n");
3094 fprintf(fp,"}\n");
3096 fprintf(fp,"void %sNode::save_label( Label** label, uint* block_num ) {\n", instr->_ident);
3097 fprintf(fp," labelOper* oper = (labelOper*)(opnd_array(%d));\n",
3099 fprintf(fp," *label = oper->_label;\n");
3100 fprintf(fp," *block_num = oper->_block_num;\n");
3101 fprintf(fp,"}\n");
3115 fprintf(fp,"void %sNode::method_set( intptr_t method ) {\n", instr->_ident);
3116 fprintf(fp," ((methodOper*)opnd_array(%d))->_method = method;\n",
3118 fprintf(fp,"}\n");
3119 fprintf(fp,"\n");
3129 fprintf(fp,"int %sNode::reloc() const {\n", instr->_ident);
3130 fprintf(fp," return %d;\n", reloc_size);
3131 fprintf(fp,"}\n");
3132 fprintf(fp,"\n");
3135 fprintf(fp,"\n");
3149 if (instr->_insencode) defineEmit (fp, *instr);
3150 if (instr->is_mach_constant()) defineEvalConstant(fp, *instr);
3151 if (instr->_size) defineSize (fp, *instr);
3154 extern void gen_inst_format(FILE *fp, FormDict &globals, InstructForm &oper, bool for_c_file);
3173 fprintf(fp,"const TypePtr *%sNode::adr_type() const { return TypePtr::BOTTOM; }\n", instr->_ident);
3174 fprintf(fp,"const MachOper* %sNode::memory_operand() const { return (MachOper*)-1; }\n", instr->_ident);
3176 fprintf(fp,"const MachOper* %sNode::memory_operand() const { return _opnds[%d]; }\n", instr->_ident, memory_operand);
3621 static void path_to_constant(FILE *fp, FormDict &globals,
3635 fprintf(fp, "_leaf->get_int()");
3637 fprintf(fp, "_leaf->bottom_type()->is_ptr()");
3639 fprintf(fp, "_leaf->bottom_type()->is_narrowoop()");
3641 fprintf(fp, "_leaf->getf()");
3643 fprintf(fp, "_leaf->getd()");
3645 fprintf(fp, "_leaf->get_long()");
3648 fprintf(fp, "_leaf->get_int()");
3651 fprintf(fp, "_leaf->as_Bool()->_test._test");
3662 fprintf(fp, "_kids[0]->");
3663 path_to_constant(fp, globals, mnode->_lChild, idx);
3669 fprintf(fp, "_kids[1]->");
3670 path_to_constant(fp, globals, mnode->_rChild, idx);
3677 static void genMachOperCase(FILE *fp, FormDict &globalNames, ArchDesc &AD,
3684 fprintf(fp, " case %s:", opEnumName);
3685 fprintf(fp, "\n return new (C) %sOper(", opName);
3691 path_to_constant(fp, globalNames, op._matrule, i);
3693 fprintf(fp, ", ");
3694 path_to_constant(fp, globalNames, op._matrule, i);
3697 fprintf(fp, " );\n");