1617a3babSopenharmony_ci#version 450 core
2617a3babSopenharmony_ci#extension GL_KHR_memory_scope_semantics : enable
3617a3babSopenharmony_ci#extension GL_NV_cooperative_matrix : enable
4617a3babSopenharmony_ci#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
5617a3babSopenharmony_ci
6617a3babSopenharmony_ci#pragma use_variable_pointers
7617a3babSopenharmony_ci
8617a3babSopenharmony_cilayout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
9617a3babSopenharmony_ci
10617a3babSopenharmony_cilayout(set = 0, binding = 0) coherent buffer Block {
11617a3babSopenharmony_ci    float y[1024*1024];
12617a3babSopenharmony_ci    float x[];
13617a3babSopenharmony_ci} block;
14617a3babSopenharmony_ci
15617a3babSopenharmony_ci
16617a3babSopenharmony_civoid main()
17617a3babSopenharmony_ci{
18617a3babSopenharmony_ci    fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> m = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(0.0);
19617a3babSopenharmony_ci
20617a3babSopenharmony_ci    m = m + m;
21617a3babSopenharmony_ci    m = m - m;
22617a3babSopenharmony_ci    m = -m;
23617a3babSopenharmony_ci    m = 2.0*m;
24617a3babSopenharmony_ci    m = m*2.0;
25617a3babSopenharmony_ci
26617a3babSopenharmony_ci    coopMatLoadNV(m, block.x, 16, 128, false);
27617a3babSopenharmony_ci    coopMatStoreNV(m, block.x, 16, 128, false);
28617a3babSopenharmony_ci}
29