#version 450 core

#extension GL_EXT_float_e2m1 : require
#extension GL_EXT_float_e3m2 : require
#extension GL_EXT_float_e2m3 : require
#extension GL_EXT_float_ue8m0 : require
#extension GL_EXT_float_mxint8 : require
#extension GL_KHR_memory_scope_semantics : enable
#extension GL_EXT_shader_explicit_arithmetic_types : enable
#extension GL_EXT_scalar_block_layout : enable
#extension GL_EXT_long_vector : enable

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

struct NestedSubByte { floate2m1_t value; };

layout(scalar) buffer B {
    floate2m1_t b1;
    floate3m2_t b2;
    floate2m3_t b3;
    NestedSubByte nested;
} buf;

shared floate2m1_t s1;
shared floate3m2_t s2;
shared floate2m3_t s3;
shared NestedSubByte s4;

floate2m1_t funcfe2m1(floate2m1_t x)
{
    return x;
}

void main()
{
    float f = 2.0;
    funcfe2m1(f);

    floatue8m0_t ue8m0 = 1.0fue8m0;
    float implicitFloat = ue8m0;
    double implicitDouble = ue8m0;

    floate2m1_t fe2m1 = floate2m1_t(f);
    floate3m2_t fe3m2 = floate3m2_t(f);
    floate2m3_t fe2m3 = floate2m3_t(f);
    floatue8m0_t fue8m0 = floatue8m0_t(f);
    floatmxint8_t fmxint8 = floatmxint8_t(f);
}
