00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__md__instructions__pi_pi2ge_pi_g_hh__included
00009 #define lestes__md__instructions__pi_pi2ge_pi_g_hh__included
00010
00011 #include <lestes/md/common.hh>
00012 #include <lestes/md/instructions/pi_pi2ge_pi_base.g.hh>
00013
00014 #include <lestes/std/objectize_macros.hh>
00015 package(lestes);
00016 package(std);
00017 class object;
00018 end_package(std);
00019 end_package(lestes);
00020
00021 package(lestes);
00022 package(backend_v2);
00023 package(intercode);
00024 class pi_pi;
00025 end_package(intercode);
00026 end_package(backend_v2);
00027 end_package(lestes);
00028
00029 package(lestes);
00030 package(backend_v2);
00031 package(intercode);
00032 class pi_operand;
00033 end_package(intercode);
00034 end_package(backend_v2);
00035 end_package(lestes);
00036
00037 package(lestes);
00038 package(backend_v2);
00039 package(intercode);
00040 class pi_abstract_function_call;
00041 end_package(intercode);
00042 end_package(backend_v2);
00043 end_package(lestes);
00044
00045 package(lestes);
00046 package(backend_v2);
00047 package(intercode);
00048 class ge_sp;
00049 end_package(intercode);
00050 end_package(backend_v2);
00051 end_package(lestes);
00052
00053 package(lestes);
00054 package(backend_v2);
00055 package(intercode);
00056 class ge_pi;
00057 end_package(intercode);
00058 end_package(backend_v2);
00059 end_package(lestes);
00060
00061 package(lestes);
00062 package(backend_v2);
00063 package(intercode);
00064 class ge_call;
00065 end_package(intercode);
00066 end_package(backend_v2);
00067 end_package(lestes);
00068
00069 package(lestes);
00070 package(backend_v2);
00071 package(intercode);
00072 class ge_operand;
00073 end_package(intercode);
00074 end_package(backend_v2);
00075 end_package(lestes);
00076
00077 package(lestes);
00078 package(backend_v2);
00079 package(intercode);
00080 class ge_operand_reg;
00081 end_package(intercode);
00082 end_package(backend_v2);
00083 end_package(lestes);
00084
00085 package(lestes);
00086 package(md);
00087 package(instructions);
00088 class tm_instr_base;
00089 end_package(instructions);
00090 end_package(md);
00091 end_package(lestes);
00092
00093 package(lestes);
00094 package(md);
00095 package(instructions);
00096
00097
00098 class pi_pi2ge_pi;
00099
00100
00101 class pi_pi2ge_pi : public pi_pi2ge_pi_base {
00102 public:
00103
00104 ptr< ::lestes::backend_v2::intercode::ge_sp > first_sp_get() const;
00105
00106
00107 void first_sp_set(const ptr< ::lestes::backend_v2::intercode::ge_sp > &);
00108
00109
00110 ptr< ::lestes::backend_v2::intercode::ge_sp > last_sp_get() const;
00111
00112
00113 void last_sp_set(const ptr< ::lestes::backend_v2::intercode::ge_sp > &);
00114
00115
00116 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > preserved_reg_edi_get() const;
00117
00118
00119 void preserved_reg_edi_set(const ptr< ::lestes::backend_v2::intercode::ge_operand_reg > &);
00120
00121
00122 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > preserved_reg_esi_get() const;
00123
00124
00125 void preserved_reg_esi_set(const ptr< ::lestes::backend_v2::intercode::ge_operand_reg > &);
00126
00127
00128 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > preserved_reg_ebx_get() const;
00129
00130
00131 void preserved_reg_ebx_set(const ptr< ::lestes::backend_v2::intercode::ge_operand_reg > &);
00132
00133 ptr< ::lestes::backend_v2::intercode::ge_operand > get_stack_pointer(ptr< ::lestes::backend_v2::intercode::pi_abstract_function_call > pi);
00134
00135 void restore_stack(ptr< ::lestes::backend_v2::intercode::pi_abstract_function_call > pi, ptr< ::lestes::backend_v2::intercode::ge_call > ge, ptr< ::lestes::backend_v2::intercode::ge_operand > stack_pointer, ulint argc, ptr<vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > output);
00136
00137 void push_operands(ptr< ::lestes::backend_v2::intercode::pi_abstract_function_call > pi, ptr< ::lestes::backend_v2::intercode::ge_operand > &stack_pointer, ptr<vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > output);
00138
00139 void push_operand(ptr< ::lestes::backend_v2::intercode::pi_abstract_function_call > pi, ptr< ::lestes::backend_v2::intercode::pi_operand > op, ptr< ::lestes::backend_v2::intercode::ge_operand > &stack_pointer, ptr<vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > output);
00140
00141 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sp(ptr< ::lestes::backend_v2::intercode::pi_sp > );
00142
00143 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_add(ptr< ::lestes::backend_v2::intercode::pi_add > );
00144
00145 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sub(ptr< ::lestes::backend_v2::intercode::pi_sub > );
00146
00147 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_mul(ptr< ::lestes::backend_v2::intercode::pi_mul > );
00148
00149 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_div(ptr< ::lestes::backend_v2::intercode::pi_div > );
00150
00151 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_divrni(ptr< ::lestes::backend_v2::intercode::pi_divrni > );
00152
00153 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_divrpi(ptr< ::lestes::backend_v2::intercode::pi_divrpi > );
00154
00155 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_divrz(ptr< ::lestes::backend_v2::intercode::pi_divrz > );
00156
00157 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_mod(ptr< ::lestes::backend_v2::intercode::pi_mod > );
00158
00159 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_rem(ptr< ::lestes::backend_v2::intercode::pi_rem > );
00160
00161 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_neg(ptr< ::lestes::backend_v2::intercode::pi_neg > );
00162
00163 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_gat(ptr< ::lestes::backend_v2::intercode::pi_gat > );
00164
00165 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_shl(ptr< ::lestes::backend_v2::intercode::pi_shl > );
00166
00167 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_shr(ptr< ::lestes::backend_v2::intercode::pi_shr > );
00168
00169 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sal(ptr< ::lestes::backend_v2::intercode::pi_sal > );
00170
00171 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sar(ptr< ::lestes::backend_v2::intercode::pi_sar > );
00172
00173 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_band(ptr< ::lestes::backend_v2::intercode::pi_band > );
00174
00175 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bor(ptr< ::lestes::backend_v2::intercode::pi_bor > );
00176
00177 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bxor(ptr< ::lestes::backend_v2::intercode::pi_bxor > );
00178
00179 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bnot(ptr< ::lestes::backend_v2::intercode::pi_bnot > );
00180
00181 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_land(ptr< ::lestes::backend_v2::intercode::pi_land > );
00182
00183 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_lor(ptr< ::lestes::backend_v2::intercode::pi_lor > );
00184
00185 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_lxor(ptr< ::lestes::backend_v2::intercode::pi_lxor > );
00186
00187 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_lnot(ptr< ::lestes::backend_v2::intercode::pi_lnot > );
00188
00189 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_cvt(ptr< ::lestes::backend_v2::intercode::pi_cvt > );
00190
00191 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_cmp(ptr< ::lestes::backend_v2::intercode::pi_cmp > );
00192
00193 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_mov(ptr< ::lestes::backend_v2::intercode::pi_mov > );
00194
00195 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ld(ptr< ::lestes::backend_v2::intercode::pi_ld > );
00196
00197 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_lda(ptr< ::lestes::backend_v2::intercode::pi_lda > );
00198
00199 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ldi(ptr< ::lestes::backend_v2::intercode::pi_ldi > );
00200
00201 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ldp(ptr< ::lestes::backend_v2::intercode::pi_ldp > );
00202
00203 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ldv(ptr< ::lestes::backend_v2::intercode::pi_ldv > );
00204
00205 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ldpv(ptr< ::lestes::backend_v2::intercode::pi_ldpv > );
00206
00207 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_st(ptr< ::lestes::backend_v2::intercode::pi_st > );
00208
00209 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sti(ptr< ::lestes::backend_v2::intercode::pi_sti > );
00210
00211 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_stp(ptr< ::lestes::backend_v2::intercode::pi_stp > );
00212
00213 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_stv(ptr< ::lestes::backend_v2::intercode::pi_stv > );
00214
00215 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_stiv(ptr< ::lestes::backend_v2::intercode::pi_stiv > );
00216
00217 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_stpv(ptr< ::lestes::backend_v2::intercode::pi_stpv > );
00218
00219 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_call(ptr< ::lestes::backend_v2::intercode::pi_call > );
00220
00221 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_icall(ptr< ::lestes::backend_v2::intercode::pi_icall > );
00222
00223 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_callv(ptr< ::lestes::backend_v2::intercode::pi_callv > );
00224
00225 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_icallv(ptr< ::lestes::backend_v2::intercode::pi_icallv > );
00226
00227 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ba(ptr< ::lestes::backend_v2::intercode::pi_ba > );
00228
00229 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bn(ptr< ::lestes::backend_v2::intercode::pi_bn > );
00230
00231 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bt(ptr< ::lestes::backend_v2::intercode::pi_bt > );
00232
00233 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bf(ptr< ::lestes::backend_v2::intercode::pi_bf > );
00234
00235 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bm(ptr< ::lestes::backend_v2::intercode::pi_bm > );
00236
00237 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bg(ptr< ::lestes::backend_v2::intercode::pi_bg > );
00238
00239 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bl(ptr< ::lestes::backend_v2::intercode::pi_bl > );
00240
00241 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_be(ptr< ::lestes::backend_v2::intercode::pi_be > );
00242
00243 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bng(ptr< ::lestes::backend_v2::intercode::pi_bng > );
00244
00245 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bnl(ptr< ::lestes::backend_v2::intercode::pi_bnl > );
00246
00247 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_bne(ptr< ::lestes::backend_v2::intercode::pi_bne > );
00248
00249 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_iba(ptr< ::lestes::backend_v2::intercode::pi_iba > );
00250
00251 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibn(ptr< ::lestes::backend_v2::intercode::pi_ibn > );
00252
00253 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibm(ptr< ::lestes::backend_v2::intercode::pi_ibm > );
00254
00255 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibg(ptr< ::lestes::backend_v2::intercode::pi_ibg > );
00256
00257 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibl(ptr< ::lestes::backend_v2::intercode::pi_ibl > );
00258
00259 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibe(ptr< ::lestes::backend_v2::intercode::pi_ibe > );
00260
00261 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibng(ptr< ::lestes::backend_v2::intercode::pi_ibng > );
00262
00263 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibnl(ptr< ::lestes::backend_v2::intercode::pi_ibnl > );
00264
00265 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_ibne(ptr< ::lestes::backend_v2::intercode::pi_ibne > );
00266
00267 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_leave(ptr< ::lestes::backend_v2::intercode::pi_leave > );
00268
00269 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sbg(ptr< ::lestes::backend_v2::intercode::pi_sbg > );
00270
00271 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sbl(ptr< ::lestes::backend_v2::intercode::pi_sbl > );
00272
00273 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sbe(ptr< ::lestes::backend_v2::intercode::pi_sbe > );
00274
00275 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sbng(ptr< ::lestes::backend_v2::intercode::pi_sbng > );
00276
00277 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sbnl(ptr< ::lestes::backend_v2::intercode::pi_sbnl > );
00278
00279 virtual ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > visit_pi_sbne(ptr< ::lestes::backend_v2::intercode::pi_sbne > );
00280
00281 virtual bool targetmachine__is_instruction_consistent(ptr< ::lestes::md::instructions::tm_instr_base > instr_version, ptr< ::lestes::backend_v2::intercode::pi_pi > pi);
00282
00283
00284
00285 static ptr< pi_pi2ge_pi > create (
00286 ptr< ::lestes::backend_v2::intercode::visitor_pi_pi2pi_operands > a__pi_pi2ge_pi_base__pi_operands_getter,
00287 ptr< ::lestes::backend_v2::intercode::visitor_pi_pi2id > a__pi_pi2ge_pi_base__pi_id_getter,
00288 ptr< ::lestes::md::instructions::pi_operand2ge_operand > a__pi_pi2ge_pi_base__pi_op2ge_op_convertor,
00289 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_sp >, srp< ::lestes::backend_v2::intercode::ge_sp > > > a__pi_pi2ge_pi_base__pi_sp2ge_sp,
00290 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_operand >, ulint > > a__pi_pi2ge_pi_base__pi_op2count,
00291 ptr< ::lestes::backend_v2::intercode::ge_sp > a__pi_pi2ge_pi__first_sp,
00292 ptr< ::lestes::backend_v2::intercode::ge_sp > a__pi_pi2ge_pi__last_sp,
00293 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > a__pi_pi2ge_pi__preserved_reg_edi,
00294 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > a__pi_pi2ge_pi__preserved_reg_esi,
00295 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > a__pi_pi2ge_pi__preserved_reg_ebx);
00296
00297
00298 static ptr< pi_pi2ge_pi > create (
00299 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_operand >, ulint > > a__pi_pi2ge_pi_base__pi_op2count);
00300
00301
00302
00303
00304 virtual ptr<reflection_list> reflection_get() const;
00305
00306 virtual ptr<field_list_list> field_values_get() const;
00307
00308 protected:
00309
00310 pi_pi2ge_pi (
00311 ptr< ::lestes::backend_v2::intercode::visitor_pi_pi2pi_operands > a__pi_pi2ge_pi_base__pi_operands_getter,
00312 ptr< ::lestes::backend_v2::intercode::visitor_pi_pi2id > a__pi_pi2ge_pi_base__pi_id_getter,
00313 ptr< ::lestes::md::instructions::pi_operand2ge_operand > a__pi_pi2ge_pi_base__pi_op2ge_op_convertor,
00314 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_sp >, srp< ::lestes::backend_v2::intercode::ge_sp > > > a__pi_pi2ge_pi_base__pi_sp2ge_sp,
00315 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_operand >, ulint > > a__pi_pi2ge_pi_base__pi_op2count,
00316 ptr< ::lestes::backend_v2::intercode::ge_sp > a__pi_pi2ge_pi__first_sp,
00317 ptr< ::lestes::backend_v2::intercode::ge_sp > a__pi_pi2ge_pi__last_sp,
00318 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > a__pi_pi2ge_pi__preserved_reg_edi,
00319 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > a__pi_pi2ge_pi__preserved_reg_esi,
00320 ptr< ::lestes::backend_v2::intercode::ge_operand_reg > a__pi_pi2ge_pi__preserved_reg_ebx);
00321
00322
00323 virtual void gc_mark();
00324
00325 private:
00326
00327 srp< ::lestes::backend_v2::intercode::ge_sp > first_sp;
00328
00329 srp< ::lestes::backend_v2::intercode::ge_sp > last_sp;
00330
00331 srp< ::lestes::backend_v2::intercode::ge_operand_reg > preserved_reg_edi;
00332
00333 srp< ::lestes::backend_v2::intercode::ge_operand_reg > preserved_reg_esi;
00334
00335 srp< ::lestes::backend_v2::intercode::ge_operand_reg > preserved_reg_ebx;
00336 static ptr<reflection_list> reflection;
00337
00338 };
00339
00340
00341 end_package(instructions);
00342 end_package(md);
00343 end_package(lestes);
00344
00345 #endif // lestes__md__instructions__pi_pi2ge_pi_g_hh__included