<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/146560>146560</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Poison not propagate through @llvm.pow[i]
</td>
</tr>
<tr>
<th>Labels</th>
<td>
llvm:instcombine,
constant-folding
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
lukel97
</td>
</tr>
</table>
<pre>
I believe we should be able to fold `@llvm.pow[i]` with a poison operand to poison:
```llvm
define float @src(float %x) {
%powi = call float @llvm.powi(float poison, i32 %pow)
ret float %powi
}
define float @tgt(float %x) {
ret float poison
}
```
But we don't do this today: https://godbolt.org/z/EGrYPc6oW
I can't think of a reason why poison wouldn't propagate, I presume it would act similarly to e.g. `@llvm.sqrt` which we do fold poison through.
Alive doesn't seem to support the pow[i] libcall just yet https://alive2.llvm.org/ce/z/CXcVgc
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U01v2zoQ_DXUZRGBoj4cHXSw4-eH3HJ6rz1S1FpiQosqubLr_vqComwHKQoQMGjtzszOLKX3uh8RG1buWLlP5EyDdY2ZP9DUm6S13bV5hRaNxjPCBcEPdjYdtAiyNQhk4WhNB6zirODGnE_pZC-s3GlW7lnF4aJpAAmT1d6OYCd0cuxCW_yH5VvGl1PxeAIG49sOj3pEOBorCVjBvVNMPK9XUf5koga22TG-hXCf7EUDy_egpDGPrpsgfe9dacUL6FysnUzUC45DgjvD0sW3bLOPAr8Kop7-KugBtNLdcW5TRszdTMHTLgjaEHQWaNAeyHbyyvItDESTDxaJAxOH3natNZRa1zNx-MXE4Z9_3fc3Vdn_I9wrKBmRaNDjB9gjSHAog_OX4XoL4RISjHWTs5PsJWEw5BUmh34-IWiKRSAVgdcnbaQz15Aapn36OWz_w9ES86DVEGeJC7Fy0eDs3A9pFLg1-hxK0Ed6j3gKqH6eJuuCbITH-oDR7RLn--wJrkhf_JABTaSLjuiJwtWYl2_qv14lXZN3dV7LBJtsU2b5c_ks6mRohMg3xbFDWWVtx6sKZSurvFZHbLusKFWiG8FFyTc8yyqeF3UqRYFSlll5zDOsuWIFx5PU5s6eaO9nbLKiKiueGNmi8cujEmLZ6HyrR0_Knlo9IhOCiRcmhLKjJznSU_BMj334UO4T14Sep3bufTBae_IPItJksHmL_o72U4g3t-HPp5jMzjRf1knTMLepsicmDovG-PM0OfuOipg4LDN5Jg7rWOdG_A4AAP__wvZU8A">