Fixed a bug where MULH would not work as expected. #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This issue affects the MULH instruction when multiplying large negative numbers. The issue is that the whole 33-bit multiplicant gets copied, which is incorrect while using negative numbers.
This fix allows large negative numbers to be multiplied by each other in a correct manner. By not copying the whole 33 bit multiplicant but limiting it to 32 bits the issue is resolved.
This change is made to the MulDiv.scala file in the plugins folder.
The RISC-V tests ran with
make -C tests CORE=riscv.CoreExtMem
still returnsAll tests passed
This issue was not caught by the RISC-V tests because it only affects these high, negative numbers, which are not tested in the test suite.