Skip to content
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

RFC for RVV intrinsic API proposal #10

Closed
issuehsu opened this issue Apr 21, 2020 · 6 comments
Closed

RFC for RVV intrinsic API proposal #10

issuehsu opened this issue Apr 21, 2020 · 6 comments
Assignees

Comments

@issuehsu
Copy link
Collaborator

Hi,
Kai wrote the RFC for RVV intrinsic API proposal based on our current discussion.
Any suggestion and feedback are welcome.

https://github.com/sifive/rvv-intrinsic-doc/blob/master/rvv-intrinsic-rfc.md

@rofirrim
Copy link
Collaborator

Thanks @Hsiangkai for putting this RFC together.

I understand that vcopy_v is needed when we want to copy only VL elements of the vector. My understanding is that a plain C assignment would copy it all (so the vector vehaves like a regular value here).

Regarding a question posed by @zakk0610 during our internal discussion, I understand reinterpret intrinsics will allow converting mask types to/from other integer types of LMUL=1. Also I presume reinterpret casts will allow reinterpretation between different types of the same LMUL (e.g. i32m1 and i64m1), won't it?

@kito-cheng
Copy link
Collaborator

Oh... in fact SiFive’s Implementation vcopy is same as assignment in C, which is VL aware, the same issue for vector type is pointer dereference vs unit stride load/store, we implement its in VL aware too.

We might need to create a new issue to discuss about the behavior and limitation for vector type.

@Hsiangkai
Copy link
Collaborator

If we support C assignment, should we support other C operators for scalable vector types? We should list the supported C operators in the RFC. In addition, what is the operating scope of C operator, VLMAX or vl? In SiFive's implementation, it is vl. The semantics is aligned to intrinsics design without vl argument.

@zakk0610
Copy link
Collaborator

zakk0610 commented Apr 22, 2020

I agree we should support " converting mask types to/from other integer types of LMUL=1".
But I could not image why user want to reinterpretation between different types of the same LMUL, it is strange usage.

edited: we could discuss it in https://github.com/sifive/rvv-intrinsic-doc/issues/12

@Hsiangkai
Copy link
Collaborator

Oh... in fact SiFive’s Implementation vcopy is same as assignment in C, which is VL aware, the same issue for vector type is pointer dereference vs unit stride load/store, we implement its in VL aware too.

We might need to create a new issue to discuss about the behavior and limitation for vector type.

We could discuss it in https://github.com/sifive/rvv-intrinsic-doc/issues/13.

@Hsiangkai
Copy link
Collaborator

We will discuss the RFC in other issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests