title: What happens when the Visual C++ compiler encounters AVX instructions while the "Enhanced Instruction Set" flag is disabled?
body: <p>In Visual Studio 2013, there is a flag located in the project <code>Configuration Properties &gt; C/C++ &gt; Code Generation</code> page called <code>Enable Enhanced Instruction Set</code>. It can be set to <code>SSE</code>, <code>SSE2</code>, <code>AVX</code>, <code>AVX2</code> or <code>IA32</code>.</p>
  
  <p><code>IA32</code> is specified as making "No Enhanced Instructions".</p>
  
  <p>If I compile and run a project that uses <code>AVX</code> instructions, while having the flag set as <code>IA32</code>, it still works. Running the program also works fine.</p>
  
  <p>What does the compiler do on this scenario ? Does it keep <code>AVX</code> instructions as they are because they are "hardcoded" and not compiler-generated instructions ? Or does the compiler replace these <code>AVX</code> SIMD instructions with SISD instructions ?</p>