]> zoso.dev Git - libnemo.git/commitdiff
Start replacing if statement conditional branching with select statements to avoid...
authorChris Duncan <chris@zoso.dev>
Thu, 9 Jan 2025 21:49:24 +0000 (13:49 -0800)
committerChris Duncan <chris@zoso.dev>
Thu, 9 Jan 2025 21:49:24 +0000 (13:49 -0800)
src/lib/nano-pow/shaders/gpu-compute.ts

index 791539a5d1706b343a7b9c97e8a71e883a0fc2dd..064a730ef724186670bad2cac3c8028c295a60a9 100644 (file)
@@ -131,9 +131,7 @@ fn main(
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m0;
        o1 = v1 + m1;
-       if (v0 > 0xFFFFFFFFu - m0) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -146,9 +144,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -168,9 +164,7 @@ fn main(
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m2;
        o1 = v1 + m3;
-       if (v0 > 0xFFFFFFFFu - m2) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -183,9 +177,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -206,9 +198,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -245,9 +235,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -467,9 +455,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -507,9 +493,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -846,9 +830,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -884,9 +866,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -907,9 +887,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -946,9 +924,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -1170,18 +1146,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m2;
        o1 = v1 + m3;
-       if (v0 > 0xFFFFFFFFu - m2) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -1209,9 +1181,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -1522,9 +1492,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -1547,9 +1515,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -1562,9 +1528,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -1587,9 +1551,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -1610,9 +1572,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -1650,9 +1610,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -1872,9 +1830,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -1912,9 +1868,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2225,9 +2179,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2250,9 +2202,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -2265,9 +2215,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2290,9 +2238,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -2313,9 +2259,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -2352,9 +2296,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -2575,18 +2517,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m4;
        o1 = v1 + m5;
-       if (v0 > 0xFFFFFFFFu - m4) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2614,9 +2552,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2928,9 +2864,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2953,9 +2887,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -2968,18 +2900,14 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m0;
        o1 = v1 + m1;
-       if (v0 > 0xFFFFFFFFu - m0) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -2992,9 +2920,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -3015,9 +2941,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -3055,9 +2979,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -3277,9 +3199,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -3317,18 +3237,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m2;
        o1 = v1 + m3;
-       if (v0 > 0xFFFFFFFFu - m2) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -3631,18 +3547,14 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m4;
        o1 = v1 + m5;
-       if (v0 > 0xFFFFFFFFu - m4) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -3655,9 +3567,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -3670,9 +3580,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -3695,9 +3603,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -3718,9 +3624,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -3758,9 +3662,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -3980,18 +3882,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m8;
        o1 = v1 + m9;
-       if (v0 > 0xFFFFFFFFu - m8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -4019,9 +3917,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -4334,9 +4230,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -4359,9 +4253,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -4374,9 +4266,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -4399,9 +4289,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -4422,9 +4310,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -4461,9 +4347,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -4684,18 +4568,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m0;
        o1 = v1 + m1;
-       if (v0 > 0xFFFFFFFFu - m0) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -4723,9 +4603,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5037,9 +4915,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5062,9 +4938,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -5077,9 +4951,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5102,9 +4974,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -5125,9 +4995,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -5165,9 +5033,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -5387,9 +5253,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5427,18 +5291,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m0;
        o1 = v1 + m1;
-       if (v0 > 0xFFFFFFFFu - m0) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5740,9 +5600,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5765,9 +5623,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -5780,9 +5636,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -5805,9 +5659,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -5828,9 +5680,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -5868,9 +5718,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -6090,9 +5938,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -6130,18 +5976,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m4;
        o1 = v1 + m5;
-       if (v0 > 0xFFFFFFFFu - m4) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -6443,9 +6285,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -6468,9 +6308,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -6483,18 +6321,14 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m4;
        o1 = v1 + m5;
-       if (v0 > 0xFFFFFFFFu - m4) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -6507,9 +6341,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -6530,9 +6362,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -6570,9 +6400,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -6792,9 +6620,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -6832,9 +6658,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7146,18 +6970,14 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m0;
        o1 = v1 + m1;
-       if (v0 > 0xFFFFFFFFu - m0) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7170,9 +6990,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -7185,18 +7003,14 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+1]]
        o0 = v0 + m2;
        o1 = v1 + m3;
-       if (v0 > 0xFFFFFFFFu - m2) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7209,9 +7023,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -7232,9 +7044,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -7271,9 +7081,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -7493,9 +7301,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7533,9 +7339,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7849,9 +7653,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7874,9 +7676,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -7889,9 +7689,7 @@ fn main(
        // a = a + b
        o0 = v0 + v8;
        o1 = v1 + v9;
-       if (v0 > 0xFFFFFFFFu - v8) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -7914,9 +7712,7 @@ fn main(
        // c = c + d
        o0 = v16 + v24;
        o1 = v17 + v25;
-       if (v16 > 0xFFFFFFFFu - v24) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v16);
        v16 = o0;
        v17 = o1;
 
@@ -7937,9 +7733,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -7976,9 +7770,7 @@ fn main(
        // a = a + b
        o0 = v2 + v10;
        o1 = v3 + v11;
-       if (v2 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v2);
        v2 = o0;
        v3 = o1;
 
@@ -8200,18 +7992,14 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
        // a = a + m[sigma[r][2*i+0]]
        o0 = v0 + m2;
        o1 = v1 + m3;
-       if (v0 > 0xFFFFFFFFu - m2) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;
 
@@ -8239,9 +8027,7 @@ fn main(
        // a = a + b
        o0 = v0 + v10;
        o1 = v1 + v11;
-       if (v0 > 0xFFFFFFFFu - v10) {
-               o1 = o1 + 1u;
-       }
+       o1 = o1 + select(0u, 1u, o0 < v0);
        v0 = o0;
        v1 = o1;