]> 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:28:01 +0000 (11:28 -0800)
committerChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 19:28:01 +0000 (11:28 -0800)
src/shaders/compute.wgsl

index 193f9bab6dd5058a78d41fa993feea857b73bb0c..2981957f26f88c5a599b718232b69370686e51f3 100644 (file)
@@ -649,10 +649,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -1423,10 +1427,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -2182,10 +2190,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -2950,10 +2962,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -3724,10 +3740,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -4501,10 +4521,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -5272,10 +5296,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -6040,10 +6068,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -6808,10 +6840,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -7576,10 +7612,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -8347,10 +8387,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;
@@ -9121,10 +9165,14 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v25 = v_2425.y;
 
        // b = rotr64(b ^ c, 24)
-       xor0 = v12 ^ v22;
-       xor1 = v13 ^ v23;
-       v12 = (xor0 >> 24u) ^ (xor1 << 8u);
-       v13 = (xor1 >> 24u) ^ (xor0 << 8u);
+       v_2223.x = v22;
+       v_2223.y = v23;
+       v_1213.x = v12;
+       v_1213.y = v13;
+       xor = v_1213 ^ v_2223;
+       v_1213 = vec2((xor.x >> 24u) | (xor.y << 8u), (xor.y >> 24u) | (xor.x << 8u));
+       v12 = v_1213.x;
+       v13 = v_1213.y;
 
        // a = a + b
        v_23.x = v2;