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