wgpu/naga/tests/out/hlsl/subgroup-operations-s.hlsl
Alexander Meißner ea77d5674d
Subgroup Operations (#5301)
Co-authored-by: Jacob Hughes <j@distanthills.org>
Co-authored-by: Connor Fitzgerald <connorwadefitzgerald@gmail.com>
Co-authored-by: atlas dostal <rodol@rivalrebels.com>
2024-04-17 15:25:52 -04:00

51 lines
2.0 KiB
HLSL

static uint num_subgroups_1 = (uint)0;
static uint subgroup_id_1 = (uint)0;
static uint subgroup_size_1 = (uint)0;
static uint subgroup_invocation_id_1 = (uint)0;
struct ComputeInput_main {
uint __local_invocation_index : SV_GroupIndex;
};
void main_1()
{
uint _expr5 = subgroup_size_1;
uint _expr6 = subgroup_invocation_id_1;
const uint4 _e9 = WaveActiveBallot(((_expr6 & 1u) == 1u));
const uint4 _e10 = WaveActiveBallot(true);
const bool _e12 = WaveActiveAllTrue((_expr6 != 0u));
const bool _e14 = WaveActiveAnyTrue((_expr6 == 0u));
const uint _e15 = WaveActiveSum(_expr6);
const uint _e16 = WaveActiveProduct(_expr6);
const uint _e17 = WaveActiveMin(_expr6);
const uint _e18 = WaveActiveMax(_expr6);
const uint _e19 = WaveActiveBitAnd(_expr6);
const uint _e20 = WaveActiveBitOr(_expr6);
const uint _e21 = WaveActiveBitXor(_expr6);
const uint _e22 = WavePrefixSum(_expr6);
const uint _e23 = WavePrefixProduct(_expr6);
const uint _e24 = _expr6 + WavePrefixSum(_expr6);
const uint _e25 = _expr6 * WavePrefixProduct(_expr6);
const uint _e26 = WaveReadLaneFirst(_expr6);
const uint _e27 = WaveReadLaneAt(_expr6, 4u);
const uint _e30 = WaveReadLaneAt(_expr6, ((_expr5 - 1u) - _expr6));
const uint _e31 = WaveReadLaneAt(_expr6, WaveGetLaneIndex() + 1u);
const uint _e32 = WaveReadLaneAt(_expr6, WaveGetLaneIndex() - 1u);
const uint _e34 = WaveReadLaneAt(_expr6, WaveGetLaneIndex() ^ (_expr5 - 1u));
return;
}
[numthreads(1, 1, 1)]
void main(ComputeInput_main computeinput_main)
{
uint num_subgroups = (1u + WaveGetLaneCount() - 1u) / WaveGetLaneCount();
uint subgroup_id = computeinput_main.__local_invocation_index / WaveGetLaneCount();
uint subgroup_size = WaveGetLaneCount();
uint subgroup_invocation_id = WaveGetLaneIndex();
num_subgroups_1 = num_subgroups;
subgroup_id_1 = subgroup_id;
subgroup_size_1 = subgroup_size;
subgroup_invocation_id_1 = subgroup_invocation_id;
main_1();
}