Lines Matching refs:left

462 static sval_t sval_binop_unsigned(struct symbol *type, sval_t left, int op, sval_t right)  in sval_binop_unsigned()  argument
469 ret.uvalue = left.uvalue * right.uvalue; in sval_binop_unsigned()
476 ret.uvalue = left.uvalue / right.uvalue; in sval_binop_unsigned()
480 ret.uvalue = left.uvalue + right.uvalue; in sval_binop_unsigned()
483 ret.uvalue = left.uvalue - right.uvalue; in sval_binop_unsigned()
490 ret.uvalue = left.uvalue % right.uvalue; in sval_binop_unsigned()
494 ret.uvalue = left.uvalue | right.uvalue; in sval_binop_unsigned()
497 ret.uvalue = left.uvalue & right.uvalue; in sval_binop_unsigned()
500 ret.uvalue = left.uvalue >> right.uvalue; in sval_binop_unsigned()
503 ret.uvalue = left.uvalue << right.uvalue; in sval_binop_unsigned()
506 ret.uvalue = left.uvalue ^ right.uvalue; in sval_binop_unsigned()
517 static sval_t sval_binop_signed(struct symbol *type, sval_t left, int op, sval_t right) in sval_binop_signed() argument
524 ret.value = left.value * right.value; in sval_binop_signed()
530 } else if (left.value == LLONG_MIN && right.value == -1) { in sval_binop_signed()
534 ret.value = left.value / right.value; in sval_binop_signed()
538 ret.value = left.value + right.value; in sval_binop_signed()
541 ret.value = left.value - right.value; in sval_binop_signed()
548 ret.value = left.value % right.value; in sval_binop_signed()
552 ret.value = left.value | right.value; in sval_binop_signed()
555 ret.value = left.value & right.value; in sval_binop_signed()
558 ret.value = left.value >> right.value; in sval_binop_signed()
561 ret.value = left.value << right.value; in sval_binop_signed()
564 ret.value = left.value ^ right.value; in sval_binop_signed()
574 static sval_t ptr_binop(struct symbol *type, sval_t left, int op, sval_t right) in ptr_binop() argument
580 return sval_binop_unsigned(type, left, op, right); in ptr_binop()
590 if (type_is_ptr(left.type)) in ptr_binop()
591 ret.value = left.value + right.value * align; in ptr_binop()
593 ret.value = left.value * align + right.value; in ptr_binop()
595 if (!type_is_ptr(left.type)) { in ptr_binop()
596 left.value = -left.value; in ptr_binop()
597 ret = ptr_binop(type, left, '+', right); in ptr_binop()
600 ret = ptr_binop(type, left, '+', right); in ptr_binop()
602 ret.value = (left.value - right.value) / align; in ptr_binop()
611 sval_t sval_binop(sval_t left, int op, sval_t right) in sval_binop() argument
616 type = get_promoted_type(left.type, right.type); in sval_binop()
619 ret = ptr_binop(type, left, op, right); in sval_binop()
621 ret = sval_binop_unsigned(type, left, op, right); in sval_binop()
623 ret = sval_binop_signed(type, left, op, right); in sval_binop()
646 int sval_binop_overflows(sval_t left, int op, sval_t right) in sval_binop_overflows() argument
651 type = left.type; in sval_binop_overflows()
652 if (type_positive_bits(right.type) > type_positive_bits(left.type)) in sval_binop_overflows()
662 if (sval_is_negative(left) && sval_is_negative(right)) { in sval_binop_overflows()
663 if (left.value < min.value + right.value) in sval_binop_overflows()
667 if (sval_is_negative(left) || sval_is_negative(right)) in sval_binop_overflows()
669 if (left.uvalue > max.uvalue - right.uvalue) in sval_binop_overflows()
674 if (left.value == 0 || right.value == 0) in sval_binop_overflows()
676 if (left.value > max.value / right.value) in sval_binop_overflows()
678 if (left.value == -1 || right.value == -1) in sval_binop_overflows()
680 return left.value != left.value * right.value / right.value; in sval_binop_overflows()
683 return right.uvalue != 0 && left.uvalue > max.uvalue / right.uvalue; in sval_binop_overflows()
686 if (sval_cmp(left, right) < 0) in sval_binop_overflows()
690 if (sval_is_negative(left) && sval_is_negative(right)) in sval_binop_overflows()
693 if (sval_is_negative(left)) { in sval_binop_overflows()
694 if (left.value < min.value + right.value) in sval_binop_overflows()
702 if (sval_binop_overflows(left, '+', right)) in sval_binop_overflows()
708 if (sval_cmp(left, sval_binop(max, invert_op(op), right)) > 0) in sval_binop_overflows()
715 int sval_binop_overflows_no_sign(sval_t left, int op, sval_t right) in sval_binop_overflows_no_sign() argument
720 type = left.type; in sval_binop_overflows_no_sign()
721 if (type_positive_bits(right.type) > type_positive_bits(left.type)) in sval_binop_overflows_no_sign()
728 left = sval_cast(type, left); in sval_binop_overflows_no_sign()
730 return sval_binop_overflows(left, op, right); in sval_binop_overflows_no_sign()