Comments (5)
I saw there is similar request in several intrinsic design, including P-extension and B-extension, maybe we should add that into psabi?
from rvv-intrinsic-doc.
FYI: this discussion was moved to riscv-non-isa/riscv-elf-psabi-doc#158.
from rvv-intrinsic-doc.
We're working on upstreaming the rvv intrinsics to llvm/clang. I'm trying to figure out if this is an issue we should worry about for that.
I need to define builtins for vsetvl and all the intrinsics that take a vl operand. clang's system for specifying builtins mostly uses fixed types. There are currently a few special cases, for example saying a builtin needs a 64 bit type where will choose long or long long depending on which is really 64 bits. There's also a special case to say a builtin takes size_t. There isn't any target specific overrides into that code today so I don't have a way of saying a builtin takes an xlen integer and I'm not sure how to abstract it into target independent code. Maybe I can have it find the same type as attribute ((mode (word)))?
Another option might be to just say that vl is a 32-bit "unsigned" in the C interface? Greater than 4 billion element vectors seems like a lot.
from rvv-intrinsic-doc.
My advice is the following:
-
Update the RVV Intrinsics spec to use
uint_xlen_t
, plus some explanation of what this means (see above). I.e., tell the user that thevl
argument should be an XLEN-width unsigned integer, and it's up to them to correctly instantiate values of this type. -
In the current LLVM implementation, just use
unsigned long
, which will do the right thing for all extant ABIs. We can repay this technical debt in the future: once the RISC-V C API adds support foruint_xlen_t
--- which I'm confident will happen --- this will have to be added to LLVM.
from rvv-intrinsic-doc.
We have existing proposal in riscv-c-api-doc #14 that is still pending. I understand the fastest way here is to define the types in the RVV intrinsic header, but the formal completion should allow multiple extensions to use this defined type.
This issue will be held and resolved after v1.0 since it is depending on more consensus in the RISC-V community.
from rvv-intrinsic-doc.
Related Issues (20)
- Question about the rounding mode of the bit right shift functions HOT 1
- Question about intrinsic data types HOT 4
- [Error] Conversion from vuint to vbool HOT 3
- [Error] GCC Crashes while passing some intrinsics as parameter of another intrinsics HOT 3
- [Question] Combining two vector registers with different LMUL HOT 2
- Question about using `__riscv_vlm_v` HOT 2
- vcreate intrinsics for LMUL > 1 HOT 8
- [Question] How to zip 2 vectors using RVV Intrinsics? HOT 11
- Tuple types that goes across the hardware restriction HOT 1
- [Proposal] Support for C operators on RVV types HOT 12
- vget for fractional register doesn't exist HOT 10
- Constraint of vector types in Zve32* HOT 2
- [Requirement]: The RISC-V RVV vector intrinsic must include support for vector groups in the __riscv_vfredosum function HOT 4
- Type-relative overloads for vreinterpret, vlmul_ext, vlmul_trunc, etc. HOT 1
- How to use a class to wrap or derive from a sizeless vector type HOT 1
- Encode all the effects of vsetvl in the return type, for use in subsequent type deductions HOT 1
- Does `__riscv_v_intrinsic >= 1000000` imply overloaded intrinsics are supported?
- Create bibliography from reference section HOT 3
- Simple questions about inline assembly in vmv.x.s instruction HOT 2
- Asterisks are not subscripts
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rvv-intrinsic-doc.