got sv.bc working for pospopcount
[openpower-isa.git] / src / openpower / sv / sv_analysis.py
index 17239ec97927321808b9dc7cf9e834013379fa23..21778ad02d78c4f7ef5b6df93e096f4abbe365ad 100644 (file)
@@ -491,6 +491,9 @@ def extra_classifier(insn_name, value, name, res, regs):
         elif 'mfcr' in insn_name or 'mfocrf' in insn_name:
             res['0'] = 'd:RT'  # RT: Rdest1_EXTRA3
             res['1'] = 's:CR'  # CR: Rsrc1_EXTRA3
+        elif regs == ['', '', '', 'RT', 'BI', '']:
+            res['0'] = 'd:RT'  # RT: Rdest1_EXTRA3
+            res['1'] = 's:BI'  # BI: Rsrc1_EXTRA3
         elif insn_name == 'setb':
             res['0'] = 'd:RT'  # RT: Rdest1_EXTRA3
             res['1'] = 's:BFA'  # BFA: Rsrc1_EXTRA3
@@ -525,6 +528,9 @@ def extra_classifier(insn_name, value, name, res, regs):
         elif regs == ['', 'RB', '', 'FRT', '', 'CR1']:
             res['0'] = 'd:FRT;d:CR1'  # FRT,CR1: Rdest1_EXTRA3
             res['1'] = 's:RB'  # RB: Rsrc1_EXTRA3
+        elif regs == ['', 'RB', '', 'FRT', '', '']:
+            res['0'] = 'd:FRT'  # FRT: Rdest1_EXTRA3
+            res['1'] = 's:RB'  # RB: Rsrc1_EXTRA3
         elif regs == ['', 'FRB', '', 'RT', '', 'CR0']:
             res['0'] = 'd:RT;d:CR0'  # RT,CR0: Rdest1_EXTRA3
             res['1'] = 's:FRB'  # FRB: Rsrc1_EXTRA3
@@ -536,8 +542,7 @@ def extra_classifier(insn_name, value, name, res, regs):
             res['0'] = 'd:RT'  # RT: Rdest1_EXTRA3
             res['1'] = 's:RA'  # RS: Rsrc1_EXTRA3
         else:
-            res['0'] = 'TODO'
-            print("regs TODO", insn_name, regs)
+            raise NotImplementedError(insn_name)
 
     elif value == 'RM-1P-2S1D':
         res['Etype'] = 'EXTRA3'  # RM EXTRA3 type
@@ -566,6 +571,10 @@ def extra_classifier(insn_name, value, name, res, regs):
             res['0'] = 'd:FRT;d:CR1'  # FRT,CR1: Rdest1_EXTRA3
             res['1'] = 's:FRA'  # FRA: Rsrc1_EXTRA3
             res['2'] = 's:RB'  # RB: Rsrc1_EXTRA3
+        elif regs == ['RS', 'RB', '', 'RA', '', '']:
+            res['0'] = 'd:RA'  # RA: Rdest1_EXTRA3
+            res['1'] = 's:RS'  # RS: Rsrc1_EXTRA3
+            res['2'] = 's:RB'  # RB: Rsrc1_EXTRA3
         elif name == '2R-1W' or insn_name == 'cmpb':  # cmpb
             if insn_name in ['bpermd', 'cmpb']:
                 res['0'] = 'd:RA'  # RA: Rdest1_EXTRA3
@@ -596,7 +605,7 @@ def extra_classifier(insn_name, value, name, res, regs):
             res['1'] = 's:RA'  # RA: Rsrc1_EXTRA2
             res['2'] = 's:RB'  # RT: Rsrc2_EXTRA2
         else:
-            res['0'] = 'TODO'
+            raise NotImplementedError(insn_name)
 
     elif value == 'RM-2P-2S1D':
         res['Etype'] = 'EXTRA2'  # RM EXTRA2 type
@@ -605,7 +614,7 @@ def extra_classifier(insn_name, value, name, res, regs):
             res['1'] = 's:RS'  # RS: Rsrc1_EXTRA2
             res['2'] = 's:CR'  # CR: Rsrc2_EXTRA2
         else:
-            res['0'] = 'TODO'
+            raise NotImplementedError(insn_name)
 
     elif value == 'RM-1P-3S1D':
         res['Etype'] = 'EXTRA2'  # RM EXTRA2 type