update tables for dynamic shift
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 8 Feb 2020 16:35:12 +0000 (16:35 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 8 Feb 2020 16:35:12 +0000 (16:35 +0000)
3d_gpu/architecture/dynamic_simd/shift.mdwn

index 1d3dfcdb14f4c3a61622e2a1f7e1c129b76b8fe8..39820e44918ecda79416c7169cbb3226a61fb872 100644 (file)
@@ -38,15 +38,53 @@ Table based on partitions:
 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