[[!table data="""
insn | Ptype | Etype | 0 | 1 | 2 | 3 |
-bpermd | 1P | EXTRA3 | TODO | | | | RS | RB | NONE | RA | NONE | NONE |
-modud | 1P | EXTRA3 | TODO | | | | RA | RB | NONE | RT | NONE | NONE |
-moduw | 1P | EXTRA3 | TODO | | | | RA | RB | NONE | RT | NONE | NONE |
-cmpb | 1P | EXTRA3 | d:BF | s:RA | s:RB | | RS | RB | NONE | RA | NONE | NONE |
-modsd | 1P | EXTRA3 | TODO | | | | RA | RB | NONE | RT | NONE | NONE |
-modsw | 1P | EXTRA3 | TODO | | | | RA | RB | NONE | RT | NONE | NONE |
+bpermd | 1P | EXTRA3 | d:RA | s:RS | s:RB | | RS | RB | NONE | RA | NONE | NONE |
+modud | 1P | EXTRA3 | d:RT | s:RA | s:RB | | RA | RB | NONE | RT | NONE | NONE |
+moduw | 1P | EXTRA3 | d:RT | s:RA | s:RB | | RA | RB | NONE | RT | NONE | NONE |
+cmpb | 1P | EXTRA3 | d:RA | s:RS | s:RB | | RS | RB | NONE | RA | NONE | NONE |
+modsd | 1P | EXTRA3 | d:RT | s:RA | s:RB | | RA | RB | NONE | RT | NONE | NONE |
+modsw | 1P | EXTRA3 | d:RT | s:RA | s:RB | | RA | RB | NONE | RT | NONE | NONE |
"""]]
## 2R-1W-CRo (RM-1P-2S1D)
elif value == 'RM-2P-1S1D':
res['Etype'] = 'EXTRA3' # RM EXTRA3 type
- if key == 'CRio' and insn == 'mcrf':
+ if name == 'CRio' and insn == 'mcrf':
res['0'] = 'd:BF' # BFA: Rdest1_EXTRA3
res['1'] = 's:BFA' # BFA: Rsrc1_EXTRA3
elif insn == 'setb':
res['0'] = 'd:BT' # BT: Rdest1_EXTRA3
res['1'] = 's:BA' # BA: Rsrc1_EXTRA3
res['2'] = 's:BB' # BB: Rsrc2_EXTRA3
+ elif name == '2R-1W' or insn_name == 'cmpb': # cmpb
+ if insn_name in ['bpermd', 'cmpb']:
+ res['0'] = 'd:RA' # RA: Rdest1_EXTRA3
+ res['1'] = 's:RS' # RS: Rsrc1_EXTRA3
+ else:
+ res['0'] = 'd:RT' # RT: Rdest1_EXTRA3
+ res['1'] = 's:RA' # RA: Rsrc1_EXTRA3
+ res['2'] = 's:RB' # RB: Rsrc1_EXTRA3
elif insn_name.startswith('cmp'): # cmp
res['0'] = 'd:BF' # BF: Rdest1_EXTRA3
res['1'] = 's:RA' # RA: Rsrc1_EXTRA3