]> zoso.dev Git - nano-pow.git/commitdiff
Replace more 24-bit scalar rotations with vector rotations.
authorChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 19:22:50 +0000 (11:22 -0800)
committerChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 19:22:50 +0000 (11:22 -0800)
src/shaders/compute.wgsl

index 5a3d119c5d9390a50c3032c153ef021987b4b90a..59d4396f00f533bc70801113b88ccec649857c38 100644 (file)
@@ -261,10 +261,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -1010,10 +1014,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -1765,10 +1773,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -2505,10 +2517,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -3266,10 +3282,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -4027,10 +4047,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -4779,10 +4803,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -5534,10 +5562,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -6286,10 +6318,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -7044,10 +7080,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -7799,10 +7839,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;
@@ -8548,10 +8592,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v10 ^ v18;
-       xor1 = v11 ^ v19;
-       v10 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v11 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_1011.x = v10;
+       v_1011.y = v11;
+       xor = v_1011 ^ v_1819;
+       v_1011 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v10 = v_1011.x;
+       v11 = v_1011.y;
 
        // a = a + b
        v_23.x = v2;