It seems that Clang doesn’t recognize all of the sse2 intrinsics:
./bssSIMD.h:39:9: error: use of undeclared identifier '__builtin_ia32_cmpgtpd'; did you mean '__builtin_ia32_pcmpgtd'?
r.v_ = __builtin_ia32_cmpgtpd (x, xmax.v_);
^~~~~~~~~~~~~~~~~~~~~~
...
./bssSIMD.h:51:9: error: use of undeclared identifier '__builtin_ia32_cmpltpd'; did you mean '__builtin_ia32_pcmpgtd'?
r.v_ = __builtin_ia32_cmpltpd (x, xmin.v_);
^~~~~~~~~~~~~~~~~~~~~~
However, it does not complain about __builtin_ia32_blendvpd, __builtin_ia32_maxpd, or __builtin_ia32_minpd.
I built Clang 3.3 from the SVN version about a month ago. I compile with these options:
-march=core2 -msse2 -m64 -std=c++0x -fPIC -pthread -gcc-toolchain /opt/gcc-4.7.1
I expected ‘-march=core2’ to be sufficient to enable the sse2 instructions, and then I added ‘-msse2’ just in case that was the problem. It didn’t help.