I detected a small issue with declaration of __m256 AVX data type in Visual Studio 2010 and the declaration is incomplete.
Please take a look at three pieces of codes from Visual Studio 2010, Visual Studio 2012 and Intel C++ Composer XE 2013 ( 13.0.089 / Initial Release ):
[ Visual Studio 2010 - immintrin.h ]
...
typedef struct __declspec(intrin_type) _CRT_ALIGN(32) { <= A tag name is missing
double m256d_f64[4];
} __m256d;
...
[ Visual Studio 2012 - immintrin.h ]
...
typedef struct __declspec(intrin_type) _CRT_ALIGN(32) __m256d {
double m256d_f64[4];
} __m256d;
...
[ Intel C++ Composer XE 2013 - immintrin.h ]
...
typedef struct _MMINTRIN_TYPE(32) __m256d {
double m256d_f64[4];
} __m256d;
...
Note: It was fixed in Visual Studio 2012.