yum-mirror/glslang

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

arcady-lunargAdd explicit type support for bitfieldReverse (#4174)f1437db5

main
3.8 KiB166 linesraw
1#version 450
2
3#extension GL_EXT_shader_explicit_arithmetic_types: enable
4#extension GL_EXT_shader_explicit_arithmetic_types_int8: require
5#extension GL_EXT_shader_explicit_arithmetic_types_int16: require
6
7layout(binding = 0) uniform Uniforms
8{
9    uint index;
10};
11
12void main()
13{
14}
15
16
17void bitOps8(int8_t a, int8_t b)
18{
19    int8_t i8;
20    i8vec2 i8v2;
21    i8vec3 i8v3;
22    i8vec4 i8v4;
23
24    uint8_t u8;
25    u8vec2  u8v2;
26    u8vec3  u8v3;
27    u8vec4  u8v4;
28
29    i8 = bitfieldReverse(i8);
30    i8v2 = bitfieldReverse(i8v2);
31    i8v3 = bitfieldReverse(i8v3);
32    i8v4 = bitfieldReverse(i8v4);
33
34    u8 = bitfieldReverse(u8);
35    u8v2 = bitfieldReverse(u8v2);
36    u8v3 = bitfieldReverse(u8v3);
37    u8v4 = bitfieldReverse(u8v4);
38
39    i8 = findMSB(i8);
40    i8v2 = findMSB(i8v2);
41    i8v3 = findMSB(i8v3);
42    i8v4 = findMSB(i8v4);
43
44    i8 = findMSB(u8);
45    i8v2 = findMSB(u8v2);
46    i8v3 = findMSB(u8v3);
47    i8v4 = findMSB(u8v4);
48
49
50    i8 = findLSB(i8);
51    i8v2 = findLSB(i8v2);
52    i8v3 = findLSB(i8v3);
53    i8v4 = findLSB(i8v4);
54
55    i8 = findLSB(u8);
56    i8v2 = findLSB(u8v2);
57    i8v3 = findLSB(u8v3);
58    i8v4 = findLSB(u8v4);
59
60
61    i8 = bitCount(i8);
62    i8v2 = bitCount(i8v2);
63    i8v3 = bitCount(i8v3);
64    i8v4 = bitCount(i8v4);
65
66    i8 = bitCount(u8);
67    i8v2 = bitCount(u8v2);
68    i8v3 = bitCount(u8v3);
69    i8v4 = bitCount(u8v4);
70
71    i8 = bitfieldExtract(i8, a, b);
72    i8v2 = bitfieldExtract(i8v2, a, b);
73    i8v3 = bitfieldExtract(i8v3, a, b);
74    i8v4 = bitfieldExtract(i8v4, a, b);
75
76    u8 = bitfieldExtract(u8, a, b);
77    u8v2 = bitfieldExtract(u8v2, a, b);
78    u8v3 = bitfieldExtract(u8v3, a, b);
79    u8v4 = bitfieldExtract(u8v4, a, b);
80
81    i8 = bitfieldInsert(i8, i8, a, b);
82    i8v2 = bitfieldInsert(i8v2, i8v2, a, b);
83    i8v3 = bitfieldInsert(i8v3, i8v3, a, b);
84    i8v4 = bitfieldInsert(i8v4, i8v4, a, b);
85
86    u8 = bitfieldInsert(u8, u8, a, b);
87    u8v2 = bitfieldInsert(u8v2, u8v2, a, b);
88    u8v3 = bitfieldInsert(u8v3, u8v3, a, b);
89    u8v4 = bitfieldInsert(u8v4, u8v4, a, b);
90}
91
92
93void bitOps16(int16_t a, int16_t b)
94{
95    int16_t i16;
96    i16vec2 i16v2;
97    i16vec3 i16v3;
98    i16vec4 i16v4;
99
100    uint16_t u16;
101    u16vec2  u16v2;
102    u16vec3  u16v3;
103    u16vec4  u16v4;
104
105    i16 = bitfieldReverse(i16);
106    i16v2 = bitfieldReverse(i16v2);
107    i16v3 = bitfieldReverse(i16v3);
108    i16v4 = bitfieldReverse(i16v4);
109
110    u16 = bitfieldReverse(u16);
111    u16v2 = bitfieldReverse(u16v2);
112    u16v3 = bitfieldReverse(u16v3);
113    u16v4 = bitfieldReverse(u16v4);
114
115    i16 = findMSB(i16);
116    i16v2 = findMSB(i16v2);
117    i16v3 = findMSB(i16v3);
118    i16v4 = findMSB(i16v4);
119
120    u16 = findMSB(u16);
121    u16v2 = findMSB(u16v2);
122    u16v3 = findMSB(u16v3);
123    u16v4 = findMSB(u16v4);
124
125
126    i16 = findLSB(i16);
127    i16v2 = findLSB(i16v2);
128    i16v3 = findLSB(i16v3);
129    i16v4 = findLSB(i16v4);
130
131    i16 = findLSB(u16);
132    i16v2 = findLSB(u16v2);
133    i16v3 = findLSB(u16v3);
134    i16v4 = findLSB(u16v4);
135
136
137    i16 = bitCount(i16);
138    i16v2 = bitCount(i16v2);
139    i16v3 = bitCount(i16v3);
140    i16v4 = bitCount(i16v4);
141
142    i16 = bitCount(u16);
143    i16v2 = bitCount(u16v2);
144    i16v3 = bitCount(u16v3);
145    i16v4 = bitCount(u16v4);
146
147    i16 = bitfieldExtract(i16, a, b);
148    i16v2 = bitfieldExtract(i16v2, a, b);
149    i16v3 = bitfieldExtract(i16v3, a, b);
150    i16v4 = bitfieldExtract(i16v4, a, b);
151
152    u16 = bitfieldExtract(u16, a, b);
153    u16v2 = bitfieldExtract(u16v2, a, b);
154    u16v3 = bitfieldExtract(u16v3, a, b);
155    u16v4 = bitfieldExtract(u16v4, a, b);
156
157    i16 = bitfieldInsert(i16, i16, a, b);
158    i16v2 = bitfieldInsert(i16v2, i16v2, a, b);
159    i16v3 = bitfieldInsert(i16v3, i16v3, a, b);
160    i16v4 = bitfieldInsert(i16v4, i16v4, a, b);
161
162    u16 = bitfieldInsert(u16, u16, a, b);
163    u16v2 = bitfieldInsert(u16v2, u16v2, a, b);
164    u16v3 = bitfieldInsert(u16v3, u16v3, a, b);
165    u16v4 = bitfieldInsert(u16v4, u16v4, a, b);
166}