LLVM: lib/CodeGen/ExpandLargeDivRem.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static bool isConstantPowerOfTwo (llvm::Value *V, bool SignedOp)
static bool isSigned (unsigned int Opcode)
static void scalarize (BinaryOperator *BO, SmallVectorImpl< BinaryOperator * > &Replace)
static bool runImpl (Function &F, const TargetLowering &TLI)
INITIALIZE_PASS_BEGIN (ExpandLargeDivRemLegacyPass, "expand-large-div-rem", "Expand large div/rem", false, false) INITIALIZE_PASS_END(ExpandLargeDivRemLegacyPass

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( ExpandLargeDivRemLegacyPass ,
"expand-large-div-rem" ,
"Expand large div/rem" ,
false ,
false )

isConstantPowerOfTwo()

isSigned()

Definition at line 52 of file ExpandLargeDivRem.cpp.

Referenced by llvm::APInt::APInt(), llvm::detail::IEEEFloat::convertFromAPInt(), llvm::detail::IEEEFloat::convertToInteger(), llvm::IRBuilderBase::CreateIntCast(), llvm::CastInst::CreateIntegerCast(), DecodeBFLabelOperand(), llvm::InstCombinerImpl::EvaluateInDifferentType(), EvaluateInDifferentTypeImpl(), llvm::TargetLowering::expandMULO(), llvm::TargetLowering::expandREM(), llvm::ScalarEvolution::getConstant(), getDivRemArgList(), getDivRemLibcall(), llvm::APSInt::getExtValue(), llvm::HexagonInstrInfo::getMaxValue(), llvm::HexagonInstrInfo::getMinValue(), llvm::InstCombinerImpl::insertRangeTest(), isDivRemLibcallAvailable(), isExtendedBUILD_VECTOR(), isExtendedBUILD_VECTOR(), llvm::ARMBaseRegisterInfo::isFrameOffsetLegal(), llvm::APSInt::isNegative(), llvm::APSInt::isRepresentableByInt64(), llvm::TargetTransformInfoImplBase::minRequiredElementSize(), llvm::SMTSolver::mkBVAddNoOverflow(), llvm::SMTSolver::mkBVMulNoOverflow(), llvm::SMTSolver::mkBVSubNoUnderflow(), PerformVCVTCombine(), PerformVMulVCTPCombine(), llvm::APInt::print(), llvm::InstCombinerImpl::replaceInInstruction(), llvm::APInt::roundToDouble(), runImpl(), llvm::APFloatBase::semanticsIntSizeInBits(), llvm::APSInt::toString(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), and llvm::sandboxir::CmpInst::WRAP_BOTH().

runImpl()

Definition at line 79 of file ExpandLargeDivRem.cpp.

References llvm::cast(), llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::expandDivision(), ExpandDivRemBits, llvm::expandRemainder(), F, llvm::TargetLoweringBase::getMaxDivRemBitWidthSupported(), I, instructions, isConstantPowerOfTwo(), isSigned(), llvm::IntegerType::MAX_INT_BITS, Modified, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and scalarize().

scalarize()

Definition at line 56 of file ExpandLargeDivRem.cpp.

References llvm::cast(), llvm::User::dropAllReferences(), llvm::dyn_cast(), llvm::Instruction::eraseFromParent(), llvm::PoisonValue::get(), llvm::BinaryOperator::getOpcode(), llvm::User::getOperand(), llvm::Value::getType(), LHS, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Value::replaceAllUsesWith(), and RHS.

Referenced by runImpl().

ExpandDivRemBits

false

expand large div Expand large div false

rem

expand large div Expand large div rem