<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/98434>98434</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong splatting condition of vector select by InstCombine
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
bonjune
</td>
</tr>
</table>
<pre>
https://github.com/llvm/llvm-project/blob/7eae9bb856135136cddc4208a2b1546e9db44c9c/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp#L3568-L3569
Alive2 report: https://alive2.llvm.org/ce/z/G66ZVg
```ll
----------------------------------------
define <2 x i16> @fun0(<1 x i1> %val0, <1 x i32> %val1, <4 x i1> %val2) {
entry:
%val3 = extractelement <4 x i1> %val2, i32 3
%val4 = select i1 %val3, <2 x i16> { 0, 0 }, <2 x i16> { 65535, 65535 }
ret <2 x i16> %val4
}
=>
define <2 x i16> @fun0(<1 x i1> %val0, <1 x i32> %val1, <4 x i1> %val2) {
entry:
%.splat = shufflevector <4 x i1> %val2, <4 x i1> poison, 3, 3
%not..splat = xor <2 x i1> %.splat, { 1, 1 }
%val4 = sext <2 x i1> %not..splat to <2 x i16>
ret <2 x i16> %val4
}
Transformation doesn't verify!
ERROR: Value mismatch
Example:
<1 x i1> %val0 = < poison >
<1 x i32> %val1 = < poison >
<4 x i1> %val2 = < poison, poison, poison, undef >
Source:
i1 %val3 = #x0 (0) [based on undef value]
<2 x i16> %val4 = < #xffff (65535, -1), #xffff (65535, -1) >
Target:
<2 x i1> %.splat = < #x0 (0), #x1 (1) >
<2 x i1> %not..splat = < #x1 (1), #x0 (0) >
<2 x i16> %val4 = < #xffff (65535, -1), #x0000 (0) >
Source value: < #xffff (65535, -1), #xffff (65535, -1) >
Target value: < #xffff (65535, -1), #x0000 (0) >
Summary:
0 correct transformations
1 incorrect transformations
0 failed-to-prove transformations
0 Alive2 errors
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVsmO4zYQ_Rr6QrTBRYt10MHLOAgQIEDPYALkRlElmwOKNEjKcefrA0qyLXnck3SQQwyDkliPr6pecRPeq4MBKFG6QeluIbpwtK6srPnWGVhUtn4rEdkhsh7aYwgnj_gasT1i-4MKx65aStsittf6fH28nJz9BjIgtq-0rRDb5yCgqKpVmlGeUp7JupYJIyvBKpomGRR1lSSykBMeFcd9ccL4xrrWI7b_2fiwtW2lDMy_PoMGGZbydEKM_8LTbPUS22Ia-VqrMzDs4GRdQHyN56mI3ryMzpfWHRDby-jkT8T2P2XZ718PUy6UkeGv9dDx8g9_A7qGRhnAiG8ZvmBFM8Q_YZSQpjMEsRXiW9r3990sPQtNENviaz9ndwMdDcnDAIZYgVG-GRyCCe4tptp_4RHDMeI7DJfghAygoQUT3uHaRq-Yz8cn_Xjfa48VvbKOEU1Tyze4z4BglO-e27M05Wk09S89bnTmIDziB_djLa5IxHeIf_r_KLz0Jy3CoNGxaxoNZ5DBunclnvWfrPLWxG4-NHdiY8NyQn4ZKNmUcjD3pPkG9ynQqabzAl7CdwQTH8HOdfxoXW5LWARlDa4teINYHvAZnGreEKPTpfXp9fXX17g8vwrdAW6Vb0WQxxnkItqThpvaz6rZZ4b4dtQR3-J-WuIfob8r1QM4avvsrTM1NBOmvv1sOyfvkd8XzUDK-IVgxFYEsQKRAqWbSniosTUj3TmKgtLbjH-i_i28yNY0TRMJb6vrhUZq9iPrY8xfhDtAmKr9ZKrNvN5zGB3FNFcP3O9PuCnVbeSV6sb9hOpfykAIecI6lGpUnK__I0kHMT_K-jzCMc6ubcVs7yFYWufiphxmS89fARQr8zcQghuhNNQvwcbD_AzvA8eDFZyzzj-cj4u65HXBC7GAkuaMZHmesmxxLCVIITPKctJAJTMaUZA1CQXBsgboQpWMsITklJI0XSXZsq4SuUqTRNCKyqKqUEKgFUrfjuyF8r6DslglPFloUYH2_a2GMQN_4N6IGIuXHFf2l5SqO3iUEK188HeWoIKG8jdnzQH38zEoc8DSmlr1-5dt8LiPjydf9YYnV5FF53T54VtSH1284gzRn0v2VwAAAP___vSWHw">