<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/131734>131734</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            AMDGPU should handle SimplifyDemandedVectorElts for more trivial intrinsics
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            good first issue,
            backend:AMDGPU,
            missed-optimization
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          arsenm
      </td>
    </tr>
</table>

<pre>
    As a follow up to https://github.com/llvm/llvm-project/pull/128647, more intrinsics should be handled in SimplifyDemandedVectorElts. 

This includes: Intrinsic::amdgcn_readlane, Intrinsic::amdgcn_update_dpp, Intrinsic::amdgcn_permlane16, Intrinsic::amdgcn_permlanex16, Intrinsic::amdgcn_permlane64 and Intrinsic::amdgcn_mov_dpp8

This is mostly a matter of adding the intrinsics to the switch, some boilerplate to keep the other immediate operands as they are, and adding tests similar to the ones added in #128647 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUk0mP2zAMhX-NfCEmsGUndg4-pJOm6KFAgS7XgSzRMTtaDFHONP31hRKknQKdLicDfh_IJ_JRMdPRI_Zi_Uqs94Va0hRiryKjd8UQzLnfMSgYg7XhCZYZUoAppZlFvRPyIOThSGlahpUOTsiDtafb526O4QvqJORhXqwV8lDJbtO0Qt6DCxGBfIrkmTQDT2GxBgaESXlj0QB5-EButjSe9-iUN2g-o04hvraJVyDKnSh3HydiIK_tYjAbgre3ktldvVPOHLV_iKiMVR5z598Ty2xUwgczzy8zM0aXq1SbvzNf_wXaNKC8eQFy4ZTtdM8fyuACJ3sGBU6lhBHCCMoY8kdI0y8DTeHyh58o6Slb4eAQhkAW42xVwkw8Is4XLKQJI5BzaChrYcaovGFQnPUzqHgZXrZ764ecGJgcWRVv7YJHzsB1f0LW141DYfrabOutKrCv2kbKtq2qtph6qWvTadRd1bVVo9sROyxVpQYccNzKpqBelnJd1lVXrtfVul2V5TBuOl1tdbkZxk0jmhKdIrvKkVuFeCyIecG-qqu2bgqrBrR8SbeUxxAMjBQ5wQUSUgp5L6QclH5Eb0S9273bv3n_6YfgiBnNXZgTOfqmEgWftfW-iP0l48NyZNGUljjxTwuJksX-WuuW7Wuw_xBqGEO8HkaKdCJln-2zWKLt__vsLo_kfHjXYZx6-T0AAP__mdNT9A">