Giter Site home page Giter Site logo

Comments (8)

eopXD avatar eopXD commented on July 19, 2024

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.

zhongjuzhe avatar zhongjuzhe commented on July 19, 2024

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.

eopXD avatar eopXD commented on July 19, 2024

vget/vset are there for functional completeness. vcreate is a syntax sugar though.

from rvv-intrinsic-doc.

zhongjuzhe avatar zhongjuzhe commented on July 19, 2024

So, why don't LMUL > 1 has sugar too ?

from rvv-intrinsic-doc.

eopXD avatar eopXD commented on July 19, 2024

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.

eopXD avatar eopXD commented on July 19, 2024

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.

zhongjuzhe avatar zhongjuzhe commented on July 19, 2024

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.

nick-knight avatar nick-knight commented on July 19, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.