예제 #1
0
파일: PStatistics.C 프로젝트: Root-nix/rose
/* FIXME: Stupid SgAsmInstruction interface necessitates a "switch". [RPM 2011-11-11] */
size_t
Partitioner::count_floating_point(const InstructionMap &insns)
{
    size_t retval = 0;
    for (InstructionMap::const_iterator ii=insns.begin(); ii!=insns.end(); ++ii) {
        SgAsmInstruction *insn = ii->second->node;
        switch (insn->variantT()) {
            case V_SgAsmx86Instruction:
                if (x86InstructionIsFloatingPoint(isSgAsmx86Instruction(insn)))
                    ++retval;
                break;
            default:    // to shut up compiler warnings
                break;
        }
    }
    return retval;
}
예제 #2
0
파일: PStatistics.C 프로젝트: Root-nix/rose
/* FIXME: Stupid SgAsmInstruction interface necessitates a "switch". [RPM 2011-11-11] */
size_t
Partitioner::count_kinds(const InstructionMap &insns)
{
    std::set<int> kinds;
    for (InstructionMap::const_iterator ii=insns.begin(); ii!=insns.end(); ++ii) {
        SgAsmInstruction *insn = ii->second->node;
        int kind = -1;
        switch (insn->variantT()) {
            case V_SgAsmx86Instruction:     kind = isSgAsmx86Instruction(insn)    ->get_kind(); break;
            case V_SgAsmPowerpcInstruction: kind = isSgAsmPowerpcInstruction(insn)->get_kind(); break;
            case V_SgAsmArmInstruction:     kind = isSgAsmArmInstruction(insn)    ->get_kind(); break;
            default: break; // to shut up compiler warnings
        }
        if (-1!=kind)
            kinds.insert(kind);
    }
    return kinds.size();
}