From 0794b9feedbbadfe6b52576a56130df047d1d956 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Wed, 23 Dec 2020 15:43:14 +0000 Subject: [PATCH] start filling in svp64 insns --- openpower/opcode_regs_deduped.mdwn | 12 ++++++------ openpower/sv_analysis.py | 10 +++++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/openpower/opcode_regs_deduped.mdwn b/openpower/opcode_regs_deduped.mdwn index 37434dec3..97d1698a7 100644 --- a/openpower/opcode_regs_deduped.mdwn +++ b/openpower/opcode_regs_deduped.mdwn @@ -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) diff --git a/openpower/sv_analysis.py b/openpower/sv_analysis.py index 4812f8663..7e52f2273 100644 --- a/openpower/sv_analysis.py +++ b/openpower/sv_analysis.py @@ -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 -- 2.30.2