explore alternative grevlut in a bit more depth
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 18 May 2022 11:02:49 +0000 (12:02 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 18 May 2022 11:03:05 +0000 (12:03 +0100)
openpower/sv/grevlut_grev_gorc.py

index 329da7784c0f943c6b419ffff04f4765cdbcee25..ec96c979f5df481daae72cc773a2f79ab8d62827 100644 (file)
@@ -55,9 +55,28 @@ def grevlut_grev_gorc(a, sh, imm_lut, inv_in, inv_out):
 
 def case(a, sh, imm_lut, inv_in, inv_out):
     v = grevlut_grev_gorc(a, sh, imm_lut, inv_in, inv_out)
-    print(f"grevlut_grev_gorc({hex(a)}, {hex(sh)}, {bin(imm_lut)}, "
-          f"{inv_in}, {inv_out}) = {hex(v)}")
+    print("  gl(%x, %x, %s, %d, %d = %x" % (a, sh, bin(imm_lut),
+                                            inv_in, inv_out, v))
 
+if __name__ == '__main__':
+    # quick experiment
+    imms = [0b101_0010, 0b101_0110, 0b1110_0110, 0b1001_0011]
+    for imm in imms:
+        print ("imm", bin(imm))
+        for i in range(64):
+            case(0x5555_5555_5555_5555, i, imm, True, False)
+        print()
 
-for i in range(64):
-    case(0x5555_5555_5555_5555, i, 0b1010010, True, False)
+    print()
+    print()
+
+    # explore all possible constants, 16 at a time, here. edit the OR
+    # to try different combinations | 0b0101_0000 | 0b1000_0000 etc.
+    imms = []
+    for i in range(16):
+        imms.append(i | 0b0101_0000)
+    for imm in imms:
+        print ("imm", bin(imm))
+        for i in range(64):
+            case(0x5555_5555_5555_5555, i, imm, True, False)
+        print()