Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

GoingNative 18: Inside Vector Calling Convention (VCC)

27 minutes, 50 seconds


Right click “Save as…”

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!



Follow the discussion

  • Oops, something didn't work.

    Getting subscription
    Subscribe to this conversation
  • 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. 

  • 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);" ]


  • CharlesCharles Welcome Change

    @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.


  • @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.


  • @CharlesFu001:Thanks for the answer.

  • 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?

  • Hello JandeVann,

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


  • @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.

  • @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.


Remove this comment

Remove this thread


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.