Among your Windows options, you have set /Oa "treat argument pointers as not aliased," and various options requesting the compiler to generate both vector and non-vector code paths. In your icc options, you include -restrict, but that doesn't have any effect without the restrict qualifiers in the argument list. As you have specified the 32-bit compiler, SSE2 vectorization wasn't yet set as default in the version you quote (use e.g. -xW). You have a bunch of contradictory alias options; why not simply use -ansi-alias (assert that source code doesn't violate C and C++ standards on aliasing)?
void test (float* restrict in, float* restrict out, int len)