pi_pi2ge_pi_template.mdg.cc

Go to the documentation of this file.
00001 /* This file is generated from machine description */
00002 #include <lestes/md/instructions/instruction_group.g.hh>
00003 #include <lestes/md/instructions/pi_pi2ge_pi_template.g.hh>
00004 #include <lestes/md/instructions/tm_instr.g.hh>
00005 
00006 /*! \file
00007         \author jaz
00008 */
00009 
00010 package(lestes);
00011 package(md);
00012 package(instructions);
00013 
00014 
00015 
00016 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_ADD_1() {
00017         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00018 
00019         ptr<vector<ulint> > instrs;
00020         ptr<vector<ulint> > in_pids;
00021         ptr<vector<ulint> > out_pids;
00022         ptr<vector<ulint> > in_refs;
00023         ptr<vector<ulint> > out_refs;
00024         
00025         instrs = vector<ulint>::create();
00026         in_pids = vector<ulint>::create();
00027         out_pids = vector<ulint>::create();
00028         in_refs = vector<ulint>::create();
00029         out_refs = vector<ulint>::create();
00030 
00031         instrs->push_back(INSTRUCTION_ADD__1);
00032         instrs->push_back(INSTRUCTION_ADD__11);
00033         instrs->push_back(INSTRUCTION_ADD__12);
00034         instrs->push_back(INSTRUCTION_ADD__13);
00035         instrs->push_back(INSTRUCTION_ADD__14);
00036 
00037         //input operands
00038         in_pids->push_back(PIN_1);
00039         in_refs->push_back(I_1);
00040         in_pids->push_back(PIN_2);
00041         in_refs->push_back(I_2);
00042 
00043         //output operands
00044         out_pids->push_back(POUT_1);
00045         out_refs->push_back(O_1);
00046         out_pids->push_back(ADD_O_2);
00047         out_refs->push_back(O_2);
00048 
00049         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00050 
00051 
00052         return pi_pi2ge_pi_template::create(TEM_ADD_1,instr_patts);
00053 }
00054 
00055 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SUB_1() {
00056         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00057 
00058         ptr<vector<ulint> > instrs;
00059         ptr<vector<ulint> > in_pids;
00060         ptr<vector<ulint> > out_pids;
00061         ptr<vector<ulint> > in_refs;
00062         ptr<vector<ulint> > out_refs;
00063         
00064         instrs = vector<ulint>::create();
00065         in_pids = vector<ulint>::create();
00066         out_pids = vector<ulint>::create();
00067         in_refs = vector<ulint>::create();
00068         out_refs = vector<ulint>::create();
00069 
00070         instrs->push_back(INSTRUCTION_SUB__1);
00071         instrs->push_back(INSTRUCTION_SUB__11);
00072         instrs->push_back(INSTRUCTION_SUB__12);
00073 
00074         //input operands
00075         in_pids->push_back(PIN_1);
00076         in_refs->push_back(I_1);
00077         in_pids->push_back(PIN_2);
00078         in_refs->push_back(I_2);
00079 
00080         //output operands
00081         out_pids->push_back(POUT_1);
00082         out_refs->push_back(O_1);
00083         out_pids->push_back(SUB_O_2);
00084         out_refs->push_back(O_2);
00085 
00086         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00087 
00088 
00089         return pi_pi2ge_pi_template::create(TEM_SUB_1,instr_patts);
00090 }
00091 
00092 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_MUL_1() {
00093         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00094 
00095         ptr<vector<ulint> > instrs;
00096         ptr<vector<ulint> > in_pids;
00097         ptr<vector<ulint> > out_pids;
00098         ptr<vector<ulint> > in_refs;
00099         ptr<vector<ulint> > out_refs;
00100         
00101         instrs = vector<ulint>::create();
00102         in_pids = vector<ulint>::create();
00103         out_pids = vector<ulint>::create();
00104         in_refs = vector<ulint>::create();
00105         out_refs = vector<ulint>::create();
00106 
00107         instrs->push_back(INSTRUCTION_MUL__1);
00108         instrs->push_back(INSTRUCTION_IMUL__1);
00109         instrs->push_back(INSTRUCTION_IMUL__2);
00110         instrs->push_back(INSTRUCTION_IMUL__21);
00111         instrs->push_back(INSTRUCTION_IMUL__22);
00112         instrs->push_back(INSTRUCTION_IMUL__23);
00113         instrs->push_back(INSTRUCTION_IMUL__24);
00114 
00115         //input operands
00116         in_pids->push_back(PIN_1);
00117         in_refs->push_back(I_1);
00118         in_pids->push_back(PIN_2);
00119         in_refs->push_back(I_2);
00120 
00121         //output operands
00122         out_pids->push_back(POUT_1);
00123         out_refs->push_back(O_1);
00124         out_pids->push_back(MUL_O_2);
00125         out_refs->push_back(O_2);
00126 
00127         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00128 
00129 
00130         return pi_pi2ge_pi_template::create(TEM_MUL_1,instr_patts);
00131 }
00132 
00133 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_MUL_2() {
00134         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00135 
00136         ptr<vector<ulint> > instrs;
00137         ptr<vector<ulint> > in_pids;
00138         ptr<vector<ulint> > out_pids;
00139         ptr<vector<ulint> > in_refs;
00140         ptr<vector<ulint> > out_refs;
00141         
00142         instrs = vector<ulint>::create();
00143         in_pids = vector<ulint>::create();
00144         out_pids = vector<ulint>::create();
00145         in_refs = vector<ulint>::create();
00146         out_refs = vector<ulint>::create();
00147 
00148         instrs->push_back(INSTRUCTION_MUL__2);
00149         instrs->push_back(INSTRUCTION_MUL__3);
00150 
00151         //input operands
00152         in_pids->push_back(PIN_1);
00153         in_refs->push_back(I_1);
00154         in_pids->push_back(PIN_2);
00155         in_refs->push_back(I_2);
00156 
00157         //output operands
00158         out_pids->push_back(POUT_1);
00159         out_refs->push_back(O_1);
00160         out_pids->push_back(MUL_O_2);
00161         out_refs->push_back(O_2);
00162         out_pids->push_back(MUL_O_3);
00163         out_refs->push_back(O_3);
00164 
00165         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00166 
00167 
00168         return pi_pi2ge_pi_template::create(TEM_MUL_2,instr_patts);
00169 }
00170 
00171 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_DIV_1() {
00172         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00173 
00174         ptr<vector<ulint> > instrs;
00175         ptr<vector<ulint> > in_pids;
00176         ptr<vector<ulint> > out_pids;
00177         ptr<vector<ulint> > in_refs;
00178         ptr<vector<ulint> > out_refs;
00179         
00180         instrs = vector<ulint>::create();
00181         in_pids = vector<ulint>::create();
00182         out_pids = vector<ulint>::create();
00183         in_refs = vector<ulint>::create();
00184         out_refs = vector<ulint>::create();
00185 
00186         instrs->push_back(INSTRUCTION_CBW__1);
00187 
00188         //input operands
00189         in_pids->push_back(PIN_1);
00190         in_refs->push_back(I_1);
00191 
00192         //output operands
00193         out_pids->push_back(CBW_O_1);
00194         out_refs->push_back(O_1);
00195 
00196         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00197 
00198 
00199         instrs = vector<ulint>::create();
00200         in_pids = vector<ulint>::create();
00201         out_pids = vector<ulint>::create();
00202         in_refs = vector<ulint>::create();
00203         out_refs = vector<ulint>::create();
00204 
00205         instrs->push_back(INSTRUCTION_IDIV__1);
00206 
00207         //input operands
00208         in_pids->push_back(CBW_O_1);
00209         in_refs->push_back(I_1);
00210         in_pids->push_back(PIN_2);
00211         in_refs->push_back(I_2);
00212 
00213         //output operands
00214         out_pids->push_back(POUT_1);
00215         out_refs->push_back(O_1);
00216         out_pids->push_back(DIV_O_2);
00217         out_refs->push_back(O_2);
00218         out_pids->push_back(DIV_O_3);
00219         out_refs->push_back(O_3);
00220 
00221         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00222 
00223 
00224         return pi_pi2ge_pi_template::create(TEM_DIV_1,instr_patts);
00225 }
00226 
00227 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_DIV_2() {
00228         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00229 
00230         ptr<vector<ulint> > instrs;
00231         ptr<vector<ulint> > in_pids;
00232         ptr<vector<ulint> > out_pids;
00233         ptr<vector<ulint> > in_refs;
00234         ptr<vector<ulint> > out_refs;
00235         
00236         instrs = vector<ulint>::create();
00237         in_pids = vector<ulint>::create();
00238         out_pids = vector<ulint>::create();
00239         in_refs = vector<ulint>::create();
00240         out_refs = vector<ulint>::create();
00241 
00242         instrs->push_back(INSTRUCTION_CWD__1);
00243         instrs->push_back(INSTRUCTION_CDQ__1);
00244 
00245         //input operands
00246         in_pids->push_back(PIN_1);
00247         in_refs->push_back(I_1);
00248 
00249         //output operands
00250         out_pids->push_back(CWD_O_1);
00251         out_refs->push_back(O_1);
00252         out_pids->push_back(CWD_O_2);
00253         out_refs->push_back(O_2);
00254 
00255         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00256 
00257 
00258         instrs = vector<ulint>::create();
00259         in_pids = vector<ulint>::create();
00260         out_pids = vector<ulint>::create();
00261         in_refs = vector<ulint>::create();
00262         out_refs = vector<ulint>::create();
00263 
00264         instrs->push_back(INSTRUCTION_IDIV__2);
00265         instrs->push_back(INSTRUCTION_IDIV__3);
00266 
00267         //input operands
00268         in_pids->push_back(CWD_O_1);
00269         in_refs->push_back(I_1);
00270         in_pids->push_back(CWD_O_2);
00271         in_refs->push_back(I_2);
00272         in_pids->push_back(PIN_2);
00273         in_refs->push_back(I_3);
00274 
00275         //output operands
00276         out_pids->push_back(POUT_1);
00277         out_refs->push_back(O_1);
00278         out_pids->push_back(DIV_O_2);
00279         out_refs->push_back(O_2);
00280         out_pids->push_back(DIV_O_3);
00281         out_refs->push_back(O_3);
00282 
00283         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00284 
00285 
00286         return pi_pi2ge_pi_template::create(TEM_DIV_2,instr_patts);
00287 }
00288 
00289 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_DIV_3() {
00290         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00291 
00292         ptr<vector<ulint> > instrs;
00293         ptr<vector<ulint> > in_pids;
00294         ptr<vector<ulint> > out_pids;
00295         ptr<vector<ulint> > in_refs;
00296         ptr<vector<ulint> > out_refs;
00297         
00298         instrs = vector<ulint>::create();
00299         in_pids = vector<ulint>::create();
00300         out_pids = vector<ulint>::create();
00301         in_refs = vector<ulint>::create();
00302         out_refs = vector<ulint>::create();
00303 
00304         instrs->push_back(INSTRUCTION_NULLAH__1);
00305         instrs->push_back(INSTRUCTION_NULLDX__1);
00306         instrs->push_back(INSTRUCTION_NULLEDX__1);
00307 
00308         //input operands
00309 
00310         //output operands
00311         out_pids->push_back(NULL_O_1);
00312         out_refs->push_back(O_1);
00313 
00314         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00315 
00316 
00317         instrs = vector<ulint>::create();
00318         in_pids = vector<ulint>::create();
00319         out_pids = vector<ulint>::create();
00320         in_refs = vector<ulint>::create();
00321         out_refs = vector<ulint>::create();
00322 
00323         instrs->push_back(INSTRUCTION_DIV__1);
00324         instrs->push_back(INSTRUCTION_DIV__2);
00325         instrs->push_back(INSTRUCTION_DIV__3);
00326 
00327         //input operands
00328         in_pids->push_back(NULL_O_1);
00329         in_refs->push_back(I_1);
00330         in_pids->push_back(PIN_1);
00331         in_refs->push_back(I_2);
00332         in_pids->push_back(PIN_2);
00333         in_refs->push_back(I_3);
00334 
00335         //output operands
00336         out_pids->push_back(POUT_1);
00337         out_refs->push_back(O_1);
00338         out_pids->push_back(DIV_O_2);
00339         out_refs->push_back(O_2);
00340         out_pids->push_back(DIV_O_3);
00341         out_refs->push_back(O_3);
00342 
00343         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00344 
00345 
00346         return pi_pi2ge_pi_template::create(TEM_DIV_3,instr_patts);
00347 }
00348 
00349 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_MOD_1() {
00350         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00351 
00352         ptr<vector<ulint> > instrs;
00353         ptr<vector<ulint> > in_pids;
00354         ptr<vector<ulint> > out_pids;
00355         ptr<vector<ulint> > in_refs;
00356         ptr<vector<ulint> > out_refs;
00357         
00358         instrs = vector<ulint>::create();
00359         in_pids = vector<ulint>::create();
00360         out_pids = vector<ulint>::create();
00361         in_refs = vector<ulint>::create();
00362         out_refs = vector<ulint>::create();
00363 
00364         instrs->push_back(INSTRUCTION_CBW__1);
00365 
00366         //input operands
00367         in_pids->push_back(PIN_1);
00368         in_refs->push_back(I_1);
00369 
00370         //output operands
00371         out_pids->push_back(CBW_O_1);
00372         out_refs->push_back(O_1);
00373 
00374         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00375 
00376 
00377         instrs = vector<ulint>::create();
00378         in_pids = vector<ulint>::create();
00379         out_pids = vector<ulint>::create();
00380         in_refs = vector<ulint>::create();
00381         out_refs = vector<ulint>::create();
00382 
00383         instrs->push_back(INSTRUCTION_IDIV__1);
00384 
00385         //input operands
00386         in_pids->push_back(CBW_O_1);
00387         in_refs->push_back(I_1);
00388         in_pids->push_back(PIN_2);
00389         in_refs->push_back(I_2);
00390 
00391         //output operands
00392         out_pids->push_back(DIV_O_1);
00393         out_refs->push_back(O_1);
00394         out_pids->push_back(POUT_1);
00395         out_refs->push_back(O_2);
00396         out_pids->push_back(DIV_O_3);
00397         out_refs->push_back(O_3);
00398 
00399         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00400 
00401 
00402         return pi_pi2ge_pi_template::create(TEM_MOD_1,instr_patts);
00403 }
00404 
00405 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_MOD_2() {
00406         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00407 
00408         ptr<vector<ulint> > instrs;
00409         ptr<vector<ulint> > in_pids;
00410         ptr<vector<ulint> > out_pids;
00411         ptr<vector<ulint> > in_refs;
00412         ptr<vector<ulint> > out_refs;
00413         
00414         instrs = vector<ulint>::create();
00415         in_pids = vector<ulint>::create();
00416         out_pids = vector<ulint>::create();
00417         in_refs = vector<ulint>::create();
00418         out_refs = vector<ulint>::create();
00419 
00420         instrs->push_back(INSTRUCTION_CWD__1);
00421         instrs->push_back(INSTRUCTION_CDQ__1);
00422 
00423         //input operands
00424         in_pids->push_back(PIN_1);
00425         in_refs->push_back(I_1);
00426 
00427         //output operands
00428         out_pids->push_back(CWD_O_1);
00429         out_refs->push_back(O_1);
00430         out_pids->push_back(CWD_O_2);
00431         out_refs->push_back(O_2);
00432 
00433         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00434 
00435 
00436         instrs = vector<ulint>::create();
00437         in_pids = vector<ulint>::create();
00438         out_pids = vector<ulint>::create();
00439         in_refs = vector<ulint>::create();
00440         out_refs = vector<ulint>::create();
00441 
00442         instrs->push_back(INSTRUCTION_IDIV__2);
00443         instrs->push_back(INSTRUCTION_IDIV__3);
00444 
00445         //input operands
00446         in_pids->push_back(CWD_O_1);
00447         in_refs->push_back(I_1);
00448         in_pids->push_back(CWD_O_2);
00449         in_refs->push_back(I_2);
00450         in_pids->push_back(PIN_2);
00451         in_refs->push_back(I_3);
00452 
00453         //output operands
00454         out_pids->push_back(DIV_O_1);
00455         out_refs->push_back(O_1);
00456         out_pids->push_back(POUT_1);
00457         out_refs->push_back(O_2);
00458         out_pids->push_back(DIV_O_3);
00459         out_refs->push_back(O_3);
00460 
00461         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00462 
00463 
00464         return pi_pi2ge_pi_template::create(TEM_MOD_2,instr_patts);
00465 }
00466 
00467 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_MOD_3() {
00468         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00469 
00470         ptr<vector<ulint> > instrs;
00471         ptr<vector<ulint> > in_pids;
00472         ptr<vector<ulint> > out_pids;
00473         ptr<vector<ulint> > in_refs;
00474         ptr<vector<ulint> > out_refs;
00475         
00476         instrs = vector<ulint>::create();
00477         in_pids = vector<ulint>::create();
00478         out_pids = vector<ulint>::create();
00479         in_refs = vector<ulint>::create();
00480         out_refs = vector<ulint>::create();
00481 
00482         instrs->push_back(INSTRUCTION_NULLAH__1);
00483         instrs->push_back(INSTRUCTION_NULLDX__1);
00484         instrs->push_back(INSTRUCTION_NULLEDX__1);
00485 
00486         //input operands
00487 
00488         //output operands
00489         out_pids->push_back(NULL_O_1);
00490         out_refs->push_back(O_1);
00491 
00492         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00493 
00494 
00495         instrs = vector<ulint>::create();
00496         in_pids = vector<ulint>::create();
00497         out_pids = vector<ulint>::create();
00498         in_refs = vector<ulint>::create();
00499         out_refs = vector<ulint>::create();
00500 
00501         instrs->push_back(INSTRUCTION_DIV__1);
00502         instrs->push_back(INSTRUCTION_DIV__2);
00503         instrs->push_back(INSTRUCTION_DIV__3);
00504 
00505         //input operands
00506         in_pids->push_back(NULL_O_1);
00507         in_refs->push_back(I_1);
00508         in_pids->push_back(PIN_1);
00509         in_refs->push_back(I_2);
00510         in_pids->push_back(PIN_2);
00511         in_refs->push_back(I_3);
00512 
00513         //output operands
00514         out_pids->push_back(DIV_O_1);
00515         out_refs->push_back(O_1);
00516         out_pids->push_back(POUT_1);
00517         out_refs->push_back(O_2);
00518         out_pids->push_back(DIV_O_3);
00519         out_refs->push_back(O_3);
00520 
00521         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00522 
00523 
00524         return pi_pi2ge_pi_template::create(TEM_MOD_3,instr_patts);
00525 }
00526 
00527 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REM_1() {
00528         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00529 
00530         ptr<vector<ulint> > instrs;
00531         ptr<vector<ulint> > in_pids;
00532         ptr<vector<ulint> > out_pids;
00533         ptr<vector<ulint> > in_refs;
00534         ptr<vector<ulint> > out_refs;
00535         
00536         instrs = vector<ulint>::create();
00537         in_pids = vector<ulint>::create();
00538         out_pids = vector<ulint>::create();
00539         in_refs = vector<ulint>::create();
00540         out_refs = vector<ulint>::create();
00541 
00542         instrs->push_back(INSTRUCTION_CBW__1);
00543 
00544         //input operands
00545         in_pids->push_back(PIN_1);
00546         in_refs->push_back(I_1);
00547 
00548         //output operands
00549         out_pids->push_back(CBW_O_1);
00550         out_refs->push_back(O_1);
00551 
00552         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00553 
00554 
00555         instrs = vector<ulint>::create();
00556         in_pids = vector<ulint>::create();
00557         out_pids = vector<ulint>::create();
00558         in_refs = vector<ulint>::create();
00559         out_refs = vector<ulint>::create();
00560 
00561         instrs->push_back(INSTRUCTION_IDIV__1);
00562 
00563         //input operands
00564         in_pids->push_back(CBW_O_1);
00565         in_refs->push_back(I_1);
00566         in_pids->push_back(PIN_2);
00567         in_refs->push_back(I_2);
00568 
00569         //output operands
00570         out_pids->push_back(DIV_O_1);
00571         out_refs->push_back(O_1);
00572         out_pids->push_back(POUT_1);
00573         out_refs->push_back(O_2);
00574         out_pids->push_back(DIV_O_3);
00575         out_refs->push_back(O_3);
00576 
00577         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00578 
00579 
00580         return pi_pi2ge_pi_template::create(TEM_REM_1,instr_patts);
00581 }
00582 
00583 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REM_2() {
00584         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00585 
00586         ptr<vector<ulint> > instrs;
00587         ptr<vector<ulint> > in_pids;
00588         ptr<vector<ulint> > out_pids;
00589         ptr<vector<ulint> > in_refs;
00590         ptr<vector<ulint> > out_refs;
00591         
00592         instrs = vector<ulint>::create();
00593         in_pids = vector<ulint>::create();
00594         out_pids = vector<ulint>::create();
00595         in_refs = vector<ulint>::create();
00596         out_refs = vector<ulint>::create();
00597 
00598         instrs->push_back(INSTRUCTION_CWD__1);
00599         instrs->push_back(INSTRUCTION_CDQ__1);
00600 
00601         //input operands
00602         in_pids->push_back(PIN_1);
00603         in_refs->push_back(I_1);
00604 
00605         //output operands
00606         out_pids->push_back(CWD_O_1);
00607         out_refs->push_back(O_1);
00608         out_pids->push_back(CWD_O_2);
00609         out_refs->push_back(O_2);
00610 
00611         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00612 
00613 
00614         instrs = vector<ulint>::create();
00615         in_pids = vector<ulint>::create();
00616         out_pids = vector<ulint>::create();
00617         in_refs = vector<ulint>::create();
00618         out_refs = vector<ulint>::create();
00619 
00620         instrs->push_back(INSTRUCTION_IDIV__2);
00621         instrs->push_back(INSTRUCTION_IDIV__3);
00622 
00623         //input operands
00624         in_pids->push_back(CWD_O_1);
00625         in_refs->push_back(I_1);
00626         in_pids->push_back(CWD_O_2);
00627         in_refs->push_back(I_2);
00628         in_pids->push_back(PIN_2);
00629         in_refs->push_back(I_3);
00630 
00631         //output operands
00632         out_pids->push_back(DIV_O_1);
00633         out_refs->push_back(O_1);
00634         out_pids->push_back(POUT_1);
00635         out_refs->push_back(O_2);
00636         out_pids->push_back(DIV_O_3);
00637         out_refs->push_back(O_3);
00638 
00639         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00640 
00641 
00642         return pi_pi2ge_pi_template::create(TEM_REM_2,instr_patts);
00643 }
00644 
00645 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REM_3() {
00646         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00647 
00648         ptr<vector<ulint> > instrs;
00649         ptr<vector<ulint> > in_pids;
00650         ptr<vector<ulint> > out_pids;
00651         ptr<vector<ulint> > in_refs;
00652         ptr<vector<ulint> > out_refs;
00653         
00654         instrs = vector<ulint>::create();
00655         in_pids = vector<ulint>::create();
00656         out_pids = vector<ulint>::create();
00657         in_refs = vector<ulint>::create();
00658         out_refs = vector<ulint>::create();
00659 
00660         instrs->push_back(INSTRUCTION_NULLAH__1);
00661         instrs->push_back(INSTRUCTION_NULLDX__1);
00662         instrs->push_back(INSTRUCTION_NULLEDX__1);
00663 
00664         //input operands
00665 
00666         //output operands
00667         out_pids->push_back(NULL_O_1);
00668         out_refs->push_back(O_1);
00669 
00670         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00671 
00672 
00673         instrs = vector<ulint>::create();
00674         in_pids = vector<ulint>::create();
00675         out_pids = vector<ulint>::create();
00676         in_refs = vector<ulint>::create();
00677         out_refs = vector<ulint>::create();
00678 
00679         instrs->push_back(INSTRUCTION_DIV__1);
00680         instrs->push_back(INSTRUCTION_DIV__2);
00681         instrs->push_back(INSTRUCTION_DIV__3);
00682 
00683         //input operands
00684         in_pids->push_back(NULL_O_1);
00685         in_refs->push_back(I_1);
00686         in_pids->push_back(PIN_1);
00687         in_refs->push_back(I_2);
00688         in_pids->push_back(PIN_2);
00689         in_refs->push_back(I_3);
00690 
00691         //output operands
00692         out_pids->push_back(DIV_O_1);
00693         out_refs->push_back(O_1);
00694         out_pids->push_back(POUT_1);
00695         out_refs->push_back(O_2);
00696         out_pids->push_back(DIV_O_3);
00697         out_refs->push_back(O_3);
00698 
00699         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00700 
00701 
00702         return pi_pi2ge_pi_template::create(TEM_REM_3,instr_patts);
00703 }
00704 
00705 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_NEG_1() {
00706         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00707 
00708         ptr<vector<ulint> > instrs;
00709         ptr<vector<ulint> > in_pids;
00710         ptr<vector<ulint> > out_pids;
00711         ptr<vector<ulint> > in_refs;
00712         ptr<vector<ulint> > out_refs;
00713         
00714         instrs = vector<ulint>::create();
00715         in_pids = vector<ulint>::create();
00716         out_pids = vector<ulint>::create();
00717         in_refs = vector<ulint>::create();
00718         out_refs = vector<ulint>::create();
00719 
00720         instrs->push_back(INSTRUCTION_NEG__1);
00721 
00722         //input operands
00723         in_pids->push_back(PIN_1);
00724         in_refs->push_back(I_1);
00725 
00726         //output operands
00727         out_pids->push_back(POUT_1);
00728         out_refs->push_back(O_1);
00729         out_pids->push_back(NEG_O_2);
00730         out_refs->push_back(O_2);
00731 
00732         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00733 
00734 
00735         return pi_pi2ge_pi_template::create(TEM_NEG_1,instr_patts);
00736 }
00737 
00738 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_GAT_1() {
00739         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00740 
00741         ptr<vector<ulint> > instrs;
00742         ptr<vector<ulint> > in_pids;
00743         ptr<vector<ulint> > out_pids;
00744         ptr<vector<ulint> > in_refs;
00745         ptr<vector<ulint> > out_refs;
00746         
00747         instrs = vector<ulint>::create();
00748         in_pids = vector<ulint>::create();
00749         out_pids = vector<ulint>::create();
00750         in_refs = vector<ulint>::create();
00751         out_refs = vector<ulint>::create();
00752 
00753         instrs->push_back(INSTRUCTION_MOV__1);
00754 
00755         //input operands
00756         in_pids->push_back(PIN_1);
00757         in_refs->push_back(I_1);
00758 
00759         //output operands
00760         out_pids->push_back(POUT_1);
00761         out_refs->push_back(O_1);
00762 
00763         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00764 
00765 
00766         return pi_pi2ge_pi_template::create(TEM_GAT_1,instr_patts);
00767 }
00768 
00769 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SHL_1() {
00770         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00771 
00772         ptr<vector<ulint> > instrs;
00773         ptr<vector<ulint> > in_pids;
00774         ptr<vector<ulint> > out_pids;
00775         ptr<vector<ulint> > in_refs;
00776         ptr<vector<ulint> > out_refs;
00777         
00778         instrs = vector<ulint>::create();
00779         in_pids = vector<ulint>::create();
00780         out_pids = vector<ulint>::create();
00781         in_refs = vector<ulint>::create();
00782         out_refs = vector<ulint>::create();
00783 
00784         instrs->push_back(INSTRUCTION_CONVERT__1);
00785 
00786         //input operands
00787         in_pids->push_back(PIN_2);
00788         in_refs->push_back(I_1);
00789 
00790         //output operands
00791         out_pids->push_back(CVT_O_1);
00792         out_refs->push_back(O_1);
00793 
00794         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00795 
00796 
00797         instrs = vector<ulint>::create();
00798         in_pids = vector<ulint>::create();
00799         out_pids = vector<ulint>::create();
00800         in_refs = vector<ulint>::create();
00801         out_refs = vector<ulint>::create();
00802 
00803         instrs->push_back(INSTRUCTION_SHL__1);
00804 
00805         //input operands
00806         in_pids->push_back(PIN_1);
00807         in_refs->push_back(I_1);
00808         in_pids->push_back(CVT_O_1);
00809         in_refs->push_back(I_2);
00810 
00811         //output operands
00812         out_pids->push_back(POUT_1);
00813         out_refs->push_back(O_1);
00814         out_pids->push_back(SHL_O_2);
00815         out_refs->push_back(O_2);
00816 
00817         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00818 
00819 
00820         return pi_pi2ge_pi_template::create(TEM_SHL_1,instr_patts);
00821 }
00822 
00823 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SHR_1() {
00824         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00825 
00826         ptr<vector<ulint> > instrs;
00827         ptr<vector<ulint> > in_pids;
00828         ptr<vector<ulint> > out_pids;
00829         ptr<vector<ulint> > in_refs;
00830         ptr<vector<ulint> > out_refs;
00831         
00832         instrs = vector<ulint>::create();
00833         in_pids = vector<ulint>::create();
00834         out_pids = vector<ulint>::create();
00835         in_refs = vector<ulint>::create();
00836         out_refs = vector<ulint>::create();
00837 
00838         instrs->push_back(INSTRUCTION_CONVERT__1);
00839 
00840         //input operands
00841         in_pids->push_back(PIN_2);
00842         in_refs->push_back(I_1);
00843 
00844         //output operands
00845         out_pids->push_back(CVT_O_1);
00846         out_refs->push_back(O_1);
00847 
00848         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00849 
00850 
00851         instrs = vector<ulint>::create();
00852         in_pids = vector<ulint>::create();
00853         out_pids = vector<ulint>::create();
00854         in_refs = vector<ulint>::create();
00855         out_refs = vector<ulint>::create();
00856 
00857         instrs->push_back(INSTRUCTION_SHR__1);
00858 
00859         //input operands
00860         in_pids->push_back(PIN_1);
00861         in_refs->push_back(I_1);
00862         in_pids->push_back(CVT_O_1);
00863         in_refs->push_back(I_2);
00864 
00865         //output operands
00866         out_pids->push_back(POUT_1);
00867         out_refs->push_back(O_1);
00868         out_pids->push_back(SHR_O_2);
00869         out_refs->push_back(O_2);
00870 
00871         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00872 
00873 
00874         return pi_pi2ge_pi_template::create(TEM_SHR_1,instr_patts);
00875 }
00876 
00877 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SAL_1() {
00878         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00879 
00880         ptr<vector<ulint> > instrs;
00881         ptr<vector<ulint> > in_pids;
00882         ptr<vector<ulint> > out_pids;
00883         ptr<vector<ulint> > in_refs;
00884         ptr<vector<ulint> > out_refs;
00885         
00886         instrs = vector<ulint>::create();
00887         in_pids = vector<ulint>::create();
00888         out_pids = vector<ulint>::create();
00889         in_refs = vector<ulint>::create();
00890         out_refs = vector<ulint>::create();
00891 
00892         instrs->push_back(INSTRUCTION_CONVERT__1);
00893 
00894         //input operands
00895         in_pids->push_back(PIN_2);
00896         in_refs->push_back(I_1);
00897 
00898         //output operands
00899         out_pids->push_back(CVT_O_1);
00900         out_refs->push_back(O_1);
00901 
00902         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00903 
00904 
00905         instrs = vector<ulint>::create();
00906         in_pids = vector<ulint>::create();
00907         out_pids = vector<ulint>::create();
00908         in_refs = vector<ulint>::create();
00909         out_refs = vector<ulint>::create();
00910 
00911         instrs->push_back(INSTRUCTION_SAL__1);
00912 
00913         //input operands
00914         in_pids->push_back(PIN_1);
00915         in_refs->push_back(I_1);
00916         in_pids->push_back(CVT_O_1);
00917         in_refs->push_back(I_2);
00918 
00919         //output operands
00920         out_pids->push_back(POUT_1);
00921         out_refs->push_back(O_1);
00922         out_pids->push_back(SAL_O_2);
00923         out_refs->push_back(O_2);
00924 
00925         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00926 
00927 
00928         return pi_pi2ge_pi_template::create(TEM_SAL_1,instr_patts);
00929 }
00930 
00931 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SAR_1() {
00932         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00933 
00934         ptr<vector<ulint> > instrs;
00935         ptr<vector<ulint> > in_pids;
00936         ptr<vector<ulint> > out_pids;
00937         ptr<vector<ulint> > in_refs;
00938         ptr<vector<ulint> > out_refs;
00939         
00940         instrs = vector<ulint>::create();
00941         in_pids = vector<ulint>::create();
00942         out_pids = vector<ulint>::create();
00943         in_refs = vector<ulint>::create();
00944         out_refs = vector<ulint>::create();
00945 
00946         instrs->push_back(INSTRUCTION_CONVERT__1);
00947 
00948         //input operands
00949         in_pids->push_back(PIN_2);
00950         in_refs->push_back(I_1);
00951 
00952         //output operands
00953         out_pids->push_back(CVT_O_1);
00954         out_refs->push_back(O_1);
00955 
00956         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00957 
00958 
00959         instrs = vector<ulint>::create();
00960         in_pids = vector<ulint>::create();
00961         out_pids = vector<ulint>::create();
00962         in_refs = vector<ulint>::create();
00963         out_refs = vector<ulint>::create();
00964 
00965         instrs->push_back(INSTRUCTION_SAR__1);
00966 
00967         //input operands
00968         in_pids->push_back(PIN_1);
00969         in_refs->push_back(I_1);
00970         in_pids->push_back(CVT_O_1);
00971         in_refs->push_back(I_2);
00972 
00973         //output operands
00974         out_pids->push_back(POUT_1);
00975         out_refs->push_back(O_1);
00976         out_pids->push_back(SAR_O_2);
00977         out_refs->push_back(O_2);
00978 
00979         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
00980 
00981 
00982         return pi_pi2ge_pi_template::create(TEM_SAR_1,instr_patts);
00983 }
00984 
00985 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BAND_1() {
00986         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
00987 
00988         ptr<vector<ulint> > instrs;
00989         ptr<vector<ulint> > in_pids;
00990         ptr<vector<ulint> > out_pids;
00991         ptr<vector<ulint> > in_refs;
00992         ptr<vector<ulint> > out_refs;
00993         
00994         instrs = vector<ulint>::create();
00995         in_pids = vector<ulint>::create();
00996         out_pids = vector<ulint>::create();
00997         in_refs = vector<ulint>::create();
00998         out_refs = vector<ulint>::create();
00999 
01000         instrs->push_back(INSTRUCTION_AND__1);
01001 
01002         //input operands
01003         in_pids->push_back(PIN_1);
01004         in_refs->push_back(I_1);
01005         in_pids->push_back(PIN_2);
01006         in_refs->push_back(I_2);
01007 
01008         //output operands
01009         out_pids->push_back(POUT_1);
01010         out_refs->push_back(O_1);
01011         out_pids->push_back(AND_O_2);
01012         out_refs->push_back(O_2);
01013 
01014         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01015 
01016 
01017         return pi_pi2ge_pi_template::create(TEM_BAND_1,instr_patts);
01018 }
01019 
01020 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BOR_1() {
01021         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01022 
01023         ptr<vector<ulint> > instrs;
01024         ptr<vector<ulint> > in_pids;
01025         ptr<vector<ulint> > out_pids;
01026         ptr<vector<ulint> > in_refs;
01027         ptr<vector<ulint> > out_refs;
01028         
01029         instrs = vector<ulint>::create();
01030         in_pids = vector<ulint>::create();
01031         out_pids = vector<ulint>::create();
01032         in_refs = vector<ulint>::create();
01033         out_refs = vector<ulint>::create();
01034 
01035         instrs->push_back(INSTRUCTION_OR__1);
01036 
01037         //input operands
01038         in_pids->push_back(PIN_1);
01039         in_refs->push_back(I_1);
01040         in_pids->push_back(PIN_2);
01041         in_refs->push_back(I_2);
01042 
01043         //output operands
01044         out_pids->push_back(POUT_1);
01045         out_refs->push_back(O_1);
01046         out_pids->push_back(OR_O_2);
01047         out_refs->push_back(O_2);
01048 
01049         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01050 
01051 
01052         return pi_pi2ge_pi_template::create(TEM_BOR_1,instr_patts);
01053 }
01054 
01055 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BXOR_1() {
01056         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01057 
01058         ptr<vector<ulint> > instrs;
01059         ptr<vector<ulint> > in_pids;
01060         ptr<vector<ulint> > out_pids;
01061         ptr<vector<ulint> > in_refs;
01062         ptr<vector<ulint> > out_refs;
01063         
01064         instrs = vector<ulint>::create();
01065         in_pids = vector<ulint>::create();
01066         out_pids = vector<ulint>::create();
01067         in_refs = vector<ulint>::create();
01068         out_refs = vector<ulint>::create();
01069 
01070         instrs->push_back(INSTRUCTION_XOR__1);
01071 
01072         //input operands
01073         in_pids->push_back(PIN_1);
01074         in_refs->push_back(I_1);
01075         in_pids->push_back(PIN_2);
01076         in_refs->push_back(I_2);
01077 
01078         //output operands
01079         out_pids->push_back(POUT_1);
01080         out_refs->push_back(O_1);
01081         out_pids->push_back(XOR_O_2);
01082         out_refs->push_back(O_2);
01083 
01084         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01085 
01086 
01087         return pi_pi2ge_pi_template::create(TEM_BXOR_1,instr_patts);
01088 }
01089 
01090 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BNOT_1() {
01091         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01092 
01093         ptr<vector<ulint> > instrs;
01094         ptr<vector<ulint> > in_pids;
01095         ptr<vector<ulint> > out_pids;
01096         ptr<vector<ulint> > in_refs;
01097         ptr<vector<ulint> > out_refs;
01098         
01099         instrs = vector<ulint>::create();
01100         in_pids = vector<ulint>::create();
01101         out_pids = vector<ulint>::create();
01102         in_refs = vector<ulint>::create();
01103         out_refs = vector<ulint>::create();
01104 
01105         instrs->push_back(INSTRUCTION_NOT__1);
01106 
01107         //input operands
01108         in_pids->push_back(PIN_1);
01109         in_refs->push_back(I_1);
01110 
01111         //output operands
01112         out_pids->push_back(POUT_1);
01113         out_refs->push_back(O_1);
01114 
01115         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01116 
01117 
01118         return pi_pi2ge_pi_template::create(TEM_BNOT_1,instr_patts);
01119 }
01120 
01121 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LAND_1() {
01122         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01123 
01124         ptr<vector<ulint> > instrs;
01125         ptr<vector<ulint> > in_pids;
01126         ptr<vector<ulint> > out_pids;
01127         ptr<vector<ulint> > in_refs;
01128         ptr<vector<ulint> > out_refs;
01129         
01130         instrs = vector<ulint>::create();
01131         in_pids = vector<ulint>::create();
01132         out_pids = vector<ulint>::create();
01133         in_refs = vector<ulint>::create();
01134         out_refs = vector<ulint>::create();
01135 
01136         instrs->push_back(INSTRUCTION_AND__1);
01137 
01138         //input operands
01139         in_pids->push_back(PIN_1);
01140         in_refs->push_back(I_1);
01141         in_pids->push_back(PIN_2);
01142         in_refs->push_back(I_2);
01143 
01144         //output operands
01145         out_pids->push_back(POUT_1);
01146         out_refs->push_back(O_1);
01147         out_pids->push_back(AND_O_2);
01148         out_refs->push_back(O_2);
01149 
01150         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01151 
01152 
01153         return pi_pi2ge_pi_template::create(TEM_LAND_1,instr_patts);
01154 }
01155 
01156 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LOR_1() {
01157         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01158 
01159         ptr<vector<ulint> > instrs;
01160         ptr<vector<ulint> > in_pids;
01161         ptr<vector<ulint> > out_pids;
01162         ptr<vector<ulint> > in_refs;
01163         ptr<vector<ulint> > out_refs;
01164         
01165         instrs = vector<ulint>::create();
01166         in_pids = vector<ulint>::create();
01167         out_pids = vector<ulint>::create();
01168         in_refs = vector<ulint>::create();
01169         out_refs = vector<ulint>::create();
01170 
01171         instrs->push_back(INSTRUCTION_OR__1);
01172 
01173         //input operands
01174         in_pids->push_back(PIN_1);
01175         in_refs->push_back(I_1);
01176         in_pids->push_back(PIN_2);
01177         in_refs->push_back(I_2);
01178 
01179         //output operands
01180         out_pids->push_back(POUT_1);
01181         out_refs->push_back(O_1);
01182         out_pids->push_back(OR_O_2);
01183         out_refs->push_back(O_2);
01184 
01185         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01186 
01187 
01188         return pi_pi2ge_pi_template::create(TEM_LOR_1,instr_patts);
01189 }
01190 
01191 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LXOR_1() {
01192         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01193 
01194         ptr<vector<ulint> > instrs;
01195         ptr<vector<ulint> > in_pids;
01196         ptr<vector<ulint> > out_pids;
01197         ptr<vector<ulint> > in_refs;
01198         ptr<vector<ulint> > out_refs;
01199         
01200         instrs = vector<ulint>::create();
01201         in_pids = vector<ulint>::create();
01202         out_pids = vector<ulint>::create();
01203         in_refs = vector<ulint>::create();
01204         out_refs = vector<ulint>::create();
01205 
01206         instrs->push_back(INSTRUCTION_XOR__1);
01207 
01208         //input operands
01209         in_pids->push_back(PIN_1);
01210         in_refs->push_back(I_1);
01211         in_pids->push_back(PIN_2);
01212         in_refs->push_back(I_2);
01213 
01214         //output operands
01215         out_pids->push_back(POUT_1);
01216         out_refs->push_back(O_1);
01217         out_pids->push_back(XOR_O_2);
01218         out_refs->push_back(O_2);
01219 
01220         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01221 
01222 
01223         return pi_pi2ge_pi_template::create(TEM_LXOR_1,instr_patts);
01224 }
01225 
01226 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LNOT_1() {
01227         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01228 
01229         ptr<vector<ulint> > instrs;
01230         ptr<vector<ulint> > in_pids;
01231         ptr<vector<ulint> > out_pids;
01232         ptr<vector<ulint> > in_refs;
01233         ptr<vector<ulint> > out_refs;
01234         
01235         instrs = vector<ulint>::create();
01236         in_pids = vector<ulint>::create();
01237         out_pids = vector<ulint>::create();
01238         in_refs = vector<ulint>::create();
01239         out_refs = vector<ulint>::create();
01240 
01241         instrs->push_back(INSTRUCTION_XOR__2);
01242 
01243         //input operands
01244         in_pids->push_back(PIN_1);
01245         in_refs->push_back(I_1);
01246 
01247         //output operands
01248         out_pids->push_back(POUT_1);
01249         out_refs->push_back(O_1);
01250         out_pids->push_back(XOR_O_2);
01251         out_refs->push_back(O_2);
01252 
01253         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01254 
01255 
01256         return pi_pi2ge_pi_template::create(TEM_LNOT_1,instr_patts);
01257 }
01258 
01259 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_CVT_1() {
01260         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01261 
01262         ptr<vector<ulint> > instrs;
01263         ptr<vector<ulint> > in_pids;
01264         ptr<vector<ulint> > out_pids;
01265         ptr<vector<ulint> > in_refs;
01266         ptr<vector<ulint> > out_refs;
01267         
01268         instrs = vector<ulint>::create();
01269         in_pids = vector<ulint>::create();
01270         out_pids = vector<ulint>::create();
01271         in_refs = vector<ulint>::create();
01272         out_refs = vector<ulint>::create();
01273 
01274         instrs->push_back(INSTRUCTION_CONVERT__1);
01275         instrs->push_back(INSTRUCTION_CONVERT__5);
01276         instrs->push_back(INSTRUCTION_CONVERT__2);
01277         instrs->push_back(INSTRUCTION_CONVERT__3);
01278         instrs->push_back(INSTRUCTION_MOVZX__1);
01279         instrs->push_back(INSTRUCTION_MOVZX__2);
01280         instrs->push_back(INSTRUCTION_MOVZX__3);
01281         instrs->push_back(INSTRUCTION_MOVZX__4);
01282         instrs->push_back(INSTRUCTION_MOVZX__5);
01283         instrs->push_back(INSTRUCTION_MOVZX__6);
01284         instrs->push_back(INSTRUCTION_MOVSX__1);
01285         instrs->push_back(INSTRUCTION_MOVSX__11);
01286         instrs->push_back(INSTRUCTION_MOVSX__2);
01287         instrs->push_back(INSTRUCTION_MOVSX__21);
01288 
01289         //input operands
01290         in_pids->push_back(PIN_1);
01291         in_refs->push_back(I_1);
01292 
01293         //output operands
01294         out_pids->push_back(POUT_1);
01295         out_refs->push_back(O_1);
01296 
01297         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01298 
01299 
01300         return pi_pi2ge_pi_template::create(TEM_CVT_1,instr_patts);
01301 }
01302 
01303 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_CVT_2() {
01304         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01305 
01306         ptr<vector<ulint> > instrs;
01307         ptr<vector<ulint> > in_pids;
01308         ptr<vector<ulint> > out_pids;
01309         ptr<vector<ulint> > in_refs;
01310         ptr<vector<ulint> > out_refs;
01311         
01312         instrs = vector<ulint>::create();
01313         in_pids = vector<ulint>::create();
01314         out_pids = vector<ulint>::create();
01315         in_refs = vector<ulint>::create();
01316         out_refs = vector<ulint>::create();
01317 
01318         instrs->push_back(INSTRUCTION_CMP__1);
01319 
01320         //input operands
01321         in_pids->push_back(PIN_1);
01322         in_refs->push_back(I_1);
01323 
01324         //output operands
01325         out_pids->push_back(CMP_O_1);
01326         out_refs->push_back(O_1);
01327 
01328         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01329 
01330 
01331         instrs = vector<ulint>::create();
01332         in_pids = vector<ulint>::create();
01333         out_pids = vector<ulint>::create();
01334         in_refs = vector<ulint>::create();
01335         out_refs = vector<ulint>::create();
01336 
01337         instrs->push_back(INSTRUCTION_SETNZ__1);
01338 
01339         //input operands
01340         in_pids->push_back(CMP_O_1);
01341         in_refs->push_back(I_1);
01342 
01343         //output operands
01344         out_pids->push_back(POUT_1);
01345         out_refs->push_back(O_1);
01346 
01347         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01348 
01349 
01350         return pi_pi2ge_pi_template::create(TEM_CVT_2,instr_patts);
01351 }
01352 
01353 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_CVT_3() {
01354         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01355 
01356         ptr<vector<ulint> > instrs;
01357         ptr<vector<ulint> > in_pids;
01358         ptr<vector<ulint> > out_pids;
01359         ptr<vector<ulint> > in_refs;
01360         ptr<vector<ulint> > out_refs;
01361         
01362         instrs = vector<ulint>::create();
01363         in_pids = vector<ulint>::create();
01364         out_pids = vector<ulint>::create();
01365         in_refs = vector<ulint>::create();
01366         out_refs = vector<ulint>::create();
01367 
01368         instrs->push_back(INSTRUCTION_AND__2);
01369 
01370         //input operands
01371         in_pids->push_back(PIN_1);
01372         in_refs->push_back(I_1);
01373 
01374         //output operands
01375         out_pids->push_back(POUT_1);
01376         out_refs->push_back(O_1);
01377         out_pids->push_back(AND_O_1);
01378         out_refs->push_back(O_2);
01379 
01380         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01381 
01382 
01383         return pi_pi2ge_pi_template::create(TEM_CVT_3,instr_patts);
01384 }
01385 
01386 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_MOV_1() {
01387         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01388 
01389         ptr<vector<ulint> > instrs;
01390         ptr<vector<ulint> > in_pids;
01391         ptr<vector<ulint> > out_pids;
01392         ptr<vector<ulint> > in_refs;
01393         ptr<vector<ulint> > out_refs;
01394         
01395         instrs = vector<ulint>::create();
01396         in_pids = vector<ulint>::create();
01397         out_pids = vector<ulint>::create();
01398         in_refs = vector<ulint>::create();
01399         out_refs = vector<ulint>::create();
01400 
01401         instrs->push_back(INSTRUCTION_MOV__1);
01402 
01403         //input operands
01404         in_pids->push_back(PIN_1);
01405         in_refs->push_back(I_1);
01406 
01407         //output operands
01408         out_pids->push_back(POUT_1);
01409         out_refs->push_back(O_1);
01410 
01411         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01412 
01413 
01414         return pi_pi2ge_pi_template::create(TEM_MOV_1,instr_patts);
01415 }
01416 
01417 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_ST_1() {
01418         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01419 
01420         ptr<vector<ulint> > instrs;
01421         ptr<vector<ulint> > in_pids;
01422         ptr<vector<ulint> > out_pids;
01423         ptr<vector<ulint> > in_refs;
01424         ptr<vector<ulint> > out_refs;
01425         
01426         instrs = vector<ulint>::create();
01427         in_pids = vector<ulint>::create();
01428         out_pids = vector<ulint>::create();
01429         in_refs = vector<ulint>::create();
01430         out_refs = vector<ulint>::create();
01431 
01432         instrs->push_back(INSTRUCTION_MOV__2);
01433         instrs->push_back(INSTRUCTION_MOV__1);
01434 
01435         //input operands
01436         in_pids->push_back(PIN_1);
01437         in_refs->push_back(I_1);
01438 
01439         //output operands
01440         out_pids->push_back(POUT_1);
01441         out_refs->push_back(O_1);
01442 
01443         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01444 
01445 
01446         return pi_pi2ge_pi_template::create(TEM_ST_1,instr_patts);
01447 }
01448 
01449 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_STV_1() {
01450         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01451 
01452         ptr<vector<ulint> > instrs;
01453         ptr<vector<ulint> > in_pids;
01454         ptr<vector<ulint> > out_pids;
01455         ptr<vector<ulint> > in_refs;
01456         ptr<vector<ulint> > out_refs;
01457         
01458         instrs = vector<ulint>::create();
01459         in_pids = vector<ulint>::create();
01460         out_pids = vector<ulint>::create();
01461         in_refs = vector<ulint>::create();
01462         out_refs = vector<ulint>::create();
01463 
01464         instrs->push_back(INSTRUCTION_MOV__2);
01465         instrs->push_back(INSTRUCTION_MOV__1);
01466 
01467         //input operands
01468         in_pids->push_back(PIN_1);
01469         in_refs->push_back(I_1);
01470 
01471         //output operands
01472         out_pids->push_back(POUT_1);
01473         out_refs->push_back(O_1);
01474 
01475         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01476 
01477 
01478         return pi_pi2ge_pi_template::create(TEM_STV_1,instr_patts);
01479 }
01480 
01481 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_STI_1() {
01482         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01483 
01484         ptr<vector<ulint> > instrs;
01485         ptr<vector<ulint> > in_pids;
01486         ptr<vector<ulint> > out_pids;
01487         ptr<vector<ulint> > in_refs;
01488         ptr<vector<ulint> > out_refs;
01489         
01490         instrs = vector<ulint>::create();
01491         in_pids = vector<ulint>::create();
01492         out_pids = vector<ulint>::create();
01493         in_refs = vector<ulint>::create();
01494         out_refs = vector<ulint>::create();
01495 
01496         instrs->push_back(INSTRUCTION_MOV__4);
01497 
01498         //input operands
01499         in_pids->push_back(PIN_1);
01500         in_refs->push_back(I_1);
01501 
01502         //output operands
01503         out_pids->push_back(POUT_1);
01504         out_refs->push_back(O_1);
01505 
01506         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01507 
01508 
01509         return pi_pi2ge_pi_template::create(TEM_STI_1,instr_patts);
01510 }
01511 
01512 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_STIV_1() {
01513         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01514 
01515         ptr<vector<ulint> > instrs;
01516         ptr<vector<ulint> > in_pids;
01517         ptr<vector<ulint> > out_pids;
01518         ptr<vector<ulint> > in_refs;
01519         ptr<vector<ulint> > out_refs;
01520         
01521         instrs = vector<ulint>::create();
01522         in_pids = vector<ulint>::create();
01523         out_pids = vector<ulint>::create();
01524         in_refs = vector<ulint>::create();
01525         out_refs = vector<ulint>::create();
01526 
01527         instrs->push_back(INSTRUCTION_MOV__4);
01528 
01529         //input operands
01530         in_pids->push_back(PIN_1);
01531         in_refs->push_back(I_1);
01532 
01533         //output operands
01534         out_pids->push_back(POUT_1);
01535         out_refs->push_back(O_1);
01536 
01537         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01538 
01539 
01540         return pi_pi2ge_pi_template::create(TEM_STIV_1,instr_patts);
01541 }
01542 
01543 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_STP_1() {
01544         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01545 
01546         ptr<vector<ulint> > instrs;
01547         ptr<vector<ulint> > in_pids;
01548         ptr<vector<ulint> > out_pids;
01549         ptr<vector<ulint> > in_refs;
01550         ptr<vector<ulint> > out_refs;
01551         
01552         instrs = vector<ulint>::create();
01553         in_pids = vector<ulint>::create();
01554         out_pids = vector<ulint>::create();
01555         in_refs = vector<ulint>::create();
01556         out_refs = vector<ulint>::create();
01557 
01558         instrs->push_back(INSTRUCTION_MOV__7);
01559 
01560         //input operands
01561         in_pids->push_back(PIN_1);
01562         in_refs->push_back(I_1);
01563         in_pids->push_back(PIN_2);
01564         in_refs->push_back(I_2);
01565 
01566         //output operands
01567         out_pids->push_back(POUT_1);
01568         out_refs->push_back(O_1);
01569 
01570         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01571 
01572 
01573         return pi_pi2ge_pi_template::create(TEM_STP_1,instr_patts);
01574 }
01575 
01576 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_STPV_1() {
01577         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01578 
01579         ptr<vector<ulint> > instrs;
01580         ptr<vector<ulint> > in_pids;
01581         ptr<vector<ulint> > out_pids;
01582         ptr<vector<ulint> > in_refs;
01583         ptr<vector<ulint> > out_refs;
01584         
01585         instrs = vector<ulint>::create();
01586         in_pids = vector<ulint>::create();
01587         out_pids = vector<ulint>::create();
01588         in_refs = vector<ulint>::create();
01589         out_refs = vector<ulint>::create();
01590 
01591         instrs->push_back(INSTRUCTION_MOV__7);
01592 
01593         //input operands
01594         in_pids->push_back(PIN_1);
01595         in_refs->push_back(I_1);
01596         in_pids->push_back(PIN_2);
01597         in_refs->push_back(I_2);
01598 
01599         //output operands
01600         out_pids->push_back(POUT_1);
01601         out_refs->push_back(O_1);
01602 
01603         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01604 
01605 
01606         return pi_pi2ge_pi_template::create(TEM_STPV_1,instr_patts);
01607 }
01608 
01609 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LD_1() {
01610         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01611 
01612         ptr<vector<ulint> > instrs;
01613         ptr<vector<ulint> > in_pids;
01614         ptr<vector<ulint> > out_pids;
01615         ptr<vector<ulint> > in_refs;
01616         ptr<vector<ulint> > out_refs;
01617         
01618         instrs = vector<ulint>::create();
01619         in_pids = vector<ulint>::create();
01620         out_pids = vector<ulint>::create();
01621         in_refs = vector<ulint>::create();
01622         out_refs = vector<ulint>::create();
01623 
01624         instrs->push_back(INSTRUCTION_MOV__3);
01625         instrs->push_back(INSTRUCTION_MOV__1);
01626 
01627         //input operands
01628         in_pids->push_back(PIN_1);
01629         in_refs->push_back(I_1);
01630 
01631         //output operands
01632         out_pids->push_back(POUT_1);
01633         out_refs->push_back(O_1);
01634 
01635         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01636 
01637 
01638         return pi_pi2ge_pi_template::create(TEM_LD_1,instr_patts);
01639 }
01640 
01641 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LDV_1() {
01642         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01643 
01644         ptr<vector<ulint> > instrs;
01645         ptr<vector<ulint> > in_pids;
01646         ptr<vector<ulint> > out_pids;
01647         ptr<vector<ulint> > in_refs;
01648         ptr<vector<ulint> > out_refs;
01649         
01650         instrs = vector<ulint>::create();
01651         in_pids = vector<ulint>::create();
01652         out_pids = vector<ulint>::create();
01653         in_refs = vector<ulint>::create();
01654         out_refs = vector<ulint>::create();
01655 
01656         instrs->push_back(INSTRUCTION_MOV__3);
01657         instrs->push_back(INSTRUCTION_MOV__1);
01658 
01659         //input operands
01660         in_pids->push_back(PIN_1);
01661         in_refs->push_back(I_1);
01662 
01663         //output operands
01664         out_pids->push_back(POUT_1);
01665         out_refs->push_back(O_1);
01666 
01667         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01668 
01669 
01670         return pi_pi2ge_pi_template::create(TEM_LDV_1,instr_patts);
01671 }
01672 
01673 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LDI_1() {
01674         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01675 
01676         ptr<vector<ulint> > instrs;
01677         ptr<vector<ulint> > in_pids;
01678         ptr<vector<ulint> > out_pids;
01679         ptr<vector<ulint> > in_refs;
01680         ptr<vector<ulint> > out_refs;
01681         
01682         instrs = vector<ulint>::create();
01683         in_pids = vector<ulint>::create();
01684         out_pids = vector<ulint>::create();
01685         in_refs = vector<ulint>::create();
01686         out_refs = vector<ulint>::create();
01687 
01688         instrs->push_back(INSTRUCTION_MOV__5);
01689 
01690         //input operands
01691         in_pids->push_back(PIN_1);
01692         in_refs->push_back(I_1);
01693 
01694         //output operands
01695         out_pids->push_back(POUT_1);
01696         out_refs->push_back(O_1);
01697 
01698         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01699 
01700 
01701         return pi_pi2ge_pi_template::create(TEM_LDI_1,instr_patts);
01702 }
01703 
01704 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LDP_1() {
01705         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01706 
01707         ptr<vector<ulint> > instrs;
01708         ptr<vector<ulint> > in_pids;
01709         ptr<vector<ulint> > out_pids;
01710         ptr<vector<ulint> > in_refs;
01711         ptr<vector<ulint> > out_refs;
01712         
01713         instrs = vector<ulint>::create();
01714         in_pids = vector<ulint>::create();
01715         out_pids = vector<ulint>::create();
01716         in_refs = vector<ulint>::create();
01717         out_refs = vector<ulint>::create();
01718 
01719         instrs->push_back(INSTRUCTION_MOV__8);
01720 
01721         //input operands
01722         in_pids->push_back(PIN_1);
01723         in_refs->push_back(I_1);
01724         in_pids->push_back(PIN_2);
01725         in_refs->push_back(I_2);
01726 
01727         //output operands
01728         out_pids->push_back(POUT_1);
01729         out_refs->push_back(O_1);
01730 
01731         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01732 
01733 
01734         return pi_pi2ge_pi_template::create(TEM_LDP_1,instr_patts);
01735 }
01736 
01737 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LDPV_1() {
01738         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01739 
01740         ptr<vector<ulint> > instrs;
01741         ptr<vector<ulint> > in_pids;
01742         ptr<vector<ulint> > out_pids;
01743         ptr<vector<ulint> > in_refs;
01744         ptr<vector<ulint> > out_refs;
01745         
01746         instrs = vector<ulint>::create();
01747         in_pids = vector<ulint>::create();
01748         out_pids = vector<ulint>::create();
01749         in_refs = vector<ulint>::create();
01750         out_refs = vector<ulint>::create();
01751 
01752         instrs->push_back(INSTRUCTION_MOV__8);
01753 
01754         //input operands
01755         in_pids->push_back(PIN_1);
01756         in_refs->push_back(I_1);
01757         in_pids->push_back(PIN_2);
01758         in_refs->push_back(I_2);
01759 
01760         //output operands
01761         out_pids->push_back(POUT_1);
01762         out_refs->push_back(O_1);
01763 
01764         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01765 
01766 
01767         return pi_pi2ge_pi_template::create(TEM_LDPV_1,instr_patts);
01768 }
01769 
01770 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_LDA_1() {
01771         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01772 
01773         ptr<vector<ulint> > instrs;
01774         ptr<vector<ulint> > in_pids;
01775         ptr<vector<ulint> > out_pids;
01776         ptr<vector<ulint> > in_refs;
01777         ptr<vector<ulint> > out_refs;
01778         
01779         instrs = vector<ulint>::create();
01780         in_pids = vector<ulint>::create();
01781         out_pids = vector<ulint>::create();
01782         in_refs = vector<ulint>::create();
01783         out_refs = vector<ulint>::create();
01784 
01785         instrs->push_back(INSTRUCTION_LEA__1);
01786 
01787         //input operands
01788         in_pids->push_back(PIN_1);
01789         in_refs->push_back(I_1);
01790 
01791         //output operands
01792         out_pids->push_back(POUT_1);
01793         out_refs->push_back(O_1);
01794 
01795         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01796 
01797 
01798         return pi_pi2ge_pi_template::create(TEM_LDA_1,instr_patts);
01799 }
01800 
01801 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_CMP_1() {
01802         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01803 
01804         ptr<vector<ulint> > instrs;
01805         ptr<vector<ulint> > in_pids;
01806         ptr<vector<ulint> > out_pids;
01807         ptr<vector<ulint> > in_refs;
01808         ptr<vector<ulint> > out_refs;
01809         
01810         instrs = vector<ulint>::create();
01811         in_pids = vector<ulint>::create();
01812         out_pids = vector<ulint>::create();
01813         in_refs = vector<ulint>::create();
01814         out_refs = vector<ulint>::create();
01815 
01816         instrs->push_back(INSTRUCTION_CMP__2);
01817 
01818         //input operands
01819         in_pids->push_back(PIN_1);
01820         in_refs->push_back(I_1);
01821         in_pids->push_back(PIN_2);
01822         in_refs->push_back(I_2);
01823 
01824         //output operands
01825         out_pids->push_back(POUT_1);
01826         out_refs->push_back(O_1);
01827 
01828         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01829 
01830 
01831         return pi_pi2ge_pi_template::create(TEM_CMP_1,instr_patts);
01832 }
01833 
01834 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BA_1() {
01835         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01836 
01837         ptr<vector<ulint> > instrs;
01838         ptr<vector<ulint> > in_pids;
01839         ptr<vector<ulint> > out_pids;
01840         ptr<vector<ulint> > in_refs;
01841         ptr<vector<ulint> > out_refs;
01842         
01843         instrs = vector<ulint>::create();
01844         in_pids = vector<ulint>::create();
01845         out_pids = vector<ulint>::create();
01846         in_refs = vector<ulint>::create();
01847         out_refs = vector<ulint>::create();
01848 
01849         instrs->push_back(INSTRUCTION_JMP__1);
01850 
01851         //input operands
01852 
01853         //output operands
01854 
01855         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01856 
01857 
01858         return pi_pi2ge_pi_template::create(TEM_BA_1,instr_patts);
01859 }
01860 
01861 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BN_1() {
01862         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01863 
01864         ptr<vector<ulint> > instrs;
01865         ptr<vector<ulint> > in_pids;
01866         ptr<vector<ulint> > out_pids;
01867         ptr<vector<ulint> > in_refs;
01868         ptr<vector<ulint> > out_refs;
01869         
01870         instrs = vector<ulint>::create();
01871         in_pids = vector<ulint>::create();
01872         out_pids = vector<ulint>::create();
01873         in_refs = vector<ulint>::create();
01874         out_refs = vector<ulint>::create();
01875 
01876         instrs->push_back(INSTRUCTION_NOP__1);
01877 
01878         //input operands
01879 
01880         //output operands
01881 
01882         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01883 
01884 
01885         return pi_pi2ge_pi_template::create(TEM_BN_1,instr_patts);
01886 }
01887 
01888 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BT_1() {
01889         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01890 
01891         ptr<vector<ulint> > instrs;
01892         ptr<vector<ulint> > in_pids;
01893         ptr<vector<ulint> > out_pids;
01894         ptr<vector<ulint> > in_refs;
01895         ptr<vector<ulint> > out_refs;
01896         
01897         instrs = vector<ulint>::create();
01898         in_pids = vector<ulint>::create();
01899         out_pids = vector<ulint>::create();
01900         in_refs = vector<ulint>::create();
01901         out_refs = vector<ulint>::create();
01902 
01903         instrs->push_back(INSTRUCTION_CMP__1);
01904 
01905         //input operands
01906         in_pids->push_back(PIN_1);
01907         in_refs->push_back(I_1);
01908 
01909         //output operands
01910         out_pids->push_back(CMP_O_1);
01911         out_refs->push_back(O_1);
01912 
01913         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01914 
01915 
01916         instrs = vector<ulint>::create();
01917         in_pids = vector<ulint>::create();
01918         out_pids = vector<ulint>::create();
01919         in_refs = vector<ulint>::create();
01920         out_refs = vector<ulint>::create();
01921 
01922         instrs->push_back(INSTRUCTION_JA__1);
01923 
01924         //input operands
01925         in_pids->push_back(CMP_O_1);
01926         in_refs->push_back(I_1);
01927 
01928         //output operands
01929 
01930         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01931 
01932 
01933         return pi_pi2ge_pi_template::create(TEM_BT_1,instr_patts);
01934 }
01935 
01936 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BF_1() {
01937         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01938 
01939         ptr<vector<ulint> > instrs;
01940         ptr<vector<ulint> > in_pids;
01941         ptr<vector<ulint> > out_pids;
01942         ptr<vector<ulint> > in_refs;
01943         ptr<vector<ulint> > out_refs;
01944         
01945         instrs = vector<ulint>::create();
01946         in_pids = vector<ulint>::create();
01947         out_pids = vector<ulint>::create();
01948         in_refs = vector<ulint>::create();
01949         out_refs = vector<ulint>::create();
01950 
01951         instrs->push_back(INSTRUCTION_CMP__1);
01952 
01953         //input operands
01954         in_pids->push_back(PIN_1);
01955         in_refs->push_back(I_1);
01956 
01957         //output operands
01958         out_pids->push_back(CMP_O_1);
01959         out_refs->push_back(O_1);
01960 
01961         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01962 
01963 
01964         instrs = vector<ulint>::create();
01965         in_pids = vector<ulint>::create();
01966         out_pids = vector<ulint>::create();
01967         in_refs = vector<ulint>::create();
01968         out_refs = vector<ulint>::create();
01969 
01970         instrs->push_back(INSTRUCTION_JZ__1);
01971 
01972         //input operands
01973         in_pids->push_back(CMP_O_1);
01974         in_refs->push_back(I_1);
01975 
01976         //output operands
01977 
01978         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
01979 
01980 
01981         return pi_pi2ge_pi_template::create(TEM_BF_1,instr_patts);
01982 }
01983 
01984 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BG_1() {
01985         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
01986 
01987         ptr<vector<ulint> > instrs;
01988         ptr<vector<ulint> > in_pids;
01989         ptr<vector<ulint> > out_pids;
01990         ptr<vector<ulint> > in_refs;
01991         ptr<vector<ulint> > out_refs;
01992         
01993         instrs = vector<ulint>::create();
01994         in_pids = vector<ulint>::create();
01995         out_pids = vector<ulint>::create();
01996         in_refs = vector<ulint>::create();
01997         out_refs = vector<ulint>::create();
01998 
01999         instrs->push_back(INSTRUCTION_JG__1);
02000         instrs->push_back(INSTRUCTION_JA__1);
02001 
02002         //input operands
02003         in_pids->push_back(PIN_1);
02004         in_refs->push_back(I_1);
02005 
02006         //output operands
02007 
02008         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02009 
02010 
02011         return pi_pi2ge_pi_template::create(TEM_BG_1,instr_patts);
02012 }
02013 
02014 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BL_1() {
02015         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02016 
02017         ptr<vector<ulint> > instrs;
02018         ptr<vector<ulint> > in_pids;
02019         ptr<vector<ulint> > out_pids;
02020         ptr<vector<ulint> > in_refs;
02021         ptr<vector<ulint> > out_refs;
02022         
02023         instrs = vector<ulint>::create();
02024         in_pids = vector<ulint>::create();
02025         out_pids = vector<ulint>::create();
02026         in_refs = vector<ulint>::create();
02027         out_refs = vector<ulint>::create();
02028 
02029         instrs->push_back(INSTRUCTION_JL__1);
02030         instrs->push_back(INSTRUCTION_JB__1);
02031 
02032         //input operands
02033         in_pids->push_back(PIN_1);
02034         in_refs->push_back(I_1);
02035 
02036         //output operands
02037 
02038         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02039 
02040 
02041         return pi_pi2ge_pi_template::create(TEM_BL_1,instr_patts);
02042 }
02043 
02044 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BE_1() {
02045         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02046 
02047         ptr<vector<ulint> > instrs;
02048         ptr<vector<ulint> > in_pids;
02049         ptr<vector<ulint> > out_pids;
02050         ptr<vector<ulint> > in_refs;
02051         ptr<vector<ulint> > out_refs;
02052         
02053         instrs = vector<ulint>::create();
02054         in_pids = vector<ulint>::create();
02055         out_pids = vector<ulint>::create();
02056         in_refs = vector<ulint>::create();
02057         out_refs = vector<ulint>::create();
02058 
02059         instrs->push_back(INSTRUCTION_JE__1);
02060 
02061         //input operands
02062         in_pids->push_back(PIN_1);
02063         in_refs->push_back(I_1);
02064 
02065         //output operands
02066 
02067         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02068 
02069 
02070         return pi_pi2ge_pi_template::create(TEM_BE_1,instr_patts);
02071 }
02072 
02073 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BNG_1() {
02074         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02075 
02076         ptr<vector<ulint> > instrs;
02077         ptr<vector<ulint> > in_pids;
02078         ptr<vector<ulint> > out_pids;
02079         ptr<vector<ulint> > in_refs;
02080         ptr<vector<ulint> > out_refs;
02081         
02082         instrs = vector<ulint>::create();
02083         in_pids = vector<ulint>::create();
02084         out_pids = vector<ulint>::create();
02085         in_refs = vector<ulint>::create();
02086         out_refs = vector<ulint>::create();
02087 
02088         instrs->push_back(INSTRUCTION_JNG__1);
02089         instrs->push_back(INSTRUCTION_JNA__1);
02090 
02091         //input operands
02092         in_pids->push_back(PIN_1);
02093         in_refs->push_back(I_1);
02094 
02095         //output operands
02096 
02097         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02098 
02099 
02100         return pi_pi2ge_pi_template::create(TEM_BNG_1,instr_patts);
02101 }
02102 
02103 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BNL_1() {
02104         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02105 
02106         ptr<vector<ulint> > instrs;
02107         ptr<vector<ulint> > in_pids;
02108         ptr<vector<ulint> > out_pids;
02109         ptr<vector<ulint> > in_refs;
02110         ptr<vector<ulint> > out_refs;
02111         
02112         instrs = vector<ulint>::create();
02113         in_pids = vector<ulint>::create();
02114         out_pids = vector<ulint>::create();
02115         in_refs = vector<ulint>::create();
02116         out_refs = vector<ulint>::create();
02117 
02118         instrs->push_back(INSTRUCTION_JNL__1);
02119         instrs->push_back(INSTRUCTION_JNB__1);
02120 
02121         //input operands
02122         in_pids->push_back(PIN_1);
02123         in_refs->push_back(I_1);
02124 
02125         //output operands
02126 
02127         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02128 
02129 
02130         return pi_pi2ge_pi_template::create(TEM_BNL_1,instr_patts);
02131 }
02132 
02133 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_BNE_1() {
02134         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02135 
02136         ptr<vector<ulint> > instrs;
02137         ptr<vector<ulint> > in_pids;
02138         ptr<vector<ulint> > out_pids;
02139         ptr<vector<ulint> > in_refs;
02140         ptr<vector<ulint> > out_refs;
02141         
02142         instrs = vector<ulint>::create();
02143         in_pids = vector<ulint>::create();
02144         out_pids = vector<ulint>::create();
02145         in_refs = vector<ulint>::create();
02146         out_refs = vector<ulint>::create();
02147 
02148         instrs->push_back(INSTRUCTION_JNE__1);
02149 
02150         //input operands
02151         in_pids->push_back(PIN_1);
02152         in_refs->push_back(I_1);
02153 
02154         //output operands
02155 
02156         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02157 
02158 
02159         return pi_pi2ge_pi_template::create(TEM_BNE_1,instr_patts);
02160 }
02161 
02162 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SBG_1() {
02163         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02164 
02165         ptr<vector<ulint> > instrs;
02166         ptr<vector<ulint> > in_pids;
02167         ptr<vector<ulint> > out_pids;
02168         ptr<vector<ulint> > in_refs;
02169         ptr<vector<ulint> > out_refs;
02170         
02171         instrs = vector<ulint>::create();
02172         in_pids = vector<ulint>::create();
02173         out_pids = vector<ulint>::create();
02174         in_refs = vector<ulint>::create();
02175         out_refs = vector<ulint>::create();
02176 
02177         instrs->push_back(INSTRUCTION_CMP__2);
02178 
02179         //input operands
02180         in_pids->push_back(PIN_1);
02181         in_refs->push_back(I_1);
02182         in_pids->push_back(PIN_2);
02183         in_refs->push_back(I_2);
02184 
02185         //output operands
02186         out_pids->push_back(CMP_O_1);
02187         out_refs->push_back(O_1);
02188 
02189         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02190 
02191 
02192         instrs = vector<ulint>::create();
02193         in_pids = vector<ulint>::create();
02194         out_pids = vector<ulint>::create();
02195         in_refs = vector<ulint>::create();
02196         out_refs = vector<ulint>::create();
02197 
02198         instrs->push_back(INSTRUCTION_SETG__1);
02199         instrs->push_back(INSTRUCTION_SETA__1);
02200 
02201         //input operands
02202         in_pids->push_back(CMP_O_1);
02203         in_refs->push_back(I_1);
02204 
02205         //output operands
02206         out_pids->push_back(POUT_1);
02207         out_refs->push_back(O_1);
02208 
02209         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02210 
02211 
02212         return pi_pi2ge_pi_template::create(TEM_SBG_1,instr_patts);
02213 }
02214 
02215 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SBL_1() {
02216         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02217 
02218         ptr<vector<ulint> > instrs;
02219         ptr<vector<ulint> > in_pids;
02220         ptr<vector<ulint> > out_pids;
02221         ptr<vector<ulint> > in_refs;
02222         ptr<vector<ulint> > out_refs;
02223         
02224         instrs = vector<ulint>::create();
02225         in_pids = vector<ulint>::create();
02226         out_pids = vector<ulint>::create();
02227         in_refs = vector<ulint>::create();
02228         out_refs = vector<ulint>::create();
02229 
02230         instrs->push_back(INSTRUCTION_CMP__2);
02231 
02232         //input operands
02233         in_pids->push_back(PIN_1);
02234         in_refs->push_back(I_1);
02235         in_pids->push_back(PIN_2);
02236         in_refs->push_back(I_2);
02237 
02238         //output operands
02239         out_pids->push_back(CMP_O_1);
02240         out_refs->push_back(O_1);
02241 
02242         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02243 
02244 
02245         instrs = vector<ulint>::create();
02246         in_pids = vector<ulint>::create();
02247         out_pids = vector<ulint>::create();
02248         in_refs = vector<ulint>::create();
02249         out_refs = vector<ulint>::create();
02250 
02251         instrs->push_back(INSTRUCTION_SETL__1);
02252         instrs->push_back(INSTRUCTION_SETB__1);
02253 
02254         //input operands
02255         in_pids->push_back(CMP_O_1);
02256         in_refs->push_back(I_1);
02257 
02258         //output operands
02259         out_pids->push_back(POUT_1);
02260         out_refs->push_back(O_1);
02261 
02262         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02263 
02264 
02265         return pi_pi2ge_pi_template::create(TEM_SBL_1,instr_patts);
02266 }
02267 
02268 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SBE_1() {
02269         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02270 
02271         ptr<vector<ulint> > instrs;
02272         ptr<vector<ulint> > in_pids;
02273         ptr<vector<ulint> > out_pids;
02274         ptr<vector<ulint> > in_refs;
02275         ptr<vector<ulint> > out_refs;
02276         
02277         instrs = vector<ulint>::create();
02278         in_pids = vector<ulint>::create();
02279         out_pids = vector<ulint>::create();
02280         in_refs = vector<ulint>::create();
02281         out_refs = vector<ulint>::create();
02282 
02283         instrs->push_back(INSTRUCTION_CMP__2);
02284 
02285         //input operands
02286         in_pids->push_back(PIN_1);
02287         in_refs->push_back(I_1);
02288         in_pids->push_back(PIN_2);
02289         in_refs->push_back(I_2);
02290 
02291         //output operands
02292         out_pids->push_back(CMP_O_1);
02293         out_refs->push_back(O_1);
02294 
02295         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02296 
02297 
02298         instrs = vector<ulint>::create();
02299         in_pids = vector<ulint>::create();
02300         out_pids = vector<ulint>::create();
02301         in_refs = vector<ulint>::create();
02302         out_refs = vector<ulint>::create();
02303 
02304         instrs->push_back(INSTRUCTION_SETE__1);
02305 
02306         //input operands
02307         in_pids->push_back(CMP_O_1);
02308         in_refs->push_back(I_1);
02309 
02310         //output operands
02311         out_pids->push_back(POUT_1);
02312         out_refs->push_back(O_1);
02313 
02314         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02315 
02316 
02317         return pi_pi2ge_pi_template::create(TEM_SBE_1,instr_patts);
02318 }
02319 
02320 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SBNG_1() {
02321         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02322 
02323         ptr<vector<ulint> > instrs;
02324         ptr<vector<ulint> > in_pids;
02325         ptr<vector<ulint> > out_pids;
02326         ptr<vector<ulint> > in_refs;
02327         ptr<vector<ulint> > out_refs;
02328         
02329         instrs = vector<ulint>::create();
02330         in_pids = vector<ulint>::create();
02331         out_pids = vector<ulint>::create();
02332         in_refs = vector<ulint>::create();
02333         out_refs = vector<ulint>::create();
02334 
02335         instrs->push_back(INSTRUCTION_CMP__2);
02336 
02337         //input operands
02338         in_pids->push_back(PIN_1);
02339         in_refs->push_back(I_1);
02340         in_pids->push_back(PIN_2);
02341         in_refs->push_back(I_2);
02342 
02343         //output operands
02344         out_pids->push_back(CMP_O_1);
02345         out_refs->push_back(O_1);
02346 
02347         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02348 
02349 
02350         instrs = vector<ulint>::create();
02351         in_pids = vector<ulint>::create();
02352         out_pids = vector<ulint>::create();
02353         in_refs = vector<ulint>::create();
02354         out_refs = vector<ulint>::create();
02355 
02356         instrs->push_back(INSTRUCTION_SETNG__1);
02357         instrs->push_back(INSTRUCTION_SETNA__1);
02358 
02359         //input operands
02360         in_pids->push_back(CMP_O_1);
02361         in_refs->push_back(I_1);
02362 
02363         //output operands
02364         out_pids->push_back(POUT_1);
02365         out_refs->push_back(O_1);
02366 
02367         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02368 
02369 
02370         return pi_pi2ge_pi_template::create(TEM_SBNG_1,instr_patts);
02371 }
02372 
02373 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SBNL_1() {
02374         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02375 
02376         ptr<vector<ulint> > instrs;
02377         ptr<vector<ulint> > in_pids;
02378         ptr<vector<ulint> > out_pids;
02379         ptr<vector<ulint> > in_refs;
02380         ptr<vector<ulint> > out_refs;
02381         
02382         instrs = vector<ulint>::create();
02383         in_pids = vector<ulint>::create();
02384         out_pids = vector<ulint>::create();
02385         in_refs = vector<ulint>::create();
02386         out_refs = vector<ulint>::create();
02387 
02388         instrs->push_back(INSTRUCTION_CMP__2);
02389 
02390         //input operands
02391         in_pids->push_back(PIN_1);
02392         in_refs->push_back(I_1);
02393         in_pids->push_back(PIN_2);
02394         in_refs->push_back(I_2);
02395 
02396         //output operands
02397         out_pids->push_back(CMP_O_1);
02398         out_refs->push_back(O_1);
02399 
02400         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02401 
02402 
02403         instrs = vector<ulint>::create();
02404         in_pids = vector<ulint>::create();
02405         out_pids = vector<ulint>::create();
02406         in_refs = vector<ulint>::create();
02407         out_refs = vector<ulint>::create();
02408 
02409         instrs->push_back(INSTRUCTION_SETNL__1);
02410         instrs->push_back(INSTRUCTION_SETNB__1);
02411 
02412         //input operands
02413         in_pids->push_back(CMP_O_1);
02414         in_refs->push_back(I_1);
02415 
02416         //output operands
02417         out_pids->push_back(POUT_1);
02418         out_refs->push_back(O_1);
02419 
02420         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02421 
02422 
02423         return pi_pi2ge_pi_template::create(TEM_SBNL_1,instr_patts);
02424 }
02425 
02426 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_SBNE_1() {
02427         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02428 
02429         ptr<vector<ulint> > instrs;
02430         ptr<vector<ulint> > in_pids;
02431         ptr<vector<ulint> > out_pids;
02432         ptr<vector<ulint> > in_refs;
02433         ptr<vector<ulint> > out_refs;
02434         
02435         instrs = vector<ulint>::create();
02436         in_pids = vector<ulint>::create();
02437         out_pids = vector<ulint>::create();
02438         in_refs = vector<ulint>::create();
02439         out_refs = vector<ulint>::create();
02440 
02441         instrs->push_back(INSTRUCTION_CMP__2);
02442 
02443         //input operands
02444         in_pids->push_back(PIN_1);
02445         in_refs->push_back(I_1);
02446         in_pids->push_back(PIN_2);
02447         in_refs->push_back(I_2);
02448 
02449         //output operands
02450         out_pids->push_back(CMP_O_1);
02451         out_refs->push_back(O_1);
02452 
02453         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02454 
02455 
02456         instrs = vector<ulint>::create();
02457         in_pids = vector<ulint>::create();
02458         out_pids = vector<ulint>::create();
02459         in_refs = vector<ulint>::create();
02460         out_refs = vector<ulint>::create();
02461 
02462         instrs->push_back(INSTRUCTION_SETNE__1);
02463 
02464         //input operands
02465         in_pids->push_back(CMP_O_1);
02466         in_refs->push_back(I_1);
02467 
02468         //output operands
02469         out_pids->push_back(POUT_1);
02470         out_refs->push_back(O_1);
02471 
02472         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02473 
02474 
02475         return pi_pi2ge_pi_template::create(TEM_SBNE_1,instr_patts);
02476 }
02477 
02478 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_1() {
02479         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02480 
02481         ptr<vector<ulint> > instrs;
02482         ptr<vector<ulint> > in_pids;
02483         ptr<vector<ulint> > out_pids;
02484         ptr<vector<ulint> > in_refs;
02485         ptr<vector<ulint> > out_refs;
02486         
02487         instrs = vector<ulint>::create();
02488         in_pids = vector<ulint>::create();
02489         out_pids = vector<ulint>::create();
02490         in_refs = vector<ulint>::create();
02491         out_refs = vector<ulint>::create();
02492 
02493         instrs->push_back(INSTRUCTION_MOV__1);
02494         instrs->push_back(INSTRUCTION_MOV__2);
02495         instrs->push_back(INSTRUCTION_MOV__3);
02496 
02497         //input operands
02498         in_pids->push_back(PIN_1);
02499         in_refs->push_back(I_1);
02500 
02501         //output operands
02502         out_pids->push_back(POUT_1);
02503         out_refs->push_back(O_1);
02504 
02505         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02506 
02507 
02508         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_1,instr_patts);
02509 }
02510 
02511 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_2() {
02512         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02513 
02514         ptr<vector<ulint> > instrs;
02515         ptr<vector<ulint> > in_pids;
02516         ptr<vector<ulint> > out_pids;
02517         ptr<vector<ulint> > in_refs;
02518         ptr<vector<ulint> > out_refs;
02519         
02520         instrs = vector<ulint>::create();
02521         in_pids = vector<ulint>::create();
02522         out_pids = vector<ulint>::create();
02523         in_refs = vector<ulint>::create();
02524         out_refs = vector<ulint>::create();
02525 
02526         instrs->push_back(INSTRUCTION_LAHF__1);
02527         instrs->push_back(INSTRUCTION_SAHF__1);
02528 
02529         //input operands
02530         in_pids->push_back(PIN_1);
02531         in_refs->push_back(I_1);
02532 
02533         //output operands
02534         out_pids->push_back(POUT_1);
02535         out_refs->push_back(O_1);
02536 
02537         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02538 
02539 
02540         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_2,instr_patts);
02541 }
02542 
02543 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_3() {
02544         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02545 
02546         ptr<vector<ulint> > instrs;
02547         ptr<vector<ulint> > in_pids;
02548         ptr<vector<ulint> > out_pids;
02549         ptr<vector<ulint> > in_refs;
02550         ptr<vector<ulint> > out_refs;
02551         
02552         instrs = vector<ulint>::create();
02553         in_pids = vector<ulint>::create();
02554         out_pids = vector<ulint>::create();
02555         in_refs = vector<ulint>::create();
02556         out_refs = vector<ulint>::create();
02557 
02558         instrs->push_back(INSTRUCTION_LAHF__1);
02559 
02560         //input operands
02561         in_pids->push_back(PIN_1);
02562         in_refs->push_back(I_1);
02563 
02564         //output operands
02565         out_pids->push_back(LAHF_O_1);
02566         out_refs->push_back(O_1);
02567 
02568         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02569 
02570 
02571         instrs = vector<ulint>::create();
02572         in_pids = vector<ulint>::create();
02573         out_pids = vector<ulint>::create();
02574         in_refs = vector<ulint>::create();
02575         out_refs = vector<ulint>::create();
02576 
02577         instrs->push_back(INSTRUCTION_MOV__1);
02578         instrs->push_back(INSTRUCTION_MOV__2);
02579 
02580         //input operands
02581         in_pids->push_back(LAHF_O_1);
02582         in_refs->push_back(I_1);
02583 
02584         //output operands
02585         out_pids->push_back(POUT_1);
02586         out_refs->push_back(O_1);
02587 
02588         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02589 
02590 
02591         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_3,instr_patts);
02592 }
02593 
02594 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_4() {
02595         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02596 
02597         ptr<vector<ulint> > instrs;
02598         ptr<vector<ulint> > in_pids;
02599         ptr<vector<ulint> > out_pids;
02600         ptr<vector<ulint> > in_refs;
02601         ptr<vector<ulint> > out_refs;
02602         
02603         instrs = vector<ulint>::create();
02604         in_pids = vector<ulint>::create();
02605         out_pids = vector<ulint>::create();
02606         in_refs = vector<ulint>::create();
02607         out_refs = vector<ulint>::create();
02608 
02609         instrs->push_back(INSTRUCTION_MOV__1);
02610         instrs->push_back(INSTRUCTION_MOV__3);
02611 
02612         //input operands
02613         in_pids->push_back(PIN_1);
02614         in_refs->push_back(I_1);
02615 
02616         //output operands
02617         out_pids->push_back(MOV_O_1);
02618         out_refs->push_back(O_1);
02619 
02620         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02621 
02622 
02623         instrs = vector<ulint>::create();
02624         in_pids = vector<ulint>::create();
02625         out_pids = vector<ulint>::create();
02626         in_refs = vector<ulint>::create();
02627         out_refs = vector<ulint>::create();
02628 
02629         instrs->push_back(INSTRUCTION_SAHF__1);
02630 
02631         //input operands
02632         in_pids->push_back(MOV_O_1);
02633         in_refs->push_back(I_1);
02634 
02635         //output operands
02636         out_pids->push_back(POUT_1);
02637         out_refs->push_back(O_1);
02638 
02639         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02640 
02641 
02642         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_4,instr_patts);
02643 }
02644 
02645 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_5() {
02646         ptr<vector<srp<instruction_group_base> > > instr_patts = vector<srp<instruction_group_base> >::create();
02647 
02648         ptr<vector<ulint> > instrs;
02649         ptr<vector<ulint> > in_pids;
02650         ptr<vector<ulint> > out_pids;
02651         ptr<vector<ulint> > in_refs;
02652         ptr<vector<ulint> > out_refs;
02653         
02654         instrs = vector<ulint>::create();
02655         in_pids = vector<ulint>::create();
02656         out_pids = vector<ulint>::create();
02657         in_refs = vector<ulint>::create();
02658         out_refs = vector<ulint>::create();
02659 
02660         instrs->push_back(INSTRUCTION_SYSMOV__9);
02661         instrs->push_back(INSTRUCTION_SYSMOV__10);
02662         instrs->push_back(INSTRUCTION_SYSMOV__11);
02663 
02664         //input operands
02665         in_pids->push_back(PIN_1);
02666         in_refs->push_back(I_1);
02667 
02668         //output operands
02669         out_pids->push_back(POUT_1);
02670         out_refs->push_back(O_1);
02671 
02672         instr_patts->push_back(instruction_group::create(instrs,in_pids,out_pids,in_refs,out_refs));
02673 
02674 
02675         return pi_pi2ge_pi_template::create(TEM_REGISTER_MOVE_5,instr_patts);
02676 }
02677 
02678 /*!
02679         \brief Returns instance of a template for the given id.
02680         \param id The id of a instance.
02681         \return The instance.
02682 */
02683 ptr<pi_pi2ge_pi_template> pi_pi2ge_pi_template::instance(ulint id) {
02684         map<ulint,srp<pi_pi2ge_pi_template> >::iterator existing_patt = id_to_instance_get()->find(id);
02685 
02686         if ( existing_patt != id_to_instance_get()->end() ) {
02687                 return existing_patt->second;
02688         }
02689 
02690         ptr<pi_pi2ge_pi_template> new_patt = NULL;
02691         switch(id) {
02692 
02693                 case TEM_ADD_1: {
02694                         new_patt = pi_pi2ge_pi_template_create_TEM_ADD_1();
02695                 } break;
02696 
02697                 case TEM_SUB_1: {
02698                         new_patt = pi_pi2ge_pi_template_create_TEM_SUB_1();
02699                 } break;
02700 
02701                 case TEM_MUL_1: {
02702                         new_patt = pi_pi2ge_pi_template_create_TEM_MUL_1();
02703                 } break;
02704 
02705                 case TEM_MUL_2: {
02706                         new_patt = pi_pi2ge_pi_template_create_TEM_MUL_2();
02707                 } break;
02708 
02709                 case TEM_DIV_1: {
02710                         new_patt = pi_pi2ge_pi_template_create_TEM_DIV_1();
02711                 } break;
02712 
02713                 case TEM_DIV_2: {
02714                         new_patt = pi_pi2ge_pi_template_create_TEM_DIV_2();
02715                 } break;
02716 
02717                 case TEM_DIV_3: {
02718                         new_patt = pi_pi2ge_pi_template_create_TEM_DIV_3();
02719                 } break;
02720 
02721                 case TEM_MOD_1: {
02722                         new_patt = pi_pi2ge_pi_template_create_TEM_MOD_1();
02723                 } break;
02724 
02725                 case TEM_MOD_2: {
02726                         new_patt = pi_pi2ge_pi_template_create_TEM_MOD_2();
02727                 } break;
02728 
02729                 case TEM_MOD_3: {
02730                         new_patt = pi_pi2ge_pi_template_create_TEM_MOD_3();
02731                 } break;
02732 
02733                 case TEM_REM_1: {
02734                         new_patt = pi_pi2ge_pi_template_create_TEM_REM_1();
02735                 } break;
02736 
02737                 case TEM_REM_2: {
02738                         new_patt = pi_pi2ge_pi_template_create_TEM_REM_2();
02739                 } break;
02740 
02741                 case TEM_REM_3: {
02742                         new_patt = pi_pi2ge_pi_template_create_TEM_REM_3();
02743                 } break;
02744 
02745                 case TEM_NEG_1: {
02746                         new_patt = pi_pi2ge_pi_template_create_TEM_NEG_1();
02747                 } break;
02748 
02749                 case TEM_GAT_1: {
02750                         new_patt = pi_pi2ge_pi_template_create_TEM_GAT_1();
02751                 } break;
02752 
02753                 case TEM_SHL_1: {
02754                         new_patt = pi_pi2ge_pi_template_create_TEM_SHL_1();
02755                 } break;
02756 
02757                 case TEM_SHR_1: {
02758                         new_patt = pi_pi2ge_pi_template_create_TEM_SHR_1();
02759                 } break;
02760 
02761                 case TEM_SAL_1: {
02762                         new_patt = pi_pi2ge_pi_template_create_TEM_SAL_1();
02763                 } break;
02764 
02765                 case TEM_SAR_1: {
02766                         new_patt = pi_pi2ge_pi_template_create_TEM_SAR_1();
02767                 } break;
02768 
02769                 case TEM_BAND_1: {
02770                         new_patt = pi_pi2ge_pi_template_create_TEM_BAND_1();
02771                 } break;
02772 
02773                 case TEM_BOR_1: {
02774                         new_patt = pi_pi2ge_pi_template_create_TEM_BOR_1();
02775                 } break;
02776 
02777                 case TEM_BXOR_1: {
02778                         new_patt = pi_pi2ge_pi_template_create_TEM_BXOR_1();
02779                 } break;
02780 
02781                 case TEM_BNOT_1: {
02782                         new_patt = pi_pi2ge_pi_template_create_TEM_BNOT_1();
02783                 } break;
02784 
02785                 case TEM_LAND_1: {
02786                         new_patt = pi_pi2ge_pi_template_create_TEM_LAND_1();
02787                 } break;
02788 
02789                 case TEM_LOR_1: {
02790                         new_patt = pi_pi2ge_pi_template_create_TEM_LOR_1();
02791                 } break;
02792 
02793                 case TEM_LXOR_1: {
02794                         new_patt = pi_pi2ge_pi_template_create_TEM_LXOR_1();
02795                 } break;
02796 
02797                 case TEM_LNOT_1: {
02798                         new_patt = pi_pi2ge_pi_template_create_TEM_LNOT_1();
02799                 } break;
02800 
02801                 case TEM_CVT_1: {
02802                         new_patt = pi_pi2ge_pi_template_create_TEM_CVT_1();
02803                 } break;
02804 
02805                 case TEM_CVT_2: {
02806                         new_patt = pi_pi2ge_pi_template_create_TEM_CVT_2();
02807                 } break;
02808 
02809                 case TEM_CVT_3: {
02810                         new_patt = pi_pi2ge_pi_template_create_TEM_CVT_3();
02811                 } break;
02812 
02813                 case TEM_MOV_1: {
02814                         new_patt = pi_pi2ge_pi_template_create_TEM_MOV_1();
02815                 } break;
02816 
02817                 case TEM_ST_1: {
02818                         new_patt = pi_pi2ge_pi_template_create_TEM_ST_1();
02819                 } break;
02820 
02821                 case TEM_STV_1: {
02822                         new_patt = pi_pi2ge_pi_template_create_TEM_STV_1();
02823                 } break;
02824 
02825                 case TEM_STI_1: {
02826                         new_patt = pi_pi2ge_pi_template_create_TEM_STI_1();
02827                 } break;
02828 
02829                 case TEM_STIV_1: {
02830                         new_patt = pi_pi2ge_pi_template_create_TEM_STIV_1();
02831                 } break;
02832 
02833                 case TEM_STP_1: {
02834                         new_patt = pi_pi2ge_pi_template_create_TEM_STP_1();
02835                 } break;
02836 
02837                 case TEM_STPV_1: {
02838                         new_patt = pi_pi2ge_pi_template_create_TEM_STPV_1();
02839                 } break;
02840 
02841                 case TEM_LD_1: {
02842                         new_patt = pi_pi2ge_pi_template_create_TEM_LD_1();
02843                 } break;
02844 
02845                 case TEM_LDV_1: {
02846                         new_patt = pi_pi2ge_pi_template_create_TEM_LDV_1();
02847                 } break;
02848 
02849                 case TEM_LDI_1: {
02850                         new_patt = pi_pi2ge_pi_template_create_TEM_LDI_1();
02851                 } break;
02852 
02853                 case TEM_LDP_1: {
02854                         new_patt = pi_pi2ge_pi_template_create_TEM_LDP_1();
02855                 } break;
02856 
02857                 case TEM_LDPV_1: {
02858                         new_patt = pi_pi2ge_pi_template_create_TEM_LDPV_1();
02859                 } break;
02860 
02861                 case TEM_LDA_1: {
02862                         new_patt = pi_pi2ge_pi_template_create_TEM_LDA_1();
02863                 } break;
02864 
02865                 case TEM_CMP_1: {
02866                         new_patt = pi_pi2ge_pi_template_create_TEM_CMP_1();
02867                 } break;
02868 
02869                 case TEM_BA_1: {
02870                         new_patt = pi_pi2ge_pi_template_create_TEM_BA_1();
02871                 } break;
02872 
02873                 case TEM_BN_1: {
02874                         new_patt = pi_pi2ge_pi_template_create_TEM_BN_1();
02875                 } break;
02876 
02877                 case TEM_BT_1: {
02878                         new_patt = pi_pi2ge_pi_template_create_TEM_BT_1();
02879                 } break;
02880 
02881                 case TEM_BF_1: {
02882                         new_patt = pi_pi2ge_pi_template_create_TEM_BF_1();
02883                 } break;
02884 
02885                 case TEM_BG_1: {
02886                         new_patt = pi_pi2ge_pi_template_create_TEM_BG_1();
02887                 } break;
02888 
02889                 case TEM_BL_1: {
02890                         new_patt = pi_pi2ge_pi_template_create_TEM_BL_1();
02891                 } break;
02892 
02893                 case TEM_BE_1: {
02894                         new_patt = pi_pi2ge_pi_template_create_TEM_BE_1();
02895                 } break;
02896 
02897                 case TEM_BNG_1: {
02898                         new_patt = pi_pi2ge_pi_template_create_TEM_BNG_1();
02899                 } break;
02900 
02901                 case TEM_BNL_1: {
02902                         new_patt = pi_pi2ge_pi_template_create_TEM_BNL_1();
02903                 } break;
02904 
02905                 case TEM_BNE_1: {
02906                         new_patt = pi_pi2ge_pi_template_create_TEM_BNE_1();
02907                 } break;
02908 
02909                 case TEM_SBG_1: {
02910                         new_patt = pi_pi2ge_pi_template_create_TEM_SBG_1();
02911                 } break;
02912 
02913                 case TEM_SBL_1: {
02914                         new_patt = pi_pi2ge_pi_template_create_TEM_SBL_1();
02915                 } break;
02916 
02917                 case TEM_SBE_1: {
02918                         new_patt = pi_pi2ge_pi_template_create_TEM_SBE_1();
02919                 } break;
02920 
02921                 case TEM_SBNG_1: {
02922                         new_patt = pi_pi2ge_pi_template_create_TEM_SBNG_1();
02923                 } break;
02924 
02925                 case TEM_SBNL_1: {
02926                         new_patt = pi_pi2ge_pi_template_create_TEM_SBNL_1();
02927                 } break;
02928 
02929                 case TEM_SBNE_1: {
02930                         new_patt = pi_pi2ge_pi_template_create_TEM_SBNE_1();
02931                 } break;
02932 
02933                 case TEM_REGISTER_MOVE_1: {
02934                         new_patt = pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_1();
02935                 } break;
02936 
02937                 case TEM_REGISTER_MOVE_2: {
02938                         new_patt = pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_2();
02939                 } break;
02940 
02941                 case TEM_REGISTER_MOVE_3: {
02942                         new_patt = pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_3();
02943                 } break;
02944 
02945                 case TEM_REGISTER_MOVE_4: {
02946                         new_patt = pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_4();
02947                 } break;
02948 
02949                 case TEM_REGISTER_MOVE_5: {
02950                         new_patt = pi_pi2ge_pi_template_create_TEM_REGISTER_MOVE_5();
02951                 } break;
02952 
02953                 default: lassert(false);
02954         }
02955 
02956         id_to_instance_get()->insert(::std::pair<ulint,srp<pi_pi2ge_pi_template> >(id, new_patt));
02957         return new_patt;
02958 }
02959 
02960 end_package(instructions);
02961 end_package(md);
02962 end_package(lestes);

Generated on Mon Feb 12 18:23:09 2007 for lestes by doxygen 1.5.1-20070107