Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / hlsl.wavequad.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 = QuadReadLaneAt(data[dti.x].u, 0);\r
15         data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 0);\r
16         data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 0);\r
17         data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 0);\r
18 \r
19         data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 0);\r
20         data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 0);\r
21         data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 0);\r
22         data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 0);\r
23 \r
24         data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 0);\r
25         data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 0);\r
26         data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 0);\r
27         data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 0);\r
28 \r
29         data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 0);\r
30         data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 0);\r
31         data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 0);\r
32         data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 0);\r
33 \r
34         data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 1);\r
35         data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 1);\r
36         data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 1);\r
37         data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 1);\r
38 \r
39         data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 1);\r
40         data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 1);\r
41         data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 1);\r
42         data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 1);\r
43 \r
44         data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 1);\r
45         data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 1);\r
46         data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 1);\r
47         data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 1);\r
48 \r
49         data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 1);\r
50         data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 1);\r
51         data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 1);\r
52         data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 1);\r
53 \r
54         data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 2);\r
55         data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 2);\r
56         data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 2);\r
57         data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 2);\r
58 \r
59         data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 2);\r
60         data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 2);\r
61         data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 2);\r
62         data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 2);\r
63 \r
64         data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 2);\r
65         data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 2);\r
66         data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 2);\r
67         data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 2);\r
68 \r
69         data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 2);\r
70         data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 2);\r
71         data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 2);\r
72         data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 2);\r
73 \r
74         data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 3);\r
75         data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 3);\r
76         data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 3);\r
77         data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 3);\r
78 \r
79         data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 3);\r
80         data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 3);\r
81         data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 3);\r
82         data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 3);\r
83 \r
84         data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 3);\r
85         data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 3);\r
86         data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 3);\r
87         data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 3);\r
88 \r
89         data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 3);\r
90         data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 3);\r
91         data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 3);\r
92         data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 3);\r
93 \r
94         data[dti.x].u = QuadReadAcrossX(data[dti.x].u);\r
95         data[dti.x].u.x = QuadReadAcrossX(data[dti.x].u.x);\r
96         data[dti.x].u.xy = QuadReadAcrossX(data[dti.x].u.xy);\r
97         data[dti.x].u.xyz = QuadReadAcrossX(data[dti.x].u.xyz);\r
98 \r
99         data[dti.x].i = QuadReadAcrossX(data[dti.x].i);\r
100         data[dti.x].i.x = QuadReadAcrossX(data[dti.x].i.x);\r
101         data[dti.x].i.xy = QuadReadAcrossX(data[dti.x].i.xy);\r
102         data[dti.x].i.xyz = QuadReadAcrossX(data[dti.x].i.xyz);\r
103 \r
104         data[dti.x].f = QuadReadAcrossX(data[dti.x].f);\r
105         data[dti.x].f.x = QuadReadAcrossX(data[dti.x].f.x);\r
106         data[dti.x].f.xy = QuadReadAcrossX(data[dti.x].f.xy);\r
107         data[dti.x].f.xyz = QuadReadAcrossX(data[dti.x].f.xyz);\r
108 \r
109         data[dti.x].d = QuadReadAcrossX(data[dti.x].d);\r
110         data[dti.x].d.x = QuadReadAcrossX(data[dti.x].d.x);\r
111         data[dti.x].d.xy = QuadReadAcrossX(data[dti.x].d.xy);\r
112         data[dti.x].d.xyz = QuadReadAcrossX(data[dti.x].d.xyz);\r
113 \r
114         data[dti.x].u = QuadReadAcrossY(data[dti.x].u);\r
115         data[dti.x].u.x = QuadReadAcrossY(data[dti.x].u.x);\r
116         data[dti.x].u.xy = QuadReadAcrossY(data[dti.x].u.xy);\r
117         data[dti.x].u.xyz = QuadReadAcrossY(data[dti.x].u.xyz);\r
118 \r
119         data[dti.x].i = QuadReadAcrossY(data[dti.x].i);\r
120         data[dti.x].i.x = QuadReadAcrossY(data[dti.x].i.x);\r
121         data[dti.x].i.xy = QuadReadAcrossY(data[dti.x].i.xy);\r
122         data[dti.x].i.xyz = QuadReadAcrossY(data[dti.x].i.xyz);\r
123 \r
124         data[dti.x].f = QuadReadAcrossY(data[dti.x].f);\r
125         data[dti.x].f.x = QuadReadAcrossY(data[dti.x].f.x);\r
126         data[dti.x].f.xy = QuadReadAcrossY(data[dti.x].f.xy);\r
127         data[dti.x].f.xyz = QuadReadAcrossY(data[dti.x].f.xyz);\r
128 \r
129         data[dti.x].d = QuadReadAcrossY(data[dti.x].d);\r
130         data[dti.x].d.x = QuadReadAcrossY(data[dti.x].d.x);\r
131         data[dti.x].d.xy = QuadReadAcrossY(data[dti.x].d.xy);\r
132         data[dti.x].d.xyz = QuadReadAcrossY(data[dti.x].d.xyz);\r
133 \r
134         data[dti.x].u = QuadReadAcrossDiagonal(data[dti.x].u);\r
135         data[dti.x].u.x = QuadReadAcrossDiagonal(data[dti.x].u.x);\r
136         data[dti.x].u.xy = QuadReadAcrossDiagonal(data[dti.x].u.xy);\r
137         data[dti.x].u.xyz = QuadReadAcrossDiagonal(data[dti.x].u.xyz);\r
138 \r
139         data[dti.x].i = QuadReadAcrossDiagonal(data[dti.x].i);\r
140         data[dti.x].i.x = QuadReadAcrossDiagonal(data[dti.x].i.x);\r
141         data[dti.x].i.xy = QuadReadAcrossDiagonal(data[dti.x].i.xy);\r
142         data[dti.x].i.xyz = QuadReadAcrossDiagonal(data[dti.x].i.xyz);\r
143 \r
144         data[dti.x].f = QuadReadAcrossDiagonal(data[dti.x].f);\r
145         data[dti.x].f.x = QuadReadAcrossDiagonal(data[dti.x].f.x);\r
146         data[dti.x].f.xy = QuadReadAcrossDiagonal(data[dti.x].f.xy);\r
147         data[dti.x].f.xyz = QuadReadAcrossDiagonal(data[dti.x].f.xyz);\r
148 \r
149         data[dti.x].d = QuadReadAcrossDiagonal(data[dti.x].d);\r
150         data[dti.x].d.x = QuadReadAcrossDiagonal(data[dti.x].d.x);\r
151         data[dti.x].d.xy = QuadReadAcrossDiagonal(data[dti.x].d.xy);\r
152         data[dti.x].d.xyz = QuadReadAcrossDiagonal(data[dti.x].d.xyz);\r
153 }\r