reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
  620   assert(Instr->getOpcode() == Instruction::UDiv ||
  621          Instr->getOpcode() == Instruction::URem);
  622   if (Instr->getType()->isVectorTy())
  627   auto OrigWidth = Instr->getType()->getIntegerBitWidth();
  629   for (Value *Operand : Instr->operands()) {
  631         LVI->getConstantRange(Operand, Instr->getParent()));
  642   IRBuilder<> B{Instr};
  643   auto *TruncTy = Type::getIntNTy(Instr->getContext(), NewWidth);
  644   auto *LHS = B.CreateTruncOrBitCast(Instr->getOperand(0), TruncTy,
  645                                      Instr->getName() + ".lhs.trunc");
  646   auto *RHS = B.CreateTruncOrBitCast(Instr->getOperand(1), TruncTy,
  647                                      Instr->getName() + ".rhs.trunc");
  648   auto *BO = B.CreateBinOp(Instr->getOpcode(), LHS, RHS, Instr->getName());
  648   auto *BO = B.CreateBinOp(Instr->getOpcode(), LHS, RHS, Instr->getName());
  649   auto *Zext = B.CreateZExt(BO, Instr->getType(), Instr->getName() + ".zext");
  649   auto *Zext = B.CreateZExt(BO, Instr->getType(), Instr->getName() + ".zext");
  652       BinOp->setIsExact(Instr->isExact());
  654   Instr->replaceAllUsesWith(Zext);
  655   Instr->eraseFromParent();