Intel® Streaming SIMD Extensions

Оптимизировали, оптимизировали, да не выоптимизировали!

Оптимизация? Конечно, каждый сталкивался с данной задачей при разработке своих, сколь-нибудь значительных, требующих определённых вычислений, приложений. При этом способов оптимизировать код существует огромное множество, и, как следствие, различных путей сделать это в автоматическом режиме с помощью опций компилятора. Вот здесь и возникает проблема – как выбрать то, что нужно нам и не запутаться?

Links to instruction documentation

Can AVX instruction be executed in parallel


Can two avx instrcutions can be executed in parallel?

For example,


            a1= _mm256_load_ps((Rin +offset)); 
            a2= _mm256_load_ps((Gin +offset));  
            a3= _mm256_load_ps((Bin +offset));

            ac0 = _mm256_mul_ps(a1, in2outAvx_11); 
            ac1 = _mm256_mul_ps(a2, in2outAvx_12);
            ac2 = _mm256_mul_ps(a3, in2outAvx_13);
            z0 = _mm256_add_ps(ac0,ac1);
            z1 = _mm256_add_ps(z0, ac2);

pin-2.14-71313 and WinSock library

I have a problem trying to start my pintool built with WinSock library (ws2_32.lib) - it immediately exits with message "Failure to open DLL file WS2_32.dll".
I've prepared a simple pintool to illistrate the problem:

#include "pin.H"

namespace WINDOWS
#include <Ws2tcpip.h>
void *p = WSAStartup;

int main(int argc, char *argv[])
if (PIN_Init(argc, argv)) return 1;
return 0;

Intel 64 documentation bug

This is for Intel 64 and IA-32 Architectures Software Developer’s Manual, Order Number: 325462-053
US January 2015. Page Vol. 1 5-29.

MOVZX (64-bits) Move doubleword to quadword, zero-extension

In fact 32 to 64 bit zero extension isn't supported as per Vol. 2A 3-583. It is only spec'd for r/m8 and r/m16.
There is a small chance that I'm misinterpreting that but then so is NASM which disallows this.
Somebody's wrong and so I'd like an official ruling.

Is profiling information running on SDE accurate and trustable?


         I am trying to look at AVX 512 performance, currently, I wrote a simple function for evaluation as below, I configured the optimization and enabled AVX-512 etc in the project properties setting(vs2013 integrated with Intel-parallel-studio ), and I see the AVX-512 instructions are used from the asm files generated by compiler.

void complexVectorConjMpy(float *inputPtr1, float *inputPtr2, float *outputPtr, int numData)
    int idxData;
    float data1Re, data1Im, data2Re, data2Im;

Subscribe to Intel® Streaming SIMD Extensions