yum-mirror/glslang

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

Jeff BolzSupport EXT_integer_dot_productc16e6a34

main
4.7 KiB143 linesraw
1#version 450
2#extension GL_EXT_shader_explicit_arithmetic_types: enable
3#extension GL_EXT_integer_dot_product: enable
4
5int32_t i32 = 0;
6int16_t i16 = int16_t(0);
7uint32_t ui32 = 0;
8uint16_t ui16 = uint16_t(0);
9int64_t i64 = int64_t(0);
10uint64_t ui64 = uint64_t(0);
11
12void main (void)
13{
14    // DotProductInput4x8BitPackedKHR
15    dotPacked4x8EXT(i32,i32);
16    dotPacked4x8EXT(ui32,ui32);
17    dotPacked4x8EXT(ui32,i32);
18    dotPacked4x8EXT(i32,ui32);
19    dotPacked4x8AccSatEXT(i32,i32,i32);
20    dotPacked4x8AccSatEXT(ui32,ui32,ui32);
21    dotPacked4x8AccSatEXT(ui32,i32,i32);
22    dotPacked4x8AccSatEXT(i32,ui32,i32);
23
24    // 8bit vec4
25    dotEXT(i8vec4(0),i8vec4(0));
26    dotEXT(u8vec4(0),u8vec4(0));
27    dotEXT(u8vec4(0),i8vec4(0));
28    dotEXT(i8vec4(0),u8vec4(0));
29    dotAccSatEXT(i8vec4(0),i8vec4(0),i32);
30    dotAccSatEXT(u8vec4(0),u8vec4(0),ui32);
31    dotAccSatEXT(u8vec4(0),i8vec4(0),i32);
32    dotAccSatEXT(i8vec4(0),u8vec4(0),i32);
33
34    // 8bit vec3
35    dotEXT(i8vec3(0),i8vec3(0));
36    dotEXT(u8vec3(0),u8vec3(0));
37    dotEXT(u8vec3(0),i8vec3(0));
38    dotEXT(i8vec3(0),u8vec3(0));
39    dotAccSatEXT(i8vec3(0),i8vec3(0),i32);
40    dotAccSatEXT(u8vec3(0),u8vec3(0),ui32);
41    dotAccSatEXT(u8vec3(0),i8vec3(0),i32);
42    dotAccSatEXT(i8vec3(0),u8vec3(0),i32);
43
44    // 8bit vec2
45    dotEXT(i8vec2(0),i8vec2(0));
46    dotEXT(u8vec2(0),u8vec2(0));
47    dotEXT(u8vec2(0),i8vec2(0));
48    dotEXT(i8vec2(0),u8vec2(0));
49    dotAccSatEXT(i8vec2(0),i8vec2(0),i32);
50    dotAccSatEXT(u8vec2(0),u8vec2(0),ui32);
51    dotAccSatEXT(u8vec2(0),i8vec2(0),i32);
52    dotAccSatEXT(i8vec2(0),u8vec2(0),i32);
53
54    // 16bit vec4
55    dotEXT(i16vec4(0),i16vec4(0));
56    dotEXT(u16vec4(0),u16vec4(0));
57    dotEXT(i16vec4(0),u16vec4(0));
58    dotEXT(u16vec4(0),i16vec4(0));
59    dotAccSatEXT(i16vec4(0),i16vec4(0),i32);
60    dotAccSatEXT(u16vec4(0),u16vec4(0),ui32);
61    dotAccSatEXT(i16vec4(0),u16vec4(0),i32);
62    dotAccSatEXT(u16vec4(0),i16vec4(0),i32);
63
64    // 16bit vec3
65    dotEXT(i16vec3(0),i16vec3(0));
66    dotEXT(u16vec3(0),u16vec3(0));
67    dotEXT(i16vec3(0),u16vec3(0));
68    dotEXT(u16vec3(0),i16vec3(0));
69    dotAccSatEXT(i16vec3(0),i16vec3(0),i32);
70    dotAccSatEXT(u16vec3(0),u16vec3(0),ui32);
71    dotAccSatEXT(i16vec3(0),u16vec3(0),i32);
72    dotAccSatEXT(u16vec3(0),i16vec3(0),i32);
73
74    // 16bit vec2
75    dotEXT(i16vec2(0),i16vec2(0));
76    dotEXT(u16vec2(0),u16vec2(0));
77    dotEXT(i16vec2(0),u16vec2(0));
78    dotEXT(u16vec2(0),i16vec2(0));
79    dotAccSatEXT(i16vec2(0),i16vec2(0),i32);
80    dotAccSatEXT(u16vec2(0),u16vec2(0),ui32);
81    dotAccSatEXT(i16vec2(0),u16vec2(0),i32);
82    dotAccSatEXT(u16vec2(0),i16vec2(0),i32);
83
84    // 32bit vec4
85    dotEXT(i32vec4(0),i32vec4(0));
86    dotEXT(u32vec4(0),u32vec4(0));
87    dotEXT(i32vec4(0),u32vec4(0));
88    dotEXT(u32vec4(0),i32vec4(0));
89    dotAccSatEXT(i32vec4(0),i32vec4(0),i32);
90    dotAccSatEXT(u32vec4(0),u32vec4(0),ui32);
91    dotAccSatEXT(i32vec4(0),u32vec4(0),i32);
92    dotAccSatEXT(u32vec4(0),i32vec4(0),i32);
93
94    // 32bit vec3
95    dotEXT(i32vec3(0),i32vec3(0));
96    dotEXT(u32vec3(0),u32vec3(0));
97    dotEXT(i32vec3(0),u32vec3(0));
98    dotEXT(u32vec3(0),i32vec3(0));
99    dotAccSatEXT(i32vec3(0),i32vec3(0),i32);
100    dotAccSatEXT(u32vec3(0),u32vec3(0),ui32);
101    dotAccSatEXT(i32vec3(0),u32vec3(0),i32);
102    dotAccSatEXT(u32vec3(0),i32vec3(0),i32);
103
104    // 32bit vec2
105    dotEXT(i32vec2(0),i32vec2(0));
106    dotEXT(u32vec2(0),u32vec2(0));
107    dotEXT(i32vec2(0),u32vec2(0));
108    dotEXT(u32vec2(0),i32vec2(0));
109    dotAccSatEXT(i32vec2(0),i32vec2(0),i32);
110    dotAccSatEXT(u32vec2(0),u32vec2(0),ui32);
111    dotAccSatEXT(i32vec2(0),u32vec2(0),i32);
112    dotAccSatEXT(u32vec2(0),i32vec2(0),i32);
113
114    // 64bit vec4
115    dotEXT(i64vec4(0),i64vec4(0));
116    dotEXT(u64vec4(0),u64vec4(0));
117    dotEXT(i64vec4(0),u64vec4(0));
118    dotEXT(u64vec4(0),i64vec4(0));
119    dotAccSatEXT(i64vec4(0),i64vec4(0),i64);
120    dotAccSatEXT(u64vec4(0),u64vec4(0),ui64);
121    dotAccSatEXT(i64vec4(0),u64vec4(0),i64);
122    dotAccSatEXT(u64vec4(0),i64vec4(0),i64);
123
124    // 64bit vec3
125    dotEXT(i64vec3(0),i64vec3(0));
126    dotEXT(u64vec3(0),u64vec3(0));
127    dotEXT(i64vec3(0),u64vec3(0));
128    dotEXT(u64vec3(0),i64vec3(0));
129    dotAccSatEXT(i64vec3(0),i64vec3(0),i64);
130    dotAccSatEXT(u64vec3(0),u64vec3(0),ui64);
131    dotAccSatEXT(i64vec3(0),u64vec3(0),i64);
132    dotAccSatEXT(u64vec3(0),i64vec3(0),i64);
133
134    // 64bit vec2
135    dotEXT(i64vec2(0),i64vec2(0));
136    dotEXT(u64vec2(0),u64vec2(0));
137    dotEXT(i64vec2(0),u64vec2(0));
138    dotEXT(u64vec2(0),i64vec2(0));
139    dotAccSatEXT(i64vec2(0),i64vec2(0),i64);
140    dotAccSatEXT(u64vec2(0),u64vec2(0),ui64);
141    dotAccSatEXT(i64vec2(0),u64vec2(0),i64);
142    dotAccSatEXT(u64vec2(0),i64vec2(0),i64);
143}