Lines Matching refs:INS
2486 static bool InstrumentCall(INS ins) {
2488 if (INS_IsProcedureCall(ins) && !INS_IsSyscall(ins)) {
2490 if (INS_IsDirectBranchOrCall(ins)) {
2491 ADDRINT target = INS_DirectBranchOrCallTargetAddress(ins);
2495 INS_InsertCall(ins, IPOINT_BEFORE,
2505 if (INS_IsSyscall(ins)) {
2506 INS_InsertCall(ins, IPOINT_BEFORE,
2536 INS tail = BBL_InsTail(bbl);
2538 for( INS ins = BBL_InsHead(bbl);
2539 INS_Valid(ins);
2540 ins = INS_Next(ins) ) {
2541 if (ins != tail) {
2542 CHECK(!INS_IsRet(ins));
2543 CHECK(!INS_IsProcedureCall(ins));
2545 // bool is_stack = INS_IsStackRead(ins) || INS_IsStackWrite(ins);
2546 if (INS_IsAtomicUpdate(ins)) continue;
2548 int n_mops = INS_MemoryOperandCount(ins);
2551 string opcode_str = OPCODE_StringShort(INS_Opcode(ins));
2553 Printf(" INS: opcode=%s n_mops=%d dis=\"%s\"\n",
2555 INS_Disassemble(ins).c_str());
2563 if (INS_IsCall(ins)) {
2582 if (INS_IsRet(ins) || opcode_str == "LEAVE") {
2587 bool is_predicated = INS_IsPredicated(ins);
2591 INS_Address(ins), PcToRtnName(INS_Address(ins), true).c_str());
2594 size_t size = INS_MemoryOperandSize(ins, i);
2596 bool is_write = INS_MemoryOperandIsWritten(ins, i);
2600 if (instrument_pc && instrument_pc != INS_Address(ins)) continue;
2603 if (dtor_head && is_write && INS_IsMov(ins) && size == sizeof(void*)) {
2617 INS_InsertCall(ins, IPOINT_BEFORE,
2631 new (mop) MopInfo(INS_Address(ins), size, is_write, false);
2633 INS_InsertPredicatedCall(ins, point,
2642 INS_InsertCall(ins, point,
2698 INS tail = BBL_InsTail(bbl);
2721 INS head = BBL_InsHead(TRACE_BblHead(trace));
3561 INS ins = BBL_InsTail(bbl);
3562 if (!INS_IsProcedureCall(ins) || INS_IsSyscall(ins)) continue;
3563 if (INS_IsDirectBranchOrCall(ins)) {
3565 ADDRINT to = INS_DirectBranchOrCallTargetAddress(ins);
3566 ADDRINT from = INS_Address(ins);
3570 INS_InsertCall(ins, IPOINT_BEFORE,