Lines Matching refs:Scalar

1 //===-- Scalar.h ------------------------------------------------*- C++ -*-===//
36 // Operators are defined and Scalar objects will correctly promote their types
39 class Scalar {
62 Scalar();
63 Scalar(int v) : m_type(e_sint), m_float(static_cast<float>(0)) {
66 Scalar(unsigned int v) : m_type(e_uint), m_float(static_cast<float>(0)) {
69 Scalar(long v) : m_type(e_slong), m_float(static_cast<float>(0)) {
72 Scalar(unsigned long v) : m_type(e_ulong), m_float(static_cast<float>(0)) {
75 Scalar(long long v) : m_type(e_slonglong), m_float(static_cast<float>(0)) {
78 Scalar(unsigned long long v)
82 Scalar(float v) : m_type(e_float), m_float(v) { m_float = llvm::APFloat(v); }
83 Scalar(double v) : m_type(e_double), m_float(v) {
86 Scalar(long double v, bool ieee_quad)
100 Scalar(llvm::APInt v) : m_type(), m_float(static_cast<float>(0)) {
104 // Scalar(const RegisterValue& reg_value);
105 virtual ~Scalar();
107 /// Return the most efficient Scalar::Type for the requested bit size.
143 void TruncOrExtendTo(Scalar::Type type, uint16_t bits);
145 bool Promote(Scalar::Type type);
151 static const char *GetValueTypeAsCString(Scalar::Type value_type);
153 static Scalar::Type
156 static Scalar::Type
159 static Scalar::Type GetValueTypeForFloatWithByteSize(size_t byte_size);
165 Scalar &operator=(const int i);
166 Scalar &operator=(unsigned int v);
167 Scalar &operator=(long v);
168 Scalar &operator=(unsigned long v);
169 Scalar &operator=(long long v);
170 Scalar &operator=(unsigned long long v);
171 Scalar &operator=(float v);
172 Scalar &operator=(double v);
173 Scalar &operator=(long double v);
174 Scalar &operator=(llvm::APInt v);
175 Scalar &operator+=(const Scalar &rhs);
176 Scalar &operator<<=(const Scalar &rhs); // Shift left
177 Scalar &operator>>=(const Scalar &rhs); // Shift right (arithmetic)
178 Scalar &operator&=(const Scalar &rhs);
182 bool ShiftRightLogical(const Scalar &rhs); // Returns true on success
198 Scalar::Type GetType() const { return m_type; }
281 // Classes that inherit from Scalar can see and modify these
282 Scalar::Type m_type;
288 friend const Scalar operator+(const Scalar &lhs, const Scalar &rhs);
289 friend const Scalar operator-(const Scalar &lhs, const Scalar &rhs);
290 friend const Scalar operator/(const Scalar &lhs, const Scalar &rhs);
291 friend const Scalar operator*(const Scalar &lhs, const Scalar &rhs);
292 friend const Scalar operator&(const Scalar &lhs, const Scalar &rhs);
293 friend const Scalar operator|(const Scalar &lhs, const Scalar &rhs);
294 friend const Scalar operator%(const Scalar &lhs, const Scalar &rhs);
295 friend const Scalar operator^(const Scalar &lhs, const Scalar &rhs);
296 friend const Scalar operator<<(const Scalar &lhs, const Scalar &rhs);
297 friend const Scalar operator>>(const Scalar &lhs, const Scalar &rhs);
298 friend bool operator==(const Scalar &lhs, const Scalar &rhs);
299 friend bool operator!=(const Scalar &lhs, const Scalar &rhs);
300 friend bool operator<(const Scalar &lhs, const Scalar &rhs);
301 friend bool operator<=(const Scalar &lhs, const Scalar &rhs);
302 friend bool operator>(const Scalar &lhs, const Scalar &rhs);
303 friend bool operator>=(const Scalar &lhs, const Scalar &rhs);
307 // implicitly convert numbers into Scalar objects.
310 // Scalar two(2);
311 // Scalar four = two * 2;
312 // Scalar eight = 2 * four; // This would cause an error if the
319 const Scalar operator+(const Scalar &lhs, const Scalar &rhs);
320 const Scalar operator-(const Scalar &lhs, const Scalar &rhs);
321 const Scalar operator/(const Scalar &lhs, const Scalar &rhs);
322 const Scalar operator*(const Scalar &lhs, const Scalar &rhs);
323 const Scalar operator&(const Scalar &lhs, const Scalar &rhs);
324 const Scalar operator|(const Scalar &lhs, const Scalar &rhs);
325 const Scalar operator%(const Scalar &lhs, const Scalar &rhs);
326 const Scalar operator^(const Scalar &lhs, const Scalar &rhs);
327 const Scalar operator<<(const Scalar &lhs, const Scalar &rhs);
328 const Scalar operator>>(const Scalar &lhs, const Scalar &rhs);
329 bool operator==(const Scalar &lhs, const Scalar &rhs);
330 bool operator!=(const Scalar &lhs, const Scalar &rhs);
331 bool operator<(const Scalar &lhs, const Scalar &rhs);
332 bool operator<=(const Scalar &lhs, const Scalar &rhs);
333 bool operator>(const Scalar &lhs, const Scalar &rhs);
334 bool operator>=(const Scalar &lhs, const Scalar &rhs);
336 llvm::raw_ostream &operator<<(llvm::raw_ostream &os, const Scalar &scalar);