-
Notifications
You must be signed in to change notification settings - Fork 63
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
Vector 1.0 Support VALU #167
Vector 1.0 Support VALU #167
Conversation
Signed-off-by: Aaron Chan <[email protected]>
…basic Merging mavis csrrw bug fix
core/ExecutePipe.cpp
Outdated
if (num_passes_needed_ == 0) | ||
{ | ||
const uint32_t num_passes = | ||
std::ceil((ex_inst->getVL() / ex_inst->getSEW()) / valu_adder_num_); |
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.
I think you mean VLEN here instead of VL. VL (vector length) is the number of elements that an instruction can process whereas VLEN is the size of the vector registers. So for example, if VLEN is 128 and SEW is 8 than a single vector uop contains 16 elements. For LMUL 1, the VL would be 16 but increasing the LMUL will multiply the VL. This code looks like it works, but the method names could be more clear.
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.
Changed to VLEN in 73ca9f4. Added a conditional that will use VL if it is less the VLEN/SEW.
This is a lot of really great work @aarongchan! |
@kathlenemagnus-mips I think you need to approve on your other account for me to be able to merge. |
PR Goals:
Implement basic vector support for VALU operations, UOp generation for LMUL > 1, and vset support. The goal in this stage to design all necessary components to support a vadd.vv instruction with varying LMUL and SEW values set.
Documentation:
#89 (comment)