https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115976
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Missing uadd_sat/usub_sat |Missing |vectorization |uadd_sat/usub_sat/sstrunc | |vectorization --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Another testcase this time for sstrunc: ``` void f0(long long *__restrict__ a, unsigned * __restrict__ b) { int i = 0; for(int i = 0;i < 1024;i ++) { long long tt = a[i]; if (tt > __INT_MAX__) tt = __INT_MAX__; if (tt < -__INT_MAX__-1) tt = -__INT_MAX__-1; b[i] = tt; } } ``` LLVM is able to handle this for avx512f for x86_64 and for riscv.