<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">