clang 22.0.0git
|
Wrapper around numeric types. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/ByteCode/Integral.h"
Public Types | |
using | AsUnsigned = Integral<Bits, false> |
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 |
bool | operator> (unsigned RHS) const |
Integral | operator- () const |
Integral | operator- (const Integral &Other) const |
Integral | operator~ () const |
template<unsigned DstBits, bool DstSign> | |
operator Integral< DstBits, DstSign > () const | |
template<typename Ty, typename = std::enable_if_t<std::is_integral_v<Ty>>> | |
operator Ty () const | |
APSInt | toAPSInt () const |
APSInt | toAPSInt (unsigned BitWidth) const |
APInt | toAPInt (unsigned BitWidth) const |
APValue | toAPValue (const ASTContext &) 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 |
void | bitcastToMemory (std::byte *Dest) const |
std::string | toDiagnosticString (const ASTContext &Ctx) 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 | bitcastFromMemory (const std::byte *Src, unsigned BitWidth) |
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) |
static Integral | zero (unsigned BitWidth=0) |
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 66 of file Integral.h.
Definition at line 83 of file Integral.h.
|
inline |
Zero-initializes an integral.
Definition at line 86 of file Integral.h.
|
inlineexplicit |
Constructs an integral from another integral.
Definition at line 90 of file Integral.h.
|
inlineexplicit |
Construct an integral from a value based on signedness.
Definition at line 93 of file Integral.h.
|
inlinestatic |
Definition at line 237 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::increment().
|
inlinestatic |
Definition at line 259 of file Integral.h.
|
inlinestatic |
Definition at line 167 of file Integral.h.
|
inline |
Definition at line 163 of file Integral.h.
|
inlinestatic |
Definition at line 264 of file Integral.h.
|
inlinestaticconstexpr |
Definition at line 146 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::decrement(), clang::interp::Integral< Bits, false >::increment(), and clang::interp::Integral< Bits, false >::isMin().
|
inlinestatic |
Definition at line 269 of file Integral.h.
|
inlinestatic |
Definition at line 282 of file Integral.h.
|
inline |
Definition at line 159 of file Integral.h.
|
inline |
Definition at line 182 of file Integral.h.
|
inlinestatic |
Definition at line 233 of file Integral.h.
|
inlinestatic |
Definition at line 254 of file Integral.h.
|
inlinestatic |
Definition at line 215 of file Integral.h.
|
inlinestatic |
Definition at line 221 of file Integral.h.
|
inlinestatic |
Definition at line 206 of file Integral.h.
Referenced by BCP(), clang::interp::Integral< Bits, false >::from(), clang::interp::Integral< Bits, false >::shiftLeft(), clang::interp::Integral< Bits, false >::shiftRight(), and clang::interp::Integral< Bits, false >::zero().
|
inlinestatic |
Definition at line 229 of file Integral.h.
|
inlinestatic |
Definition at line 225 of file Integral.h.
|
inline |
Definition at line 150 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::neg().
|
inline |
Definition at line 152 of file Integral.h.
|
inline |
Definition at line 156 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::isPositive().
|
inline |
Definition at line 157 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::countLeadingZeros().
|
inlinestaticconstexpr |
Definition at line 154 of file Integral.h.
|
inline |
Definition at line 148 of file Integral.h.
|
inlinestatic |
Definition at line 204 of file Integral.h.
|
inlinestatic |
Definition at line 203 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::isMin().
|
inlinestatic |
Definition at line 245 of file Integral.h.
|
inlinestatic |
Definition at line 274 of file Integral.h.
|
inlineexplicit |
Definition at line 117 of file Integral.h.
|
inlineexplicit |
Definition at line 122 of file Integral.h.
|
inline |
Definition at line 101 of file Integral.h.
|
inline |
Definition at line 110 of file Integral.h.
|
inline |
Definition at line 111 of file Integral.h.
|
inline |
Definition at line 96 of file Integral.h.
|
inline |
Definition at line 98 of file Integral.h.
|
inline |
Definition at line 100 of file Integral.h.
|
inline |
Definition at line 97 of file Integral.h.
|
inline |
Definition at line 106 of file Integral.h.
|
inline |
Definition at line 99 of file Integral.h.
|
inline |
Definition at line 102 of file Integral.h.
|
inline |
Definition at line 114 of file Integral.h.
|
inline |
Definition at line 201 of file Integral.h.
Referenced by clang::interp::operator<<().
|
inlinestatic |
Definition at line 249 of file Integral.h.
|
inlinestatic |
Definition at line 288 of file Integral.h.
|
inlinestatic |
Definition at line 294 of file Integral.h.
|
inlinestatic |
Definition at line 241 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::decrement().
|
inline |
Definition at line 132 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::toAPSInt().
|
inline |
Definition at line 126 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::toAPValue().
|
inline |
Definition at line 129 of file Integral.h.
|
inline |
Definition at line 140 of file Integral.h.
|
inline |
Definition at line 175 of file Integral.h.
Definition at line 142 of file Integral.h.
|
inline |
Definition at line 191 of file Integral.h.
|
inlinestatic |
Definition at line 219 of file Integral.h.
|
friend |
Definition at line 68 of file Integral.h.
Referenced by clang::interp::Integral< Bits, false >::bitAnd(), clang::interp::Integral< Bits, false >::bitcastFromMemory(), clang::interp::Integral< Bits, false >::bitOr(), clang::interp::Integral< Bits, false >::bitXor(), clang::interp::Integral< Bits, false >::comp(), clang::interp::Integral< Bits, false >::decrement(), clang::interp::Integral< Bits, false >::div(), clang::interp::Integral< Bits, false >::from(), clang::interp::Integral< Bits, false >::from(), clang::interp::Integral< Bits, false >::from(), clang::interp::Integral< Bits, false >::increment(), clang::interp::Integral< Bits, false >::max(), clang::interp::Integral< Bits, false >::min(), clang::interp::Integral< Bits, false >::operator Integral< DstBits, DstSign >(), clang::interp::Integral< Bits, false >::operator-(), clang::interp::Integral< Bits, false >::operator-(), clang::interp::Integral< Bits, false >::operator~(), clang::interp::Integral< Bits, false >::rem(), and clang::interp::Integral< Bits, false >::truncate().