title: AVX2 float compare and get 0.0 or 1.0 instead of all-0 or all-one bits
body: <p>Basically, in the resulting vector, I want to save 1.0 for all input floating point values > 1, while 0.0 for all input floating point values &lt;= 1. Here is my code,</p>
  
  <pre><code>float f[8] = {1.2, 0.5, 1.7, 1.9, 0.34, 22.9, 18.6, 0.7};
  float r[8]; // Must be {1, 0, 1, 1, 0, 1, 1, 0}
  
  __m256i tmp1 = _mm256_cvttps_epi32(_mm256_loadu_ps(f));
  __m256i tmp2 = _mm256_cmpgt_epi32(tmp1, _mm256_set1_epi32(1));
  _mm256_store_ps(r, _mm256_cvtepi32_ps(tmp2));
  
  for(int i = 0; i &lt; 8; i++)
      std::cout &lt;&lt; f[i] &lt;&lt; " : " &lt;&lt; r[i] &lt;&lt; std::endl;
  </code></pre>
  
  <p>But I don't get the correct results. This is what I get. Why aren't AVX2 relational operations working properly for me?</p>
  
  <pre><code>1.2 : 0
  0.5 : 0
  1.7 : 0
  1.9 : 0
  0.34 : 0
  22.9 : -1
  18.6 : -1
  0.7 : 0
  </code></pre>