https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83402
--- Comment #5 from Steven Munroe <munroesj at gcc dot gnu.org> --- You need to look at the generated asm code. And see what the compiler is doing. Basically it should be generating a vspltisw vr,si for vec_splat_s32. But if the immediate signed int (si) is greater than 15, should failure with: error: argument 1 must be a 5-bit signed literal The vec_splats should work for any value as it will load a const vector from storage. Perhaps the compiler is generating bad code and not reporting it. Or the compiler is too smart and converting the vec_splat_s32 to the more general vec_splats under the covers. Look at the source Paul!