]> zoso.dev Git - nano-pow.git/commitdiff
Replace more scalar addition with vector addition.
authorChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 15:08:19 +0000 (07:08 -0800)
committerChris Duncan <chris@zoso.dev>
Tue, 14 Jan 2025 15:08:19 +0000 (07:08 -0800)
src/shaders/compute.wgsl

index e59c9b7d252a68c90aa91e2be6daaba5656eb458..8dc987167fa1773a330b42bf355598c11d80080b 100644 (file)
@@ -137,7 +137,6 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v8 = v_89.x;
        v9 = v_89.y;
 
-
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m0;
        o1 = v1 + m1;
@@ -242,11 +241,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -279,11 +282,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -901,11 +908,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -941,11 +952,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -1557,11 +1572,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -1594,11 +1613,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -2207,11 +2230,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -2244,11 +2271,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -2860,11 +2891,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -2900,11 +2935,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -3513,11 +3552,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -3553,11 +3596,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -4166,11 +4213,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -4206,11 +4257,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -4822,11 +4877,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -4862,11 +4921,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -5475,11 +5538,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -5515,11 +5582,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -6125,11 +6196,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -6162,11 +6237,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -6772,11 +6851,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -6809,11 +6892,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;
@@ -7431,11 +7518,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = xor0;
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 24)
        xor0 = v10 ^ v18;
@@ -7471,11 +7562,15 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
        v27 = (xor1 >> 16u) ^ (xor0 << 16u);
 
        // c = c + d
-       o0 = v18 + v26;
-       o1 = v19 + v27;
-       o1 = o1 + select(0u, 1u, o0 < v18);
-       v18 = o0;
-       v19 = o1;
+       v_1819.x = v18;
+       v_1819.y = v19;
+       v_2627.x = v26;
+       v_2627.y = v27;
+       v_1819 = v_1819 + v_2627 + select(vec2<u32>(0u), vec2<u32>(0u, 1u), v_1819.x + v_2627.x < v_1819.x);
+       v18 = v_1819.x;
+       v19 = v_1819.y;
+       v26 = v_2627.x;
+       v27 = v_2627.y;
 
        // b = rotr64(b ^ c, 63)
        xor0 = v10 ^ v18;