1#version 450 core
2#extension GL_KHR_memory_scope_semantics : enable
3#extension GL_NV_cooperative_matrix : enable
4#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
5
6#pragma use_variable_pointers
7
8layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
9
10layout(set = 0, binding = 0) coherent buffer Block {
11    float y[1024*1024];
12    float x[];
13} block;
14
15
16void main()
17{
18    fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> m = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(0.0);
19
20    m = m + m;
21    m = m - m;
22    m = -m;
23    m = 2.0*m;
24    m = m*2.0;
25
26    coopMatLoadNV(m, block.x, 16, 128, false);
27    coopMatStoreNV(m, block.x, 16, 128, false);
28}
29