Age | Commit message (Collapse) | Author |
|
The code was using the wrong bit as the sign bit. Other similar bits of code
seem to be correct.
|
|
|
|
When doing an unsigned 64 bit division with a divisor that has its most
significant bit set, the division code would spill a bit off of the end of a
uint64_t trying to shift the dividend into position. This change adds code
that handles that case specially by purposefully letting it spill and then
going ahead assuming there was a 65th one bit.
|
|
|
|
|
|
|
|
Some of the micro-ops weren't casting 1 to ULL before shifting,
which can cause problems. On the perl makerand input this
caused some values to be negative that shouldn't have been.
The casts are done as ULL(1) instead of 1ULL to match others
in the m5 code base.
|
|
|
|
This double cast led to rounding errors which caused
some benchmarks to get the wrong values, most notably lucas
which failed spectacularly due to CVTTSD2SI returning an
off-by-one value. equake was also broken.
|
|
|
|
|
|
|
|
|
|
|
|
static should not be used for constants that are not inside a class definition.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
instructions.
|
|
|
|
|
|
wide shifts.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|