in be/src/codegen/instruction-counter.cc [73:147]
void InstructionCounter::visit(const llvm::Instruction& I) {
IncrementCount(TOTAL_INSTS);
switch (I.getOpcode()) {
case llvm::Instruction::Ret:
case llvm::Instruction::Br:
case llvm::Instruction::Switch:
case llvm::Instruction::IndirectBr:
case llvm::Instruction::Invoke:
case llvm::Instruction::Resume:
case llvm::Instruction::Unreachable:
IncrementCount(TERMINATOR_INSTS);
break;
case llvm::Instruction::Add:
case llvm::Instruction::FAdd:
case llvm::Instruction::Sub:
case llvm::Instruction::FSub:
case llvm::Instruction::Mul:
case llvm::Instruction::FMul:
case llvm::Instruction::UDiv:
case llvm::Instruction::SDiv:
case llvm::Instruction::FDiv:
case llvm::Instruction::URem:
case llvm::Instruction::SRem:
case llvm::Instruction::FRem:
case llvm::Instruction::Shl:
case llvm::Instruction::LShr:
case llvm::Instruction::AShr:
case llvm::Instruction::And:
case llvm::Instruction::Or:
case llvm::Instruction::Xor:
IncrementCount(BINARY_INSTS);
break;
case llvm::Instruction::Alloca:
case llvm::Instruction::Load:
case llvm::Instruction::Store:
case llvm::Instruction::Fence:
case llvm::Instruction::AtomicCmpXchg:
case llvm::Instruction::AtomicRMW:
IncrementCount(MEMORY_INSTS);
break;
case llvm::Instruction::Trunc:
case llvm::Instruction::ZExt:
case llvm::Instruction::SExt:
case llvm::Instruction::FPToUI:
case llvm::Instruction::FPToSI:
case llvm::Instruction::UIToFP:
case llvm::Instruction::SIToFP:
case llvm::Instruction::FPTrunc:
case llvm::Instruction::FPExt:
case llvm::Instruction::PtrToInt:
case llvm::Instruction::IntToPtr:
case llvm::Instruction::BitCast:
IncrementCount(CAST_INSTS);
break;
case llvm::Instruction::ICmp:
case llvm::Instruction::FCmp:
case llvm::Instruction::PHI:
case llvm::Instruction::Call:
case llvm::Instruction::Select:
case llvm::Instruction::UserOp1:
case llvm::Instruction::UserOp2:
case llvm::Instruction::VAArg:
case llvm::Instruction::ExtractElement:
case llvm::Instruction::InsertElement:
case llvm::Instruction::ShuffleVector:
case llvm::Instruction::ExtractValue:
case llvm::Instruction::InsertValue:
case llvm::Instruction::LandingPad:
case llvm::Instruction::GetElementPtr:
IncrementCount(OTHER_INSTS);
break;
default:
DCHECK(false);
}
}