MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / mod

Method mod

src/Expression/Value.cpp:609–638  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

607}
608
609void SValue::mod(const Value* a, const Value* b) {
610 const SValue* aval = (const SValue*)a;
611 const SValue* bval = (const SValue*)b;
612 m_size = (aval->m_size > bval->m_size) ? aval->m_size : bval->m_size;
613 switch (aval->getType()) {
614 case Value::Type::Scalar:
615 m_negative = 0;
616 m_value.u_int = aval->m_value.u_int % bval->m_value.u_int;
617 m_type = Value::Type::Unsigned;
618 break;
619 case Value::Type::Double:
620 m_negative =
621 (((int64_t)aval->m_value.d_int % (int64_t)bval->m_value.d_int) < 0);
622 m_value.s_int =
623 (int64_t)aval->m_value.d_int % (int64_t)bval->m_value.d_int;
624 m_type = Value::Type::Integer;
625 break;
626 case Value::Type::Integer:
627 m_negative = ((aval->m_value.s_int % bval->m_value.s_int) < 0);
628 m_value.s_int = aval->m_value.s_int % bval->m_value.s_int;
629 m_type = Value::Type::Integer;
630 break;
631 default:
632 m_negative = 0;
633 m_value.u_int = aval->m_value.u_int % bval->m_value.u_int;
634 m_type = Value::Type::Unsigned;
635 break;
636 }
637 m_valid = a->isValid() && b->isValid();
638}
639
640void SValue::power(const Value* a, const Value* b) {
641 const SValue* aval = (const SValue*)a;

Callers 1

evalExprMethod · 0.45

Calls 6

getTypeMethod · 0.45
isValidMethod · 0.45
getSizeMethod · 0.45
getValueULMethod · 0.45
getValueDMethod · 0.45
getValueLMethod · 0.45

Tested by

no test coverage detected