LLVM: llvm::detail Namespace Reference (original) (raw)

A self-contained host- and target-independent arbitrary-precision floating-point software implementation. More...

Classes
class AllocatorHolder
class AllocatorHolder< Alloc & >
struct AnalysisPassConcept
Abstract concept of an analysis pass. More...
struct AnalysisPassModel
Wrapper to model the analysis pass concept. More...
struct AnalysisResultConcept
Abstract concept of an analysis result. More...
struct AnalysisResultModel
Wrapper to model the analysis result concept. More...
struct AnalysisResultModel< IRUnitT, PassT, ResultT, InvalidatorT, false >
Specialization of AnalysisResultModel which provides the default invalidate functionality. More...
struct AnalysisResultModel< IRUnitT, PassT, ResultT, InvalidatorT, true >
Specialization of AnalysisResultModel which delegates invalidate handling to ResultT. More...
class BCField
Convenience base for all kinds of bitcode abbreviation fields. More...
class BCRecordCoding
Helper class for dealing with a scalar element in the middle of a record. More...
class BCRecordCoding< BCArray< ElementTy > >
Helper class for dealing with an array at the end of a record. More...
class BCRecordCoding< BCBlob >
Helper class for dealing with a blob at the end of a record. More...
class BCRecordCoding< ElementTy >
Helper class for dealing with a scalar element at the end of a record. More...
struct CastFunc
struct CastIfPresentFunc
struct CheckedInt
class concat_range
Helper to store a sequence of ranges being concatenated and access them. More...
struct decay_if_c_char_array
struct decay_if_c_char_array< char[N]>
struct DenseMapPair
struct DenseSetEmpty
class DenseSetImpl
Base class for DenseSet and DenseSmallSet. More...
class DenseSetPair
struct detector
struct detector< std::void_t< Op< Args... > >, Op, Args... >
class DoubleAPFloat
struct DynCastFunc
struct DynCastIfPresentFunc
struct enumerator_result
Tuple-like type for zip_enumerator dereference. More...
struct enumerator_result< std::size_t, Refs... >
struct ErrorHolder
class ErrorMatchesMono
class ErrorMessageMatches
struct ExpectedHolder
class first_or_second_type
Return a reference to the first or second member of a reference. More...
struct HasPointerLikeTypeTraits
struct HasPointerLikeTypeTraits< T, decltype((sizeof(PointerLikeTypeTraits< T >)+sizeof(T)), void())>
struct IdentityIndex
class IEEEFloat
struct index_iterator
struct index_stream
Infinite stream of increasing 0-based size_t indices. More...
class indexed_accessor_range_base
The class represents the base of a range of indexed_accessor_iterators. More...
struct is_array
A type trait whose value field is true if the given type is a BCArray (of any element kind). More...
struct IsaAndPresentCheckPredicate
struct IsaCheckPredicate
struct IsPointerLike
struct IsPointerLike< T * >
struct last_type
A type trait whose type field is the last of its template parameters. More...
struct last_type< Head >
struct PassConcept
Template for the abstract base class used to dispatch polymorphically over pass objects. More...
struct PassModel
A template wrapper used to implement the polymorphic API. More...
struct PointerSumTypeHelper
A helper template for implementing PointerSumType. More...
class PtrUseVisitorBase
Implementation of non-dependent functionality for PtrUseVisitor. More...
struct PunnedPointer
class ResultHasInvalidateMethod
SFINAE metafunction for computing whether ResultT provides an invalidate member function. More...
struct SafeIntIterator
class scope_exit
class SlowDynamicAPInt
A simple class providing dynamic arbitrary-precision arithmetic. More...
struct StaticCastFunc
Usable in generic algorithms like map_range. More...
class StringMapEntryMatcher
class StringMapEntryMatcherImpl
class TypeSwitchBase
class UniqueFunctionBase
struct unit
struct unit< std::micro >
struct unit< std::milli >
struct unit< std::nano >
struct unit< std::ratio< 1 > >
struct unit< std::ratio< 3600 > >
struct unit< std::ratio< 60 > >
class ValueIsMatcher
class ValueMatchesMono
class ValueMatchesPoly
struct Visitor
struct Visitor< HeadT >
struct Visitor< HeadT, TailTs... >
struct zip_common
struct zip_enumerator
Zippy iterator that uses the second iterator for comparisons. More...
struct zip_first
class zip_longest_iterator
class zip_longest_range
struct zip_shortest
struct ZipLongestItemType
struct ZipLongestTupleType
class zippy
struct ZippyIteratorTuple
Helper to obtain the iterator types for the tuple storage within zippy. More...
struct ZippyIteratorTuple< ItType, const std::tuple< Args... >, std::index_sequence< Ns... > >
Partial specialization for const tuple storage. More...
struct ZippyIteratorTuple< ItType, std::tuple< Args... >, std::index_sequence< Ns... > >
Partial specialization for non-const tuple storage. More...
struct ZipTupleType
Typedefs
template
using IterOfRange = decltype(adl_begin(std::declval<RangeT &>()))
template
using ValueOfRange
using integerPart = APFloatBase::integerPart
using uninitializedTag = APFloatBase::uninitializedTag
using roundingMode = APFloatBase::roundingMode
using opStatus = APFloatBase::opStatus
using cmpResult = APFloatBase::cmpResult
using fltCategory = APFloatBase::fltCategory
using ExponentType = APFloatBase::ExponentType
template<typename ValueT, typename ValueInfoT>
using DenseSet
template<typename ValueT, unsigned InlineBuckets, typename ValueInfoT>
using SmallDenseSet
template<typename CallableT, typename ThisT>
using EnableUnlessSameType
template<typename CallableT, typename Ret, typename... Params>
using EnableIfCallable
template<typename T>
using has_number_t
template<typename Set, typename Fn>
using check_has_member_remove_if_t
template
using check_has_member_erase_iter_t
template<typename Range>
using check_has_free_function_rbegin
template
using fwd_or_bidi_tag
A type alias which is std::bidirectional_iterator_tag if the category of IterT derives from it, and std::forward_iterator_tag otherwise.
template<typename ZipType, typename ReferenceTupleType, typename... Iters>
using zip_traits
template<typename T>
using sort_trivially_copyable
template<typename Range>
using check_has_free_function_size
template<typename Range, typename Element>
using check_has_member_contains_t
template<typename Range, typename Element>
using check_has_member_find_t
template<typename... Iters>
using EnumeratorTupleType = enumerator_result<decltype(*declval())...>
template<typename T>
using has_sizeof = decltype(sizeof(T))
template<typename... Types>
using has_blob = std::is_same<BCBlob, typename last_type<int, Types...>::type>
A type trait whose value field is true if the last type is BCBlob.
template<typename... Types>
using has_array = is_array<typename last_type<int, Types...>::type>
A type trait whose value field is true if the last type is a BCArray (of any element kind).
template<typename OptionalDerived, typename Default>
using SelfType
A helper to derive the type to use with Self for cast traits, when the provided CRTP derived type is allowed to be void.
template<typename T>
using decay_if_c_char_array_t = typename decay_if_c_char_array<T>::type
template
using has_hoist_check = decltype(&BlockT::isLegalToHoistInto)
template
using detect_has_hoist_check = llvm::is_detected<has_hoist_check, BlockT>
template<typename T>
using check_ostream
Functions
LLVM_ABI hash_code hash_value (const IEEEFloat &Arg)
LLVM_ABI int ilogb (const IEEEFloat &Arg)
LLVM_ABI IEEEFloat scalbn (IEEEFloat X, int Exp, roundingMode RoundingMode)
LLVM_ABI IEEEFloat frexp (const IEEEFloat &Val, int &Exp, roundingMode RM)
LLVM_ABI hash_code hash_value (const DoubleAPFloat &Arg)
LLVM_ABI DoubleAPFloat scalbn (const DoubleAPFloat &Arg, int Exp, roundingMode RM)
LLVM_ABI DoubleAPFloat frexp (const DoubleAPFloat &X, int &Exp, roundingMode)
unsigned combineHashValue (unsigned a, unsigned b)
Simplistic combination of 32-bit hash values into 32-bit hash values.
template<typename ValueT, typename MapTy, typename ValueInfoT>
bool operator== (const DenseSetImpl< ValueT, MapTy, ValueInfoT > &LHS, const DenseSetImpl< ValueT, MapTy, ValueInfoT > &RHS)
Equality comparison for DenseSet.
template<typename ValueT, typename MapTy, typename ValueInfoT>
bool operator!= (const DenseSetImpl< ValueT, MapTy, ValueInfoT > &LHS, const DenseSetImpl< ValueT, MapTy, ValueInfoT > &RHS)
Inequality comparison for DenseSet.
template<typename T, typename U>
bool canTypeFitValue (const U Value)
template<class S1Ty, class S2Ty>
bool set_intersects_impl (const S1Ty &S1, const S2Ty &S2)
raw_ostream & operator<< (raw_ostream &OS, const SlowDynamicAPInt &X)
LLVM_ABI SlowDynamicAPInt mod (const SlowDynamicAPInt &LHS, const SlowDynamicAPInt &RHS)
Returns the remainder of dividing LHS by RHS.
LLVM_ABI SlowDynamicAPInt lcm (const SlowDynamicAPInt &A, const SlowDynamicAPInt &B)
Returns the least common multiple of A and B.
LLVM_ABI SlowDynamicAPInt abs (const SlowDynamicAPInt &X)
Redeclarations of friend declarations above to make it discoverable by lookups.
LLVM_ABI SlowDynamicAPInt ceilDiv (const SlowDynamicAPInt &LHS, const SlowDynamicAPInt &RHS)
LLVM_ABI SlowDynamicAPInt floorDiv (const SlowDynamicAPInt &LHS, const SlowDynamicAPInt &RHS)
LLVM_ABI SlowDynamicAPInt gcd (const SlowDynamicAPInt &A, const SlowDynamicAPInt &B)
LLVM_ABI hash_code hash_value (const SlowDynamicAPInt &X)
LLVM_ABI SlowDynamicAPInt & operator+= (SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt & operator-= (SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt & operator*= (SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt & operator/= (SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt & operator%= (SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator== (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator!= (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator> (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator< (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator<= (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator>= (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt operator+ (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt operator- (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt operator* (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt operator/ (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI SlowDynamicAPInt operator% (const SlowDynamicAPInt &A, int64_t B)
LLVM_ABI bool operator== (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI bool operator!= (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI bool operator> (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI bool operator< (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI bool operator<= (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI bool operator>= (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI SlowDynamicAPInt operator+ (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI SlowDynamicAPInt operator- (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI SlowDynamicAPInt operator* (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI SlowDynamicAPInt operator/ (int64_t A, const SlowDynamicAPInt &B)
LLVM_ABI SlowDynamicAPInt operator% (int64_t A, const SlowDynamicAPInt &B)
template
Iter next_or_end (const Iter &I, const Iter &End)
template
auto deref_or_none (const Iter &I, const Iter &End) -> std::optional< std::remove_const_t< std::remove_reference_t< decltype(*I)> > >
template<typename OtherT, typename DerivedT, typename BaseT, typename T, typename PointerT, typename ReferenceT>
bool operator== (const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &lhs, const OtherT &rhs)
Compare this range with another.
template<typename OtherT, typename DerivedT, typename BaseT, typename T, typename PointerT, typename ReferenceT>
bool operator!= (const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &lhs, const OtherT &rhs)
template<typename Predicate, typename... Args>
bool all_of_zip_predicate_first (Predicate &&P, Args &&...args)
template<typename... ArgsThenPredicate, size_t... InputIndexes>
bool all_of_zip_predicate_last (std::tuple< ArgsThenPredicate... > argsThenPredicate, std::index_sequence< InputIndexes... >)
template<typename N>
bool to_float (const Twine &T, N &Num, N(*StrTo)(const char *, char **))
template
std::string join_impl (IteratorT Begin, IteratorT End, StringRef Separator, std::input_iterator_tag)
template
std::string join_impl (IteratorT Begin, IteratorT End, StringRef Separator, std::forward_iterator_tag)
template
void join_items_impl (std::string &Result, Sep Separator)
template<typename Sep, typename Arg>
void join_items_impl (std::string &Result, Sep Separator, const Arg &Item)
template<typename Sep, typename Arg1, typename... Args>
void join_items_impl (std::string &Result, Sep Separator, const Arg1 &A1, Args &&... Items)
size_t join_one_item_size (char)
size_t join_one_item_size (const char *S)
template<typename T>
size_t join_one_item_size (const T &Str)
template<typename... Args>
size_t join_items_size (Args &&...Items)
template
static void emitOps (llvm::BitCodeAbbrev &abbrev)
Attaches the last field to an abbreviation.
template<typename FieldTy, typename Next, typename... Rest>
static void emitOps (llvm::BitCodeAbbrev &abbrev)
Attaches fields to an abbreviation.
template
DieType resolveReferencedType (DieType D, dwarf::Attribute Attr=dwarf::DW_AT_type)
template
DieType resolveReferencedType (DieType D, typename DieType::DWARFFormValue F)
template
const char * toString (std::optional< DWARFFormValueType > F)
template
DieType unwrapReferencedTypedefType (DieType D)
Resolve the DW_AT_type of D until we reach a DIE that is not a DW_TAG_typedef.
template<typename PassT, typename IRUnitT, typename AnalysisManagerT, typename... ArgTs, size_t... Ns>
PassT::Result getAnalysisResultUnpackTuple (AnalysisManagerT &AM, IRUnitT &IR, std::tuple< ArgTs... > Args, std::index_sequence< Ns... >)
Actual unpacker of extra arguments in getAnalysisResult, passes only those tuple arguments that are mentioned in index_sequence.
template<typename PassT, typename IRUnitT, typename... AnalysisArgTs, typename... MainArgTs>
PassT::Result getAnalysisResult (AnalysisManager< IRUnitT, AnalysisArgTs... > &AM, IRUnitT &IR, std::tuple< MainArgTs... > Args)
Helper for partial unpacking of extra arguments in getAnalysisResult.
LLVM_ABI void printBumpPtrAllocatorStats (unsigned NumSlabs, size_t BytesAllocated, size_t TotalMemory)
template<typename T>
bool isPresent (const T &t)
template<typename T>
decltype(auto) unwrapValue (T &t)
template<typename Range>
auto reverse_if_helper (Range &&R, std::bool_constant< false >)
template<typename Range>
auto reverse_if_helper (Range &&R, std::bool_constant< true >)
template<bool B, typename Range>
auto reverse_if (Range &&R)
template
bool isLegalToHoistInto (BlockT *Block)
SFINAE functions that dispatch to the isLegalToHoistInto member function or return false, if it doesn't exist.
ErrorHolder TakeError (Error Err)
template<typename T>
ExpectedHolder< T > TakeExpected (Expected< T > &Exp)
template<typename T>
ExpectedHolder< T > TakeExpected (Expected< T > &&Exp)
void PrintTo (const ErrorHolder &Err, std::ostream *Out)
template<typename T>
void PrintTo (const ExpectedHolder< T > &Item, std::ostream *Out)
static void tcSetLeastSignificantBits (APInt::WordType *dst, unsigned parts, unsigned bits)
static std::pair< APFloat, APFloat > fastTwoSum (APFloat X, APFloat Y)
int ilogb (const DoubleAPFloat &Arg)
DoubleAPFloat scalbn (const DoubleAPFloat &Arg, int Exp, APFloat::roundingMode RM)
DoubleAPFloat frexp (const DoubleAPFloat &Arg, int &Exp, APFloat::roundingMode RM)
template<typename DstTy, typename RecipeBasePtrTy>
static auto castToVPIRMetadata (RecipeBasePtrTy R) -> DstTy
Variables
static constexpr uninitializedTag uninitialized = APFloatBase::uninitialized
static constexpr roundingMode rmNearestTiesToEven
static constexpr roundingMode rmNearestTiesToAway
static constexpr roundingMode rmTowardNegative = APFloatBase::rmTowardNegative
static constexpr roundingMode rmTowardPositive = APFloatBase::rmTowardPositive
static constexpr roundingMode rmTowardZero = APFloatBase::rmTowardZero
static constexpr unsigned integerPartWidth = APFloatBase::integerPartWidth
static constexpr cmpResult cmpEqual = APFloatBase::cmpEqual
static constexpr cmpResult cmpLessThan = APFloatBase::cmpLessThan
static constexpr cmpResult cmpGreaterThan = APFloatBase::cmpGreaterThan
static constexpr cmpResult cmpUnordered = APFloatBase::cmpUnordered
static constexpr opStatus opOK = APFloatBase::opOK
static constexpr opStatus opInvalidOp = APFloatBase::opInvalidOp
static constexpr opStatus opDivByZero = APFloatBase::opDivByZero
static constexpr opStatus opOverflow = APFloatBase::opOverflow
static constexpr opStatus opUnderflow = APFloatBase::opUnderflow
static constexpr opStatus opInexact = APFloatBase::opInexact
static constexpr fltCategory fcInfinity = APFloatBase::fcInfinity
static constexpr fltCategory fcNaN = APFloatBase::fcNaN
static constexpr fltCategory fcNormal = APFloatBase::fcNormal
static constexpr fltCategory fcZero = APFloatBase::fcZero
template<typename Set, typename Fn>
static constexpr bool HasMemberRemoveIf
template
static constexpr bool HasMemberEraseIter
template<typename Range>
static constexpr bool HasFreeFunctionRBegin
template<typename Range>
static constexpr bool HasFreeFunctionSize
template<typename Range, typename Element>
static constexpr bool HasMemberContains
template<typename Range, typename Element>
static constexpr bool HasMemberFind
template
const char unit< Period >::value [] = ""

A self-contained host- and target-independent arbitrary-precision floating-point software implementation.

Casting from (const) VPRecipeBase -> (const) VPIRMetadata is supported for all recipe types implementing VPIRMetadata.

These are templated helper classes used by the format function that capture the object to be formatted and the format string.

These are wrappers over isa* function that allow them to be used in generic algorithms such as llvm:all_of, llvm::none_of, etc.

APFloat uses bignum integer arithmetic as provided by static functions in the APInt class. The library will work with bignum integers whose parts are any unsigned type at least 16 bits wide, but 64 bits is recommended.

Written for clarity rather than speed, in particular with a view to use in the front-end of a cross compiler so that target arithmetic can be correctly performed on the host. Performance should nonetheless be reasonable, particularly for its intended use. It may be useful as a base implementation for a run-time library during development of a faster target-specific one.

All 5 rounding modes in the IEEE-754R draft are handled correctly for all implemented operations. Currently implemented operations are add, subtract, multiply, divide, fused-multiply-add, conversion-to-float, conversion-to-integer and conversion-from-integer. New rounding modes (e.g. away from zero) can be added with three or four lines of code.

Four formats are built-in: IEEE single precision, double precision, quadruple precision, and x87 80-bit extended double (when operating with full extended precision). Adding a new format that obeys IEEE semantics only requires adding two lines of code: a declaration and definition of the format.

All operations return the status of that operation as an exception bit-mask, so multiple operations can be done consecutively with their results or-ed together. The returned status can be useful for compiler diagnostics; e.g., inexact, underflow and overflow can be easily diagnosed on constant folding, and compiler optimizers can determine what exceptions would be raised by folding operations and optimize, or perhaps not optimize, accordingly.

At present, underflow tininess is detected after rounding; it should be straight forward to add support for the before-rounding case too.

The library reads hexadecimal floating point numbers as per C99, and correctly rounds if necessary according to the specified rounding mode. Syntax is required to have been validated by the caller. It also converts floating point numbers to hexadecimal text as per the C99 a and A conversions. The output precision (or alternatively the natural minimal precision) can be specified; if the requested precision is less than the natural precision the output is correctly rounded for the specified rounding mode.

It also reads decimal floating point numbers and correctly rounds according to the specified rounding mode.

Conversion to decimal text is not currently implemented.

Non-zero finite numbers are represented internally as a sign bit, a 16-bit signed exponent, and the significand as an array of integer parts. After normalization of a number of precision P the exponent is within the range of the format, and if the number is not denormal the P-th bit of the significand is set as an explicit integer bit. For denormals the most significant bit is shifted right so that the exponent is maintained at the format's minimum, so that the smallest denormal has just the least significant bit of the significand set. The sign of zeroes and infinities is significant; the exponent and significand of such numbers is not stored, but has a known implicit (deterministic) value: 0 for the significands, 0 for zero exponent, all 1 bits for infinity exponent. For NaNs the sign and significand are deterministic, although not really meaningful, and preserved in non-conversion operations. The exponent is implicitly all 1 bits.

APFloat does not provide any exception handling beyond default exception handling. We represent Signaling NaNs via IEEE-754R 2008 6.2.1 should clause by encoding Signaling NaNs with the first bit of its trailing significand as 0.

TODO

Some features that may or may not be worth adding:

Binary to decimal conversion (hard).

Optional ability to detect underflow tininess before rounding.

New formats: x87 in single and double precision mode (IEEE apart from extended exponent range) (hard).

New operations: sqrt, IEEE remainder, C90 fmod, nexttoward.

This is accomplished by exposing the isa* functions through function objects with a generic function call operator.

When actually printed, this synthesizes the string into a temporary buffer provided and returns whether or not it is big enough.

Used by isa<> & co.

check_has_free_function_rbegin

Initial value:

decltype(adl_rbegin(std::declval<Range &>()))

constexpr auto adl_rbegin(RangeT &&range) -> decltype(adl_detail::rbegin_impl(std::forward< RangeT >(range)))

Returns the reverse-begin iterator to range using std::rbegin and function found through Argument-Dep...

Definition at line 396 of file STLExtras.h.

check_has_free_function_size

Initial value:

decltype(adl_size(std::declval<Range &>()))

constexpr auto adl_size(RangeT &&range) -> decltype(adl_detail::size_impl(std::forward< RangeT >(range)))

Returns the size of range using std::size and functions found through Argument-Dependent Lookup (ADL)...

Definition at line 1678 of file STLExtras.h.

check_has_member_contains_t

template<typename Range, typename Element>

Initial value:

decltype(std::declval<Range &>().contains(std::declval<const Element &>()))

Definition at line 1885 of file STLExtras.h.

check_has_member_erase_iter_t

Initial value:

decltype(std::declval().erase(std::declval().begin()))

Definition at line 32 of file SetOperations.h.

check_has_member_find_t

template<typename Range, typename Element>

Initial value:

decltype(std::declval<Range &>().find(std::declval<const Element &>()) !=

std::declval<Range &>().end())

Definition at line 1893 of file STLExtras.h.

check_has_member_remove_if_t

template<typename Set, typename Fn>

Initial value:

decltype(std::declval().remove_if(std::declval()))

Definition at line 24 of file SetOperations.h.

check_ostream

Initial value:

decltype(std::declval<std::ostream &>() << std::declval())

Definition at line 22 of file StringMapEntry.h.

cmpResult

decay_if_c_char_array_t

DenseSet

template<typename ValueT, typename ValueInfoT>

Initial value:

ValueInfoT>

Base class for DenseSet and DenseSmallSet.

Definition at line 264 of file DenseSet.h.

detect_has_hoist_check

EnableIfCallable

template<typename CallableT, typename Ret, typename... Params>

Initial value:

std::enable_if_t<std::disjunction<

std::is_void,

std::is_same<decltype(std::declval()(std::declval()...)),

Ret>,

std::is_same<const decltype(std::declval()(

std::declval()...)),

Ret>,

std::is_convertible<decltype(std::declval()(

std::declval()...)),

Ret>>::value>

const char unit< Period >::value[]

Definition at line 64 of file FunctionExtras.h.

EnableUnlessSameType

template<typename CallableT, typename ThisT>

Initial value:

std::enable_if_t<!std::is_same<remove_cvref_t, ThisT>::value>

Definition at line 61 of file FunctionExtras.h.

EnumeratorTupleType

template<typename... Iters>

ExponentType

fltCategory

fwd_or_bidi_tag

Initial value:

std::conditional_t<

std::is_base_of_v<std::bidirectional_iterator_tag,

typename std::iterator_traits::iterator_category>,

std::bidirectional_iterator_tag, std::forward_iterator_tag>

A type alias which is std::bidirectional_iterator_tag if the category of IterT derives from it, and std::forward_iterator_tag otherwise.

Definition at line 527 of file STLExtras.h.

has_array

template<typename... Types>

has_blob

template<typename... Types>

has_hoist_check

template

using llvm::detail::has_hoist_check = decltype(&BlockT::isLegalToHoistInto)

has_number_t

Initial value:

typename GraphType::UnknownGraphTypeError NodeRef

Definition at line 100 of file GraphTraits.h.

has_sizeof

template<typename T>

using llvm::detail::has_sizeof = decltype(sizeof(T))

integerPart

IterOfRange

template

Definition at line 126 of file ADL.h.

opStatus

roundingMode

SelfType

template<typename OptionalDerived, typename Default>

Initial value:

std::conditional_t<std::is_same_v<OptionalDerived, void>,

@ Default

The result values are uniform if and only if all operands are uniform.

A helper to derive the type to use with Self for cast traits, when the provided CRTP derived type is allowed to be void.

Definition at line 321 of file Casting.h.

SmallDenseSet

template<typename ValueT, unsigned InlineBuckets, typename ValueInfoT>

sort_trivially_copyable

Initial value:

std::conjunction<

std::is_pointer,

std::is_trivially_copyable<typename std::iterator_traits::value_type>>

Definition at line 1626 of file STLExtras.h.

uninitializedTag

ValueOfRange

template

Initial value:

std::remove_reference_t<decltype(*adl_begin(std::declval<RangeT &>()))>

Definition at line 129 of file ADL.h.

zip_traits

template<typename ZipType, typename ReferenceTupleType, typename... Iters>

Initial value:

ZipType,

std::common_type_t<

std::bidirectional_iterator_tag,

typename std::iterator_traits::iterator_category...>,

ReferenceTupleType,

typename std::iterator_traits<

std::tuple_element_t<0, std::tuple<Iters...>>>::difference_type,

ReferenceTupleType *, ReferenceTupleType>

CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...

Definition at line 661 of file STLExtras.h.

abs()

all_of_zip_predicate_first()

template<typename Predicate, typename... Args>

bool llvm::detail::all_of_zip_predicate_first ( Predicate && P,
Args &&... args )

all_of_zip_predicate_last()

template<typename... ArgsThenPredicate, size_t... InputIndexes>

bool llvm::detail::all_of_zip_predicate_last ( std::tuple< ArgsThenPredicate... > argsThenPredicate,
std::index_sequence< InputIndexes... > )

canTypeFitValue()

template<typename T, typename U>

bool llvm::detail::canTypeFitValue ( const U Value )

castToVPIRMetadata()

template<typename DstTy, typename RecipeBasePtrTy>

auto llvm::detail::castToVPIRMetadata ( RecipeBasePtrTy R) -> DstTy inlinestatic

ceilDiv()

combineHashValue()

Simplistic combination of 32-bit hash values into 32-bit hash values.

Definition at line 41 of file DenseMapInfo.h.

References llvm::densemap::detail::mix().

Referenced by llvm::ScalarEvolution::FoldID::computeHash(), ReachabilityQueryInfo< ToTy >::computeHashValue(), llvm::DenseMapInfo< AA::RangeTy >::getHashValue(), llvm::DenseMapInfo< BoUpSLP::EdgeInfo >::getHashValue(), llvm::DenseMapInfo< MBBSectionID >::getHashValue(), llvm::DenseMapInfo< std::optional< T > >::getHashValue(), llvm::DenseMapInfo< std::pair< const MCSymbol *, PPCMCExpr::Specifier > >::getHashValue(), llvm::DenseMapInfo< std::pair< T, U > >::getHashValue(), llvm::DenseMapInfo< VersionTuple >::getHashValue(), llvm::DenseMapInfo< std::tuple< Ts... > >::getHashValueImpl(), and llvm::DenseMapInfo< std::pair< T, U > >::getHashValuePiecewise().

deref_or_none()

template

auto llvm::detail::deref_or_none ( const Iter & I,
const Iter & End ) -> std::optional< std::remove_const_t<std::remove_reference_t<decltype(*I)>>>

emitOps() [1/2]

template

emitOps() [2/2]

template<typename FieldTy, typename Next, typename... Rest>

fastTwoSum()

floorDiv()

frexp() [1/3]

Definition at line 5843 of file APFloat.cpp.

References abs(), assert(), llvm::APFloatBase::fcNormal, llvm::First, llvm::detail::DoubleAPFloat::getCategory(), llvm::detail::DoubleAPFloat::getFirst(), llvm::detail::DoubleAPFloat::getSecond(), llvm::harrisonUlp(), llvm::Hi, llvm::APFloatBase::IEK_Inf, llvm::APFloatBase::IEK_NaN, llvm::APFloatBase::IEK_Zero, ilogb(), llvm::APFloat::isNegative(), llvm::detail::DoubleAPFloat::isNegative(), llvm::APFloat::isZero(), llvm::Lo, llvm::APFloat::next(), llvm::APFloatBase::PPCDoubleDouble(), llvm::Quiet, rmNearestTiesToAway, rmNearestTiesToEven, rmTowardNegative, rmTowardPositive, rmTowardZero, and scalbn().

frexp() [2/3]

Definition at line 5843 of file APFloat.cpp.

References abs(), assert(), llvm::APFloatBase::fcNormal, llvm::First, llvm::detail::DoubleAPFloat::getCategory(), llvm::detail::DoubleAPFloat::getFirst(), llvm::detail::DoubleAPFloat::getSecond(), llvm::harrisonUlp(), llvm::Hi, llvm::APFloatBase::IEK_Inf, llvm::APFloatBase::IEK_NaN, llvm::APFloatBase::IEK_Zero, ilogb(), llvm::APFloat::isNegative(), llvm::detail::DoubleAPFloat::isNegative(), llvm::APFloat::isZero(), llvm::Lo, llvm::APFloat::next(), llvm::APFloatBase::PPCDoubleDouble(), llvm::Quiet, rmNearestTiesToAway, rmNearestTiesToEven, rmTowardNegative, rmTowardPositive, rmTowardZero, and scalbn().

frexp() [3/3]

gcd()

getAnalysisResult()

template<typename PassT, typename IRUnitT, typename... AnalysisArgTs, typename... MainArgTs>

PassT::Result llvm::detail::getAnalysisResult ( AnalysisManager< IRUnitT, AnalysisArgTs... > & AM,
IRUnitT & IR,
std::tuple< MainArgTs... > Args )

getAnalysisResultUnpackTuple()

template<typename PassT, typename IRUnitT, typename AnalysisManagerT, typename... ArgTs, size_t... Ns>

PassT::Result llvm::detail::getAnalysisResultUnpackTuple ( AnalysisManagerT & AM,
IRUnitT & IR,
std::tuple< ArgTs... > Args,
std::index_sequence< Ns... > )

Actual unpacker of extra arguments in getAnalysisResult, passes only those tuple arguments that are mentioned in index_sequence.

Definition at line 122 of file PassManager.h.

References IR.

Referenced by getAnalysisResult().

hash_value() [1/3]

hash_value() [2/3]

Note that the use of hash codes for floating point values is in general frought with peril. Equality is hard to define for these values. For example, should negative and positive zero hash to different codes? Are they equal or not? This hash value implementation specifically emphasizes producing different codes for different inputs in order to be used in canonicalization and memoization. As such, equality is bitwiseIsEqual, and 0 != -0.

Definition at line 3471 of file APFloat.cpp.

Referenced by llvm::detail::DoubleAPFloat::hash_value, hash_value(), and llvm::hash_value().

hash_value() [3/3]

ilogb() [1/2]

ilogb() [2/2]

isLegalToHoistInto()

template

bool llvm::detail::isLegalToHoistInto ( BlockT * Block )

isPresent()

template<typename T>

bool llvm::detail::isPresent ( const T & t) inline

Definition at line 623 of file Casting.h.

References llvm::simplify_type< From >::getSimplifiedValue(), isPresent(), and T.

Referenced by llvm::cast_if_present(), llvm::cast_if_present(), llvm::cast_if_present(), llvm::cast_if_present(), llvm::dyn_cast(), llvm::dyn_cast(), llvm::dyn_cast(), llvm::dyn_cast(), llvm::dyn_cast_if_present(), llvm::dyn_cast_if_present(), llvm::dyn_cast_if_present(), llvm::isa_and_present(), and isPresent().

join_impl() [1/2]

template

std::string llvm::detail::join_impl ( IteratorT Begin, IteratorT End, StringRef Separator, std::forward_iterator_tag ) inline

join_impl() [2/2]

template

std::string llvm::detail::join_impl ( IteratorT Begin, IteratorT End, StringRef Separator, std::input_iterator_tag ) inline

join_items_impl() [1/3]

template

void llvm::detail::join_items_impl ( std::string & Result, Sep Separator ) inline

join_items_impl() [2/3]

template<typename Sep, typename Arg>

void llvm::detail::join_items_impl ( std::string & Result, Sep Separator, const Arg & Item ) inline

join_items_impl() [3/3]

template<typename Sep, typename Arg1, typename... Args>

void llvm::detail::join_items_impl ( std::string & Result, Sep Separator, const Arg1 & A1, Args &&... Items ) inline

join_items_size()

template<typename... Args>

size_t llvm::detail::join_items_size ( Args &&... Items) inline

join_one_item_size() [1/3]

size_t llvm::detail::join_one_item_size ( char ) inline

join_one_item_size() [2/3]

size_t llvm::detail::join_one_item_size ( const char * S) inline

join_one_item_size() [3/3]

template<typename T>

size_t llvm::detail::join_one_item_size ( const T & Str) inline

lcm()

mod()

Returns the remainder of dividing LHS by RHS.

is always non-negative.

The RHS is always expected to be positive, and the result is always non-negative.

Definition at line 211 of file SlowDynamicAPInt.cpp.

References assert().

next_or_end()

template

Iter llvm::detail::next_or_end ( const Iter & I,
const Iter & End )

operator!=() [1/4]

template<typename ValueT, typename MapTy, typename ValueInfoT>

Inequality comparison for DenseSet.

Equivalent to !(LHS == RHS). See operator== for performance notes.

Definition at line 258 of file DenseSet.h.

References LHS, and RHS.

operator!=() [2/4]

template<typename OtherT, typename DerivedT, typename BaseT, typename T, typename PointerT, typename ReferenceT>

operator!=() [3/4]

operator!=() [4/4]

operator%() [1/2]

operator%() [2/2]

operator%=()

operator*() [1/2]

operator*() [2/2]

operator*=()

operator+() [1/2]

operator+() [2/2]

operator+=()


Convenience operator overloads for int64_t.


Convenience operator overloads for int64_t.

Definition at line 33 of file SlowDynamicAPInt.cpp.

References A(), and B().

operator-() [1/2]

operator-() [2/2]

operator-=()

operator/() [1/2]

operator/() [2/2]

operator/=()

operator<() [1/2]

operator<() [2/2]

operator<<()

operator<=() [1/2]

operator<=() [2/2]

operator==() [1/4]

template<typename ValueT, typename MapTy, typename ValueInfoT>

Equality comparison for DenseSet.

Iterates over elements of LHS confirming that each element is also a member of RHS, and that RHS contains no additional values. Equivalent to N calls to RHS.count. Amortized complexity is linear, worst case is O(N^2) (if every hash collides).

Definition at line 241 of file DenseSet.h.

References E(), LHS, and RHS.

operator==() [2/4]

template<typename OtherT, typename DerivedT, typename BaseT, typename T, typename PointerT, typename ReferenceT>

Compare this range with another.

FIXME: Make me a member function instead of friend when it works in C++20.

Definition at line 1325 of file STLExtras.h.

References T.

operator==() [3/4]

operator==() [4/4]

operator>() [1/2]

operator>() [2/2]

operator>=() [1/2]

operator>=() [2/2]

printBumpPtrAllocatorStats()

void llvm::detail::printBumpPtrAllocatorStats ( unsigned NumSlabs,
size_t BytesAllocated,
size_t TotalMemory )

PrintTo() [1/2]

PrintTo() [2/2]

resolveReferencedType() [1/2]

template

DieType llvm::detail::resolveReferencedType ( DieType D,
dwarf::Attribute Attr = dwarf::DW_AT_type )

resolveReferencedType() [2/2]

template

DieType llvm::detail::resolveReferencedType ( DieType D,
typename DieType::DWARFFormValue F )

reverse_if()

auto llvm::detail::reverse_if ( Range && R )

reverse_if_helper() [1/2]

template<typename Range>

auto llvm::detail::reverse_if_helper ( Range && R,
std::bool_constant< false > )

reverse_if_helper() [2/2]

template<typename Range>

auto llvm::detail::reverse_if_helper ( Range && R,
std::bool_constant< true > )

scalbn() [1/3]

scalbn() [2/3]

scalbn() [3/3]

set_intersects_impl()

template<class S1Ty, class S2Ty>

bool llvm::detail::set_intersects_impl ( const S1Ty & S1,
const S2Ty & S2 )

TakeError()

TakeExpected() [1/2]

TakeExpected() [2/2]

tcSetLeastSignificantBits()

to_float()

toString()

template

const char * llvm::detail::toString ( std::optional< DWARFFormValueType > F )

unwrapReferencedTypedefType()

template

DieType llvm::detail::unwrapReferencedTypedefType ( DieType D )

unwrapValue()

template<typename T>

decltype(auto) llvm::detail::unwrapValue ( T & t) inline

cmpEqual

cmpResult llvm::detail::cmpEqual = APFloatBase::cmpEqual staticconstexpr

cmpGreaterThan

cmpResult llvm::detail::cmpGreaterThan = APFloatBase::cmpGreaterThan staticconstexpr

cmpLessThan

cmpResult llvm::detail::cmpLessThan = APFloatBase::cmpLessThan staticconstexpr

cmpUnordered

cmpResult llvm::detail::cmpUnordered = APFloatBase::cmpUnordered staticconstexpr

fcInfinity

fltCategory llvm::detail::fcInfinity = APFloatBase::fcInfinity staticconstexpr

fcNaN

Definition at line 441 of file APFloat.h.

Referenced by llvm::detail::IEEEFloat::compare(), llvm::detail::IEEEFloat::convert(), llvm::detail::IEEEFloat::convertToHexString(), llvm::detail::DoubleAPFloat::convertToInteger(), llvm::detail::IEEEFloat::convertToInteger(), llvm::detail::IEEEFloat::isNaN(), llvm::detail::IEEEFloat::makeNaN(), llvm::detail::DoubleAPFloat::multiply(), llvm::detail::DoubleAPFloat::next(), llvm::detail::IEEEFloat::next(), and llvm::detail::IEEEFloat::toString().

fcNormal

fltCategory llvm::detail::fcNormal = APFloatBase::fcNormal staticconstexpr

Definition at line 442 of file APFloat.h.

Referenced by llvm::detail::IEEEFloat::compare(), llvm::detail::IEEEFloat::convertToHexString(), llvm::detail::IEEEFloat::IEEEFloat(), llvm::detail::DoubleAPFloat::ilogb, llvm::detail::DoubleAPFloat::isDenormal(), llvm::detail::DoubleAPFloat::isLargest(), llvm::detail::DoubleAPFloat::isSmallest(), llvm::detail::DoubleAPFloat::isSmallestNormalized(), llvm::detail::IEEEFloat::isSmallestNormalized(), llvm::detail::IEEEFloat::makeLargest(), llvm::detail::IEEEFloat::makeSmallest(), llvm::detail::IEEEFloat::makeSmallestNormalized(), llvm::detail::DoubleAPFloat::multiply(), llvm::detail::DoubleAPFloat::next(), llvm::detail::IEEEFloat::next(), and llvm::detail::IEEEFloat::toString().

fcZero

HasFreeFunctionRBegin

template<typename Range>

bool llvm::detail::HasFreeFunctionRBegin staticconstexpr

Initial value:

=

typename detail::detector< void, Op, Args... >::value_t is_detected

Detects if a given trait holds for some set of arguments 'Args'.

Definition at line 400 of file STLExtras.h.

Referenced by llvm::reverse().

HasFreeFunctionSize

template<typename Range>

bool llvm::detail::HasFreeFunctionSize staticconstexpr

HasMemberContains

template<typename Range, typename Element>

bool llvm::detail::HasMemberContains staticconstexpr

HasMemberEraseIter

template

bool llvm::detail::HasMemberEraseIter staticconstexpr

HasMemberFind

template<typename Range, typename Element>

bool llvm::detail::HasMemberFind staticconstexpr

HasMemberRemoveIf

template<typename Set, typename Fn>

bool llvm::detail::HasMemberRemoveIf staticconstexpr

integerPartWidth

unsigned llvm::detail::integerPartWidth = APFloatBase::integerPartWidth staticconstexpr

opDivByZero

opStatus llvm::detail::opDivByZero = APFloatBase::opDivByZero staticconstexpr

opInexact

opStatus llvm::detail::opInexact = APFloatBase::opInexact staticconstexpr

opInvalidOp

opStatus llvm::detail::opInvalidOp = APFloatBase::opInvalidOp staticconstexpr

opOK

opStatus llvm::detail::opOK = APFloatBase::opOK staticconstexpr

opOverflow

opStatus llvm::detail::opOverflow = APFloatBase::opOverflow staticconstexpr

opUnderflow

opStatus llvm::detail::opUnderflow = APFloatBase::opUnderflow staticconstexpr

rmNearestTiesToAway

rmNearestTiesToEven

rmTowardNegative

roundingMode llvm::detail::rmTowardNegative = APFloatBase::rmTowardNegative staticconstexpr

rmTowardPositive

roundingMode llvm::detail::rmTowardPositive = APFloatBase::rmTowardPositive staticconstexpr

rmTowardZero

roundingMode llvm::detail::rmTowardZero = APFloatBase::rmTowardZero staticconstexpr

uninitialized

unit< Period >::value

template