yum-mirror/glslang

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

Jeff BolzImplement GL_EXT_ocp_microscaling_types62f5430e

main
1.7 KiB65 linesraw
1#version 450 core
2
3#extension GL_EXT_float_e5m2 : require
4#extension GL_EXT_float_e2m1 : require
5#extension GL_KHR_memory_scope_semantics : enable
6#extension GL_EXT_shader_explicit_arithmetic_types : enable
7#extension GL_EXT_scalar_block_layout : enable
8#extension GL_EXT_long_vector : enable
9
10layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
11
12const floate2m1_t bc10 = 10.fe2m1;
13const fe2m1vec2 b2c10 = fe2m1vec2(bc10, bc10);
14layout(constant_id = 1) const floate2m1_t bsc10 = 10.fe2m1;
15
16struct S { floate2m1_t b; };
17const S sc = S(bc10);
18
19const floate2m1_t bca[2] = {bc10, bc10};
20
21floate2m1_t funcfe2m1(floate2m1_t x)
22{
23    return x;
24}
25
26void main()
27{
28    float f = 2.0;
29    floate2m1_t b = floate2m1_t(1.0fe2m1);
30
31    floate5m2_t fe5m2 = floate5m2_t(7);
32    float16_t f16 = float16_t(7);
33    float32_t f32 = 7;
34    float64_t f64 = 7;
35    fe5m2 = floate5m2_t(b);
36    f16 = float16_t(b);
37    f32 = float32_t(b);
38    f64 = float64_t(b);
39
40    f16 = b;
41    f32 = b;
42    f64 = b;
43
44    b = funcfe2m1(b);
45
46
47    fe2m1vec2 v2;
48    fe2m1vec4 v4;
49    vector<floate2m1_t, 8> v8;
50    vector<floate2m1_t, 16> v16;
51
52    uint8_t u8 = packFloat2xfe2m1EXT(v2);
53    uint16_t u16 = packFloat4xfe2m1EXT(v4);
54    uint32_t u32 = packFloat8xfe2m1EXT(v8);
55    u32vec2 u32v2 = packFloat16xfe2m1EXT(v16);
56
57    v2 = unpackFloat2xfe2m1EXT(u8);
58    v4 = unpackFloat4xfe2m1EXT(u16);
59    v8 = unpackFloat8xfe2m1EXT(u32);
60    v16 = unpackFloat16xfe2m1EXT(u32v2);
61
62    b = bitcastExtractfe2m1EXT(uint8_t(1), 2);
63    fe2m1vec4 v4_2 = bitcastExtractfe2m1EXT(u8vec4(1), 2);
64    vector<floate2m1_t, 7> v7 = bitcastExtractfe2m1EXT(vector<uint8_t, 7>(1), 3);
65}