title: Poor _rotl performance under minGW
body: <p>I've got a program which is performance-reliant on the rotate-left instruction.</p>
  
  <p>Under MSVC, it works fairly well, just define the _rotl() intrinsic as the target for rotate left.</p>
  
  <p>Under GCC for Linux, it also works well. Here it is enough to define the equivalent software construction <code>rotl32(x,r) = ((x &lt;&lt; r) | (x &gt;&gt; (32 - r)))</code> , the compiler is clever enough to recognize this is a 32-bits rotate left, and automatically replace it by its intrinsic equivalent (to be fair, MSVC is also able to make such detection).</p>
  
  <p>Under MinGW, not so much. This is all the more intriguing as MinGW is using, at its core, GCC. MinGW can compile the windows intrinsic <code>_rotl</code>, but without apparently triggering the corresponding intrinsic. The software version seems also undetected, although to be fair, it is nonetheless faster than <code>_rotl</code>. The end result is a 10x reduction in performance, so it is definitely significant.</p>
  
  <p>Note : GCC version of tested MinGW is 4.6.2</p>