Lines Matching refs:sval

33 __ALLOCATOR(sval_t, "svals", sval);
35 sval_t *sval_alloc(sval_t sval) in sval_alloc() argument
40 *ret = sval; in sval_alloc()
44 sval_t *sval_alloc_permanent(sval_t sval) in sval_alloc_permanent() argument
49 *ret = sval; in sval_alloc_permanent()
108 int sval_is_ptr(sval_t sval) in sval_is_ptr() argument
110 if (!sval.type) in sval_is_ptr()
112 return (sval.type->type == SYM_PTR || sval.type->type == SYM_ARRAY); in sval_is_ptr()
115 bool sval_is_fp(sval_t sval) in sval_is_fp() argument
117 return type_is_fp(sval.type); in sval_is_fp()
120 int sval_unsigned(sval_t sval) in sval_unsigned() argument
122 if (is_ptr_type(sval.type)) in sval_unsigned()
124 return type_unsigned(sval.type); in sval_unsigned()
127 int sval_signed(sval_t sval) in sval_signed() argument
129 return !type_unsigned(sval.type); in sval_signed()
132 int sval_bits(sval_t sval) in sval_bits() argument
134 return type_bits(sval.type); in sval_bits()
137 int sval_bits_used(sval_t sval) in sval_bits_used() argument
142 if (sval.uvalue & (1ULL << (i - 1))) in sval_bits_used()
148 int sval_is_negative(sval_t sval) in sval_is_negative() argument
150 if (type_unsigned(sval.type)) in sval_is_negative()
152 if (sval.value < 0) in sval_is_negative()
157 int sval_is_positive(sval_t sval) in sval_is_positive() argument
159 return !sval_is_negative(sval); in sval_is_positive()
162 static bool fp_is_min(sval_t sval) in fp_is_min() argument
164 if (sval.type == &float_ctype) in fp_is_min()
165 return sval.fvalue == -FLT_MAX; in fp_is_min()
166 if (sval.type == &double_ctype) in fp_is_min()
167 return sval.dvalue == -DBL_MAX; in fp_is_min()
168 if (sval.type == &ldouble_ctype) in fp_is_min()
169 return sval.ldvalue == -LDBL_MAX; in fp_is_min()
170 sm_perror("%s: bad type: '%s'", __func__, type_to_str(sval.type)); in fp_is_min()
174 int sval_is_min(sval_t sval) in sval_is_min() argument
176 sval_t min = sval_type_min(sval.type); in sval_is_min()
178 if (sval_is_fp(sval)) in sval_is_min()
179 return fp_is_min(sval); in sval_is_min()
181 if (sval_unsigned(sval)) { in sval_is_min()
182 if (sval.uvalue == 0) in sval_is_min()
187 return (sval.value <= min.value); in sval_is_min()
190 static bool fp_is_max(sval_t sval) in fp_is_max() argument
192 if (sval.type == &float_ctype) in fp_is_max()
193 return sval.fvalue == FLT_MAX; in fp_is_max()
194 if (sval.type == &double_ctype) in fp_is_max()
195 return sval.dvalue == DBL_MAX; in fp_is_max()
196 if (sval.type == &ldouble_ctype) in fp_is_max()
197 return sval.ldvalue == LDBL_MAX; in fp_is_max()
198 sm_perror("%s: bad type: '%s'", __func__, type_to_str(sval.type)); in fp_is_max()
202 int sval_is_max(sval_t sval) in sval_is_max() argument
204 sval_t max = sval_type_max(sval.type); in sval_is_max()
206 if (sval_is_fp(sval)) in sval_is_max()
207 return fp_is_max(sval); in sval_is_max()
209 if (sval_unsigned(sval)) in sval_is_max()
210 return (sval.uvalue >= max.value); in sval_is_max()
211 return (sval.value >= max.value); in sval_is_max()
214 int sval_is_a_min(sval_t sval) in sval_is_a_min() argument
216 if (sval_is_min(sval)) in sval_is_a_min()
219 if (sval_is_fp(sval)) in sval_is_a_min()
222 if (sval_signed(sval) && sval.value == SHRT_MIN) in sval_is_a_min()
224 if (sval_signed(sval) && sval.value == INT_MIN) in sval_is_a_min()
226 if (sval_signed(sval) && sval.value == LLONG_MIN) in sval_is_a_min()
231 int sval_is_a_max(sval_t sval) in sval_is_a_max() argument
233 if (sval_is_max(sval)) in sval_is_a_max()
236 if (sval_is_fp(sval)) in sval_is_a_max()
239 if (sval.uvalue == SHRT_MAX) in sval_is_a_max()
241 if (sval.uvalue == INT_MAX) in sval_is_a_max()
243 if (sval.uvalue == LLONG_MAX) in sval_is_a_max()
245 if (sval.uvalue == USHRT_MAX) in sval_is_a_max()
247 if (sval.uvalue == UINT_MAX) in sval_is_a_max()
249 if (sval_unsigned(sval) && sval.uvalue == ULLONG_MAX) in sval_is_a_max()
251 if (sval.value > valid_ptr_max - 1000 && in sval_is_a_max()
252 sval.value < valid_ptr_max + 1000) in sval_is_a_max()
257 int sval_is_negative_min(sval_t sval) in sval_is_negative_min() argument
259 if (sval_is_fp(sval)) in sval_is_negative_min()
262 if (!sval_is_negative(sval)) in sval_is_negative_min()
264 return sval_is_min(sval); in sval_is_negative_min()
278 sval_t sval; in sval_cmp_val() local
280 sval = sval_type_val(&llong_ctype, val); in sval_cmp_val()
281 return sval_cmp(one, sval); in sval_cmp_val()
298 int sval_too_low(struct symbol *type, sval_t sval) in sval_too_low() argument
300 if (sval_is_negative(sval) && type_unsigned(type)) in sval_too_low()
302 if (type_signed(type) && sval_unsigned(sval)) in sval_too_low()
304 if (type_signed(sval.type) && in sval_too_low()
305 sval.value < sval_type_min(type).value) in sval_too_low()
307 if (sval_cmp(sval, sval_type_min(type)) < 0) in sval_too_low()
312 int sval_too_high(struct symbol *type, sval_t sval) in sval_too_high() argument
314 if (sval_is_negative(sval)) in sval_too_high()
316 if (sval.uvalue > sval_type_max(type).uvalue) in sval_too_high()
321 int sval_fits(struct symbol *type, sval_t sval) in sval_fits() argument
327 if (type_is_fp(sval.type)) in sval_fits()
330 if (sval_too_low(type, sval)) in sval_fits()
332 if (sval_too_high(type, sval)) in sval_fits()
337 static sval_t cast_to_fp(struct symbol *type, sval_t sval) in cast_to_fp() argument
343 if (!sval_is_fp(sval)) { in cast_to_fp()
344 if (sval_unsigned(sval)) in cast_to_fp()
345 ret.fvalue = sval.uvalue; in cast_to_fp()
347 ret.fvalue = sval.value; in cast_to_fp()
348 } else if (sval.type == &float_ctype) in cast_to_fp()
349 ret.fvalue = sval.fvalue; in cast_to_fp()
350 else if (sval.type == &double_ctype) in cast_to_fp()
351 ret.fvalue = sval.dvalue; in cast_to_fp()
353 ret.fvalue = sval.ldvalue; in cast_to_fp()
355 if (!sval_is_fp(sval)) { in cast_to_fp()
356 if (sval_unsigned(sval)) in cast_to_fp()
357 ret.dvalue = sval.uvalue; in cast_to_fp()
359 ret.dvalue = sval.value; in cast_to_fp()
360 } else if (sval.type == &float_ctype) in cast_to_fp()
361 ret.dvalue = sval.fvalue; in cast_to_fp()
362 else if (sval.type == &double_ctype) in cast_to_fp()
363 ret.dvalue = sval.dvalue; in cast_to_fp()
365 ret.dvalue = sval.ldvalue; in cast_to_fp()
367 if (!sval_is_fp(sval)) { in cast_to_fp()
368 if (sval_unsigned(sval)) in cast_to_fp()
369 ret.ldvalue = (long double)sval.uvalue; in cast_to_fp()
371 ret.ldvalue = (long double)sval.value; in cast_to_fp()
372 } else if (sval.type == &float_ctype) in cast_to_fp()
373 ret.ldvalue = sval.fvalue; in cast_to_fp()
374 else if (sval.type == &double_ctype) in cast_to_fp()
375 ret.ldvalue = sval.dvalue; in cast_to_fp()
377 ret.ldvalue = sval.ldvalue; in cast_to_fp()
385 static sval_t cast_from_fp(struct symbol *type, sval_t sval) in cast_from_fp() argument
390 if (sval.type == &float_ctype) in cast_from_fp()
391 ret.value = sval.fvalue; in cast_from_fp()
392 else if (sval.type == &double_ctype) in cast_from_fp()
393 ret.value = sval.dvalue; in cast_from_fp()
394 else if (sval.type == &ldouble_ctype) in cast_from_fp()
395 ret.value = sval.ldvalue; in cast_from_fp()
402 sval_t sval_cast(struct symbol *type, sval_t sval) in sval_cast() argument
410 return cast_to_fp(type, sval); in sval_cast()
411 if (type_is_fp(sval.type)) in sval_cast()
412 return cast_from_fp(type, sval); in sval_cast()
417 ret.value = !!sval.value; in sval_cast()
421 ret.value = (long long)(unsigned char)sval.value; in sval_cast()
423 ret.value = (long long)(char)sval.value; in sval_cast()
427 ret.value = (long long)(unsigned short)sval.value; in sval_cast()
429 ret.value = (long long)(short)sval.value; in sval_cast()
433 ret.value = (long long)(unsigned int)sval.value; in sval_cast()
435 ret.value = (long long)(int)sval.value; in sval_cast()
438 ret.value = sval.value; in sval_cast()
444 sval_t sval_preop(sval_t sval, int op) in sval_preop() argument
448 sval.value = !sval.value; in sval_preop()
451 sval.value = ~sval.value; in sval_preop()
452 sval = sval_cast(sval.type, sval); in sval_preop()
455 sval.value = -sval.value; in sval_preop()
456 sval = sval_cast(sval.type, sval); in sval_preop()
459 return sval; in sval_preop()
627 int sval_unop_overflows(sval_t sval, int op) in sval_unop_overflows() argument
631 if (sval_positive_bits(sval) == 32 && sval.value == INT_MIN) in sval_unop_overflows()
633 if (sval_positive_bits(sval) == 64 && sval.value == LLONG_MIN) in sval_unop_overflows()
635 if (sval_is_negative(sval)) in sval_unop_overflows()
637 if (sval_signed(sval)) in sval_unop_overflows()
639 if (sval_bits(sval) == 32 && sval.uvalue > INT_MAX) in sval_unop_overflows()
641 if (sval_bits(sval) == 64 && sval.uvalue > LLONG_MAX) in sval_unop_overflows()
767 unsigned long long sval_fls_mask(sval_t sval) in sval_fls_mask() argument
769 return fls_mask(sval.uvalue); in sval_fls_mask()
772 static char *fp_to_str(sval_t sval) in fp_to_str() argument
776 if (sval.type == &float_ctype) in fp_to_str()
777 snprintf(buf, sizeof(buf), "%f", sval.fvalue); in fp_to_str()
778 else if (sval.type == &double_ctype) in fp_to_str()
779 snprintf(buf, sizeof(buf), "%e", sval.dvalue); in fp_to_str()
780 else if (sval.type == &ldouble_ctype) { in fp_to_str()
781 snprintf(buf, sizeof(buf), "%Lf", sval.ldvalue); in fp_to_str()
788 const char *sval_to_str(sval_t sval) in sval_to_str() argument
792 if (sval_is_fp(sval)) in sval_to_str()
793 return fp_to_str(sval); in sval_to_str()
795 if (sval_is_ptr(sval) && sval.value == valid_ptr_max) in sval_to_str()
797 if (sval_unsigned(sval) && sval.value == ULLONG_MAX) in sval_to_str()
799 if (sval_unsigned(sval) && sval.value == UINT_MAX) in sval_to_str()
801 if (sval.value == USHRT_MAX) in sval_to_str()
804 if (sval_signed(sval) && sval.value == LLONG_MAX) in sval_to_str()
806 if (sval.value == INT_MAX) in sval_to_str()
808 if (sval.value == SHRT_MAX) in sval_to_str()
811 if (sval_signed(sval) && sval.value == SHRT_MIN) in sval_to_str()
813 if (sval_signed(sval) && sval.value == INT_MIN) in sval_to_str()
815 if (sval_signed(sval) && sval.value == LLONG_MIN) in sval_to_str()
818 if (sval_unsigned(sval)) in sval_to_str()
819 snprintf(buf, sizeof(buf), "%llu", sval.value); in sval_to_str()
820 else if (sval.value < 0) in sval_to_str()
821 snprintf(buf, sizeof(buf), "(%lld)", sval.value); in sval_to_str()
823 snprintf(buf, sizeof(buf), "%lld", sval.value); in sval_to_str()
828 const char *sval_to_str_or_err_ptr(sval_t sval) in sval_to_str_or_err_ptr() argument
833 !is_ptr_type(sval.type)) in sval_to_str_or_err_ptr()
834 return sval_to_str(sval); in sval_to_str_or_err_ptr()
836 if (!sval_is_fp(sval) && sval.uvalue >= -4905ULL) { in sval_to_str_or_err_ptr()
837 snprintf(buf, sizeof(buf), "(%lld)", sval.value); in sval_to_str_or_err_ptr()
841 return sval_to_str(sval); in sval_to_str_or_err_ptr()
844 const char *sval_to_numstr(sval_t sval) in sval_to_numstr() argument
848 if (type_is_fp(sval.type)) in sval_to_numstr()
849 return fp_to_str(sval); in sval_to_numstr()
851 if (sval_unsigned(sval)) in sval_to_numstr()
852 snprintf(buf, sizeof(buf), "%llu", sval.value); in sval_to_numstr()
853 else if (sval.value < 0) in sval_to_numstr()
854 snprintf(buf, sizeof(buf), "(%lld)", sval.value); in sval_to_numstr()
856 snprintf(buf, sizeof(buf), "%lld", sval.value); in sval_to_numstr()