1#version 450
 2
 3#include "types.glsl"
 4#include "generic_unary_head.glsl"
 5
 6layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
 7
 8void main() {
 9    const uint idx = get_idx();
10
11    if (idx >= p.ne) {
12        return;
13    }
14
15#if defined(DATA_D_BF16)
16    float f = float(data_a[get_aoffset() + src0_idx(idx)]);
17    data_d[get_doffset() + dst_idx(idx)] = D_TYPE(fp32_to_bf16(f));
18#elif !defined(OPTIMIZATION_ERROR_WORKAROUND)
19    data_d[get_doffset() + dst_idx(idx)] = D_TYPE(data_a[get_aoffset() + src0_idx(idx)]);
20#else
21    data_d[get_doffset() + dst_idx(idx)] = data_a[get_aoffset() + src0_idx(idx)];
22#endif
23}