Lines Matching refs:Scalar

1 //===-- Scalar.cpp ----------------------------------------------*- C++ -*-===//
9 #include "lldb/Utility/Scalar.h"
28 static Scalar::Type PromoteToMaxType(
29 const Scalar &lhs, // The const left hand side object
30 const Scalar &rhs, // The const right hand side object
31 Scalar &temp_value, // A modifiable temp value than can be used to hold
33 const Scalar *&promoted_lhs_ptr, // Pointer to the resulting possibly
36 const Scalar *&promoted_rhs_ptr // Pointer to the resulting possibly
40 Scalar result;
47 Scalar::Type lhs_type = lhs.GetType();
48 Scalar::Type rhs_type = rhs.GetType();
69 return Scalar::e_void;
72 Scalar::Scalar() : m_type(e_void), m_float(static_cast<float>(0)) {}
74 bool Scalar::GetData(DataExtractor &data, size_t limit_byte_size) const {
100 const void *Scalar::GetBytes() const {
184 size_t Scalar::GetByteSize() const {
211 bool Scalar::IsZero() const {
237 void Scalar::GetValue(Stream *s, bool show_type) const {
270 const char *Scalar::GetTypeAsCString() const {
305 return "<invalid Scalar type>";
308 Scalar &Scalar::operator=(const int v) {
314 Scalar &Scalar::operator=(unsigned int v) {
320 Scalar &Scalar::operator=(long v) {
326 Scalar &Scalar::operator=(unsigned long v) {
332 Scalar &Scalar::operator=(long long v) {
338 Scalar &Scalar::operator=(unsigned long long v) {
344 Scalar &Scalar::operator=(float v) {
350 Scalar &Scalar::operator=(double v) {
356 Scalar &Scalar::operator=(long double v) {
369 Scalar &Scalar::operator=(llvm::APInt rhs) {
408 Scalar::~Scalar() = default;
410 Scalar::Type Scalar::GetBestTypeForBitSize(size_t bit_size, bool sign) {
411 // Scalar types are always host types, hence the sizeof().
413 if (bit_size <= sizeof(int)*8) return Scalar::e_sint;
414 if (bit_size <= sizeof(long)*8) return Scalar::e_slong;
415 if (bit_size <= sizeof(long long)*8) return Scalar::e_slonglong;
416 if (bit_size <= 128) return Scalar::e_sint128;
417 if (bit_size <= 256) return Scalar::e_sint256;
418 if (bit_size <= 512) return Scalar::e_sint512;
420 if (bit_size <= sizeof(unsigned int)*8) return Scalar::e_uint;
421 if (bit_size <= sizeof(unsigned long)*8) return Scalar::e_ulong;
422 if (bit_size <= sizeof(unsigned long long)*8) return Scalar::e_ulonglong;
423 if (bit_size <= 128) return Scalar::e_uint128;
424 if (bit_size <= 256) return Scalar::e_uint256;
425 if (bit_size <= 512) return Scalar::e_uint512;
427 return Scalar::e_void;
430 void Scalar::TruncOrExtendTo(Scalar::Type type, uint16_t bits) {
449 llvm_unreachable("Promoting a Scalar to a specific number of bits is only "
455 bool Scalar::Promote(Scalar::Type type) {
1147 const char *Scalar::GetValueTypeAsCString(Scalar::Type type) {
1185 Scalar::Type
1186 Scalar::GetValueTypeForSignedIntegerWithByteSize(size_t byte_size) {
1196 Scalar::Type
1197 Scalar::GetValueTypeForUnsignedIntegerWithByteSize(size_t byte_size) {
1207 Scalar::Type Scalar::GetValueTypeForFloatWithByteSize(size_t byte_size) {
1217 bool Scalar::MakeSigned() {
1279 bool Scalar::MakeUnsigned() {
1341 signed char Scalar::SChar(char fail_value) const {
1371 unsigned char Scalar::UChar(unsigned char fail_value) const {
1401 short Scalar::SShort(short fail_value) const {
1431 unsigned short Scalar::UShort(unsigned short fail_value) const {
1461 int Scalar::SInt(int fail_value) const {
1491 unsigned int Scalar::UInt(unsigned int fail_value) const {
1521 long Scalar::SLong(long fail_value) const {
1551 unsigned long Scalar::ULong(unsigned long fail_value) const {
1581 long long Scalar::SLongLong(long long fail_value) const {
1611 unsigned long long Scalar::ULongLong(unsigned long long fail_value) const {
1646 llvm::APInt Scalar::SInt128(llvm::APInt &fail_value) const {
1671 llvm::APInt Scalar::UInt128(const llvm::APInt &fail_value) const {
1696 float Scalar::Float(float fail_value) const {
1724 double Scalar::Double(double fail_value) const {
1752 long double Scalar::LongDouble(long double fail_value) const {
1781 Scalar &Scalar::operator+=(const Scalar &rhs) {
1782 Scalar temp_value;
1783 const Scalar *a;
1784 const Scalar *b;
1786 Scalar::e_void) {
1815 Scalar &Scalar::operator<<=(const Scalar &rhs) {
1863 bool Scalar::ShiftRightLogical(const Scalar &rhs) {
1911 Scalar &Scalar::operator>>=(const Scalar &rhs) {
1959 Scalar &Scalar::operator&=(const Scalar &rhs) {
2007 bool Scalar::AbsoluteValue() {
2038 bool Scalar::UnaryNegate() {
2065 bool Scalar::OnesComplement() {
2091 const Scalar lldb_private::operator+(const Scalar &lhs, const Scalar &rhs) {
2092 Scalar result;
2093 Scalar temp_value;
2094 const Scalar *a;
2095 const Scalar *b;
2097 Scalar::e_void) {
2099 case Scalar::e_void:
2101 case Scalar::e_sint:
2102 case Scalar::e_uint:
2103 case Scalar::e_slong:
2104 case Scalar::e_ulong:
2105 case Scalar::e_slonglong:
2106 case Scalar::e_ulonglong:
2107 case Scalar::e_sint128:
2108 case Scalar::e_uint128:
2109 case Scalar::e_sint256:
2110 case Scalar::e_uint256:
2111 case Scalar::e_sint512:
2112 case Scalar::e_uint512:
2115 case Scalar::e_float:
2116 case Scalar::e_double:
2117 case Scalar::e_long_double:
2125 const Scalar lldb_private::operator-(const Scalar &lhs, const Scalar &rhs) {
2126 Scalar result;
2127 Scalar temp_value;
2128 const Scalar *a;
2129 const Scalar *b;
2131 Scalar::e_void) {
2133 case Scalar::e_void:
2135 case Scalar::e_sint:
2136 case Scalar::e_uint:
2137 case Scalar::e_slong:
2138 case Scalar::e_ulong:
2139 case Scalar::e_slonglong:
2140 case Scalar::e_ulonglong:
2141 case Scalar::e_sint128:
2142 case Scalar::e_uint128:
2143 case Scalar::e_sint256:
2144 case Scalar::e_uint256:
2145 case Scalar::e_sint512:
2146 case Scalar::e_uint512:
2149 case Scalar::e_float:
2150 case Scalar::e_double:
2151 case Scalar::e_long_double:
2159 const Scalar lldb_private::operator/(const Scalar &lhs, const Scalar &rhs) {
2160 Scalar result;
2161 Scalar temp_value;
2162 const Scalar *a;
2163 const Scalar *b;
2165 Scalar::e_void) {
2167 case Scalar::e_void:
2169 case Scalar::e_sint:
2170 case Scalar::e_slong:
2171 case Scalar::e_slonglong:
2172 case Scalar::e_sint128:
2173 case Scalar::e_sint256:
2174 case Scalar::e_sint512:
2180 case Scalar::e_uint:
2181 case Scalar::e_ulong:
2182 case Scalar::e_ulonglong:
2183 case Scalar::e_uint128:
2184 case Scalar::e_uint256:
2185 case Scalar::e_uint512:
2191 case Scalar::e_float:
2192 case Scalar::e_double:
2193 case Scalar::e_long_double:
2203 result.m_type = Scalar::e_void;
2207 const Scalar lldb_private::operator*(const Scalar &lhs, const Scalar &rhs) {
2208 Scalar result;
2209 Scalar temp_value;
2210 const Scalar *a;
2211 const Scalar *b;
2213 Scalar::e_void) {
2215 case Scalar::e_void:
2217 case Scalar::e_sint:
2218 case Scalar::e_uint:
2219 case Scalar::e_slong:
2220 case Scalar::e_ulong:
2221 case Scalar::e_slonglong:
2222 case Scalar::e_ulonglong:
2223 case Scalar::e_sint128:
2224 case Scalar::e_uint128:
2225 case Scalar::e_sint256:
2226 case Scalar::e_uint256:
2227 case Scalar::e_sint512:
2228 case Scalar::e_uint512:
2231 case Scalar::e_float:
2232 case Scalar::e_double:
2233 case Scalar::e_long_double:
2241 const Scalar lldb_private::operator&(const Scalar &lhs, const Scalar &rhs) {
2242 Scalar result;
2243 Scalar temp_value;
2244 const Scalar *a;
2245 const Scalar *b;
2247 Scalar::e_void) {
2249 case Scalar::e_sint:
2250 case Scalar::e_uint:
2251 case Scalar::e_slong:
2252 case Scalar::e_ulong:
2253 case Scalar::e_slonglong:
2254 case Scalar::e_ulonglong:
2255 case Scalar::e_sint128:
2256 case Scalar::e_uint128:
2257 case Scalar::e_sint256:
2258 case Scalar::e_uint256:
2259 case Scalar::e_sint512:
2260 case Scalar::e_uint512:
2263 case Scalar::e_void:
2264 case Scalar::e_float:
2265 case Scalar::e_double:
2266 case Scalar::e_long_double:
2268 result.m_type = Scalar::e_void;
2275 const Scalar lldb_private::operator|(const Scalar &lhs, const Scalar &rhs) {
2276 Scalar result;
2277 Scalar temp_value;
2278 const Scalar *a;
2279 const Scalar *b;
2281 Scalar::e_void) {
2283 case Scalar::e_sint:
2284 case Scalar::e_uint:
2285 case Scalar::e_slong:
2286 case Scalar::e_ulong:
2287 case Scalar::e_slonglong:
2288 case Scalar::e_ulonglong:
2289 case Scalar::e_sint128:
2290 case Scalar::e_uint128:
2291 case Scalar::e_sint256:
2292 case Scalar::e_uint256:
2293 case Scalar::e_sint512:
2294 case Scalar::e_uint512:
2298 case Scalar::e_void:
2299 case Scalar::e_float:
2300 case Scalar::e_double:
2301 case Scalar::e_long_double:
2303 result.m_type = Scalar::e_void;
2310 const Scalar lldb_private::operator%(const Scalar &lhs, const Scalar &rhs) {
2311 Scalar result;
2312 Scalar temp_value;
2313 const Scalar *a;
2314 const Scalar *b;
2316 Scalar::e_void) {
2320 case Scalar::e_void:
2322 case Scalar::e_sint:
2323 case Scalar::e_slong:
2324 case Scalar::e_slonglong:
2325 case Scalar::e_sint128:
2326 case Scalar::e_sint256:
2327 case Scalar::e_sint512:
2333 case Scalar::e_uint:
2334 case Scalar::e_ulong:
2335 case Scalar::e_ulonglong:
2336 case Scalar::e_uint128:
2337 case Scalar::e_uint256:
2338 case Scalar::e_uint512:
2346 result.m_type = Scalar::e_void;
2350 const Scalar lldb_private::operator^(const Scalar &lhs, const Scalar &rhs) {
2351 Scalar result;
2352 Scalar temp_value;
2353 const Scalar *a;
2354 const Scalar *b;
2356 Scalar::e_void) {
2358 case Scalar::e_sint:
2359 case Scalar::e_uint:
2360 case Scalar::e_slong:
2361 case Scalar::e_ulong:
2362 case Scalar::e_slonglong:
2363 case Scalar::e_ulonglong:
2364 case Scalar::e_sint128:
2365 case Scalar::e_uint128:
2366 case Scalar::e_sint256:
2367 case Scalar::e_uint256:
2368 case Scalar::e_sint512:
2369 case Scalar::e_uint512:
2373 case Scalar::e_void:
2374 case Scalar::e_float:
2375 case Scalar::e_double:
2376 case Scalar::e_long_double:
2378 result.m_type = Scalar::e_void;
2385 const Scalar lldb_private::operator<<(const Scalar &lhs, const Scalar &rhs) {
2386 Scalar result = lhs;
2391 const Scalar lldb_private::operator>>(const Scalar &lhs, const Scalar &rhs) {
2392 Scalar result = lhs;
2397 Status Scalar::SetValueFromCString(const char *value_str, Encoding encoding,
2421 m_type = Scalar::GetValueTypeForUnsignedIntegerWithByteSize(byte_size);
2459 m_type = Scalar::GetValueTypeForSignedIntegerWithByteSize(byte_size);
2530 Status Scalar::SetValueFromData(DataExtractor &data, lldb::Encoding encoding,
2655 bool Scalar::SignExtend(uint32_t sign_bit_pos) {
2660 case Scalar::e_void:
2661 case Scalar::e_float:
2662 case Scalar::e_double:
2663 case Scalar::e_long_double:
2666 case Scalar::e_sint:
2667 case Scalar::e_uint:
2668 case Scalar::e_slong:
2669 case Scalar::e_ulong:
2670 case Scalar::e_slonglong:
2671 case Scalar::e_ulonglong:
2672 case Scalar::e_sint128:
2673 case Scalar::e_uint128:
2674 case Scalar::e_sint256:
2675 case Scalar::e_uint256:
2676 case Scalar::e_sint512:
2677 case Scalar::e_uint512:
2696 size_t Scalar::GetAsMemoryData(void *dst, size_t dst_len,
2721 bool Scalar::ExtractBitfield(uint32_t bit_size, uint32_t bit_offset) {
2726 case Scalar::e_void:
2727 case Scalar::e_float:
2728 case Scalar::e_double:
2729 case Scalar::e_long_double:
2732 case Scalar::e_sint:
2733 case Scalar::e_slong:
2734 case Scalar::e_slonglong:
2735 case Scalar::e_sint128:
2736 case Scalar::e_sint256:
2737 case Scalar::e_sint512:
2743 case Scalar::e_uint:
2744 case Scalar::e_ulong:
2745 case Scalar::e_ulonglong:
2746 case Scalar::e_uint128:
2747 case Scalar::e_uint256:
2748 case Scalar::e_uint512:
2757 bool lldb_private::operator==(const Scalar &lhs, const Scalar &rhs) {
2759 if (lhs.m_type == Scalar::e_void || rhs.m_type == Scalar::e_void)
2762 Scalar temp_value;
2763 const Scalar *a;
2764 const Scalar *b;
2767 case Scalar::e_void:
2769 case Scalar::e_sint:
2770 case Scalar::e_uint:
2771 case Scalar::e_slong:
2772 case Scalar::e_ulong:
2773 case Scalar::e_slonglong:
2774 case Scalar::e_ulonglong:
2775 case Scalar::e_sint128:
2776 case Scalar::e_uint128:
2777 case Scalar::e_sint256:
2778 case Scalar::e_uint256:
2779 case Scalar::e_sint512:
2780 case Scalar::e_uint512:
2782 case Scalar::e_float:
2783 case Scalar::e_double:
2784 case Scalar::e_long_double:
2792 bool lldb_private::operator!=(const Scalar &lhs, const Scalar &rhs) {
2796 bool lldb_private::operator<(const Scalar &lhs, const Scalar &rhs) {
2797 if (lhs.m_type == Scalar::e_void || rhs.m_type == Scalar::e_void)
2800 Scalar temp_value;
2801 const Scalar *a;
2802 const Scalar *b;
2805 case Scalar::e_void:
2807 case Scalar::e_sint:
2808 case Scalar::e_slong:
2809 case Scalar::e_slonglong:
2810 case Scalar::e_sint128:
2811 case Scalar::e_sint256:
2812 case Scalar::e_sint512:
2813 case Scalar::e_uint512:
2815 case Scalar::e_uint:
2816 case Scalar::e_ulong:
2817 case Scalar::e_ulonglong:
2818 case Scalar::e_uint128:
2819 case Scalar::e_uint256:
2821 case Scalar::e_float:
2822 case Scalar::e_double:
2823 case Scalar::e_long_double:
2831 bool lldb_private::operator<=(const Scalar &lhs, const Scalar &rhs) {
2835 bool lldb_private::operator>(const Scalar &lhs, const Scalar &rhs) {
2839 bool lldb_private::operator>=(const Scalar &lhs, const Scalar &rhs) {
2843 bool Scalar::ClearBit(uint32_t bit) {
2869 bool Scalar::SetBit(uint32_t bit) {
2895 llvm::raw_ostream &lldb_private::operator<<(llvm::raw_ostream &os, const Scalar &scalar) {