Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / hlsl.wavebroadcast.comp
1 struct Types\r
2 {\r
3         uint4 u;\r
4         int4 i;\r
5         float4 f;\r
6         double4 d;\r
7 };\r
8 \r
9 RWStructuredBuffer<Types> data;\r
10 \r
11 [numthreads(32, 16, 1)]\r
12 void CSMain(uint3 dti : SV_DispatchThreadID)\r
13 {\r
14         data[dti.x].u = WaveReadLaneAt(data[dti.x].u, 13);\r
15         data[dti.x].u.x = WaveReadLaneAt(data[dti.x].u.x, 13);\r
16         data[dti.x].u.xy = WaveReadLaneAt(data[dti.x].u.xy, 13);\r
17         data[dti.x].u.xyz = WaveReadLaneAt(data[dti.x].u.xyz, 13);\r
18 \r
19         data[dti.x].i = WaveReadLaneAt(data[dti.x].i, 13);\r
20         data[dti.x].i.x = WaveReadLaneAt(data[dti.x].i.x, 13);\r
21         data[dti.x].i.xy = WaveReadLaneAt(data[dti.x].i.xy, 13);\r
22         data[dti.x].i.xyz = WaveReadLaneAt(data[dti.x].i.xyz, 13);\r
23 \r
24         data[dti.x].f = WaveReadLaneAt(data[dti.x].f, 13);\r
25         data[dti.x].f.x = WaveReadLaneAt(data[dti.x].f.x, 13);\r
26         data[dti.x].f.xy = WaveReadLaneAt(data[dti.x].f.xy, 13);\r
27         data[dti.x].f.xyz = WaveReadLaneAt(data[dti.x].f.xyz, 13);\r
28 \r
29         data[dti.x].d = WaveReadLaneFirst(data[dti.x].d);\r
30         data[dti.x].d.x = WaveReadLaneFirst(data[dti.x].d.x);\r
31         data[dti.x].d.xy = WaveReadLaneFirst(data[dti.x].d.xy);\r
32         data[dti.x].d.xyz = WaveReadLaneFirst(data[dti.x].d.xyz);\r
33 \r
34         data[dti.x].u = WaveReadLaneFirst(data[dti.x].u);\r
35         data[dti.x].u.x = WaveReadLaneFirst(data[dti.x].u.x);\r
36         data[dti.x].u.xy = WaveReadLaneFirst(data[dti.x].u.xy);\r
37         data[dti.x].u.xyz = WaveReadLaneFirst(data[dti.x].u.xyz);\r
38 \r
39         data[dti.x].i = WaveReadLaneFirst(data[dti.x].i);\r
40         data[dti.x].i.x = WaveReadLaneFirst(data[dti.x].i.x);\r
41         data[dti.x].i.xy = WaveReadLaneFirst(data[dti.x].i.xy);\r
42         data[dti.x].i.xyz = WaveReadLaneFirst(data[dti.x].i.xyz);\r
43 \r
44         data[dti.x].f = WaveReadLaneFirst(data[dti.x].f);\r
45         data[dti.x].f.x = WaveReadLaneFirst(data[dti.x].f.x);\r
46         data[dti.x].f.xy = WaveReadLaneFirst(data[dti.x].f.xy);\r
47         data[dti.x].f.xyz = WaveReadLaneFirst(data[dti.x].f.xyz);\r
48 \r
49         data[dti.x].d = WaveReadLaneFirst(data[dti.x].d);\r
50         data[dti.x].d.x = WaveReadLaneFirst(data[dti.x].d.x);\r
51         data[dti.x].d.xy = WaveReadLaneFirst(data[dti.x].d.xy);\r
52         data[dti.x].d.xyz = WaveReadLaneFirst(data[dti.x].d.xyz);\r
53 }\r