00001
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
00007
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
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
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
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
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
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
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
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
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
00189 in_pids->push_back(PIN_1);
00190 in_refs->push_back(I_1);
00191
00192
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
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
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
00246 in_pids->push_back(PIN_1);
00247 in_refs->push_back(I_1);
00248
00249
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
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
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
00309
00310
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
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
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
00367 in_pids->push_back(PIN_1);
00368 in_refs->push_back(I_1);
00369
00370
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
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
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
00424 in_pids->push_back(PIN_1);
00425 in_refs->push_back(I_1);
00426
00427
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
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
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
00487
00488
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
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
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
00545 in_pids->push_back(PIN_1);
00546 in_refs->push_back(I_1);
00547
00548
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
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
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
00602 in_pids->push_back(PIN_1);
00603 in_refs->push_back(I_1);
00604
00605
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
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
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
00665
00666
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
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
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
00723 in_pids->push_back(PIN_1);
00724 in_refs->push_back(I_1);
00725
00726
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
00756 in_pids->push_back(PIN_1);
00757 in_refs->push_back(I_1);
00758
00759
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
00787 in_pids->push_back(PIN_2);
00788 in_refs->push_back(I_1);
00789
00790
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
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
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
00841 in_pids->push_back(PIN_2);
00842 in_refs->push_back(I_1);
00843
00844
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
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
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
00895 in_pids->push_back(PIN_2);
00896 in_refs->push_back(I_1);
00897
00898
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
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
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
00949 in_pids->push_back(PIN_2);
00950 in_refs->push_back(I_1);
00951
00952
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
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
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
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
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
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
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
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
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
01108 in_pids->push_back(PIN_1);
01109 in_refs->push_back(I_1);
01110
01111
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
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
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
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
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
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
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
01244 in_pids->push_back(PIN_1);
01245 in_refs->push_back(I_1);
01246
01247
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
01290 in_pids->push_back(PIN_1);
01291 in_refs->push_back(I_1);
01292
01293
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
01321 in_pids->push_back(PIN_1);
01322 in_refs->push_back(I_1);
01323
01324
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
01340 in_pids->push_back(CMP_O_1);
01341 in_refs->push_back(I_1);
01342
01343
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
01371 in_pids->push_back(PIN_1);
01372 in_refs->push_back(I_1);
01373
01374
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
01404 in_pids->push_back(PIN_1);
01405 in_refs->push_back(I_1);
01406
01407
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
01436 in_pids->push_back(PIN_1);
01437 in_refs->push_back(I_1);
01438
01439
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
01468 in_pids->push_back(PIN_1);
01469 in_refs->push_back(I_1);
01470
01471
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
01499 in_pids->push_back(PIN_1);
01500 in_refs->push_back(I_1);
01501
01502
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
01530 in_pids->push_back(PIN_1);
01531 in_refs->push_back(I_1);
01532
01533
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
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
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
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
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
01628 in_pids->push_back(PIN_1);
01629 in_refs->push_back(I_1);
01630
01631
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
01660 in_pids->push_back(PIN_1);
01661 in_refs->push_back(I_1);
01662
01663
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
01691 in_pids->push_back(PIN_1);
01692 in_refs->push_back(I_1);
01693
01694
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
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
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
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
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
01788 in_pids->push_back(PIN_1);
01789 in_refs->push_back(I_1);
01790
01791
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
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
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
01852
01853
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
01879
01880
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
01906 in_pids->push_back(PIN_1);
01907 in_refs->push_back(I_1);
01908
01909
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
01925 in_pids->push_back(CMP_O_1);
01926 in_refs->push_back(I_1);
01927
01928
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
01954 in_pids->push_back(PIN_1);
01955 in_refs->push_back(I_1);
01956
01957
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
01973 in_pids->push_back(CMP_O_1);
01974 in_refs->push_back(I_1);
01975
01976
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
02003 in_pids->push_back(PIN_1);
02004 in_refs->push_back(I_1);
02005
02006
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
02033 in_pids->push_back(PIN_1);
02034 in_refs->push_back(I_1);
02035
02036
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
02062 in_pids->push_back(PIN_1);
02063 in_refs->push_back(I_1);
02064
02065
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
02092 in_pids->push_back(PIN_1);
02093 in_refs->push_back(I_1);
02094
02095
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
02122 in_pids->push_back(PIN_1);
02123 in_refs->push_back(I_1);
02124
02125
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
02151 in_pids->push_back(PIN_1);
02152 in_refs->push_back(I_1);
02153
02154
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
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
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
02202 in_pids->push_back(CMP_O_1);
02203 in_refs->push_back(I_1);
02204
02205
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
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
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
02255 in_pids->push_back(CMP_O_1);
02256 in_refs->push_back(I_1);
02257
02258
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
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
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
02307 in_pids->push_back(CMP_O_1);
02308 in_refs->push_back(I_1);
02309
02310
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
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
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
02360 in_pids->push_back(CMP_O_1);
02361 in_refs->push_back(I_1);
02362
02363
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
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
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
02413 in_pids->push_back(CMP_O_1);
02414 in_refs->push_back(I_1);
02415
02416
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
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
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
02465 in_pids->push_back(CMP_O_1);
02466 in_refs->push_back(I_1);
02467
02468
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
02498 in_pids->push_back(PIN_1);
02499 in_refs->push_back(I_1);
02500
02501
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
02530 in_pids->push_back(PIN_1);
02531 in_refs->push_back(I_1);
02532
02533
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
02561 in_pids->push_back(PIN_1);
02562 in_refs->push_back(I_1);
02563
02564
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
02581 in_pids->push_back(LAHF_O_1);
02582 in_refs->push_back(I_1);
02583
02584
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
02613 in_pids->push_back(PIN_1);
02614 in_refs->push_back(I_1);
02615
02616
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
02632 in_pids->push_back(MOV_O_1);
02633 in_refs->push_back(I_1);
02634
02635
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
02665 in_pids->push_back(PIN_1);
02666 in_refs->push_back(I_1);
02667
02668
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
02680
02681
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);