Lines Matching defs:bb
292 /* Set up BB */
293 IRSB* bb = emptyIRSB();
294 bb->tyenv = deepCopyIRTypeEnv(sb_in->tyenv);
295 bb->next = deepCopyIRExpr(sb_in->next);
296 bb->jumpkind = sb_in->jumpkind;
297 bb->offsIP = sb_in->offsIP;
354 addStmtToIRSB( bb, IRStmt_Dirty(dcall) ); \
384 addStmtToIRSB( bb, IRStmt_Dirty(dcall) ); \
412 vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp) == typeof_SP );
414 addStmtToIRSB( bb, st );
427 vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp) == typeof_SP );
433 addStmtToIRSB( bb, st );
442 vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp) == typeof_SP );
444 addStmtToIRSB( bb, st );
457 + sizeofIRType( typeOfIRExpr( bb->tyenv, st->Ist.Put.data ))
475 vg_assert( typeOfIRTemp(bb->tyenv, tttmp) == typeof_SP );
481 case 0: addStmtToIRSB(bb,st); continue;
482 case 4: DO_DIE( 4, tttmp); addStmtToIRSB(bb,st); continue;
483 case -4: DO_NEW( 4, tttmp); addStmtToIRSB(bb,st); continue;
484 case 8: DO_DIE( 8, tttmp); addStmtToIRSB(bb,st); continue;
485 case -8: DO_NEW( 8, tttmp); addStmtToIRSB(bb,st); continue;
486 case 12: DO_DIE( 12, tttmp); addStmtToIRSB(bb,st); continue;
487 case -12: DO_NEW( 12, tttmp); addStmtToIRSB(bb,st); continue;
488 case 16: DO_DIE( 16, tttmp); addStmtToIRSB(bb,st); continue;
489 case -16: DO_NEW( 16, tttmp); addStmtToIRSB(bb,st); continue;
490 case 32: DO_DIE( 32, tttmp); addStmtToIRSB(bb,st); continue;
491 case -32: DO_NEW( 32, tttmp); addStmtToIRSB(bb,st); continue;
492 case 112: DO_DIE( 112, tttmp); addStmtToIRSB(bb,st); continue;
493 case -112: DO_NEW( 112, tttmp); addStmtToIRSB(bb,st); continue;
494 case 128: DO_DIE( 128, tttmp); addStmtToIRSB(bb,st); continue;
495 case -128: DO_NEW( 128, tttmp); addStmtToIRSB(bb,st); continue;
496 case 144: DO_DIE( 144, tttmp); addStmtToIRSB(bb,st); continue;
497 case -144: DO_NEW( 144, tttmp); addStmtToIRSB(bb,st); continue;
498 case 160: DO_DIE( 160, tttmp); addStmtToIRSB(bb,st); continue;
499 case -160: DO_NEW( 160, tttmp); addStmtToIRSB(bb,st); continue;
527 old_SP = newIRTemp(bb->tyenv, typeof_SP);
529 bb,
555 addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
557 addStmtToIRSB( bb, st );
572 addStmtToIRSB( bb, st );
574 new_SP = newIRTemp(bb->tyenv, typeof_SP);
576 bb,
580 addStmtToIRSB( bb, IRStmt_Put(offset_SP, IRExpr_RdTmp(old_SP) ));
600 addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
602 addStmtToIRSB( bb, IRStmt_Put(offset_SP, IRExpr_RdTmp(new_SP) ));
613 vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.Put.data->Iex.RdTmp.tmp)
650 addStmtToIRSB( bb, st );
654 return bb;
717 The above outlines the conditions under which bb chasing is allowed
1015 static void gen_PUSH ( IRSB* bb, IRExpr* e )
1056 t1 = newIRTemp( bb->tyenv, ty_Word );
1059 vg_assert(typeOfIRExpr(bb->tyenv, e) == ty_Word);
1063 bb,
1076 bb,
1080 bb,
1098 addStmtToIRSB(bb, IRStmt_Put(offB_REDIR_SP, IRExpr_RdTmp(t1)));
1103 bb,
1105 narrowTo32(bb->tyenv,IRExpr_RdTmp(t1)), 0, e)));
1113 static IRTemp gen_POP ( IRSB* bb )
1142 IRTemp t1 = newIRTemp( bb->tyenv, ty_Word );
1143 IRTemp res = newIRTemp( bb->tyenv, ty_Word );
1152 bb,
1158 bb,
1162 bb,
1182 bb,
1185 IRExpr_GetI(descr, narrowTo32(bb->tyenv,IRExpr_RdTmp(t1)), 0)
1191 bb,
1209 static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr new_R2_value )
1215 gen_PUSH( bb, IRExpr_Get(offB_LR, Ity_I64) );
1216 gen_PUSH( bb, IRExpr_Get(offB_GPR2, Ity_I64) );
1217 addStmtToIRSB( bb, IRStmt_Put( offB_LR, mkU64( bogus_RA )) );
1218 addStmtToIRSB( bb, IRStmt_Put( offB_GPR2, mkU64( new_R2_value )) );
1228 static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
1234 IRTemp old_R2 = newIRTemp( bb->tyenv, Ity_I64 );
1235 bb->tyenv, Ity_I64 );
1237 old_R2 = gen_POP( bb );
1238 addStmtToIRSB( bb, IRStmt_Put( offB_GPR2, IRExpr_RdTmp(old_R2)) );
1240 old_LR = gen_POP( bb );
1241 addStmtToIRSB( bb, IRStmt_Put( offB_LR, IRExpr_RdTmp(old_LR)) );
1246 bb->jumpkind = Ijk_Boring;
1247 bb->next = IRExpr_Binop(Iop_And64, IRExpr_RdTmp(old_LR), mkU64(~(3ULL)));
1248 bb->offsIP = offB_CIA;
1258 Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
1264 addStmtToIRSB( bb, IRStmt_IMark( closure->readdr, 4, 0 ) );
1270 gen_pop_R2_LR_then_bLR(bb);
1271 return True; /* True == this is the entire BB; don't disassemble any
1290 static void gen_push_R2_and_set_LR ( IRSB* bb )
1295 gen_PUSH( bb, IRExpr_Get(offB_LR, Ity_I64) );
1296 gen_PUSH( bb, IRExpr_Get(offB_GPR2, Ity_I64) );
1297 addStmtToIRSB( bb, IRStmt_Put( offB_LR, mkU64( bogus_RA )) );
1322 Bool mk_preamble__set_NRADDR_to_zero ( void* closureV, IRSB* bb )
1329 bb,
1339 addStmtToIRSB(bb, IRStmt_Put(offB_GPR25, mkU32(closure->readdr)));
1344 addStmtToIRSB(bb, IRStmt_Put(offB_GPR25, mkU64(closure->readdr)));
1349 bb,
1355 gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( closure->readdr ) );
1362 addStmtToIRSB(bb, IRStmt_Put(offB_GPR12, mkU64(closure->readdr)));
1363 addStmtToIRSB(bb,
1369 gen_push_R2_and_set_LR ( bb );
1379 Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
1387 bb,
1398 addStmtToIRSB(bb, IRStmt_Put(offB_GPR25, mkU32(closure->readdr)));
1402 addStmtToIRSB(bb, IRStmt_Put(offB_GPR25, mkU64(closure->readdr)));
1406 bb,
1413 gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( closure->readdr ) );
1421 bb,
1428 addStmtToIRSB(bb, IRStmt_Put(offB_GPR12, mkU64(closure->readdr)));
1429 gen_push_R2_and_set_LR ( bb );