https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109082
Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |linkw at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |linkw at gcc dot gnu.org Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Last reconfirmed| |2023-03-16 --- Comment #4 from Kewen Lin <linkw at gcc dot gnu.org> --- Confirmed, as PVIPR for: r = vec_sld (a, b, c) c must be in the range 0–15. I noticed that for: __m128i test_r(__m128i vec ) { return _mm_bsrli_si128 ( vec, -1); } icc would optimize it to vzero while gcc would emit error msg. IMHO we should guard the N with __N < 16 && __N >= 0 and return vzeros for the others.