<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54795>54795</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AMDGPU][GFX10] Some VOP3 opcodes do not support abs and neg modifiers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AMDGPU
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dpreobra
</td>
</tr>
</table>
<pre>
The following GFX10 opcodes do not support abs/neg modifiers though they should:
v_mov_b32_e64
v_movreld_b32_e64
v_movrels_b32_e64
v_movrelsd_2_b32_e64
v_movrelsd_b32_e64
These opcodes do not have FP operands but they are actually typeless.
GFX10 SPG states explicitly that these opcodes should support abs/neg modifiers.
Note that v_cndmask_b32_e64 do support abs and neg modifiers.
An example of failed test:
v_mov_b32_e64 v5, -v1
Expected result:
0x05,0x00,0x81,0xd5,0x01,0x01,0x00,0x20
Actual output:
error: not a valid operand.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyFU02PmzAQ_TVwGW3kmJBsDhy23SantpG2rXqLBnv46BqMbEM3_74DJNqPblOEPGbGPL83z86tPmXfKoLCGmN_120J-93PpQDbKavJg7bQ2gC-7zrrAmDuI7lrqYTG6rqoyXkIle3LigOdwPPc6Ci5i8R9JM4j8DMcGzsc80Qeab16k3Zk9L9L_kpJH-XV6qvaPLJYT2_lVTgQ7A6cJoet9pD3YRaEjgBV6NGYE4RTR4a8X8xQc6ceDnvwAQOj0VNnalWHcWmFE8KLvebeXGvlGfeLDTQDDEfV6gb940XJSPgFADBZeA9iHu9apoRNZ5hEAQXWhjQw0fA_g2BII_kRbobly2WfnjpSgSEc-d68ByKexPgjBzGF2-UU9Dm5fBXmJVK8Yjy1Gmwfuv69Dcg56zg_uYYwoKn1xbWz9Fhnid4mW4wDO0FZlH64-3y_P3yP0nueT6bxFB5sQ_Dj6yG5ctb_7m_cO5NVIXR-ZCd3_JZ1qPp8oWzDH8YMl3DTOfuLG8aftfc9jXanq802jatsc6tQbGWRbMWKVH6rlBC0Rlyu0zWuknVsMOcTPJKPpMxRPVI7XquzEilZQVxnUkgpVmKzlKlM5AIZR4m8ICUxTwoRrQQ17PpipLOwroxdNjHL-9Jz0dQ--Ociel-XLU0tG_Gx56vtMt05srnDeFKRTRL-AIMMUo8">