C9::GoingNative

GoingNative 18: Inside Vector Calling Convention (VCC)

Download this episode

Download Video

Description

It's still August! Smiley

Summer was great! GoingNative 2013 is just around the corner and Charles is getting ready for the final touches! In the meantime, Ale went to chat with the low-level gurus in the Visual C++ BackEnd to talk about the new Vector Calling Convention feature (aka VCC). Learn more about what it is about, how to test it out while avoiding zombies, and meet Ankit Asthana, Charles Fu and Kevin Gao, the pm, dev and test folks behind the feature itself. Check out the blog post about VCC and do send us feedback! And don't forget: GoingNative 2013 is going to be amazing! Stream-stream-stream!

Enjoy!

Embed

Format

Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • tomkirbygre​en

      I was hoping you folks would cover this! Next up what about digging deep into __async. In particular how can we hook into it for use in non Windows Store App contexts? I'd like to know if it will be possible to use __async over asynchronous classic COM interfaces. How as library developers to we hook in and make our existing continuation passing style libraries and APIs light up with __async?

      Also the shows have been getting shorter and shorter of late with each subsequent episode, hope that's because you're happily distracted getting ready for the Going Native 2013 Conference and not because you think there isn't any audience for this stuff.

      Oh, and how about a show covering the AST retrofit work going on the compiler to fully support constexpr etc? It be fascinating to hear how a venerable compiler is being updated. 

    • KikiAlex

      How is this interacting with the "__forceinline" directive ?

      How do you return from such a function(registers/stack) ?

      Can we mix types as inputs/outputs ?

      [ex :  "_m128 func(__m256,__m256,_m128,int,int);" ]

       

    • Charles

      @tomkirbygreen:You'll learn about await for C++ at GoingNative 2013 (as you know). For sure, we know there is an audience for this... We have been really busy constructing GN13. Fear not, Tom.

      C

    • CharlesFu001

      @KikiAlex: When a function is decorated with __forceinline and __vectorcall , __forceinline will have the high-order of preference.

      Yes, you can mix types as you normally do without the __vectorcall specifier.

       

    • KikiAlex

      @CharlesFu001:Thanks for the answer.

    • JandeVaan

      I have a question:

      I understand that an HVA/HFA struct will benefit from vector calling convention. Will the compiler also recognize opportunities to generate SSE instructions? For instance if I add two 4-element ints, and return them as the same type, will that be translated to a single SSE addition?

    • KevinGao

      Hello JandeVann,

      The answer is no. Currently, VC++ doesn't have the feature you are asking.

      Thanks,

    • JandeVaan

      @KevinGao: I see.

      So in the case you use HVA/HFA then the data travels via the SSE registers and in the called function it will be copied to normal registers when you need to do math on them.

      So for best speed, I guess we should use _m128 intrinsics (with the corresponding math instructions) over HVA/HFA.

      Is there existing code that benefits from support being able to handle HVA/HFA in the new calling convention? I mean if I were to rewrite my code to benefit from VCC, It would be more appropriate to go all the way and use the _m128 type.

    • KevinGao

      @JandeVaan: assume existing x64 code: void _vectorcall foo(_m128); is faster than void foo(_m128), because VCC uses register directly. And yes, you're right. You may also use _m256 if your machine supports it.

       

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.