-
Notifications
You must be signed in to change notification settings - Fork 41
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
Using vector intrinsics with __attribute__((target("arch=+v")))
#69
Comments
For clang this needs a lot of work. For example, the code in SemaChecking.cpp that checks for valid rvv vector types is completely unaware of the existence of attribute((target)). |
Alright, good to know, I was wondering if it might just be harder to implement. |
We (SiFive) have assigned engineer resource on clang side, and will try to find people to enable that on gcc side :) |
I have a PR for this: llvm/llvm-project#83674. |
It is currently not possible (on gcc and clang) to use the vector intrinsics in functions with a target attribute that adds vector support, if it vector support wasn't also enabled globally.
This is needed for implementing dynamic dispatch in the same translation unit, as e.g. used in simdutf.
The current compiler implementations aren't wrong to only allow including
<riscv_vector.h>
and defining__riscv_v_intrinsic
, when the vector extension is enabled globally, but I think we should encourage implementations to view__riscv_v_intrinsic
and__riscv_vector
separately, when possible.Something along the lines of "
__riscv_v_intrinsic
being defined doesn't guarantee that__riscv_vector
is also defined."From what I can tell this isn't required by the spec anywhere, but implementers assumed the opposite is implied.
This would suggest, that
__riscv_v_intrinsic
does not automatically imply__riscv_vector
is defined.The text was updated successfully, but these errors were encountered: