<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">