Can Visual Studio tell me how many SSIDs the compiled code counter registers?

I don't have real compiler knowledge, and I used SSE2 functions for individual pieces of code. I know how to read the generated machine code, but pretty much do not know about the crazy optimizations made by the compilers. All my work is done using Visual Studio.

Is there a way for Visual Studio to tell me that SSE2 registers the number of function spills? The reason is that we can soon mass produce SSE2-like code (templated), and we would like each of them to be compiled into a decent quality machine code. We may not be able to manually check each of them. I hope to get something like a guarantee that the compiled code is acceptable and concise. I do not need to get the last juice.

Alternatively, is there a keyword that works like __forceinline , which causes the compiler not to spill SSE2 registers, like "__forcenospill"? (If a leak occurs, compilation will fail, and so I will know about the problem and try to reorganize my SSE2 code.)

Using an existing vector library or blitter would be undeniable, because some calculations must be strongly registered (6 or more operands in one step in a β€œsimple operation” (note No. 1), intermediate values, 16-bit or 32-bit "on the fly "and converted back, etc.). To paraphrase it using a common vector library, this means doubling or tripling the execution time (was there, done).

Commercial tools are also in order, of course, I can afford it, given the nature of the project.

If there is no such tool, I will resort to profiling. You can post this message so that I know that such things do not exist.

Thanks!

(Note # 1) This is an adaptive threshold algorithm.

+6
source share

Source: https://habr.com/ru/post/893819/


All Articles