3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-12 20:18:20 +00:00

Fixed return size of const_*() eval functions

This commit is contained in:
Clifford Wolf 2014-08-31 18:08:26 +02:00
parent be44157c0f
commit 83ec3fa204

View file

@ -35,6 +35,8 @@ static void extend(RTLIL::Const &arg, int width, bool is_signed)
while (int(arg.bits.size()) < width) while (int(arg.bits.size()) < width)
arg.bits.push_back(padding); arg.bits.push_back(padding);
arg.bits.resize(width);
} }
static void extend_u0(RTLIL::Const &arg, int width, bool is_signed) static void extend_u0(RTLIL::Const &arg, int width, bool is_signed)
@ -46,6 +48,8 @@ static void extend_u0(RTLIL::Const &arg, int width, bool is_signed)
while (int(arg.bits.size()) < width) while (int(arg.bits.size()) < width)
arg.bits.push_back(padding); arg.bits.push_back(padding);
arg.bits.resize(width);
} }
static BigInteger const2big(const RTLIL::Const &val, bool as_signed, int &undef_bit_pos) static BigInteger const2big(const RTLIL::Const &val, bool as_signed, int &undef_bit_pos)
@ -312,7 +316,7 @@ RTLIL::Const RTLIL::const_shl(const RTLIL::Const &arg1, const RTLIL::Const &arg2
RTLIL::Const RTLIL::const_shr(const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool, int result_len) RTLIL::Const RTLIL::const_shr(const RTLIL::Const &arg1, const RTLIL::Const &arg2, bool signed1, bool, int result_len)
{ {
RTLIL::Const arg1_ext = arg1; RTLIL::Const arg1_ext = arg1;
extend_u0(arg1_ext, result_len, signed1); extend_u0(arg1_ext, std::max(result_len, SIZE(arg1)), signed1);
return const_shift_worker(arg1_ext, arg2, false, +1, result_len); return const_shift_worker(arg1_ext, arg2, false, +1, result_len);
} }