yum-mirror/glslang

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

Jeff BolzImplement GL_NV_cooperative_vector1b65bd60

main
1.6 KiB60 linesraw
1#version 450 core
2#extension GL_KHR_memory_scope_semantics : enable
3#extension GL_NV_cooperative_vector : enable
4#extension GL_EXT_shader_explicit_arithmetic_types : enable
5#extension GL_EXT_buffer_reference : enable
6#extension GL_EXT_nonuniform_qualifier : enable
7
8layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
9
10layout(constant_id = 0) const uint N = 3;
11
12void main()
13{
14    float16_t f1 = float16_t(1.0);
15    float16_t f2 = float16_t(2.0);
16    float16_t f3 = float16_t(3.0);
17
18    coopvecNV<float16_t, N> v  = coopvecNV<float16_t, N>(1.0);
19    coopvecNV<float16_t, N> v2 = coopvecNV<float16_t, N>(f2);
20    coopvecNV<float16_t, N> v3 = coopvecNV<float16_t, N>(1.0, 2.0, 3.0);
21    coopvecNV<float16_t, N> v4 = coopvecNV<float16_t, N>(f1, f2, f3);
22    coopvecNV<float16_t, N> v5 = coopvecNV<float16_t, N>(1.0);
23    coopvecNV<float16_t, N> v6 = coopvecNV<float16_t, N>(1.0, 2.0, 3.0);
24
25    coopvecNV<float, N> v7 = coopvecNV<float, N>(1);
26    v7 *= 2.0;
27
28    coopvecNV<uint32_t, N> v8 = coopvecNV<uint32_t, N>(1);
29    v8 *= 2;
30
31    coopvecNV<uint32_t, N> v9 = v8 * 2;
32    coopvecNV<uint32_t, N> v10 = 2 * v8;
33
34    v8 = v8 & v9;
35    v8 = v8 | v9;
36    v8 = v8 ^ ~v9;
37    v8 = v8 >> v9;
38    v8 = v8 << v9;
39
40    v8 &= v9;
41    v8 |= v9;
42    v8 ^= v9;
43    v8 >>= v9;
44    v8 <<= v9;
45
46    v = coopvecNV<float16_t, N>(v);
47
48    coopvecNV<int32_t, 1> v11;
49    coopvecNV<uint8_t, 1>(v11);
50
51    coopvecNV<int32_t, 4> v12;
52    coopvecNV<uint8_t, 4>(v12);
53
54    coopvecNV<float32_t, 4> v13;
55    coopvecNV<int8_t, 4>(v13);
56}
57
58void foo(coopvecNV<float32_t, 4> v)
59{
60}