https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118068
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- int is the documented type of the argument (in the manual): Intel C/C++ Compiler Intrinsic Equivalent BLENDPS __m128 _mm_blend_ps (__m128 v1, __m128 v2, const int mask); VBLENDPS __m256 _mm256_blend_ps (__m256 a, __m256 b, const int mask); or https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_blend_ps&ig_expand=484 Now, at -O0 a lot of optimizations aren't simply done, that is why e.g. this intrinsics and various others which require constant last argument are macros and not inline functions (which don't have guaranteed that the constant will propagate to the builtin argument). I still think we should do something about this, see above, but strictly speaking it isn't really guaranteed at -O0.