p2p1p0 | o0 | o1 | o2 | o3
++++++ | ++++++++ | ++++++++ | ++++++++ | ++
0 0 0 | a0b0 | a1b0 | a2b0 | a3b0
-0 0 1 | eq0 | &(eq1-3) | 0 | 0
-0 1 0 | &(eq0-1) | 0 | &(eq2-3) | 0
-0 1 1 | eq0 | eq1 | &(eq2-3) | 0
-1 0 0 | &(eq0-2) | 0 | 0 | eq3
-1 0 1 | eq0 | &(eq1-2) | 0 | eq3
-1 1 0 | &(eq0-1) | 0 | eq2 | eq3
-1 1 1 | eq0 | eq1 | eq2 | eq3
+0 0 1 | a0b0 | a1b1 | a2b1 | a3b1
+0 1 0 | a0b0 | a1b0 | a2b2 | a3b2
+0 1 1 | a0b0 | a1b1 | a2b2 | a3b2
+1 0 0 | a0b0 | a1b0 | a2b0 | a3b3
+1 0 1 | a0b0 | a1b1 | a2b1 | a3b3
+1 1 0 | a0b0 | a1b0 | a2b2 | a3b3
+1 1 1 | a0b0 | a1b1 | a2b2 | a3b3
"""]]
+Therefore, the actual output for o1 looks something like this:
+
+ p2p1p0 : o1
+ 0 0 0 : a0b0[15:8] | a1b0[7:0]
+ 0 0 1 | a0b0[15:8] | a1b1[7:0]
+ 0 1 0 | a0b0[15:8] | a1b0[7:0]
+ 0 1 1 | a0b0[15:8] | a1b1[7:0]
+ 1 0 0 | a0b0[15:8] | a1b0[7:0]
+ 1 0 1 | a0b0[15:8] | a1b1[7:0]
+ 1 1 0 | a0b0[15:8] | a1b0[7:0]
+ 1 1 1 | a0b0[15:8] | a1b1[7:0]
+
+For o2:
+
+ p2p1p0 : o2
+ 0 0 0 | a0b0[23:16] | a1b0[15:8] | a2b0
+ 0 0 1 | a0b0[23:16] | a1b1[15:8] | a2b1
+ 0 1 0 | a0b0[23:16] | a1b0[15:8] | a2b2
+ 0 1 1 | a0b0[23:16] | a1b1[15:8] | a2b2
+ 1 0 0 | a0b0[23:16] | a1b0[15:8] | a2b0
+ 1 0 1 | a0b0[23:16] | a1b1[15:8] | a2b1
+ 1 1 0 | a0b0[23:16] | a1b0[15:8] | a2b2
+ 1 1 1 | a0b0[23:16] | a1b1[15:8] | a2b2
+
+For o3:
+
+ p2p1p0 | o3
+ 0 0 0 | a0b0[31:24] | a1b0[23:16] | a2b0[15:8] | a3b0
+ 0 0 1 | a0b0[31:24] | a1b1[23:16] | a2b1[15:8] | a3b1
+ 0 1 0 | a0b0[31:24] | a1b0[23:16] | a2b2[15:8] | a3b2
+ 0 1 1 | a0b0[31:24] | a1b1[23:16] | a2b2[15:8] | a3b2
+ 1 0 0 | a0b0[31:24] | a1b0[23:16] | a2b0[15:8] | a3b3
+ 1 0 1 | a0b0[31:24] | a1b1[23:16] | a2b1[15:8] | a3b3
+ 1 1 0 | a0b0[31:24] | a1b0[23:16] | a2b2[15:8] | a3b3
+ 1 1 1 | a0b0[31:24] | a1b1[23:16] | a2b2[15:8] | a3b3
+
+Where for o0 the output is simple a0b0 for all partition permutations.
+
# Static Partitioned Shift
Static shift is pretty straightforward: the input is the entire number