|
LLVM
3.7.0
|
ConstantFP - Floating Point Values [float, double]. More...
#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 | isInfinity () const |
| isInfinity - Return true if the value is infinity More... | |
| bool | isNaN () const |
| isNaN - Return true if the value is a NaN. More... | |
| bool | isExactlyValue (const APFloat &V) const |
| 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. More... | |
| bool | isExactlyValue (double V) const |
Public Member Functions inherited from llvm::Constant | |
| bool | isNullValue () const |
| isNullValue - Return true if this is the value that would be returned by getNullValue. More... | |
| bool | isOneValue () const |
| Returns true if the value is one. More... | |
| bool | isAllOnesValue () const |
| isAllOnesValue - Return true if this is the value that would be returned by getAllOnesValue. More... | |
| bool | isNegativeZeroValue () const |
| isNegativeZeroValue - Return true if the value is what would be returned by getZeroValueForNegation. More... | |
| bool | isZeroValue () const |
| Return true if the value is negative zero or null value. More... | |
| bool | isNotMinSignedValue () const |
| Return true if the value is not the smallest signed value. More... | |
| bool | isMinSignedValue () const |
| Return true if the value is the smallest signed value. More... | |
| bool | canTrap () const |
| canTrap - Return true if evaluation of this constant could trap. More... | |
| bool | isThreadDependent () const |
| isThreadDependent - Return true if the value can vary between threads. More... | |
| bool | isDLLImportDependent () const |
| Return true if the value is dependent on a dllimport variable. More... | |
| bool | isConstantUsed () const |
| isConstantUsed - Return true if the constant has users other than constant exprs and other dangling things. More... | |
| PossibleRelocationsTy | getRelocationInfo () const |
| getRelocationInfo - This method classifies the entry according to whether or not it may generate a relocation entry. More... | |
| Constant * | getAggregateElement (unsigned Elt) const |
| getAggregateElement - For aggregates (struct/array/vector) return the constant that corresponds to the specified element if possible, or null if not. More... | |
| Constant * | getAggregateElement (Constant *Elt) const |
| Constant * | getSplatValue () const |
| getSplatValue - If this is a splat vector constant, meaning that all of the elements have the same value, return that value. More... | |
| const APInt & | getUniqueInteger () const |
| If C is a constant integer then return its value, otherwise C must be a vector of constant integers, all equal, and the common value is returned. More... | |
| void | destroyConstant () |
| Called if some element of this constant is no longer valid. More... | |
| void | handleOperandChange (Value *, Value *, Use *) |
| This method is a special form of User::replaceUsesOfWith (which does not work on constants) that does work on constants. More... | |
| void | removeDeadConstantUsers () const |
| removeDeadConstantUsers - If there are any dead constant users dangling off of this constant, remove them. More... | |
| Constant * | stripPointerCasts () |
| const Constant * | stripPointerCasts () const |
Public Member Functions inherited from llvm::User | |
| ~User () override | |
| void | operator delete (void *Usr) |
| 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... | |
| Use * | getOperandList () |
| const Use * | getOperandList () const |
| Value * | getOperand (unsigned i) const |
| void | setOperand (unsigned i, Value *Val) |
| const Use & | getOperandUse (unsigned i) const |
| Use & | getOperandUse (unsigned i) |
| unsigned | getNumOperands () const |
| void | setGlobalVariableNumOperands (unsigned NumOps) |
| Set the number of operands on a GlobalVariable. More... | |
| void | setFunctionNumOperands (unsigned NumOps) |
| Set the number of operands on a Function. More... | |
| void | setNumHungOffUseOperands (unsigned NumOps) |
| Subclasses with hung off uses need to manage the operand count themselves. More... | |
| op_iterator | op_begin () |
| const_op_iterator | op_begin () const |
| op_iterator | op_end () |
| const_op_iterator | op_end () const |
| op_range | operands () |
| const_op_range | operands () const |
| value_op_iterator | value_op_begin () |
| value_op_iterator | value_op_end () |
| iterator_range< value_op_iterator > | operand_values () |
| void | dropAllReferences () |
| Drop all references to operands. More... | |
| void | replaceUsesOfWith (Value *From, Value *To) |
| Replace uses of one Value with another. More... | |
Public Member Functions inherited from llvm::Value | |
| virtual | ~Value () |
| void | dump () const |
| Support for debugging, callable in GDB: V->dump() More... | |
| Type * | getType () const |
| All values are typed, get the type of this value. More... | |
| 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 |
| Return a constant reference to the value's name. More... | |
| void | setName (const Twine &Name) |
| Change the name of the value. More... | |
| void | takeName (Value *V) |
| Transfer the name from V to this value. More... | |
| void | replaceAllUsesWith (Value *V) |
| Change all uses of this to point to a new Value. More... | |
| void | replaceUsesOutsideBlock (Value *V, BasicBlock *BB) |
| replaceUsesOutsideBlock - Go through the uses list for this definition and make each use point to "V" instead of "this" when the use is outside the block. More... | |
| bool | use_empty () const |
| use_iterator | use_begin () |
| const_use_iterator | use_begin () const |
| use_iterator | use_end () |
| const_use_iterator | use_end () const |
| iterator_range< use_iterator > | uses () |
| iterator_range < const_use_iterator > | uses () const |
| bool | user_empty () const |
| user_iterator | user_begin () |
| const_user_iterator | user_begin () const |
| user_iterator | user_end () |
| const_user_iterator | user_end () const |
| User * | user_back () |
| const User * | user_back () const |
| iterator_range< user_iterator > | users () |
| iterator_range < const_user_iterator > | users () const |
| bool | hasOneUse () const |
| Return true if there is exactly one user of this value. More... | |
| bool | hasNUses (unsigned N) const |
| Return true if this Value has exactly N users. More... | |
| bool | hasNUsesOrMore (unsigned N) const |
| Return true if this value has N users or more. More... | |
| bool | isUsedInBasicBlock (const BasicBlock *BB) const |
| Check if this value is used in the specified basic block. More... | |
| unsigned | getNumUses () const |
| This method computes the number of uses of this Value. More... | |
| void | addUse (Use &U) |
| This method should only be used by the Use class. More... | |
| unsigned | getValueID () const |
| Return an ID for the concrete type of this object. More... | |
| unsigned | getRawSubclassOptionalData () const |
| Return the raw optional flags value contained in this value. More... | |
| void | clearSubclassOptionalData () |
| Clear the optional flags contained in this value. More... | |
| bool | hasSameSubclassOptionalData (const Value *V) const |
| Check the optional flags for equality. More... | |
| void | intersectOptionalDataWith (const Value *V) |
| Clear any optional flags not set in the given Value. More... | |
| bool | hasValueHandle () const |
| Return true if there is a value handle associated with this value. More... | |
| bool | isUsedByMetadata () const |
| Return true if there is metadata referencing this value. More... | |
| Value * | stripPointerCasts () |
| Strip off pointer casts, all-zero GEPs, and aliases. More... | |
| const Value * | stripPointerCasts () const |
| Value * | stripPointerCastsNoFollowAliases () |
| Strip off pointer casts and all-zero GEPs. More... | |
| const Value * | stripPointerCastsNoFollowAliases () const |
| Value * | stripInBoundsConstantOffsets () |
| Strip off pointer casts and all-constant inbounds GEPs. More... | |
| const Value * | stripInBoundsConstantOffsets () const |
| Value * | stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) |
| Accumulate offsets from stripInBoundsConstantOffsets(). More... | |
| const Value * | stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) const |
| Value * | stripInBoundsOffsets () |
| Strip off pointer casts and inbounds GEPs. More... | |
| const Value * | stripInBoundsOffsets () const |
| Value * | DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) |
| Translate PHI node to its predecessor from the given basic block. More... | |
| const Value * | DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) const |
| void | mutateType (Type *Ty) |
| Mutate the type of this Value to be of the specified type. More... | |
| template<class Compare > | |
| void | sortUseList (Compare Cmp) |
| Sort the use-list. More... | |
| void | reverseUseList () |
| Reverse the use-list. More... | |
| void | print (raw_ostream &O) const |
| Implement operator<< on Value. More... | |
| void | print (raw_ostream &O, ModuleSlotTracker &MST) const |
| void | printAsOperand (raw_ostream &O, bool PrintType=true, const Module *M=nullptr) const |
| Print the name of this Value out to the specified raw_ostream. More... | |
| void | printAsOperand (raw_ostream &O, bool PrintType, ModuleSlotTracker &MST) const |
Static Public Member Functions | |
| static Constant * | getZeroValueForNegation (Type *Ty) |
| Floating point negation must be implemented with f(x) = -0.0 - x. More... | |
| static Constant * | get (Type *Ty, double V) |
| get() - This returns a ConstantFP, or a vector containing a splat of a ConstantFP, for the specified value in the specified type. More... | |
| static Constant * | get (Type *Ty, StringRef Str) |
| static ConstantFP * | get (LLVMContext &Context, const APFloat &V) |
| static Constant * | getNaN (Type *Ty, bool Negative=false, unsigned type=0) |
| static Constant * | getNegativeZero (Type *Ty) |
| static Constant * | 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 Public Member Functions inherited from llvm::Constant | |
| 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) |
| getIntegerValue - Return the value for an integer or pointer constant, or a vector thereof, with the given scalar value. More... | |
Static Public Member Functions inherited from llvm::User | |
| static bool | classof (const Value *V) |
Protected Member Functions | |
| ConstantFP (Type *Ty, const APFloat &V) | |
| void * | operator new (size_t s) |
Protected Member Functions inherited from llvm::Constant | |
| Constant (Type *ty, ValueTy vty, Use *Ops, unsigned NumOps) | |
Protected Member Functions inherited from llvm::User | |
| void * | operator new (size_t Size) |
| Allocate a User with an operand pointer co-allocated. More... | |
| void * | operator new (size_t Size, unsigned Us) |
| Allocate a User with the operands co-allocated. More... | |
| User (Type *ty, unsigned vty, Use *OpList, unsigned NumOps) | |
| void | allocHungoffUses (unsigned N, bool IsPhi=false) |
| Allocate the array of Uses, followed by a pointer (with bottom bit set) to the User. More... | |
| void | growHungoffUses (unsigned N, bool IsPhi=false) |
| Grow the number of hung off uses. More... | |
| template<int Idx> | |
| Use & | Op () |
| template<int Idx> | |
| const Use & | Op () const |
Protected Member Functions inherited from llvm::Value | |
| Value (Type *Ty, unsigned scid) | |
| unsigned short | getSubclassDataFromValue () const |
| void | setValueSubclassData (unsigned short D) |
Friends | |
| class | LLVMContextImpl |
| class | Constant |
Additional Inherited Members | |
Public Types inherited from llvm::Constant | |
| enum | PossibleRelocationsTy { NoRelocation = 0, LocalRelocation = 1, GlobalRelocations = 2 } |
Public Types inherited from llvm::User | |
| typedef Use * | op_iterator |
| typedef const Use * | const_op_iterator |
| typedef iterator_range < op_iterator > | op_range |
| typedef iterator_range < const_op_iterator > | const_op_range |
Public Types inherited from llvm::Value | |
| enum | ValueTy |
| Concrete subclass of this. More... | |
| typedef use_iterator_impl< Use > | use_iterator |
| typedef use_iterator_impl < const Use > | const_use_iterator |
| typedef user_iterator_impl< User > | user_iterator |
| typedef user_iterator_impl < const User > | const_user_iterator |
Static Public Attributes inherited from llvm::Value | |
| static const unsigned | MaxAlignmentExponent = 29 |
| The maximum alignment for instructions. More... | |
| static const unsigned | MaximumAlignment = 1u << MaxAlignmentExponent |
Protected Types inherited from llvm::Value | |
| enum | : unsigned { NumUserOperandsBits = 29 } |
| The number of operands in the subclass. More... | |
Static Protected Member Functions inherited from llvm::User | |
| template<int Idx, typename U > | |
| static Use & | OpFrom (const U *that) |
Protected Attributes inherited from llvm::Value | |
| unsigned char | SubclassOptionalData: 7 |
| Hold subclass data that can be dropped. More... | |
| unsigned | NumUserOperands: NumUserOperandsBits |
| bool | IsUsedByMD: 1 |
| bool | HasName: 1 |
| bool | HasHungOffUses: 1 |
ConstantFP - Floating Point Values [float, double].
Definition at line 233 of file Constants.h.
Definition at line 752 of file Constants.cpp.
References llvm::APFloat::getSemantics(), and TypeToFloatSemantics().
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 299 of file Constants.h.
References 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.
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 host double and as the target format.
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 652 of file Constants.cpp.
References llvm::C, llvm::APFloat::convert(), llvm::Type::getContext(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), llvm::APFloat::rmNearestTiesToEven, and TypeToFloatSemantics().
Referenced by llvm::X86TargetLowering::BuildFILD(), llvm::ConstantFoldBinaryInstruction(), llvm::ConstantFoldCastInstruction(), ConstantFoldScalarCall(), llvm::MDBuilder::createFPMath(), CvtFDivConstToReciprocal(), FitsInFPType(), FoldBitCast(), llvm::Constant::getAllOnesValue(), GetConstantFoldFPValue(), llvm::SelectionDAG::getConstantFP(), llvm::ConstantDataSequential::getElementAsConstant(), llvm::Constant::getNullValue(), llvm::RecurrenceDescriptor::getRecurrenceIdentity(), LLVMConstReal(), LLVMConstRealOfString(), LLVMConstRealOfStringAndSize(), LowerFCOPYSIGN(), LowerNegateToMultiply(), SimplifyFDivInst(), valueHasFloatPrecision(), llvm::InstCombiner::visitCallInst(), and llvm::InstCombiner::visitFCmpInst().
Definition at line 669 of file Constants.cpp.
References llvm::C, llvm::Type::getContext(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), and TypeToFloatSemantics().
|
static |
Definition at line 714 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, llvm::Slot, and llvm::APFloat::x87DoubleExtended.
Definition at line 742 of file Constants.cpp.
References llvm::C, llvm::Type::getContext(), llvm::APFloat::getInf(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), and TypeToFloatSemantics().
Definition at line 682 of file Constants.cpp.
References llvm::C, llvm::Type::getContext(), llvm::APFloat::getNaN(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), and TypeToFloatSemantics().
Definition at line 693 of file Constants.cpp.
References llvm::C, llvm::Type::getContext(), llvm::Type::getScalarType(), llvm::ConstantVector::getSplat(), llvm::APFloat::getZero(), and TypeToFloatSemantics().
Referenced by getZeroValueForNegation(), and llvm::InstCombiner::visitFMul().
Definition at line 270 of file Constants.h.
Referenced by llvm::DwarfUnit::addConstantFPValue(), emitDebugValueComment(), emitGlobalConstantFP(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), FitsInFPType(), llvm::FPMathOperator::getFPAccuracy(), getValueAsDouble(), llvm::HexagonLowerToMC(), isFiniteNonZeroFp(), isNormalFp(), LLVMConstRealGetDouble(), and llvm::ARMAsmPrinter::lowerOperand().
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 705 of file Constants.cpp.
References getNegativeZero(), llvm::Constant::getNullValue(), and llvm::Type::isFPOrFPVectorTy().
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 758 of file Constants.cpp.
References llvm::APFloat::bitwiseIsEqual().
Referenced by isExactlyValue().
|
inline |
Definition at line 292 of file Constants.h.
References llvm::APFloat::convert(), llvm::APFloat::getSemantics(), isExactlyValue(), and llvm::APFloat::rmNearestTiesToEven.
|
inline |
isInfinity - Return true if the value is infinity
Definition at line 279 of file Constants.h.
References llvm::APFloat::isInfinity().
|
inline |
isNaN - Return true if the value is a NaN.
Definition at line 282 of file Constants.h.
References llvm::APFloat::isNaN().
|
inline |
isNegative - Return true if the sign bit is set.
Definition at line 276 of file Constants.h.
References llvm::APFloat::isNegative().
isValueValidForType - return true if Ty is big enough to represent V.
Definition at line 1326 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 273 of file Constants.h.
References llvm::APFloat::isZero().
|
inlineprotected |
Definition at line 248 of file Constants.h.
|
friend |
Definition at line 240 of file Constants.h.
|
friend |
Definition at line 238 of file Constants.h.
1.8.6