-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RISC-V Support SE-148 #234
Conversation
…ency, rather than update the VCT register to total cycles completed.
…m register (PMCCNTR_EL0 for Aarch64).
A fix for handling missing system registers in the aarch64 systemRegisterMap_ map. A missing entry will return a -1 and a decoded instruction accessing an unmapped system register will raise a new UnmappedSysReg fatal exception.
…ow for a wider param space (#229)
Fixes output error present for miniBUDE when compiled with GCC-10.3.0 targeting armv8.4-a+sve, caused by an incorrect implementation of the FNEG sve instruction. Additionally, other SVE instructions were updated to accomodate for optional patterns.
…e Linux machines.
A new generic branch predictor containing parameterisable BTB and RAS structures, global indexing, and better identification of branch instructions. Additionally, a parameterisable loop buffer has been implemented in the fetch unit and a loop detection scheme in the ROB unit.
…tions. Also added the ability to define ISA extensions to target as a parameter to the parent regression class run function
…enmp codes. Current additions omit functionality as it's not required for the codes to execute correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Several comments and some clarifications needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good work resolving comments. Few more but nothing major.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At long last! This looks good, Dan. Well done for constantly updating and getting the RISC-V support to a really good state
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All looks good to me. Great job Dan.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great Work! All looks good to me.
#rerun tests |
1 similar comment
#rerun tests |
This pull request adds support for rv64iam. That is, 64 bit RISC-V base, atomic and multiply extensions working in all three simulation modes. Expanding on previous work, the general code base has been adjusted to be more ISA agnostic. Specific config option parsing has been moved to the ISA specific classes and the exception handler has become more generic. Some more work may be needed on this as exception types are currently ISA specific; this causes the need for repeated functions which is undesirable. Almost all of the base, atomic and multiply extension instructions have been implemented along with their pseudoinstructions. ### Architecture updates - rv64i - RISC-V base extension - a - RISC-V atomic extension - m - RISC-V multiply/divide extension ### Changes to config options - Addition of ```ISA``` option with valid arguments <```aarch64```, ```rv64```> ### To note - FENCE is implemented as a NOP which is considered allowable by the spec - EBREAK is unimplemented but only needed for debugging - Atomics don't operate truly atomically which is currently functional for single threaded programs but not accurate - MULH and MULHSU aren't implemented as they will need a library such as GMP. Tests are implemented and expected to fail This functionality is sufficient to run many benchmarks including STREAM, Dhrystone and an implementation of the Smith-Waterman algorithm.
This pull request adds support for rv64iam. That is, 64 bit RISC-V base, atomic and multiply extensions working in all three simulation modes. Expanding on previous work, the general code base has been adjusted to be more ISA agnostic. Specific config option parsing has been moved to the ISA specific classes and the exception handler has become more generic. Some more work may be needed on this as exception types are currently ISA specific; this causes the need for repeated functions which is undesirable. Almost all of the base, atomic and multiply extension instructions have been implemented along with their pseudoinstructions. ### Architecture updates - rv64i - RISC-V base extension - a - RISC-V atomic extension - m - RISC-V multiply/divide extension ### Changes to config options - Addition of ```ISA``` option with valid arguments <```aarch64```, ```rv64```> ### To note - FENCE is implemented as a NOP which is considered allowable by the spec - EBREAK is unimplemented but only needed for debugging - Atomics don't operate truly atomically which is currently functional for single threaded programs but not accurate - MULH and MULHSU aren't implemented as they will need a library such as GMP. Tests are implemented and expected to fail This functionality is sufficient to run many benchmarks including STREAM, Dhrystone and an implementation of the Smith-Waterman algorithm.
This pull request adds support for rv64iam. That is 64 bit RISC-V base, atomic and multiply extensions working in all three simulation modes.
Expanding on previous work, the general code base has been adjusted to be more ISA agnostic. Specific config option parsing has been moved to the ISA specific classes and the exception handler has become more generic. Some more work may be needed on this as exception types are currently ISA specific; this causes the need for repeated functions which is undesirable.
Almost all of the base, atomic and multiply extension instructions have been implemented along with their pseudoinstructions. To note:
FENCE is implemented as a NOP which is considered allowable by the spec
EBREAK is unimplemented but only needed for debugging
Atomics don't operate truly atomically which is currently functional for single threaded programs but not accurate
MULH and MULHSU aren't implemented as they will need a library such as GMP. Tests are implemented and expected to fail
This functionality is sufficient to run many benchmarks including STREAM, Dhrystone and an implementation of the Smith-Waterman algorithm.