<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/100751>100751</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [RISCV] splat(uadd.sat) is not vectorized
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Fros1er
      </td>
    </tr>
</table>

<pre>
    Vectorize version of #65072 
``` llvm
define <vscale x 4 x i8> @nxv4i8(i8 %x, i8 %y) {
  %a = call i8 @llvm.uadd.sat.nxv4i8(i8 %x, i8 %y)
  %head.x = insertelement <vscale x 4 x i8> poison, i8 %a, i32 0
  %splat.x = shufflevector <vscale x 4 x i8> %head.x, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
 ret <vscale x 4 x i8> %splat.x
}
```
With llc -mtriple=riscv64 -mattr=+v:
``` asm
nxv4i8:                                 # @nxv4i8
        andi    a1, a1, 255
        andi    a0, a0, 255
 add     a0, a0, a1
        li      a1, 255
        bltu    a0, a1, .LBB0_2 # should use vsaddu.vx
        li      a0, 255
.LBB0_2:
 vsetvli a1, zero, e8, mf2, ta, ma
        vmv.v.x v8, a0
 ret
 ```
 It can be vectorized to:
 ``` asm
 nxv4i8: # @nxv4i8
        vsetvli a2, zero, e8, mf2, ta, ma
 vmv.v.x v8, a0
        vsaddu.vx       v8, v8, a1
 ret
 ```
 Btw, is it possible to use RVV to optimize the simple version returning i8?
 ``` llvm
 define i8 @nxv4i8(i8 %x, i8 %y) {
  %v = call i8 @llvm.uadd.sat.nxv4i8(i8 %x, i8 %y)
  ret i8 %v
}
 ```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVVGP4yYQ_jX4ZbQWBjt2Hvyw2TTSSX26StvHipjxmgqbCDCX219fgb2bbO5y20q1IoNh8s038zGDcE69TIgtqXak2mdi9oOx7cEaV6DNjkZ-b5-x88aqV4SA1ikzgemBML6paM2A0D2hj2RDlx9oHcZlTWKvJgTCn4LrhEY4QwlnUA3hvwEp6XQOpWoIa1QDhFVnwp5gmX4nbAuk3i04EJcEEL6HTmidbEoa_eSzkDJ3wue_xrrCGVDI_JzA1OTQetQ44uTv0DwZ5cx0QRNpyhnQK0x30sKvoG6Y-15jSDm7F_sbjQj2md8f9jmLBq9ojZqUV0KrV7QrG4v3ArnQXAWr9zfKLZ9_Kj-A1h08jN6qk0bC91a5LmxKeBiF95bwPWG7QPjjrfTCrcqvavBH-OwhjF8dhTWlyyMmqdJYxDQsb1ZVd4xoMqIfjYSUcLsrio8IWq1IP3dw1H6-gkhG-e-7Hf2LJfJuMLOWMDuE4ISUcx7Odxx8JLeCvKcRgkMftFp9RH3jiE18jz2Lg0_HbxQfHYQx5CE_Q2jWKN_Pwjq7kRi-eOjEBMdY0GtpS_DmQuUnksJF019o9h4D-7cx3CH_jrem9O07Wa22xaeB7vy3VK8OlIeTcU4dNYI3Sa6vz89xak5ejbG5-QHBqfGkL33Oop_tpKaXVESHH7Jz6XWwNrulN_2nzhb-j84WC39ZDTf1faGbyZbLLd-KDNuiZoxSzstNNrTsWEta8Vo020aWNduWHLdVz2lfFk0vNplqGWUlrdmmKIuq3ORb2cmur3jDsanrTUlKiqNQOk_cjX3JlHMztgWldVVkWhxRu3THMDbhN0i7hLF45dg2_unhOL-4GLxy3l1gvPI6XU5fv_zx9EyqPaQuRljzlqCYUOVgMv7qNGez1e3g_cnFQ80OhB1elB_mY96ZkbBDEm4ZHk7W_I2dJ-yQWDnCDivt0LJ_AgAA__9it_Lt">