Lines Matching refs:Inst

50     Instruction *Inst;
52 SimpleValue(Instruction *I) : Inst(I) {
53 assert((isSentinel() || canHandle(I)) && "Inst can't be handled!");
57 return Inst == DenseMapInfo<Instruction*>::getEmptyKey() ||
58 Inst == DenseMapInfo<Instruction*>::getTombstoneKey();
61 static bool canHandle(Instruction *Inst) {
63 if (CallInst *CI = dyn_cast<CallInst>(Inst))
65 return isa<CastInst>(Inst) || isa<BinaryOperator>(Inst) ||
66 isa<GetElementPtrInst>(Inst) || isa<CmpInst>(Inst) ||
67 isa<SelectInst>(Inst) || isa<ExtractElementInst>(Inst) ||
68 isa<InsertElementInst>(Inst) || isa<ShuffleVectorInst>(Inst) ||
69 isa<ExtractValueInst>(Inst) || isa<InsertValueInst>(Inst);
93 Instruction *Inst = Val.Inst;
95 if (BinaryOperator* BinOp = dyn_cast<BinaryOperator>(Inst)) {
112 if (CmpInst *CI = dyn_cast<CmpInst>(Inst)) {
116 if (Inst->getOperand(0) > Inst->getOperand(1)) {
120 return hash_combine(Inst->getOpcode(), Pred, LHS, RHS);
123 if (CastInst *CI = dyn_cast<CastInst>(Inst))
126 if (const ExtractValueInst *EVI = dyn_cast<ExtractValueInst>(Inst))
130 if (const InsertValueInst *IVI = dyn_cast<InsertValueInst>(Inst))
135 assert((isa<CallInst>(Inst) || isa<BinaryOperator>(Inst) ||
136 isa<GetElementPtrInst>(Inst) || isa<SelectInst>(Inst) ||
137 isa<ExtractElementInst>(Inst) || isa<InsertElementInst>(Inst) ||
138 isa<ShuffleVectorInst>(Inst)) && "Invalid/unknown instruction");
141 return hash_combine(Inst->getOpcode(),
142 hash_combine_range(Inst->value_op_begin(),
143 Inst->value_op_end()));
147 Instruction *LHSI = LHS.Inst, *RHSI = RHS.Inst;
198 Instruction *Inst;
200 CallValue(Instruction *I) : Inst(I) {
201 assert((isSentinel() || canHandle(I)) && "Inst can't be handled!");
205 return Inst == DenseMapInfo<Instruction*>::getEmptyKey() ||
206 Inst == DenseMapInfo<Instruction*>::getTombstoneKey();
209 static bool canHandle(Instruction *Inst) {
211 if (Inst->getType()->isVoidTy())
214 CallInst *CI = dyn_cast<CallInst>(Inst);
240 Instruction *Inst = Val.Inst;
243 for (unsigned i = 0, e = Inst->getNumOperands(); i != e; ++i) {
244 assert(!Inst->getOperand(i)->getType()->isMetadataTy() &&
246 Res ^= getHash(Inst->getOperand(i)) << (i & 0xF);
250 return (Res << 1) ^ Inst->getOpcode();
254 Instruction *LHSI = LHS.Inst, *RHSI = RHS.Inst;
432 Instruction *Inst = I++;
435 if (isInstructionTriviallyDead(Inst, TLI)) {
436 DEBUG(dbgs() << "EarlyCSE DCE: " << *Inst << '\n');
437 Inst->eraseFromParent();
445 if (Value *V = SimplifyInstruction(Inst, TD, TLI, DT)) {
446 DEBUG(dbgs() << "EarlyCSE Simplify: " << *Inst << " to: " << *V << '\n');
447 Inst->replaceAllUsesWith(V);
448 Inst->eraseFromParent();
455 if (SimpleValue::canHandle(Inst)) {
457 if (Value *V = AvailableValues->lookup(Inst)) {
458 DEBUG(dbgs() << "EarlyCSE CSE: " << *Inst << " to: " << *V << '\n');
459 Inst->replaceAllUsesWith(V);
460 Inst->eraseFromParent();
467 AvailableValues->insert(Inst, Inst);
472 if (LoadInst *LI = dyn_cast<LoadInst>(Inst)) {
482 AvailableLoads->lookup(Inst->getOperand(0));
484 DEBUG(dbgs() << "EarlyCSE CSE LOAD: " << *Inst << " to: "
486 if (!Inst->use_empty()) Inst->replaceAllUsesWith(InVal.first);
487 Inst->eraseFromParent();
494 AvailableLoads->insert(Inst->getOperand(0),
495 std::pair<Value*, unsigned>(Inst, CurrentGeneration));
501 if (Inst->mayReadFromMemory())
505 if (CallValue::canHandle(Inst)) {
508 std::pair<Value*, unsigned> InVal = AvailableCalls->lookup(Inst);
510 DEBUG(dbgs() << "EarlyCSE CSE CALL: " << *Inst << " to: "
512 if (!Inst->use_empty()) Inst->replaceAllUsesWith(InVal.first);
513 Inst->eraseFromParent();
520 AvailableCalls->insert(Inst,
521 std::pair<Value*, unsigned>(Inst, CurrentGeneration));
528 if (Inst->mayWriteToMemory()) {
531 if (StoreInst *SI = dyn_cast<StoreInst>(Inst)) {
537 << *Inst << '\n');