Added cprop to caller, enums, svp64
authorAndrey Miroshnikov <andrey@technepisteme.xyz>
Wed, 22 Jun 2022 13:07:06 +0000 (14:07 +0100)
committerAndrey Miroshnikov <andrey@technepisteme.xyz>
Wed, 22 Jun 2022 13:07:06 +0000 (14:07 +0100)
src/openpower/decoder/isa/caller.py
src/openpower/decoder/power_enums.py
src/openpower/sv/trans/svp64.py

index 7b8224e4340dfec4e6c3aa88838e49818d915f4a..275be81fb1c86afc3612bb12662f3777a91f72f2 100644 (file)
@@ -1294,6 +1294,11 @@ class ISACaller(ISACallerHelper, ISAFPHelpers):
             illegal = False
             ins_name = asmop
 
+        # and anything cprop
+        if asmop.startswith('cprop'):
+            illegal = False
+            ins_name = asmop
+
         # and anything ternlog
         if asmop.startswith('ternlog'):
             illegal = False
index 4587c6adedbae73899fa7431640d5bcc3eae7561..995806c8874a4f1365e25afaf02af800fbab370b 100644 (file)
@@ -269,6 +269,7 @@ _insns = [
     "cdtbcd",
     "cmp", "cmpb", "cmpeqb", "cmpi", "cmpl", "cmpli", "cmprb",
     "cntlzd", "cntlzw", "cnttzd", "cnttzw",
+    "cprop", # AV bitmanip
     "crand", "crandc", "creqv",
     "crnand", "crnor", "cror", "crorc", "crxor",
     "darn",
index f7bed8527be68554b59bdceb7eca2e8df50b0055..d5c7842fdc05d8bb10f41041ce1d1f876a61ff26 100644 (file)
@@ -443,7 +443,8 @@ class SVP64Asm:
 
         # and avgadd, absdu, absdacu, absdacs
         # XXX WARNING THESE ARE NOT APPROVED BY OPF ISA WG
-        if opcode in ['avgadd', 'absdu', 'absds', 'absdacu', 'absdacs']:
+        if opcode in ['avgadd', 'absdu', 'absds', 'absdacu', 'absdacs',
+                      'cprop']:
             if opcode[:5] == 'absdu':
                 XO = 0b1011110110
             elif opcode[:5] == 'absds':
@@ -454,6 +455,8 @@ class SVP64Asm:
                 XO = 0b1111110110
             elif opcode[:7] == 'absdacs':
                 XO = 0b0111110110
+            elif opcode[:7] == 'cprop':
+                XO = 0b0110001110
             fields = list(map(int, fields))
             insn = 22 << (31-5)  # opcode 22, bits 0-5
             insn |= fields[0] << (31-10)  # RT       , bits 6-10
@@ -1344,6 +1347,7 @@ if __name__ == '__main__':
         'absds 3,12,5',
         'absdacu 3,12,5',
         'absdacs 3,12,5',
+        'cprop 3,12,5',
     ]
     isa = SVP64Asm(lst, macros=macros)
     log("list", list(isa))