Lines Matching full:scalar
1 //===-- Scalar.cpp --------------------------------------------------------===//
9 #include "lldb/Utility/Scalar.h"
31 Scalar::PromotionKey Scalar::GetPromoKey() const {
43 Scalar::PromotionKey Scalar::GetFloatPromoKey(const llvm::fltSemantics &sem) {
56 Scalar::Type Scalar::PromoteToMaxType(Scalar &lhs, Scalar &rhs) {
57 const auto &Promote = [](Scalar &a, const Scalar &b) {
82 return Scalar::e_void;
85 bool Scalar::GetData(DataExtractor &data, size_t limit_byte_size) const {
114 void Scalar::GetBytes(llvm::MutableArrayRef<uint8_t> storage) const {
132 size_t Scalar::GetByteSize() const {
144 bool Scalar::IsZero() const {
156 void Scalar::GetValue(Stream &s, bool show_type) const {
174 void Scalar::TruncOrExtendTo(uint16_t bits, bool sign) {
179 bool Scalar::IntegralPromote(uint16_t bits, bool sign) {
194 bool Scalar::FloatPromote(const llvm::fltSemantics &semantics) {
218 const char *Scalar::GetValueTypeAsCString(Scalar::Type type) {
230 bool Scalar::IsSigned() const {
242 bool Scalar::MakeSigned() {
260 bool Scalar::MakeUnsigned() {
286 template <typename T> T Scalar::GetAs(T fail_value) const {
303 signed char Scalar::SChar(signed char fail_value) const {
307 unsigned char Scalar::UChar(unsigned char fail_value) const {
311 short Scalar::SShort(short fail_value) const {
315 unsigned short Scalar::UShort(unsigned short fail_value) const {
319 int Scalar::SInt(int fail_value) const { return GetAs<int>(fail_value); }
321 unsigned int Scalar::UInt(unsigned int fail_value) const {
325 long Scalar::SLong(long fail_value) const { return GetAs<long>(fail_value); }
327 unsigned long Scalar::ULong(unsigned long fail_value) const {
331 long long Scalar::SLongLong(long long fail_value) const {
335 unsigned long long Scalar::ULongLong(unsigned long long fail_value) const {
339 llvm::APInt Scalar::SInt128(const llvm::APInt &fail_value) const {
351 llvm::APInt Scalar::UInt128(const llvm::APInt &fail_value) const {
363 float Scalar::Float(float fail_value) const {
383 double Scalar::Double(double fail_value) const {
403 long double Scalar::LongDouble(long double fail_value) const {
408 Scalar &Scalar::operator+=(Scalar rhs) {
409 Scalar copy = *this;
410 if ((m_type = PromoteToMaxType(copy, rhs)) != Scalar::e_void) {
426 Scalar &Scalar::operator<<=(const Scalar &rhs) {
434 bool Scalar::ShiftRightLogical(const Scalar &rhs) {
443 Scalar &Scalar::operator>>=(const Scalar &rhs) {
465 Scalar &Scalar::operator&=(const Scalar &rhs) {
473 bool Scalar::AbsoluteValue() {
490 bool Scalar::UnaryNegate() {
504 bool Scalar::OnesComplement() {
513 const Scalar lldb_private::operator+(const Scalar &lhs, const Scalar &rhs) {
514 Scalar result = lhs;
519 const Scalar lldb_private::operator-(Scalar lhs, Scalar rhs) {
520 Scalar result;
521 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void) {
523 case Scalar::e_void:
525 case Scalar::e_int:
528 case Scalar::e_float:
536 const Scalar lldb_private::operator/(Scalar lhs, Scalar rhs) {
537 Scalar result;
538 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void &&
541 case Scalar::e_void:
543 case Scalar::e_int:
546 case Scalar::e_float:
553 result.m_type = Scalar::e_void;
557 const Scalar lldb_private::operator*(Scalar lhs, Scalar rhs) {
558 Scalar result;
559 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void) {
561 case Scalar::e_void:
563 case Scalar::e_int:
566 case Scalar::e_float:
574 const Scalar lldb_private::operator&(Scalar lhs, Scalar rhs) {
575 Scalar result;
576 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void) {
577 if (result.m_type == Scalar::e_int)
580 result.m_type = Scalar::e_void;
585 const Scalar lldb_private::operator|(Scalar lhs, Scalar rhs) {
586 Scalar result;
587 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void) {
588 if (result.m_type == Scalar::e_int)
591 result.m_type = Scalar::e_void;
596 const Scalar lldb_private::operator%(Scalar lhs, Scalar rhs) {
597 Scalar result;
598 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void) {
599 if (!rhs.IsZero() && result.m_type == Scalar::e_int) {
604 result.m_type = Scalar::e_void;
608 const Scalar lldb_private::operator^(Scalar lhs, Scalar rhs) {
609 Scalar result;
610 if ((result.m_type = Scalar::PromoteToMaxType(lhs, rhs)) != Scalar::e_void) {
611 if (result.m_type == Scalar::e_int)
614 result.m_type = Scalar::e_void;
619 const Scalar lldb_private::operator<<(const Scalar &lhs, const Scalar &rhs) {
620 Scalar result = lhs;
625 const Scalar lldb_private::operator>>(const Scalar &lhs, const Scalar &rhs) {
626 Scalar result = lhs;
631 Status Scalar::SetValueFromCString(const char *value_str, Encoding encoding,
701 Status Scalar::SetValueFromData(const DataExtractor &data,
745 bool Scalar::SignExtend(uint32_t sign_bit_pos) {
750 case Scalar::e_void:
751 case Scalar::e_float:
754 case Scalar::e_int:
771 size_t Scalar::GetAsMemoryData(void *dst, size_t dst_len,
774 // Get a data extractor that points to the native scalar data
777 error = Status::FromErrorString("invalid scalar value");
796 bool Scalar::ExtractBitfield(uint32_t bit_size, uint32_t bit_offset) {
801 case Scalar::e_void:
802 case Scalar::e_float:
805 case Scalar::e_int:
813 llvm::APFloat Scalar::CreateAPFloatFromAPSInt(lldb::BasicType basic_type) {
833 llvm::APFloat Scalar::CreateAPFloatFromAPFloat(lldb::BasicType basic_type) {
855 APFloat::cmpResult lldb_private::compare(Scalar lhs, Scalar rhs) {
857 if (lhs.m_type == Scalar::e_void || rhs.m_type == Scalar::e_void)
860 switch (Scalar::PromoteToMaxType(lhs, rhs)) {
861 case Scalar::e_void:
863 case Scalar::e_int:
869 case Scalar::e_float:
875 bool lldb_private::operator==(const Scalar &lhs, const Scalar &rhs) {
879 bool lldb_private::operator!=(const Scalar &lhs, const Scalar &rhs) {
883 bool lldb_private::operator<(const Scalar &lhs, const Scalar &rhs) {
887 bool lldb_private::operator<=(const Scalar &lhs, const Scalar &rhs) {
892 bool lldb_private::operator>(const Scalar &lhs, const Scalar &rhs) {
896 bool lldb_private::operator>=(const Scalar &lhs, const Scalar &rhs) {
901 bool Scalar::ClearBit(uint32_t bit) {
914 bool Scalar::SetBit(uint32_t bit) {
927 llvm::raw_ostream &lldb_private::operator<<(llvm::raw_ostream &os, const Scalar &scalar) {
929 scalar.GetValue(s, /*show_type*/ true);