title: Error: _mm_clmulepi64_si128 was not declared in this scope
body: <p>I am trying to use the carry-less multiplication instruction found on the new intel/amd processor <code>_mm_clmulepi64_si128 ()</code></p>
  
  <p>I have included the header file and I am compiling with the <code>-maes -msse4</code> options... but i still get an error saying:</p>
  
  <p>error: _mm_clmulepi64_si128 was not declared in this scope</p>
  
  <pre><code>#include &lt; immintrin.h &gt;
  #include &lt; wmmintrin.h &gt;
  
  int main()
  
  {
  
      __m128i a;
      __m128i b;
  
      a.m128i_i64[1] = 2;
      a.m128i_i64[0] = -1284;
      b.m128i_i64[1] = 25;
      b.m128i_i64[0] = 65535;
  
      const int product1 = 0x11;
      const int product2 = 0x00;
      const int product3 = 0xF2;
  
      int expect1 = int ( a.m128i_i64[1] * b.m128i_i64[1] );
      int expect2 = int ( a.m128i_i64[0] * b.m128i_i64[0] );
      int expect3 = int ( a.m128i_i64[0] * b.m128i_i64[1] );
  
      __m128i result1 = _mm_clmulepi64_si128( a, b, product1 );
      __m128i result2 = _mm_clmulepi64_si128( a, b, product2 );
      __m128i result3 = _mm_clmulepi64_si128( a, b, product3 );
  
      return 0;
  }
  </code></pre>