AVX instructions came along with the new VEX instruction encoding.
Therefore one should compile with option /arch:AVX (or other depending on compiler). Are there any restrictions concerning 32bit or 64bit compilation?
My real question is: Do I get the same performance of AVX compiled for 32 and 64 bit? Or is the VEX encoding only possible for 64 bit, for example? This would lead to transition penalties (SSE to AVX or vice versa) more often.
I could not find a clear answer on this.
AVX transitions are handled the same by 32- and 64-bit compilers. The most likely difference between 32- and 64-bit mode, if you don't specify alignments, is in the better (but still not optimum) default alignments of 64-bit OS. Even if you mix SSE and AVX intrinsics, current Intel compiler should attempt to deal with SSE to AVX transitions automatically. You would have to code in asm if you really want to provoke transition stalls.