yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

Jeff BolzImplement GL_EXT_long_vector (#4132)b937eae5

main
2.7 KiB173 linesraw
1#version 450 core
2#extension GL_EXT_long_vector : enable
3#extension GL_EXT_shader_explicit_arithmetic_types : enable
4
5layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
6
7void main()
8{
9    float f;
10    vector<float, 5> f0, f1;
11    uint32_t u;
12    vector<uint32_t, 5> u0, u1;
13    bool b;
14    vector<bool, 5> b0, b1;
15
16    f0 = f0 + f1;
17    f0 = f0 - f1;
18    f0 = f0 * f1;
19    f0 = f0 / f1;
20    f0 = f0 + f;
21    f0 = f0 - f;
22    f0 = f0 * f;
23    f0 = f0 / f;
24    f0 = -f0;
25
26    f0 += f1;
27    f0 -= f1;
28    f0 *= f1;
29    f0 /= f1;
30    f0 += f;
31    f0 -= f;
32    f0 *= f;
33    f0 /= f;
34
35    u0 = u0 + u1;
36    u0 = u0 - u1;
37    u0 = u0 * u1;
38    u0 = u0 / u1;
39    u0 = u0 % u1;
40    u0 = u0 & u1;
41    u0 = u0 | u1;
42    u0 = u0 ^ u1;
43    u0 = u0 << u1;
44    u0 = u0 >> u1;
45    u0 = u0 + u;
46    u0 = u0 - u;
47    u0 = u0 * u;
48    u0 = u0 / u;
49    u0 = u0 % u;
50    u0 = u0 & u;
51    u0 = u0 | u;
52    u0 = u0 ^ u;
53    u0 = u0 << u;
54    u0 = u0 >> u;
55
56    u0 += u1;
57    u0 -= u1;
58    u0 *= u1;
59    u0 /= u1;
60    u0 %= u1;
61    u0 &= u1;
62    u0 |= u1;
63    u0 ^= u1;
64    u0 <<= u1;
65    u0 >>= u1;
66    u0 += u;
67    u0 -= u;
68    u0 *= u;
69    u0 /= u;
70    u0 %= u;
71    u0 &= u;
72    u0 ^= u;
73    u0 |= u;
74    u0 <<= u;
75    u0 >>= u;
76
77    u0++;
78    u0--;
79    ++u0;
80    --u0;
81
82    b0 = equal(b0, b1);
83    b0 = notEqual(b0, b1);
84    b = any(b0);
85    b = all(b0);
86    b0 = not(b0);
87
88    f0 = b ? f0 : f1;
89}
90
91void foo()
92{
93    float f;
94    vector<float, 1> f0, f1;
95    uint32_t u;
96    vector<uint32_t, 1> u0, u1;
97    bool b;
98    vector<bool, 1> b0, b1;
99
100    f0 = f0 + f1;
101    f0 = f0 - f1;
102    f0 = f0 * f1;
103    f0 = f0 / f1;
104    f0 = f0 + f;
105    f0 = f0 - f;
106    f0 = f0 * f;
107    f0 = f0 / f;
108    f0 = -f0;
109
110    f0 += f1;
111    f0 -= f1;
112    f0 *= f1;
113    f0 /= f1;
114    f0 += f;
115    f0 -= f;
116    f0 *= f;
117    f0 /= f;
118
119    u0 = u0 + u1;
120    u0 = u0 - u1;
121    u0 = u0 * u1;
122    u0 = u0 / u1;
123    u0 = u0 % u1;
124    u0 = u0 & u1;
125    u0 = u0 | u1;
126    u0 = u0 ^ u1;
127    u0 = u0 << u1;
128    u0 = u0 >> u1;
129    u0 = u0 + u;
130    u0 = u0 - u;
131    u0 = u0 * u;
132    u0 = u0 / u;
133    u0 = u0 % u;
134    u0 = u0 & u;
135    u0 = u0 | u;
136    u0 = u0 ^ u;
137    u0 = u0 << u;
138    u0 = u0 >> u;
139
140    u0 += u1;
141    u0 -= u1;
142    u0 *= u1;
143    u0 /= u1;
144    u0 %= u1;
145    u0 &= u1;
146    u0 |= u1;
147    u0 ^= u1;
148    u0 <<= u1;
149    u0 >>= u1;
150    u0 += u;
151    u0 -= u;
152    u0 *= u;
153    u0 /= u;
154    u0 %= u;
155    u0 &= u;
156    u0 ^= u;
157    u0 |= u;
158    u0 <<= u;
159    u0 >>= u;
160
161    u0++;
162    u0--;
163    ++u0;
164    --u0;
165
166    b0 = equal(b0, b1);
167    b0 = notEqual(b0, b1);
168    b = any(b0);
169    b = all(b0);
170    b0 = not(b0);
171
172    f0 = b ? f0 : f1;
173}