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

Question about C++ overloaded functions of segment load #151

Closed
zhongjuzhe opened this issue Apr 20, 2022 · 4 comments
Closed

Question about C++ overloaded functions of segment load #151

zhongjuzhe opened this issue Apr 20, 2022 · 4 comments

Comments

@zhongjuzhe
Copy link

zhongjuzhe commented Apr 20, 2022

Here are 2 functions in the C++ overloaded functions:
1.void vlseg2e8_v_i8mf8 (vint8mf8_t *v0, vint8mf8_t *v1, const int8_t *base, size_t vl);
2.void vlseg2e8_tu (vint8mf8_t *v0, vint8mf8_t *v1, const int8_t *base, size_t vl);

These 2 functions have the same arguments. Why does one can be overloaded but the other can not be?
I think both of them can not be overloaded, because vint8mf8_t * is a pointer type.

@zakk0610
Copy link
Collaborator

In fact, _tu need to have merge operand just like masked segment operation have maskedoff to align current design.
I will update #137 later to fix all issues in one time.

current known issues in #137:

  1. TA and TAMA vslidedown/vslideup need the dest operand for correctness. Add a new argument to ensure the result is correct for vslideup and vslidedown #32
  2. segment load and vfclass TU policy need to have merge operand.
  3. vmv.s.x and vfmv.s.f ta policy have no overloaded api.
  4. reduction TAM have no merge operand.

Let me know if anything is missing. I'm really appreciate your time to help and review.

@zhongjuzhe
Copy link
Author

zhongjuzhe commented Apr 21, 2022

I have 2 more questions:
1.You have remove vqmacc in C intrinsic document but overloaded functions document still have vqmacc. I think you should
also remove them in overloaded functions.
2.tamu/tumu/tuma policy in segment load, you don't have merge or maskoff operand, do you need to add them too?

By the way, does the RISC-V community agrees #137 this proposal and merge them into master in the future? I understand the explosion of RVV intrinsics will make LLVM compilation time bad due to
the big <riscv_vector.h>. But this is not a problem in GCC. I hope this proposal can be merged into master branch finally.

@kito-cheng
Copy link
Collaborator

@zhongjuzhe https://reviews.llvm.org/D111617 I am working on improve compilation speed for clang/LLVM, I believe that's could resolve that issue.

@zakk0610
Copy link
Collaborator

I have 2 more questions: 1.You have remove vqmacc in C intrinsic document but overloaded functions document still have vqmacc. I think you should also remove them in overloaded functions. 2.tamu/tumu/tuma policy in segment load, you don't have merge or maskoff operand, do you need to add them too?

Thanks, I will remove vqmacc in document later.

for 2, I saw that have merge operand for segment load, maybe you checkout the wrong branch.
https://raw.githubusercontent.com/riscv-non-isa/rvv-intrinsic-doc/new-policy-proposal/policy_funcs/intrinsic_funcs/03_vector_load_store_segment_instructions_zvlsseg.md

By the way, does the RISC-V community agrees #137 this proposal and merge them into master in the future? I understand the explosion of RVV intrinsics will make LLVM compilation time bad due to the big <riscv_vector.h>. But this is not a problem in GCC. I hope this proposal can be merged into master branch finally.

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

3 participants