<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60464>60464</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86] llvm.vp.fma intrinsic is not properly handled?
</td>
</tr>
<tr>
<th>Labels</th>
<td>
bug,
backend:X86,
vectorization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dcaballe
</td>
</tr>
</table>
<pre>
The lowering of `llvm.vp.fma.*` crashes for X86:
repro.ll
```
define <16 x float> @test.vp.fma(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %mask,
i32 zeroext %evl) {
%d = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a,
<16 x float> %b,
<16 x float> %c,
<16 x i1> %mask,
i32 %evl)
ret <16 x float> %d
}
declare <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a,
<16 x float> %b,
<16 x float> %c,
<16 x i1> %mask,
i32 %evl)
```
```
llc repro.ll -mcpu=cascadelake
LLVM ERROR: Cannot select: t37: v16f32 = vp_fma t2, t4, t6, t35, Constant:i32<16>
```
It looks like the `llvm.vp.fma` is not properly expanded by expandvp:
```
*** IR Dump After Expand vector predication intrinsics (expandvp) ***
define <16 x float> @test.vp.fma(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %mask, i32 zeroext %evl) #0 {
%.splatinsert = insertelement <16 x i32> poison, i32 %evl, i64 0
%.splat = shufflevector <16 x i32> %.splatinsert, <16 x i32> poison, <16 x i32> zeroinitializer
%1 = icmp ult <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %.splat
%2 = and <16 x i1> %1, %mask
%d = call <16 x float> @llvm.vp.fma.v16f32(<16 x float> %a, <16 x float> %b, <16 x float> %c, <16 x i1> %2, i32 16)
ret <16 x float> %d
}
```
@rofirrim, @simoll, @qcolombet, @topperc
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVlGPozYQ_jXmZXSRsYGwDzzsJRvppKsqraqqb5UxQ-KuwdQ26d7--soESEqSva10lYoiGMaZb-abGY8Rzql9i1iQ9DNJt5Ho_cHYopKiFFpjVJrqW_HLAUGbv9Cqdg-mBpJRrY_N6tit6kasCHskGQVphTugg9pY-C3PCH8kdEvoeLfYWbPSetRldPwNrxXWqkUgfBNn8Aq1NsIT_gQkoR6dHx0Rll__g6WCsM0NU5aW9xbk5YKKR20j3Athm1NE8L1LcQZvaA2--mCMR03YA5D159GesLQCwrcghdY3mV2m8BhnNWfvEJxQ79B8Z1leL9-hHCjNVOY0WPQ3cauxkuvtZZkrlFrY26X8Dwh_8PpOXv4lysfTt2jzm0qtJUybAz41susJ30rhpKhQixc8_evr119_gqfn55-fCX-EjWhb48GhRumDwvN1eJyyOrTdsfu9bgR4FnrdJ8M9G-48DY-NaZ0XbbBWnA3UCH96J-wvHrQxLw60ekHwB1yMgTAClIMQV2dNh1Z_A3ztRFthBeUkH7vFXFj6YuMPvjzDtm86eKw9WngarOGI0hsLncVKSeGVaUG13qrWKemAsHz2EjbjjPX_mzL35gfjNAyRj_XjPGlWrtPCq9ah9UP1TyJqbLA9b9-h0E_QGeVMOwUxOd-AyhKgE-oZdgB0h76uNY75XwAuIvgH76XLxUJIgWqVV0KrN7SX3uMTE9l00OsrEoRvQvR0ohFPApsEPgnJJKSTkE3CehLySXiYAc_QM3Y8g8czejzDx2nYQYHjnLrLOgX1aW-GTr5qjHi0DA1yafIjT5Ef0cDnFGShYz9-TZzuHiiwPFEWoyGh1tTKWtUMgSXUqcZoPb78KY02TYl-fPem69DKqCp49cAfRIRFnK1TTuMsi6NDUco4p3kq1lyKfJ0-UIlVHedxnksuJCaRKhhlnDLKaMwTFq8wy8sqoayseCp4mpGEYiOUXg01MHYfKed6LDKaZEmkRYnaDd9VjJX9nrCQuSAL-YJtRfhj-EqatKedpd6GoRa06TayRUD-VPZ7FyqtnHdnX155PXy2BZR0CxeNcJ6JVxP5INpKY0X4LuqtLg7edy5MZLYjbLdX_tCXK2kawnYBb3x86qz5I5w0bDcwdITtBpJ_BwAA__8NmbcD">