Comments (8)
Tuples are frequently created because users need to construct them as inputs for segment stores. It is a syntax sugar and we have them because users do raise an issue that this will help them.
On the other hand, are users motivated to construct values of a higher LMUL upon their results? Should they be considering to use a higher LMUL at the first place?
from rvv-intrinsic-doc.
Tuples are frequently created because users need to construct them as inputs for segment stores. It is a syntax sugar and we have them because users do raise an issue that this will help them.
On the other hand, are users motivated to construct values of a higher LMUL upon their results? Should they be considering to use a higher LMUL at the first place?
If you assume users use higher LMUL at the first place. Why do you define vget/vset for LMUL > 1 ?
IMHO, we'd better make intrinsics consistent.
from rvv-intrinsic-doc.
vget
/vset
are there for functional completeness. vcreate
is a syntax sugar though.
from rvv-intrinsic-doc.
So, why don't LMUL > 1 has sugar too ?
from rvv-intrinsic-doc.
I guess I don't have a strong reason against this, but I think it would be good to back this with motivation.
from rvv-intrinsic-doc.
I guess I found a motivation...
https://github.com/opencv/opencv/blob/master/modules/core/include/opencv2/core/hal/intrin_rvv_scalable.hpp#L497
from rvv-intrinsic-doc.
I guess I found a motivation... https://github.com/opencv/opencv/blob/master/modules/core/include/opencv2/core/hal/intrin_rvv_scalable.hpp#L497
Yes. That's why I said we need vcreate for big LMUL.
I just remember long time ago some body ask me whether we can have vcreate like ARM SVE for big LMUL and tuple.
I just noticed you only add tuple vcreate recently.
from rvv-intrinsic-doc.
I don't agree with the hypothesis of this issue.
I agree that proposed vcreate
for the (non-tuple) LMUL > 1 case would be syntactic sugar.
However, vcreate
is not syntactic sugar for tuple types: rather, it is functionally necessary. To verify this yourself, try to initialize a tuple via a sequence of vset
intrinsics, and compile with -Wuninitialized -Werror
, using a recent (17.0.2+) LLVM toolchain.
The root cause of this discrepancy is that the current API provides vundefined
objects for non-tuple types, but not for tuple types. (I don't know whether or not this omission was intentional.)
Therefore, another approach towards consistency would be to add the "missing" vundefined
tuple objects, and remove vcreate
.
It's also worth distinguishing between register-group fusion --- e.g., fusing two m2
groups into one m4
group --- from tuple fusion --- e.g., fusing two m2
groups into one m2x2
tuple. The latter is always portable (VLEN-agnostic) whereas the former may not be.
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
- [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.