<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/129705>129705</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
s390x: widening multiplication does not optimize
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
folkertdev
</td>
</tr>
</table>
<pre>
this LLVM
https://godbolt.org/z/cx8adPc9f
```llvm
define range(i32 0, -131070) <4 x i32> @manual_mule(<8 x i16> %a, <8 x i16> %b) unnamed_addr {
start:
%0 = shufflevector <8 x i16> %a, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%1 = zext <4 x i16> %0 to <4 x i32>
%2 = shufflevector <8 x i16> %b, <8 x i16> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%3 = zext <4 x i16> %2 to <4 x i32>
%4 = mul nuw <4 x i32> %3, %1
ret <4 x i32> %4
}
```
does not optimize to the expected output of `vec_mule`, a single `vmleh` instruction. The same is true for the other multiplication flavors (low, high, odd).
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VE1v8zYM_jX0hWggU_6IDz7kTZfTO2CHYddCtmhbm2wFkpxk_fWDnLbrmm3YZUAACSKfD8YkVQhmXJhbKL9B-ZypNU7Ot4Ozv7GPmi9Z5_TvbZxMwO_ff_kRQRxAHKYYzwHkAegEdBqd7pyNO-dHoNMr0Km_7ZX-qW-GezpU4v6z9jKDOGgezMLo1TIy0N5IQgF0xKdc5qIWQA2CPBZ4QyMJ5A8IhZjVsir7Mq82QUAe9ymcV1uYSpXwD69dolqXRc2sX5TWHqH-BuIQovIx-ReHlCYQ5DOGaR0Gyxfuo_OPXH-jcHYmuOXt_bNdefyoKV3o_VK8XxI8iSfifFN_5Vv8oPkQFRjdX8nfUfRfPHf_l2f5L57pHz0XG2peLS7r9as-lXJzRWW-5XuOjylF6qb6-XNP3VtMOw64uIjuHM1sXjmZiBMj387cR9bo1nheI7oBoRIX7u-tVG0FKwxmGS1vodnyBJVAs4To1z4at-zw54kxqJnRBIx-ZRyc3_hdnNinmqI5W9OrlI6DVRfnAwLtrbsmhcmMUzqd1kDN7m46063UjWxUxm1eF7loSqpFNrV93efc5LKoZF0WUg-iqKnTQymUkqT6zLQkqBRSFLmUBTW7vtedrPZ1JTsaCl1AIXhWxu7SyKXJzEwIK7c5NbUoM6s6tmGbeqKFr7hFgSgtAd8m0FO3jgEKYU2I4U-aaKLlNshG3EAe8Go0L2YZv_4DD98jW71tv-wNE6e12_VuBjptq-F-PJ29-5X7CHTabAWg05vvS0t_BAAA__9NS1aS">