LLVM API Documentation
#include <Constants.h>
Public Member Functions | |
const APFloat & | getValueAPF () const |
bool | isZero () const |
isZero - Return true if the value is positive or negative zero. More... | |
bool | isNegative () const |
isNegative - Return true if the sign bit is set. More... | |
bool | isNaN () const |
isNaN - Return true if the value is a NaN. More... | |
bool | isExactlyValue (const APFloat &V) const |
bool | isExactlyValue (double V) const |
![]() | |
bool | isNullValue () const |
bool | isAllOnesValue () const |
bool | isNegativeZeroValue () const |
bool | isZeroValue () const |
Return true if the value is negative zero or null value. More... | |
bool | canTrap () const |
bool | isThreadDependent () const |
isThreadDependent - Return true if the value can vary between threads. More... | |
bool | isConstantUsed () const |
PossibleRelocationsTy | getRelocationInfo () const |
Constant * | getAggregateElement (unsigned Elt) const |
Constant * | getAggregateElement (Constant *Elt) const |
Constant * | getSplatValue () const |
const APInt & | getUniqueInteger () const |
virtual void | destroyConstant () |
virtual void | replaceUsesOfWithOnConstant (Value *, Value *, Use *) |
void | removeDeadConstantUsers () const |
![]() | |
~User () | |
void | operator delete (void *Usr) |
operator delete - free memory allocated for User and Use objects More... | |
void | operator delete (void *, unsigned) |
placement delete - required by std, but never called. More... | |
void | operator delete (void *, unsigned, bool) |
placement delete - required by std, but never called. More... | |
Value * | getOperand (unsigned i) const |
void | setOperand (unsigned i, Value *Val) |
const Use & | getOperandUse (unsigned i) const |
Use & | getOperandUse (unsigned i) |
unsigned | getNumOperands () const |
op_iterator | op_begin () |
const_op_iterator | op_begin () const |
op_iterator | op_end () |
const_op_iterator | op_end () const |
value_op_iterator | value_op_begin () |
value_op_iterator | value_op_end () |
void | dropAllReferences () |
void | replaceUsesOfWith (Value *From, Value *To) |
![]() | |
virtual | ~Value () |
void | dump () const |
dump - Support for debugging, callable in GDB: V->dump() More... | |
void | print (raw_ostream &O, AssemblyAnnotationWriter *AAW=0) const |
Type * | getType () const |
LLVMContext & | getContext () const |
All values hold a context through their type. More... | |
bool | hasName () const |
ValueName * | getValueName () const |
void | setValueName (ValueName *VN) |
StringRef | getName () const |
void | setName (const Twine &Name) |
void | takeName (Value *V) |
void | replaceAllUsesWith (Value *V) |
bool | use_empty () const |
use_iterator | use_begin () |
const_use_iterator | use_begin () const |
use_iterator | use_end () |
const_use_iterator | use_end () const |
User * | use_back () |
const User * | use_back () const |
bool | hasOneUse () const |
bool | hasNUses (unsigned N) const |
bool | hasNUsesOrMore (unsigned N) const |
bool | isUsedInBasicBlock (const BasicBlock *BB) const |
unsigned | getNumUses () const |
void | addUse (Use &U) |
unsigned | getValueID () const |
unsigned | getRawSubclassOptionalData () const |
void | clearSubclassOptionalData () |
bool | hasSameSubclassOptionalData (const Value *V) const |
void | intersectOptionalDataWith (const Value *V) |
bool | hasValueHandle () const |
Value * | stripPointerCasts () |
Strips off any unneeded pointer casts, all-zero GEPs and aliases from the specified value, returning the original uncasted value. More... | |
const Value * | stripPointerCasts () const |
Value * | stripPointerCastsNoFollowAliases () |
Strips off any unneeded pointer casts and all-zero GEPs from the specified value, returning the original uncasted value. More... | |
const Value * | stripPointerCastsNoFollowAliases () const |
Value * | stripInBoundsConstantOffsets () |
Strips off unneeded pointer casts and all-constant GEPs from the specified value, returning the original pointer value. More... | |
const Value * | stripInBoundsConstantOffsets () const |
Value * | stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) |
Strips like stripInBoundsConstantOffsets but also accumulates the constant offset stripped. More... | |
const Value * | stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) const |
Value * | stripInBoundsOffsets () |
Strips off unneeded pointer casts and any in-bounds offsets from the specified value, returning the original pointer value. More... | |
const Value * | stripInBoundsOffsets () const |
bool | isDereferenceablePointer () const |
Value * | DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) |
const Value * | DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) const |
void | mutateType (Type *Ty) |
Static Public Member Functions | |
static Constant * | getZeroValueForNegation (Type *Ty) |
static Constant * | get (Type *Ty, double V) |
static Constant * | get (Type *Ty, StringRef Str) |
static ConstantFP * | get (LLVMContext &Context, const APFloat &V) |
static ConstantFP * | getNegativeZero (Type *Ty) |
static ConstantFP * | getInfinity (Type *Ty, bool Negative=false) |
static bool | isValueValidForType (Type *Ty, const APFloat &V) |
isValueValidForType - return true if Ty is big enough to represent V. More... | |
static bool | classof (const Value *V) |
Methods for support type inquiry through isa, cast, and dyn_cast: More... | |
![]() | |
static bool | classof (const Value *V) |
static Constant * | getNullValue (Type *Ty) |
static Constant * | getAllOnesValue (Type *Ty) |
Get the all ones value. More... | |
static Constant * | getIntegerValue (Type *Ty, const APInt &V) |
![]() | |
static bool | classof (const Value *V) |
Protected Member Functions | |
ConstantFP (Type *Ty, const APFloat &V) | |
void * | operator new (size_t s) |
![]() | |
Constant (Type *ty, ValueTy vty, Use *Ops, unsigned NumOps) | |
void | destroyConstantImpl () |
![]() | |
void * | operator new (size_t s, unsigned Us) |
User (Type *ty, unsigned vty, Use *OpList, unsigned NumOps) | |
Use * | allocHungoffUses (unsigned) const |
void | dropHungoffUses () |
template<int Idx> | |
Use & | Op () |
template<int Idx> | |
const Use & | Op () const |
![]() | |
virtual void | printCustom (raw_ostream &O) const |
Value (Type *Ty, unsigned scid) | |
unsigned short | getSubclassDataFromValue () const |
void | setValueSubclassData (unsigned short D) |
Friends | |
class | LLVMContextImpl |
ConstantFP - Floating Point Values [float, double]
Definition at line 232 of file Constants.h.
Definition at line 644 of file Constants.cpp.
References llvm::APFloat::getSemantics(), and TypeToFloatSemantics().
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 289 of file Constants.h.
References llvm::Value::ConstantFPVal, and llvm::Value::getValueID().
get() - This returns a ConstantFP, or a vector containing a splat of a ConstantFP, for the specified value in the specified type. This should only be used for simple constant values like 2.0/1.0 etc, that are known-valid both as host double and as the target format.
get() - This returns a constant fp for the specified value in the specified type. This should only be used for simple constant values like 2.0/1.0 etc, that are known-valid both as double and as the target format.
Definition at line 557 of file Constants.cpp.
References llvm::CallingConv::C, llvm::APFloat::convert(), llvm::Type::getContext(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), llvm::APFloat::rmNearestTiesToEven, and TypeToFloatSemantics().
Referenced by llvm::X86TargetLowering::BuildFILD(), ConstantFoldBinaryFP(), llvm::ConstantFoldBinaryInstruction(), llvm::ConstantFoldCall(), llvm::ConstantFoldCastInstruction(), ConstantFoldFP(), llvm::MDBuilder::createFPMath(), CvtFDivConstToReciprocal(), FitsInFPType(), FoldBitCast(), llvm::Constant::getAllOnesValue(), llvm::SelectionDAG::getConstantFP(), llvm::ConstantDataSequential::getElementAsConstant(), getInfinity(), llvm::Constant::getNullValue(), LLVMConstReal(), LLVMConstRealOfString(), LLVMConstRealOfStringAndSize(), llvm::JIT::runFunction(), llvm::InstCombiner::visitCallInst(), and llvm::InstCombiner::visitFCmpInst().
Definition at line 574 of file Constants.cpp.
References llvm::CallingConv::C, llvm::Type::getContext(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), and TypeToFloatSemantics().
|
static |
Definition at line 610 of file Constants.cpp.
References llvm::LLVMContextImpl::FPConstants, llvm::Type::getDoubleTy(), llvm::Type::getFloatTy(), llvm::Type::getFP128Ty(), llvm::Type::getHalfTy(), llvm::Type::getPPC_FP128Ty(), llvm::APFloat::getSemantics(), llvm::Type::getX86_FP80Ty(), llvm::APFloat::IEEEdouble, llvm::APFloat::IEEEhalf, llvm::APFloat::IEEEquad, llvm::APFloat::IEEEsingle, llvm::LLVMContext::pImpl, llvm::APFloat::PPCDoubleDouble, and llvm::APFloat::x87DoubleExtended.
|
static |
Definition at line 638 of file Constants.cpp.
References get(), llvm::Type::getContext(), llvm::APFloat::getInf(), and TypeToFloatSemantics().
|
static |
Definition at line 588 of file Constants.cpp.
References llvm::APFloat::changeSign(), llvm::Type::getContext(), llvm::Constant::getNullValue(), and getValueAPF().
Referenced by getZeroValueForNegation(), and llvm::InstCombiner::visitFMul().
|
inline |
Definition at line 263 of file Constants.h.
Referenced by llvm::CompileUnit::addConstantFPValue(), CvtFDivConstToReciprocal(), emitDebugValueComment(), emitGlobalConstantFP(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), FitsInFPType(), llvm::FPMathOperator::getFPAccuracy(), getNegativeZero(), llvm::HexagonLowerToMC(), isFMulOrFDivWithConstant(), isNormalFp(), llvm::AMDGPUMCInstLower::lower(), llvm::ARMAsmPrinter::lowerOperand(), llvm::InstCombiner::visitFMul(), and llvm::InstCombiner::visitSelectInst().
Floating point negation must be implemented with f(x) = -0.0 - x. This method returns the negative zero constant for floating point or vector floating point types; for all other types, it returns the null value.
Definition at line 596 of file Constants.cpp.
References llvm::CallingConv::C, getNegativeZero(), llvm::Constant::getNullValue(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), and llvm::Type::isFloatingPointTy().
Referenced by llvm::BinaryOperator::CreateFNeg(), llvm::BinaryOperator::CreateNeg(), llvm::BinaryOperator::CreateNSWNeg(), llvm::BinaryOperator::CreateNUWNeg(), llvm::ConstantExpr::getFNeg(), and llvm::ConstantExpr::getNeg().
isExactlyValue - We don't rely on operator== working on double values, as it returns true for things that are clearly not equal, like -0.0 and 0.0. As such, this method can be used to do an exact bit-for-bit comparison of two floating point values. The version with a double operand is retained because it's so convenient to write isExactlyValue(2.0), but please use it only for simple constants.
Definition at line 650 of file Constants.cpp.
References llvm::APFloat::bitwiseIsEqual().
Referenced by detectLog2OfHalf(), isExactlyValue(), llvm::SIInstrInfo::isInlineConstant(), and llvm::AArch64AsmPrinter::PrintAsmOperand().
|
inline |
Definition at line 282 of file Constants.h.
References llvm::APFloat::convert(), llvm::APFloat::getSemantics(), isExactlyValue(), and llvm::APFloat::rmNearestTiesToEven.
|
inline |
isNaN - Return true if the value is a NaN.
Definition at line 272 of file Constants.h.
References llvm::APFloat::isNaN().
|
inline |
isNegative - Return true if the sign bit is set.
Definition at line 269 of file Constants.h.
References llvm::APFloat::isNegative().
isValueValidForType - return true if Ty is big enough to represent V.
Definition at line 1180 of file Constants.cpp.
References llvm::lltok::APFloat, llvm::APFloat::convert(), llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::Type::FP128TyID, llvm::APFloat::getSemantics(), llvm::Type::getTypeID(), llvm::Type::HalfTyID, llvm::APFloat::IEEEdouble, llvm::APFloat::IEEEhalf, llvm::APFloat::IEEEquad, llvm::APFloat::IEEEsingle, llvm::Type::PPC_FP128TyID, llvm::APFloat::PPCDoubleDouble, llvm::APFloat::rmNearestTiesToEven, llvm::Type::X86_FP80TyID, and llvm::APFloat::x87DoubleExtended.
|
inline |
isZero - Return true if the value is positive or negative zero.
Definition at line 266 of file Constants.h.
References llvm::APFloat::isZero().
Referenced by llvm::AArch64AsmPrinter::lowerOperand().
|
inlineprotected |
Definition at line 242 of file Constants.h.
|
friend |
Definition at line 237 of file Constants.h.