This bug appears in all of the gcc 4.0.x series, but does not occur in the 4.1.x series.
If you create an __m128i vector using _mm_set_epi32(a, b, c, K), where a, b and c are variables, and K is a compile-time constant, the resulting vector has zeros where the value of c should be. This problem only occurs when optimisation is enabled. -- Summary: _mm_set_epi32 does not set the third argument if the fourth argument is a constant. Product: gcc Version: 4.0.4 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: toojays at toojays dot net GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38927