-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
riscv64: Support non 128bit vector sizes #6266
Conversation
Oh oops my comments on #6268 are probably more appropriate over here |
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.
Looks good to me!
Should zvl128b
imply the v
extension or vice-versa?
|
Oh right yes, I forgot that |
* riscv64: Add `Zvl` extensions * riscv64: Allow lowering SIMD operations that fit in a vector register * riscv64: Support non 128bit vector sizes * riscv64: Add Zvl Presets * riscv64: Precompute `min_vec_reg_size`
👋 Hey,
This is a small follow up to #6240. This PR does a couple of things:
Zvl*
family of extensions, which really just specify the minimum size of a vector register.has_v
and assuming 128 bit registers, we now allow lowering any size as long as they fit in a single register.ty_vec_fits_in_register
which feels slightly neater than(if-let $true (has_v))
everywhereiadd
usesfits_in_64
which also matches small vectors, so I switched the rules to usingty_int_ref_scalar_64
which only match scalars.This isn't really required, but it's neat that we get all of these lowerings without pretty much any effort, so I figured it would be worth it.