title: Clang and SSE4 error: "SSE4A instruction set not enabled"
body: <p>I'm attempting to compile some code using VC11 built Clang but I get the result below. Preferably I would like to enable SSE4 (though I really just want my code to compile at all without errors) but none of the arguments I've tried have changed the error result. The code is nothing special, just an exported function and includes for map and vector. Thanks a lot in advance for any assistance. </p>
  
  <pre><code>C:\Program Files (x86)\LLVM\vs11\bin\Debug&gt;clang++ -march=corei7 -mavx -mpclmul -msse4 -std=c++11 -c -fms-compatibility -fms-extensions -v -o simple.o simple.cpp 
  clang version 3.4 (trunk)
  Target: i686-pc-win32
  Thread model: posix
   "C:/Program Files (x86)/LLVM/vs11/bin/Debug/clang++.exe" -cc1 -triple i686-pc-win32 -emit-obj -mrelax-all -disable-free -main-file-name simple.cpp -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu corei7 -target-feature +avx -target-feature +pclmul -target-feature +sse4 -v -coverage-file simple.o -resource-dir "C:/Program Files (x86)/LLVM/vs11/bin/Debug\\..\\lib\\clang\\3.4" -internal-isystem "C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include" -internal-isystem "C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\8.0\\\\include" -std=c++11 -fdeprecated-macro -ferror-limit 19 -fmessage-length 150 -mstackrealign -fms-extensions -fms-compatibility -fmsc-version=1300 -fdelayed-template-parsing -fobjc-runtime=gcc -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -backend-option -vectorize-loops -o simple.o -x c++ simple.cpp
  clang -cc1 version 3.4 based upon LLVM 3.4svn default target i686-pc-win32
  #include "..." search starts here:
  #include &lt;...&gt; search starts here:
   C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include
   C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
   C:\Program Files (x86)\Windows Kits\8.0\\include
  End of search list.
  In file included from simple.cpp:2:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector:6:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory:6:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0:942:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:27:
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\ammintrin.h:28:2: error: "SSE4A instruction set not enabled"
  #error "SSE4A instruction set not enabled"
   ^
  In file included from simple.cpp:2:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector:6:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory:6:
  In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0:942:
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:527:20: error: expected unqualified-id
  __MACHINEX86(__m64 _m_pshufw(__m64, int))
                     ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\xmmintrin.h:986:19: note: expanded from macro '_m_pshufw'
  #define _m_pshufw _mm_shuffle_pi16
                    ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\xmmintrin.h:749:32: note: expanded from macro '_mm_shuffle_pi16'
  #define _mm_shuffle_pi16(a, n) __extension__ ({ \
                                 ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:582:26: error: expected unqualified-id
  __MACHINEX86_X64(__m128i _mm_alignr_epi8(__m128i, __m128i, int))
                           ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\tmmintrin.h:69:34: note: expanded from macro '_mm_alignr_epi8'
  #define _mm_alignr_epi8(a, b, n) __extension__ ({ \
                                   ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:583:24: error: expected unqualified-id
  __MACHINEX86_X64(__m64 _mm_alignr_pi8(__m64, __m64, int))
                         ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\tmmintrin.h:74:33: note: expanded from macro '_mm_alignr_pi8'
  #define _mm_alignr_pi8(a, b, n) __extension__ ({ \
                                  ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:592:26: error: expected unqualified-id
  __MACHINEX86_X64(__m128i _mm_blend_epi16(__m128i, __m128i, int))
                           ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:110:36: note: expanded from macro '_mm_blend_epi16'
  #define _mm_blend_epi16(V1, V2, M) __extension__ ({ \
                                     ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:593:26: error: expected unqualified-id
  __MACHINEX86_X64(__m128d _mm_blend_pd(__m128d, __m128d, int))
                           ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:79:33: note: expanded from macro '_mm_blend_pd'
  #define _mm_blend_pd(V1, V2, M) __extension__ ({ \
                                  ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:594:25: error: expected unqualified-id
  __MACHINEX86_X64(__m128 _mm_blend_ps(__m128, __m128, int))
                          ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:84:33: note: expanded from macro '_mm_blend_ps'
  #define _mm_blend_ps(V1, V2, M) __extension__ ({ \
                                  ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:607:22: error: redefinition of '__builtin_ia32_pcmpestria128' as different
        kind of symbol
  __MACHINEX86_X64(int _mm_cmpestra(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:416:6: note: expanded from macro '_mm_cmpestra'
       __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:607:22: note: previous definition is here
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:416:6: note: expanded from macro '_mm_cmpestra'
       __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:607:22: error: expected expression
  __MACHINEX86_X64(int _mm_cmpestra(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:416:38: note: expanded from macro '_mm_cmpestra'
       __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
                                       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:608:22: error: redefinition of '__builtin_ia32_pcmpestric128' as different
        kind of symbol
  __MACHINEX86_X64(int _mm_cmpestrc(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:418:6: note: expanded from macro '_mm_cmpestrc'
       __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:608:22: note: previous definition is here
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:418:6: note: expanded from macro '_mm_cmpestrc'
       __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:608:22: error: expected expression
  __MACHINEX86_X64(int _mm_cmpestrc(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:418:38: note: expanded from macro '_mm_cmpestrc'
       __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
                                       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:609:22: error: redefinition of '__builtin_ia32_pcmpestri128' as different kind
        of symbol
  __MACHINEX86_X64(int _mm_cmpestri(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:401:6: note: expanded from macro '_mm_cmpestri'
       __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:609:22: note: previous definition is here
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:401:6: note: expanded from macro '_mm_cmpestri'
       __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:609:22: error: expected expression
  __MACHINEX86_X64(int _mm_cmpestri(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:401:37: note: expanded from macro '_mm_cmpestri'
       __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
                                      ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:610:26: error: redefinition of '__builtin_ia32_pcmpestrm128' as different kind
        of symbol
  __MACHINEX86_X64(__m128i _mm_cmpestrm(__m128i, int, __m128i, int, int))
                           ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:399:6: note: expanded from macro '_mm_cmpestrm'
       __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:610:26: note: previous definition is here
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:399:6: note: expanded from macro '_mm_cmpestrm'
       __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:610:26: error: expected expression
  __MACHINEX86_X64(__m128i _mm_cmpestrm(__m128i, int, __m128i, int, int))
                           ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:399:37: note: expanded from macro '_mm_cmpestrm'
       __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
                                      ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:611:22: error: redefinition of '__builtin_ia32_pcmpestrio128' as different
        kind of symbol
  __MACHINEX86_X64(int _mm_cmpestro(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:420:6: note: expanded from macro '_mm_cmpestro'
       __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:611:22: note: previous definition is here
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:420:6: note: expanded from macro '_mm_cmpestro'
       __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:611:22: error: expected expression
  __MACHINEX86_X64(int _mm_cmpestro(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:420:38: note: expanded from macro '_mm_cmpestro'
       __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
                                       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:612:22: error: redefinition of '__builtin_ia32_pcmpestris128' as different
        kind of symbol
  __MACHINEX86_X64(int _mm_cmpestrs(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:422:6: note: expanded from macro '_mm_cmpestrs'
       __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:612:22: note: previous definition is here
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:422:6: note: expanded from macro '_mm_cmpestrs'
       __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:612:22: error: expected expression
  __MACHINEX86_X64(int _mm_cmpestrs(__m128i, int, __m128i, int, int))
                       ^
  C:/Program Files (x86)/LLVM/vs11/bin/Debug/../lib/clang/3.4/include\smmintrin.h:422:38: note: expanded from macro '_mm_cmpestrs'
       __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
                                       ^
  C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h:68:29: note: expanded from macro '__MACHINE'
  #define __MACHINE(X)        X;
                              ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.
  </code></pre>