--- a/volume_upsample2.asm 2026-03-16 15:19:50.820204181 -0400 +++ b/volume_upsample2.asm 2026-03-16 15:19:31.707007465 -0400 @@ -254,103 +182,92 @@ else mov r0.w, l(0) endif -if_nz r0.w - utof r1.xy, r2.xyxx - mul r1.xy, r1.xyxx, cb3[2].zwzz - mul r1.xy, r1.xyxx, cb1[4].zzzz - mad r1.zw, -cb1[1].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), cb1[4].zzzz - max r1.xy, r1.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r1.xy, r1.zwzz, r1.xyxx - sample_l_indexable(texture2d)(float,float,float,float) r3.xyz, r1.xyxx, t1.xyzw, s0, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xyz, r1.xyxx, t2.xyzw, s0, l(0.000000) +if_nz r0.z + iadd r0.xy, -r0.xyxx, r2.yxyy + mov r4.xy, vThreadID.xyxx + mov r4.zw, l(0,0,0,0) + ld_indexable(texture2d)(float,float,float,float) r0.z, r4.xyzw, t0.yzxw + not r4.xy, r0.xyxx + imad r0.y, r4.x, l(-9), r0.y + imad r0.w, r4.x, l(-9), -r4.y + ishl r0.w, r0.w, l(8) + or r0.w, r0.w, r0.y + imad r0.x, r0.x, l(9), -r4.y + ishl r0.xy, r0.xyxx, l(16, 24, 0, 0) + or r0.x, r0.x, r0.w + or r0.x, r0.y, r0.x + bfi r0.y, l(1), l(1), vThreadIDInGroup.y, l(0) + bfi r0.y, l(1), l(0), vThreadIDInGroup.x, r0.y + and r0.w, r0.x, l(255) + ld_structured r1.w, r0.w, l(0), g0.xxxx + add r1.w, r0.z, -r1.w + add r1.w, |r1.w|, l(1.192092896E-07) + iadd r3.w, -r1.w, l(0x7ef312ac) + mad r4.x, -r3.w, r1.w, l(2.000000) + mul r3.w, r3.w, r4.x + mad r1.w, -r3.w, r1.w, l(2.000000) + mul r1.w, r1.w, r3.w + mul r3.w, r1.w, icb[r0.y + 0].x + ld_structured r4.xyz, r0.w, l(0), g1.xyzx + ld_structured r5.xyz, r0.w, l(0), g2.xyzx + mad r0.w, r1.w, icb[r0.y + 0].x, l(1.192092896E-07) + ubfe r6.xy, l(8, 8, 0, 0), l(8, 16, 0, 0), r0.xxxx + ld_structured r1.w, r6.x, l(0), g0.xxxx + add r1.w, r0.z, -r1.w + add r1.w, |r1.w|, l(1.192092896E-07) + iadd r4.w, -r1.w, l(0x7ef312ac) + mad r5.w, -r4.w, r1.w, l(2.000000) + mul r4.w, r4.w, r5.w + mad r1.w, -r4.w, r1.w, l(2.000000) + mul r1.w, r1.w, r4.w + mul r4.w, r1.w, icb[r0.y + 0].y + ld_structured r7.xyz, r6.x, l(0), g1.xyzx + mul r7.xyz, r4.wwww, r7.xyzx + mad r4.xyz, r4.xyzx, r3.wwww, r7.xyzx + ld_structured r6.xzw, r6.x, l(0), g2.xxyz + mul r6.xzw, r4.wwww, r6.xxzw + mad r5.xyz, r5.xyzx, r3.wwww, r6.xzwx + mad r0.w, r1.w, icb[r0.y + 0].y, r0.w + ld_structured r1.w, r6.y, l(0), g0.xxxx + add r1.w, r0.z, -r1.w + add r1.w, |r1.w|, l(1.192092896E-07) + iadd r3.w, -r1.w, l(0x7ef312ac) + mad r4.w, -r3.w, r1.w, l(2.000000) + mul r3.w, r3.w, r4.w + mad r1.w, -r3.w, r1.w, l(2.000000) + mul r1.w, r1.w, r3.w + mul r3.w, r1.w, icb[r0.y + 0].z + ld_structured r6.xzw, r6.y, l(0), g1.xxyz + mad r4.xyz, r6.xzwx, r3.wwww, r4.xyzx + ld_structured r6.xyz, r6.y, l(0), g2.xyzx + mad r5.xyz, r6.xyzx, r3.wwww, r5.xyzx + mad r0.w, r1.w, icb[r0.y + 0].z, r0.w + ushr r0.x, r0.x, l(24) + ld_structured r1.w, r0.x, l(0), g0.xxxx + add r0.z, r0.z, -r1.w + add r0.z, |r0.z|, l(1.192092896E-07) + iadd r1.w, -r0.z, l(0x7ef312ac) + mad r3.w, -r1.w, r0.z, l(2.000000) + mul r1.w, r1.w, r3.w + mad r0.z, -r1.w, r0.z, l(2.000000) + mul r0.z, r0.z, r1.w + mul r1.w, r0.z, icb[r0.y + 0].w + ld_structured r6.xyz, r0.x, l(0), g1.xyzx + mad r4.xyz, r6.xyzx, r1.wwww, r4.xyzx + ld_structured r6.xyz, r0.x, l(0), g2.xyzx + mad r5.xyz, r6.xyzx, r1.wwww, r5.xyzx + mad r0.x, r0.z, icb[r0.y + 0].w, r0.w + iadd r0.y, -r0.x, l(0x7ef312ac) + mad r0.z, -r0.y, r0.x, l(2.000000) + mul r0.y, r0.z, r0.y + mad r0.x, -r0.y, r0.x, l(2.000000) + mul r0.x, r0.x, r0.y + mul r3.xyz, r0.xxxx, r4.xyzx + mul r1.xyz, r0.xxxx, r5.xyzx else - if_nz r0.z - iadd r0.xy, -r0.xyxx, r2.yxyy - mov r4.xy, vThreadID.xyxx - mov r4.zw, l(0,0,0,0) - ld_indexable(texture2d)(float,float,float,float) r0.z, r4.xyzw, t0.yzxw - not r4.xy, r0.xyxx - imad r0.y, r4.x, l(-9), r0.y - imad r0.w, r4.x, l(-9), -r4.y - ishl r0.w, r0.w, l(8) - or r0.w, r0.w, r0.y - imad r0.x, r0.x, l(9), -r4.y - ishl r0.xy, r0.xyxx, l(16, 24, 0, 0) - or r0.x, r0.x, r0.w - or r0.x, r0.y, r0.x - bfi r0.y, l(1), l(1), vThreadIDInGroup.y, l(0) - bfi r0.y, l(1), l(0), vThreadIDInGroup.x, r0.y - and r0.w, r0.x, l(255) - ld_structured r1.w, r0.w, l(0), g0.xxxx - add r1.w, r0.z, -r1.w - add r1.w, |r1.w|, l(1.192092896E-07) - iadd r3.w, -r1.w, l(0x7ef312ac) - mad r4.x, -r3.w, r1.w, l(2.000000) - mul r3.w, r3.w, r4.x - mad r1.w, -r3.w, r1.w, l(2.000000) - mul r1.w, r1.w, r3.w - mul r3.w, r1.w, icb[r0.y + 0].x - ld_structured r4.xyz, r0.w, l(0), g1.xyzx - ld_structured r5.xyz, r0.w, l(0), g2.xyzx - mad r0.w, r1.w, icb[r0.y + 0].x, l(1.192092896E-07) - ubfe r6.xy, l(8, 8, 0, 0), l(8, 16, 0, 0), r0.xxxx - ld_structured r1.w, r6.x, l(0), g0.xxxx - add r1.w, r0.z, -r1.w - add r1.w, |r1.w|, l(1.192092896E-07) - iadd r4.w, -r1.w, l(0x7ef312ac) - mad r5.w, -r4.w, r1.w, l(2.000000) - mul r4.w, r4.w, r5.w - mad r1.w, -r4.w, r1.w, l(2.000000) - mul r1.w, r1.w, r4.w - mul r4.w, r1.w, icb[r0.y + 0].y - ld_structured r7.xyz, r6.x, l(0), g1.xyzx - mul r7.xyz, r4.wwww, r7.xyzx - mad r4.xyz, r4.xyzx, r3.wwww, r7.xyzx - ld_structured r6.xzw, r6.x, l(0), g2.xxyz - mul r6.xzw, r4.wwww, r6.xxzw - mad r5.xyz, r5.xyzx, r3.wwww, r6.xzwx - mad r0.w, r1.w, icb[r0.y + 0].y, r0.w - ld_structured r1.w, r6.y, l(0), g0.xxxx - add r1.w, r0.z, -r1.w - add r1.w, |r1.w|, l(1.192092896E-07) - iadd r3.w, -r1.w, l(0x7ef312ac) - mad r4.w, -r3.w, r1.w, l(2.000000) - mul r3.w, r3.w, r4.w - mad r1.w, -r3.w, r1.w, l(2.000000) - mul r1.w, r1.w, r3.w - mul r3.w, r1.w, icb[r0.y + 0].z - ld_structured r6.xzw, r6.y, l(0), g1.xxyz - mad r4.xyz, r6.xzwx, r3.wwww, r4.xyzx - ld_structured r6.xyz, r6.y, l(0), g2.xyzx - mad r5.xyz, r6.xyzx, r3.wwww, r5.xyzx - mad r0.w, r1.w, icb[r0.y + 0].z, r0.w - ushr r0.x, r0.x, l(24) - ld_structured r1.w, r0.x, l(0), g0.xxxx - add r0.z, r0.z, -r1.w - add r0.z, |r0.z|, l(1.192092896E-07) - iadd r1.w, -r0.z, l(0x7ef312ac) - mad r3.w, -r1.w, r0.z, l(2.000000) - mul r1.w, r1.w, r3.w - mad r0.z, -r1.w, r0.z, l(2.000000) - mul r0.z, r0.z, r1.w - mul r1.w, r0.z, icb[r0.y + 0].w - ld_structured r6.xyz, r0.x, l(0), g1.xyzx - mad r4.xyz, r6.xyzx, r1.wwww, r4.xyzx - ld_structured r6.xyz, r0.x, l(0), g2.xyzx - mad r5.xyz, r6.xyzx, r1.wwww, r5.xyzx - mad r0.x, r0.z, icb[r0.y + 0].w, r0.w - iadd r0.y, -r0.x, l(0x7ef312ac) - mad r0.z, -r0.y, r0.x, l(2.000000) - mul r0.y, r0.z, r0.y - mad r0.x, -r0.y, r0.x, l(2.000000) - mul r0.x, r0.x, r0.y - mul r3.xyz, r0.xxxx, r4.xyzx - mul r1.xyz, r0.xxxx, r5.xyzx - else - mov r2.zw, l(0,0,0,0) - ld_indexable(texture2d)(float,float,float,float) r3.xyz, r2.xyww, t1.xyzw - ld_indexable(texture2d)(float,float,float,float) r1.xyz, r2.xyzw, t2.xyzw - endif + mov r2.zw, l(0,0,0,0) + ld_indexable(texture2d)(float,float,float,float) r3.xyz, r2.xyww, t1.xyzw + ld_indexable(texture2d)(float,float,float,float) r1.xyz, r2.xyzw, t2.xyzw endif store_uav_typed u1.xyzw, vThreadID.xyyy, r1.xyzz store_uav_typed u0.xyzw, vThreadID.xyyy, r3.xyzz