<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/139250>139250</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
AMDGPU fmed3 of fpext optimization should look through source modifiers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AMDGPU,
missed-optimization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
arsenm
</td>
</tr>
</table>
<pre>
The combine to fold `fmed3.f32(fpext x, fpext y, fpext z) ` [here](https://github.com/llvm/llvm-project/blob/b291cfcad4815568dc1eaca58185d25dceed3f1c/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp#L919) should account for intermediate source modifiers.
e.g. it should handle
`fmed3.f32(fneg (fpext x)), fabs (fpext y), fneg (fabs (fpext z))`
Additionally this should preserve the fast math flags on the new fpext
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUUkFv3CwQ_TX4gmKZwWzsgw-bXe2nSF-lHtIfgGGwaTBYgNNsfn3l3XWzbU-VkBjxmDfz5o1MyQ4esSPiiYhjIZc8htjJmNBPRR_0uXsZkaow9dYjzYGa4DQlu8pMqHlpOBBozIzvmb4TONBreP4MPwi0639KxNOIEYk4EmjGnOdE-J7AicBpsHlc-lKFicDJubftephj-I4qEzj1LvTrBS1TRkldN0yIXaMVQ6mkaFgjNAitEDU3TN3x2DXvRcYBV579l-N_X7_9Cp59yoeruGefo_XJqlLNMwH-f8vatfc0hsVpKpUKi8_UhEitzxgn1FZmpCksUSGdgrbGYkwlqfak2mM5lNTmLX2UXju8Qn9Oz-NA76fYXs6BGtmnT-C8vW7ff0M_bmm76lpjr7XNNnjp3Jnm0aatkTliwviGNI9IjUyZTjKP1Dg5JBr85dnjj5t7he64bnkrC-zYY717bGHHeDF2suY7pZRhCgWXXIGoGDfMtErzuhaisB1UICpRtQxYxXiJXClAJsA8MqZkQ-oKJ2lduRpVhjgUNqUFO8ZbEFXhZI8uXfYSoJfqFb0mfL_5BwQOBGCyKaF-CHO2k_2Qq-IVE8cidpcN6pchkbpyNuX0WSnb7LC7ctGLFzSYm-R7rm1oLoRXmscYlmH8y_Biia7754W-iE0ETje9bx38DAAA___rLCPP">