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

    <tr>
        <th>Summary</th>
        <td>
            [AMDGPU] Different code generated for SelectionDAG and GlobaIISel
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    This example from the test suite (`llvm/test/CodeGen/AMDGPU/GlobalISel/lshr.ll`) seems to compile to different assembly for SelectionDAG and GlobalISel:

```llvm
define amdgpu_ps half @lshr_i16_vs(i16 %value, i16 inreg %amount) {
  %result = lshr i16 %value, %amount
  %cast = bitcast i16 %result to half
  ret half %cast
}
```
`llc -mtriple=amdgcn-amd-amdpal -mcpu=tahiti`

[GlobalISel](https://godbolt.org/z/MrG8o1h8P):
```
lshr_i16_vs: ; @lshr_i16_vs
        s_and_b32 s0, s0, 0xffff
        v_and_b32_e32 v0, 0xffff, v0
        v_lshrrev_b32_e32 v0, s0, v0
```

[SelectionDAG](https://godbolt.org/z/MPrvGTc9K):
```
lshr_i16_vs: ; @lshr_i16_vs
        v_and_b32_e32 v0, 0xffff, v0
        v_lshrrev_b32_e32 v0, s0, v0
 v_cvt_f32_f16_e32 v0, v0
```

One seems to perform a fpext at the end the other performs an anyext/bitcast.
This difference is not present for gfx940 for example. 

How is the `amdgpu_ps ` calling convention defined?

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0lEGv4yYQxz8NuYxehHHsJAcf3lvL6apa9Um7PUcEBpsKgwXYzeunr7CdTTaqVj20UeIAmv945g_8eAi6tYgVKd5IUW_4GDvnq9h-9FaLbnNx8qP61ukAeOX9YBCUdz3EDiFiiBBGHREIO5CSGjP1hDVpnbDmk5N4QktY8_qlPr3_TlhzMu7CzeevaAhrTOj81hhSUsKOEBD7ANGBcP2gDaah1EqhRxuBh4D9xXyAch6-okERtbP16wm4lfCQNn8ltCb09izp8p0rm5ckKm0ReC_bYTwPATpuFJAdTeWcdVaep0DYQWclEFZM3IxI2CdIc209tmmV9260MVVN9m9LWkjrHsNoIpC8hpQNnpPcpXeN4GFRXHScx6tozRXdXOBN4DGuBS_Ktc19_dTv96kxAl766PVgkOR1alvYF97L9Bu4gZdeDCPJ68g7HfVdujyLtwdvi5qwQxfjEJLNrCGsaZ28OBO3zreENX8R1nzxp4PLusM7Ycf7bvxY16PV-SuQ_O15A9Z2l084cyvPl5xBoMnG5UmvSin1Y-R0izxjzmB6jGOf0vwpOr3S4_SkWPJP9J89vRnzeAr_pTXvfjp9E8df_ztr_o-GYTqLKZ5Vzs4qKx_CfurIbxbvd3hAr5zvgYMa8BqBxxkYaOX872KH_hYUgFvg9gOvCRrrLdguSWfu3CggEHQA6yIMHkOiQoJBq67HHZ2HK6C28FjXL-7PJEuvJSW9X3tSUhDcGG1bEM5OaNNewoIHSfJmkW9klctjfuQbrLI9O9L9ocj3m66SbEcLLHGX7zN6xF2Wl0IKKqQ4ikNW7je6YpTtMpqVWZYXeblVSihR7jgXWXEoUZAdxZ5rs01wSsdko0MYscoyVrDdxvALmjBjmTGLqYuQMMISpX2VRC-XsQ3peOgQwz1N1NHMPF-5W9RQfyepcBKhRYueR5Q_4enndOc3ozfV07nWsRsvW-ES6lfiz8UM3v2BIm3iXGkgrFlbmSr2dwAAAP__5wrrVg">