| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | [require] | 
					
						
							|  |  |  | shader model >= 6.0 | 
					
						
							| 
									
										
										
										
											2024-10-05 07:46:00 -05:00
										 |  |  | wave-ops | 
					
						
							| 
									
										
										
										
											2024-08-01 19:13:31 -04:00
										 |  |  | format r32-uint uav-load | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | [uav 0] | 
					
						
							| 
									
										
										
										
											2024-08-01 21:03:46 -04:00
										 |  |  | format r32-uint | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | size (buffer, 4) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 8 15 8 10 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [uav 1] | 
					
						
							| 
									
										
										
										
											2024-08-01 21:03:46 -04:00
										 |  |  | format r32-uint | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | size (buffer, 8) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u1 : register(u1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveIsFirstLane(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:56:26 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (1) | 
					
						
							|  |  |  | probe uav 1 (1) rui (0) | 
					
						
							|  |  |  | probe uav 1 (2) rui (0) | 
					
						
							|  |  |  | probe uav 1 (3) rui (0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u1 : register(u1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (!id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         u1[0] = 0; | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     u1[id] = WaveIsFirstLane(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:56:26 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (0) | 
					
						
							|  |  |  | probe uav 1 (1) rui (1) | 
					
						
							|  |  |  | probe uav 1 (2) rui (0) | 
					
						
							|  |  |  | probe uav 1 (3) rui (0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u1 : register(u1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveGetLaneIndex(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-18 10:59:08 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (0) | 
					
						
							|  |  |  | probe uav 1 (1) rui (1) | 
					
						
							|  |  |  | probe uav 1 (2) rui (2) | 
					
						
							|  |  |  | probe uav 1 (3) rui (3) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u1 : register(u1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // Between 4 and 128, and includes inactive and/or helper lanes. | 
					
						
							|  |  |  |     uint count = WaveGetLaneCount(); | 
					
						
							|  |  |  |     u1[id] = count >= 4 && count <= 128; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2023-06-20 15:16:52 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (1) | 
					
						
							|  |  |  | probe uav 1 (1) rui (1) | 
					
						
							|  |  |  | probe uav 1 (2) rui (1) | 
					
						
							|  |  |  | probe uav 1 (3) rui (1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = (id & 1) ? -u0[id] : u0[id]; | 
					
						
							|  |  |  |     u1[id] = WaveActiveMin(i); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:35:27 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (8) | 
					
						
							|  |  |  | probe uav 1 (1) rui (8) | 
					
						
							|  |  |  | probe uav 1 (2) rui (8) | 
					
						
							|  |  |  | probe uav 1 (3) rui (8) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     bool b = u0[id] == 8; | 
					
						
							|  |  |  |     u1[id] = WaveActiveBallot(b).x; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:00:56 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (5) | 
					
						
							|  |  |  | probe uav 1 (1) rui (5) | 
					
						
							|  |  |  | probe uav 1 (2) rui (5) | 
					
						
							|  |  |  | probe uav 1 (3) rui (5) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = u0[id] + u0[id ^ 1]; | 
					
						
							|  |  |  |     u1[id] = WaveReadLaneFirst(i); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 23:36:42 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (23) | 
					
						
							|  |  |  | probe uav 1 (1) rui (23) | 
					
						
							|  |  |  | probe uav 1 (2) rui (23) | 
					
						
							|  |  |  | probe uav 1 (3) rui (23) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = u0[id] + u0[id ^ 1]; | 
					
						
							|  |  |  |     u1[id] = WaveReadLaneAt(i, 3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-05-09 12:25:44 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (18) | 
					
						
							|  |  |  | probe uav 1 (1) rui (18) | 
					
						
							|  |  |  | probe uav 1 (2) rui (18) | 
					
						
							|  |  |  | probe uav 1 (3) rui (18) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-09 12:22:03 +10:00
										 |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = u0[id] + u0[id ^ 1]; | 
					
						
							|  |  |  |     // Non-uniform lane index | 
					
						
							|  |  |  |     u1[id] = WaveReadLaneAt(i, (id + 2) & 3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-05-09 12:25:44 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-05-09 12:22:03 +10:00
										 |  |  | probe uav 1 (0) rui (18) | 
					
						
							|  |  |  | probe uav 1 (1) rui (18) | 
					
						
							|  |  |  | probe uav 1 (2) rui (23) | 
					
						
							|  |  |  | probe uav 1 (3) rui (23) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     bool b = u0[id] == 8; | 
					
						
							|  |  |  |     u1[id] = WaveActiveCountBits(b); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:52:12 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (2) | 
					
						
							|  |  |  | probe uav 1 (1) rui (2) | 
					
						
							|  |  |  | probe uav 1 (2) rui (2) | 
					
						
							|  |  |  | probe uav 1 (3) rui (2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     bool b = u0[id] == 8; | 
					
						
							|  |  |  |     u1[id] = WavePrefixCountBits(b); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 22:03:14 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (0) | 
					
						
							|  |  |  | probe uav 1 (1) rui (1) | 
					
						
							|  |  |  | probe uav 1 (2) rui (1) | 
					
						
							|  |  |  | probe uav 1 (3) rui (2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveSum(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:35:27 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (41) | 
					
						
							|  |  |  | probe uav 1 (1) rui (41) | 
					
						
							|  |  |  | probe uav 1 (2) rui (41) | 
					
						
							|  |  |  | probe uav 1 (3) rui (41) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveBitAnd(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:14:22 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (8) | 
					
						
							|  |  |  | probe uav 1 (1) rui (8) | 
					
						
							|  |  |  | probe uav 1 (2) rui (8) | 
					
						
							|  |  |  | probe uav 1 (3) rui (8) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveBitOr(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:14:22 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (15) | 
					
						
							|  |  |  | probe uav 1 (1) rui (15) | 
					
						
							|  |  |  | probe uav 1 (2) rui (15) | 
					
						
							|  |  |  | probe uav 1 (3) rui (15) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveBitXor(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2024-04-23 21:14:22 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (5) | 
					
						
							|  |  |  | probe uav 1 (1) rui (5) | 
					
						
							|  |  |  | probe uav 1 (2) rui (5) | 
					
						
							|  |  |  | probe uav 1 (3) rui (5) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | uniform uint2 u; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RWBuffer<uint> u0; | 
					
						
							|  |  |  | RWBuffer<uint> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint table[] = {u.x, u.y}; | 
					
						
							|  |  |  |     uint i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Value depends on control flow. | 
					
						
							|  |  |  |     if (id & 1) | 
					
						
							|  |  |  |         i = table[id / 2u]; | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         i = u0[id / 2u]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     u1[id] = WaveActiveSum(i); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							|  |  |  | uniform 0 uint4 1 5 0 0 | 
					
						
							| 
									
										
										
										
											2024-04-23 21:35:27 +10:00
										 |  |  | dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-04-16 14:30:12 +10:00
										 |  |  | probe uav 1 (0) rui (29) | 
					
						
							|  |  |  | probe uav 1 (1) rui (29) | 
					
						
							|  |  |  | probe uav 1 (2) rui (29) | 
					
						
							|  |  |  | probe uav 1 (3) rui (29) | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [require] | 
					
						
							|  |  |  | shader model >= 6.0 | 
					
						
							|  |  |  | wave-ops | 
					
						
							|  |  |  | int64 | 
					
						
							|  |  |  | format r32g32b32a32-uint uav-load | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [uav 0] | 
					
						
							|  |  |  | format r32g32b32a32-uint | 
					
						
							|  |  |  | size (buffer, 4) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1  8   16 0 | 
					
						
							|  |  |  | 1 11    5 0 | 
					
						
							|  |  |  | 2 15    4 0 | 
					
						
							|  |  |  | 4  8    6 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [uav 1] | 
					
						
							|  |  |  | format r32g32b32a32-uint | 
					
						
							|  |  |  | size (buffer, 16) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 0 0 0 0 0 0 0 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint64_t2 u = u0[id] + u0[id ^ 1]; | 
					
						
							|  |  |  |     u1[id] = WaveReadLaneFirst(u); | 
					
						
							|  |  |  |     u1[4 + id] = WaveReadLaneAt(u, 3); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0x1300000002, 21) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0x1300000002, 21) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x1300000002, 21) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x1300000002, 21) | 
					
						
							|  |  |  | probe uav 1 (4) rgui64(0x1700000006, 10) | 
					
						
							|  |  |  | probe uav 1 (5) rgui64(0x1700000006, 10) | 
					
						
							|  |  |  | probe uav 1 (6) rgui64(0x1700000006, 10) | 
					
						
							|  |  |  | probe uav 1 (7) rgui64(0x1700000006, 10) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveSum(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0x2a00000008, 31) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0x2a00000008, 31) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x2a00000008, 31) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x2a00000008, 31) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveProduct(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0xe400000008, 0x780) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0xe400000008, 0x780) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0xe400000008, 0x780) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0xe400000008, 0x780) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveMin(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0x800000001, 4) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0x800000001, 4) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x800000001, 4) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x800000001, 4) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveMax(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0xf00000002, 16) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0xf00000002, 16) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0xf00000002, 16) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0xf00000002, 16) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WavePrefixSum(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0, 0) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64( 0x800000001, 16) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x1300000002, 21) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x2200000004, 25) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WavePrefixProduct(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(1, 1) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64( 0x800000001,  16) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x1300000001,  80) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x3500000002, 320) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveBitAnd(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0x800000000, 0) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0x800000000, 0) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x800000000, 0) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x800000000, 0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveBitOr(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0xf00000007, 0x17) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0xf00000007, 0x17) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0xf00000007, 0x17) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0xf00000007, 0x17) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     u1[id] = WaveActiveBitXor(u0[id]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0x400000006, 0x17) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0x400000006, 0x17) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x400000006, 0x17) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x400000006, 0x17) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [uav 0] | 
					
						
							|  |  |  | format r32g32b32a32-uint | 
					
						
							|  |  |  | size (buffer, 4) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  1  2    3  4 | 
					
						
							|  |  |  |  5  6    7  8 | 
					
						
							|  |  |  |  9 10   11 12 | 
					
						
							|  |  |  | 13 14   15 16 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = WaveGetLaneIndex() % 4; | 
					
						
							|  |  |  |     uint64_t2 u = u0[i]; | 
					
						
							|  |  |  |     u1[i] = QuadReadAcrossX(u); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0x600000005,  0x800000007) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0x200000001,  0x400000003) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0xe0000000d, 0x100000000f) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0xa00000009,  0xc0000000b) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = WaveGetLaneIndex() % 4; | 
					
						
							|  |  |  |     uint64_t2 u = u0[i]; | 
					
						
							|  |  |  |     u1[i] = QuadReadAcrossY(u); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0xa00000009,  0xc0000000b) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0xe0000000d, 0x100000000f) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x200000001,  0x400000003) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x600000005,  0x800000007) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = WaveGetLaneIndex() % 4; | 
					
						
							|  |  |  |     uint64_t2 u = u0[i]; | 
					
						
							|  |  |  |     u1[i] = QuadReadAcrossDiagonal(u); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0xe0000000d, 0x100000000f) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0xa00000009,  0xc0000000b) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0x600000005,  0x800000007) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0x200000001,  0x400000003) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [compute shader] | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u0; | 
					
						
							|  |  |  | RWBuffer<uint64_t2> u1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [numthreads(4, 1, 1)] | 
					
						
							|  |  |  | void main(uint id : SV_GroupIndex) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     uint i = WaveGetLaneIndex() % 4; | 
					
						
							|  |  |  |     uint64_t2 u = u0[i]; | 
					
						
							|  |  |  |     u1[i] = QuadReadLaneAt(u, 2); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [test] | 
					
						
							| 
									
										
										
										
											2025-05-23 23:38:14 +02:00
										 |  |  | bug(mvk) dispatch 4 1 1 | 
					
						
							| 
									
										
										
										
											2024-12-03 12:11:16 +10:00
										 |  |  | probe uav 1 (0) rgui64(0xa00000009,  0xc0000000b) | 
					
						
							|  |  |  | probe uav 1 (1) rgui64(0xa00000009,  0xc0000000b) | 
					
						
							|  |  |  | probe uav 1 (2) rgui64(0xa00000009,  0xc0000000b) | 
					
						
							|  |  |  | probe uav 1 (3) rgui64(0xa00000009,  0xc0000000b) |