start filling in svp64 insns
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 23 Dec 2020 15:43:14 +0000 (15:43 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 23 Dec 2020 15:43:14 +0000 (15:43 +0000)
openpower/opcode_regs_deduped.mdwn
openpower/sv_analysis.py

index 37434dec3e59fb5f2d5651222a15102e9d473adf..97d1698a767792b7ffcf2e865d4c8c46effeb4d0 100644 (file)
@@ -904,12 +904,12 @@ insn | Ptype | Etype | 0 | 1 | 2 | 3 |
 
 [[!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)
index 4812f8663b40d0ef81e0101dd131ea3fd466d783..7e52f22734729237305b75c524a135b4529ae0e5 100644 (file)
@@ -393,7 +393,7 @@ def process_csvs():
 
             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':
@@ -411,6 +411,14 @@ def process_csvs():
                     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