Code Monkey home page Code Monkey logo

Comments (5)

dotnet-policy-service avatar dotnet-policy-service commented on June 2, 2024

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

from runtime.

EgorBo avatar EgorBo commented on June 2, 2024

I think all Store-like operations were GT_HWINTRINSIC all the way in JIT untill recently we started to import some of them as GT_IND/GT_STOREIND so they can benefit from various general IND opts and even addressing modes (afair, it was @tannergooding). I guess NI_AdvSimd_StoreSelectedScalar can be also made to be so?

from runtime.

tannergooding avatar tannergooding commented on June 2, 2024

Right, we changed the standard loads/stores to use GT_IND/GT_STOREIND as a way to benefit from the plethora of existing optimizations around those GenTree kinds without negatively impacting throughput and needing to plumb support for hardware specific intrinsics.

In order for STOREIND to be used for StoreSelectedScalar, other more complex (MaskStore) or less common (StoreAligned) APIs, you would need to update STOREIND to be able to track the additional information required (various flags and potentially additional operands or state). The same would be true for using IND for various Load APIs.

from runtime.

tannergooding avatar tannergooding commented on June 2, 2024

For StoreSelectedScalar in particular, there's a place to track address (GenTreeIndir::Addr) and value (GenTreeStoreIndir::Data), but no place to track index.

You could transform it to StoreInd(addr, GetElement(value, index)) and then have specialized lowering handling to track the containment and then have codegen look for contained GetElement to allow emitting the correct instruction instead.

If you were to do that for Arm64, we'd want to also do similar x64 around the various Extract* APIs that achieve the same thing.

from runtime.

kunalspathak avatar kunalspathak commented on June 2, 2024

Thanks for the additional context @tannergooding . My initial thought was we are missing some correctness areas by not doing gtNewSimdStoreNode() but now I understand that it is more for performance reason.

from runtime.

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.