[[!table data="""
insn | Ptype | Etype | 0 | 1 | 2 | 3 |
-addic | 2P | EXTRA3 | TODO | | | | RA | | NONE | RT | NONE | NONE |
-addi | 2P | EXTRA3 | TODO | | | | RA_OR_ZERO | | NONE | RT | NONE | NONE |
-addis | 2P | EXTRA3 | TODO | | | | RA_OR_ZERO | | NONE | RT | NONE | NONE |
-ori | 2P | EXTRA3 | TODO | | | | RS | | NONE | RA | NONE | NONE |
-oris | 2P | EXTRA3 | TODO | | | | RS | | NONE | RA | NONE | NONE |
-xori | 2P | EXTRA3 | TODO | | | | RS | | NONE | RA | NONE | NONE |
-xoris | 2P | EXTRA3 | TODO | | | | RS | | NONE | RA | NONE | NONE |
+addic | 2P | EXTRA3 | d:RT | s:RA | | | RA | | NONE | RT | NONE | NONE |
+addi | 2P | EXTRA3 | d:RT | s:RA | | | RA_OR_ZERO | | NONE | RT | NONE | NONE |
+addis | 2P | EXTRA3 | d:RT | s:RA | | | RA_OR_ZERO | | NONE | RT | NONE | NONE |
+ori | 2P | EXTRA3 | d:RS | s:RA | | | RS | | NONE | RA | NONE | NONE |
+oris | 2P | EXTRA3 | d:RS | s:RA | | | RS | | NONE | RA | NONE | NONE |
+xori | 2P | EXTRA3 | d:RS | s:RA | | | RS | | NONE | RA | NONE | NONE |
+xoris | 2P | EXTRA3 | d:RS | s:RA | | | RS | | NONE | RA | NONE | NONE |
subfic | 2P | EXTRA3 | TODO | | | | RA | | NONE | RT | NONE | NONE |
"""]]
elif insn_name.startswith('cmp'): # cmpi
res['0'] = 'd:BF' # BF: Rdest1_EXTRA3
res['1'] = 's:RA' # RA: Rsrc1_EXTRA3
- elif insn_name.startswith('neg'): # neg*
+ elif (insn_name.startswith('neg') or # neg*
+ insn_name in ['addic', 'addi', 'addis', 'subfuc']):
res['0'] = 'd:RT' # RT: Rdest1_EXTRA3
res['1'] = 's:RA' # RA: Rsrc1_EXTRA3
elif (insn_name.startswith('prty') or # prty*
+ insn_name.startswith('ori') or # ori*
+ insn_name.startswith('xori') or # xori*
insn_name.startswith('popcnt')): # popcnt*
res['0'] = 'd:RS' # RS: Rdest1_EXTRA3
res['1'] = 's:RA' # RA: Rsrc1_EXTRA3