no python files to be committed in isafunctions
[openpower-isa.git] / src / openpower / decoder / isa / remap_dct_yield.py
index f367e70a0c5a3a163825fe0442ee046b9b5cd042..c2758444646b8070def0c846e9744f15a44174f7 100644 (file)
@@ -48,7 +48,8 @@ def iterate_dct_inner_halfswap_loadstore(SVSHAPE):
     # get indices to iterate over, in the required order
     n = SVSHAPE.lims[0]
     mode = SVSHAPE.lims[1]
-    print ("inner halfswap loadstore", n, mode, SVSHAPE.skip)
+    print ("inner halfswap loadstore", n, mode, SVSHAPE.skip,
+            "submode", SVSHAPE.submode2)
 
     # reference list for not needing to do data-swaps, just swap what
     # *indices* are referenced (two levels of indirection at the moment)
@@ -56,11 +57,16 @@ def iterate_dct_inner_halfswap_loadstore(SVSHAPE):
     ji = list(range(n))
 
     levels = n.bit_length() - 1
-    ji = halfrev2(ji, False)
-    if False: # swap: TODO, add extra bit-reverse mode
-        ri = [reverse_bits(i, levels) for i in range(n)]
-        ji = [ji[ri[i]] for i in range(n)]
+    ri = [reverse_bits(i, levels) for i in range(n)]
 
+    if SVSHAPE.mode == 0b01: # FFT, bitrev only
+        ji = [ji[ri[i]] for i in range(n)]
+    elif SVSHAPE.submode2 == 0b001:
+        ji = [ji[ri[i]] for i in range(n)]
+        ji = halfrev2(ji, True)
+    else:
+        ji = halfrev2(ji, False)
+        ji = [ji[ri[i]] for i in range(n)]
 
     # invert order if requested
     if SVSHAPE.invxyz[0]:
@@ -264,7 +270,7 @@ def iterate_dct_outer_butterfly_indices(SVSHAPE):
     if len(x_r) == 0:
         return
 
-    #print ("outer butterfly")
+    print ("outer butterfly", mode, SVSHAPE.skip, "submode", SVSHAPE.submode2)
 
     # I-DCT, reference (read/write) the in-place data in *reverse-bit-order*
     ri = list(range(n))
@@ -584,7 +590,7 @@ def inverse_transform2(vec):
         if jle == 0b111: # all loops end
             break
 
-    print("transform2 result", vec)
+    print("inverse_transform2 result", vec)
 
     return vec