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

    <tr>
        <th>Summary</th>
        <td>
            [AMDGPU][Disassembler] `getInlineImmVal16` can't tell BF16 and FP16 apart when it comes to inline literal
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AMDGPU
      </td>
    </tr>

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

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

<pre>
    Based on the spec, `242` is the encoding for inline literal `1.0`. However, when `getInlineImmVal16` sees `242`, it doesn't know whether the operand is BF16 or FP16. Currently it returns `1.0` in FP16 format. As a consequence, the encoded instruction and operand are not correct.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0UruO2zAQ_BqqWZxAUU8XKuwzlFwR4Jqkp6i1xBxFOtzVGff3AeVLDARIxYKzM7Mzq4ns7BF7UZ9Efc70xkuIPS3WsdU-G8P00Z804QTBAy8IdEUj1DOIRqpKiUaCpf0DvQmT9TNcQgTrnfUIzjJG7RK4yKVoZA5fww3fMSaK24I-fc3ILzv-ZV1_aFc0iZUQ6SGS4JZhCkheqJbhzYdbIuAF4y4frhi1n5Kb01A0ECIMr0WTw_MWI3p2H4kgIm_R08MQWL_jkutVcw5HAg0meMJfG3qDSfnvejiB9cRxM2yDh6T3R1dHBB8YTIgRDefZ1JfToTzoDPuilV1R1K1qs6UvsMCxM7ozkzmUo6o7OV2qYrxgW43S1JntlVSVVEWjZFmrNu8usjNl2WE7Xg6VNqKSuGrrcufe1zzEObNEG_adkuUhc3pER3uhSo3avKGfRHk8fjt_ef0ulEo1xz6NPo3bTKKSzhLTg4wtu_0gPkfqs6hPZ0uaCNfRYRT1-b-1GX3vh9G5exEpnD1hfdWR76XblNOKBBz-OZVsi65fmK8kyqNQg1DDbHnZxtyEVaghufx8nq4x_ETDQg37_iTUsEfwOwAA__8wZegU">