(no commit message)
[libreriscv.git] / openpower / sv / remap_fft_yield.py
index 0106c8f76e1d7b2a40bef6e01998543447afa996..a09c5f267442df25f2fb97e7ca54f4e80e6ec354 100644 (file)
@@ -24,7 +24,7 @@
 # the indices are generated by using natural-looking nested loops
 def iterate_indices(SVSHAPE):
     # get indices to iterate over, in the required order
-    n = SVSHAPE.lims[SVSHAPE.order[0]]
+    n = SVSHAPE.lims[0]
     # createing lists of indices to iterate over in each dimension
     # has to be done dynamically, because it depends on the size
     # first, the size-based loop (which can be done statically)
@@ -34,7 +34,7 @@ def iterate_indices(SVSHAPE):
         x_r.append(size)
         size *= 2
     # invert order if requested
-    if SVSHAPE.invxyz[SVSHAPE.order[0]]: x_r.reverse()
+    if SVSHAPE.invxyz[0]: x_r.reverse()
 
     if len(x_r) == 0:
         return
@@ -50,7 +50,7 @@ def iterate_indices(SVSHAPE):
             for i in range(0, n, size):
                 y_r.append(i)
             # invert if requested
-            if SVSHAPE.invxyz[SVSHAPE.order[1]]: y_r.reverse()
+            if SVSHAPE.invxyz[1]: y_r.reverse()
             for i in y_r:       # loop over 2nd order dimension
                 k_r = []
                 j_r = []
@@ -60,26 +60,26 @@ def iterate_indices(SVSHAPE):
                     j_r.append(j)
                     k += tablestep
                 # invert if requested
-                if SVSHAPE.invxyz[SVSHAPE.order[2]]: k_r.reverse()
-                if SVSHAPE.invxyz[SVSHAPE.order[2]]: j_r.reverse()
+                if SVSHAPE.invxyz[2]: k_r.reverse()
+                if SVSHAPE.invxyz[2]: j_r.reverse()
                 for j, k in zip(j_r, k_r):   # loop over 1st order dimension
                     # skip the first entries up to offset
                     if skip < SVSHAPE.offset:
                         skip += 1
                         continue
                     # now depending on MODE return the index
-                    if SVSHAPE.mode == 0b00:
+                    if SVSHAPE.skip == 0b00:
                         result = j              # for vec[j]
-                    elif SVSHAPE.mode == 0b01:
+                    elif SVSHAPE.skip == 0b01:
                         result = j + halfsize   # for vec[j+halfsize]
-                    elif SVSHAPE.mode == 0b10:
+                    elif SVSHAPE.skip == 0b10:
                         result = k              # for exptable[k]
 
                     yield result
 
 def demo():
     # set the dimension sizes here
-    xdim = 16
+    xdim = 8
     ydim = 0 # not needed
     zdim = 0 # again, not needed
 
@@ -103,7 +103,8 @@ def demo():
     SVSHAPE0 = SVSHAPE()
     SVSHAPE0.lims = [xdim, ydim, zdim]
     SVSHAPE0.order = [0,1,2]  # experiment with different permutations, here
-    SVSHAPE0.mode = 0b00
+    SVSHAPE0.mode = 0b01
+    SVSHAPE0.skip = 0b00
     SVSHAPE0.offset = 0       # experiment with different offset, here
     SVSHAPE0.invxyz = [0,0,0] # inversion if desired
     # j+halfstep schedule
@@ -111,13 +112,15 @@ def demo():
     SVSHAPE1.lims = [xdim, ydim, zdim]
     SVSHAPE1.order = [0,1,2]  # experiment with different permutations, here
     SVSHAPE1.mode = 0b01
+    SVSHAPE1.skip = 0b01
     SVSHAPE1.offset = 0       # experiment with different offset, here
     SVSHAPE1.invxyz = [0,0,0] # inversion if desired
     # k schedule
     SVSHAPE2 = SVSHAPE()
     SVSHAPE2.lims = [xdim, ydim, zdim]
     SVSHAPE2.order = [0,1,2]  # experiment with different permutations, here
-    SVSHAPE2.mode = 0b10
+    SVSHAPE2.mode = 0b01
+    SVSHAPE2.skip = 0b10
     SVSHAPE2.offset = 0       # experiment with different offset, here
     SVSHAPE2.invxyz = [0,0,0] # inversion if desired