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.

Reply via email to