clang 17.0.0git
|
Wrapper around numeric types. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/Interp/Integral.h"
Public Member Functions | |
Integral () | |
Zero-initializes an integral. | |
template<unsigned SrcBits, bool SrcSign> | |
Integral (Integral< SrcBits, SrcSign > V) | |
Constructs an integral from another integral. | |
Integral (const APSInt &V) | |
Construct an integral from a value based on signedness. | |
bool | operator< (Integral RHS) const |
bool | operator> (Integral RHS) const |
bool | operator<= (Integral RHS) const |
bool | operator>= (Integral RHS) const |
bool | operator== (Integral RHS) const |
bool | operator!= (Integral RHS) const |
bool | operator> (unsigned RHS) const |
Integral | operator- () const |
Integral | operator~ () const |
template<unsigned DstBits, bool DstSign> | |
operator Integral< DstBits, DstSign > () const | |
operator unsigned () const | |
operator int64_t () const | |
operator uint64_t () const | |
APSInt | toAPSInt () const |
APSInt | toAPSInt (unsigned NumBits) const |
APValue | toAPValue () const |
Integral< Bits, false > | toUnsigned () const |
bool | isZero () const |
bool | isMin () const |
bool | isMinusOne () const |
bool | isNegative () const |
bool | isPositive () const |
ComparisonCategoryResult | compare (const Integral &RHS) const |
unsigned | countLeadingZeros () const |
Integral | truncate (unsigned TruncBits) const |
void | print (llvm::raw_ostream &OS) const |
Static Public Member Functions | |
static constexpr unsigned | bitWidth () |
static constexpr bool | isSigned () |
static Integral | min (unsigned NumBits) |
static Integral | max (unsigned NumBits) |
template<typename ValT > | |
static Integral | from (ValT Value) |
template<unsigned SrcBits, bool SrcSign> | |
static std::enable_if_t< SrcBits !=0, Integral > | from (Integral< SrcBits, SrcSign > Value) |
template<bool SrcSign> | |
static Integral | from (Integral< 0, SrcSign > Value) |
static Integral | zero () |
template<typename T > | |
static Integral | from (T Value, unsigned NumBits) |
static bool | inRange (int64_t Value, unsigned NumBits) |
static bool | increment (Integral A, Integral *R) |
static bool | decrement (Integral A, Integral *R) |
static bool | add (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | sub (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | mul (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | rem (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | div (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | bitAnd (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | bitOr (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | bitXor (Integral A, Integral B, unsigned OpBits, Integral *R) |
static bool | neg (Integral A, Integral *R) |
static bool | comp (Integral A, Integral *R) |
template<unsigned RHSBits, bool RHSSign> | |
static void | shiftLeft (const Integral A, const Integral< RHSBits, RHSSign > B, unsigned OpBits, Integral *R) |
template<unsigned RHSBits, bool RHSSign> | |
static void | shiftRight (const Integral A, const Integral< RHSBits, RHSSign > B, unsigned OpBits, Integral *R) |
Friends | |
template<unsigned OtherBits, bool OtherSigned> | |
class | Integral |
Wrapper around numeric types.
These wrappers are required to shared an interface between APSint and builtin primitive numeral types, while optimising for storage and allowing methods operating on primitive type to compile to fast code.
Definition at line 48 of file Integral.h.
|
inline |
Zero-initializes an integral.
Definition at line 65 of file Integral.h.
|
inlineexplicit |
Constructs an integral from another integral.
Definition at line 69 of file Integral.h.
|
inlineexplicit |
Construct an integral from a value based on signedness.
Definition at line 72 of file Integral.h.
|
inlinestatic |
Definition at line 188 of file Integral.h.
Referenced by clang::interp::Integral< Bits, Signed >::increment().
|
inlinestatic |
Definition at line 210 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 215 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestaticconstexpr |
Definition at line 113 of file Integral.h.
Referenced by clang::interp::Integral< Bits, Signed >::decrement(), clang::interp::Integral< Bits, Signed >::increment(), and clang::interp::Integral< Bits, Signed >::isMin().
|
inlinestatic |
Definition at line 220 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 230 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inline |
Definition at line 126 of file Integral.h.
References clang::interp::Compare(), and V.
|
inline |
Definition at line 130 of file Integral.h.
References V.
|
inlinestatic |
Definition at line 184 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::bitWidth(), clang::interp::Integral< Bits, Signed >::Integral, and clang::interp::Integral< Bits, Signed >::sub().
|
inlinestatic |
Definition at line 205 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 163 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 159 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 172 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 150 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::from(), and clang::interp::Integral< Bits, Signed >::Integral.
Referenced by clang::interp::Integral< Bits, Signed >::from(), clang::interp::Integral< Bits, Signed >::shiftLeft(), clang::interp::Integral< Bits, Signed >::shiftRight(), and clang::interp::Integral< Bits, Signed >::zero().
|
inlinestatic |
Definition at line 180 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::add(), clang::interp::Integral< Bits, Signed >::bitWidth(), and clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 176 of file Integral.h.
|
inline |
Definition at line 117 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::bitWidth(), and clang::interp::Integral< Bits, Signed >::min().
|
inline |
Definition at line 119 of file Integral.h.
References clang::Signed, and V.
|
inline |
Definition at line 123 of file Integral.h.
References V.
Referenced by clang::interp::Integral< Bits, Signed >::isPositive().
|
inline |
Definition at line 124 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::isNegative().
|
inlinestaticconstexpr |
Definition at line 121 of file Integral.h.
References clang::Signed.
|
inline |
Definition at line 115 of file Integral.h.
References V.
|
inlinestatic |
Definition at line 146 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 143 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
Referenced by clang::interp::Integral< Bits, Signed >::isMin().
|
inlinestatic |
Definition at line 196 of file Integral.h.
|
inlinestatic |
Definition at line 225 of file Integral.h.
|
inlineexplicit |
Definition at line 95 of file Integral.h.
References V.
|
inlineexplicit |
Definition at line 90 of file Integral.h.
References V.
|
inlineexplicit |
Definition at line 96 of file Integral.h.
References V.
|
inlineexplicit |
Definition at line 94 of file Integral.h.
References V.
|
inline |
Definition at line 80 of file Integral.h.
References V.
|
inline |
Definition at line 86 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral, and V.
|
inline |
Definition at line 75 of file Integral.h.
References V.
|
inline |
Definition at line 77 of file Integral.h.
References V.
|
inline |
Definition at line 79 of file Integral.h.
References V.
|
inline |
Definition at line 76 of file Integral.h.
References V.
|
inline |
Definition at line 82 of file Integral.h.
References V.
|
inline |
Definition at line 78 of file Integral.h.
References V.
|
inline |
Definition at line 87 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral, and V.
|
inline |
|
inlinestatic |
Definition at line 200 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral.
|
inlinestatic |
Definition at line 236 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::from().
|
inlinestatic |
Definition at line 242 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::from().
|
inlinestatic |
Definition at line 192 of file Integral.h.
Referenced by clang::interp::Integral< Bits, Signed >::decrement().
|
inline |
Definition at line 98 of file Integral.h.
References clang::Signed, and V.
Referenced by clang::interp::Integral< Bits, Signed >::toAPSInt(), and clang::interp::Integral< Bits, Signed >::toAPValue().
|
inline |
Definition at line 101 of file Integral.h.
References clang::Signed, and clang::interp::Integral< Bits, Signed >::toAPSInt().
|
inline |
Definition at line 107 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::toAPSInt().
|
inline |
Definition at line 109 of file Integral.h.
|
inline |
Definition at line 132 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::Integral, clang::Signed, and V.
|
inlinestatic |
Definition at line 170 of file Integral.h.
References clang::interp::Integral< Bits, Signed >::from().
|
friend |
Definition at line 50 of file Integral.h.
Referenced by clang::interp::Integral< Bits, Signed >::bitAnd(), clang::interp::Integral< Bits, Signed >::bitOr(), clang::interp::Integral< Bits, Signed >::bitXor(), clang::interp::Integral< Bits, Signed >::comp(), clang::interp::Integral< Bits, Signed >::decrement(), clang::interp::Integral< Bits, Signed >::div(), clang::interp::Integral< Bits, Signed >::from(), clang::interp::Integral< Bits, Signed >::increment(), clang::interp::Integral< Bits, Signed >::max(), clang::interp::Integral< Bits, Signed >::min(), clang::interp::Integral< Bits, Signed >::operator-(), clang::interp::Integral< Bits, Signed >::operator~(), clang::interp::Integral< Bits, Signed >::rem(), and clang::interp::Integral< Bits, Signed >::truncate().