blob: 34e8b7828b3fcc48db369626ae070c75e5d859ac [file] [log] [blame]
John Kessenich66011cb2018-03-06 16:12:04 -07001struct Types
2{
3 uint4 u;
4 int4 i;
5 float4 f;
6 double4 d;
7};
8
9RWStructuredBuffer<Types> data;
10
11[numthreads(32, 16, 1)]
12void CSMain(uint3 dti : SV_DispatchThreadID)
13{
14 data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 0);
15 data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 0);
16 data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 0);
17 data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 0);
18
19 data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 0);
20 data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 0);
21 data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 0);
22 data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 0);
23
24 data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 0);
25 data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 0);
26 data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 0);
27 data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 0);
28
29 data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 0);
30 data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 0);
31 data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 0);
32 data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 0);
33
34 data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 1);
35 data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 1);
36 data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 1);
37 data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 1);
38
39 data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 1);
40 data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 1);
41 data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 1);
42 data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 1);
43
44 data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 1);
45 data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 1);
46 data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 1);
47 data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 1);
48
49 data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 1);
50 data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 1);
51 data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 1);
52 data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 1);
53
54 data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 2);
55 data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 2);
56 data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 2);
57 data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 2);
58
59 data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 2);
60 data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 2);
61 data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 2);
62 data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 2);
63
64 data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 2);
65 data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 2);
66 data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 2);
67 data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 2);
68
69 data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 2);
70 data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 2);
71 data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 2);
72 data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 2);
73
74 data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 3);
75 data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 3);
76 data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 3);
77 data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 3);
78
79 data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 3);
80 data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 3);
81 data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 3);
82 data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 3);
83
84 data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 3);
85 data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 3);
86 data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 3);
87 data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 3);
88
89 data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 3);
90 data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 3);
91 data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 3);
92 data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 3);
93
94 data[dti.x].u = QuadReadAcrossX(data[dti.x].u);
95 data[dti.x].u.x = QuadReadAcrossX(data[dti.x].u.x);
96 data[dti.x].u.xy = QuadReadAcrossX(data[dti.x].u.xy);
97 data[dti.x].u.xyz = QuadReadAcrossX(data[dti.x].u.xyz);
98
99 data[dti.x].i = QuadReadAcrossX(data[dti.x].i);
100 data[dti.x].i.x = QuadReadAcrossX(data[dti.x].i.x);
101 data[dti.x].i.xy = QuadReadAcrossX(data[dti.x].i.xy);
102 data[dti.x].i.xyz = QuadReadAcrossX(data[dti.x].i.xyz);
103
104 data[dti.x].f = QuadReadAcrossX(data[dti.x].f);
105 data[dti.x].f.x = QuadReadAcrossX(data[dti.x].f.x);
106 data[dti.x].f.xy = QuadReadAcrossX(data[dti.x].f.xy);
107 data[dti.x].f.xyz = QuadReadAcrossX(data[dti.x].f.xyz);
108
109 data[dti.x].d = QuadReadAcrossX(data[dti.x].d);
110 data[dti.x].d.x = QuadReadAcrossX(data[dti.x].d.x);
111 data[dti.x].d.xy = QuadReadAcrossX(data[dti.x].d.xy);
112 data[dti.x].d.xyz = QuadReadAcrossX(data[dti.x].d.xyz);
113
114 data[dti.x].u = QuadReadAcrossY(data[dti.x].u);
115 data[dti.x].u.x = QuadReadAcrossY(data[dti.x].u.x);
116 data[dti.x].u.xy = QuadReadAcrossY(data[dti.x].u.xy);
117 data[dti.x].u.xyz = QuadReadAcrossY(data[dti.x].u.xyz);
118
119 data[dti.x].i = QuadReadAcrossY(data[dti.x].i);
120 data[dti.x].i.x = QuadReadAcrossY(data[dti.x].i.x);
121 data[dti.x].i.xy = QuadReadAcrossY(data[dti.x].i.xy);
122 data[dti.x].i.xyz = QuadReadAcrossY(data[dti.x].i.xyz);
123
124 data[dti.x].f = QuadReadAcrossY(data[dti.x].f);
125 data[dti.x].f.x = QuadReadAcrossY(data[dti.x].f.x);
126 data[dti.x].f.xy = QuadReadAcrossY(data[dti.x].f.xy);
127 data[dti.x].f.xyz = QuadReadAcrossY(data[dti.x].f.xyz);
128
129 data[dti.x].d = QuadReadAcrossY(data[dti.x].d);
130 data[dti.x].d.x = QuadReadAcrossY(data[dti.x].d.x);
131 data[dti.x].d.xy = QuadReadAcrossY(data[dti.x].d.xy);
132 data[dti.x].d.xyz = QuadReadAcrossY(data[dti.x].d.xyz);
133
134 data[dti.x].u = QuadReadAcrossDiagonal(data[dti.x].u);
135 data[dti.x].u.x = QuadReadAcrossDiagonal(data[dti.x].u.x);
136 data[dti.x].u.xy = QuadReadAcrossDiagonal(data[dti.x].u.xy);
137 data[dti.x].u.xyz = QuadReadAcrossDiagonal(data[dti.x].u.xyz);
138
139 data[dti.x].i = QuadReadAcrossDiagonal(data[dti.x].i);
140 data[dti.x].i.x = QuadReadAcrossDiagonal(data[dti.x].i.x);
141 data[dti.x].i.xy = QuadReadAcrossDiagonal(data[dti.x].i.xy);
142 data[dti.x].i.xyz = QuadReadAcrossDiagonal(data[dti.x].i.xyz);
143
144 data[dti.x].f = QuadReadAcrossDiagonal(data[dti.x].f);
145 data[dti.x].f.x = QuadReadAcrossDiagonal(data[dti.x].f.x);
146 data[dti.x].f.xy = QuadReadAcrossDiagonal(data[dti.x].f.xy);
147 data[dti.x].f.xyz = QuadReadAcrossDiagonal(data[dti.x].f.xyz);
148
149 data[dti.x].d = QuadReadAcrossDiagonal(data[dti.x].d);
150 data[dti.x].d.x = QuadReadAcrossDiagonal(data[dti.x].d.x);
151 data[dti.x].d.xy = QuadReadAcrossDiagonal(data[dti.x].d.xy);
152 data[dti.x].d.xyz = QuadReadAcrossDiagonal(data[dti.x].d.xyz);
153}