yum-mirror/glslang

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

Jeff BolzImplement GL_EXT_ocp_microscaling_types62f5430e

main
1.5 KiB59 linesraw
1#version 450 core
2
3#extension GL_EXT_float_e2m3 : require
4#extension GL_KHR_memory_scope_semantics : enable
5#extension GL_EXT_shader_explicit_arithmetic_types : enable
6#extension GL_EXT_scalar_block_layout : enable
7#extension GL_EXT_long_vector : enable
8
9layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
10
11const floate2m3_t bc10 = floate2m3_t(10);
12const fe2m3vec2 b2c20 = fe2m3vec2(20);
13layout(constant_id = 1) const floate2m3_t bsc10 = floate2m3_t(10);
14
15struct S { floate2m3_t b; };
16const S sc = S(bc10);
17
18const floate2m3_t bca[2] = {bc10, bc10};
19
20floate2m3_t funcfe2m3(floate2m3_t x)
21{
22    return x;
23}
24
25void main()
26{
27    float f = 2.0;
28    floate2m3_t b = floate2m3_t(1.0fe2m3);
29
30    float16_t f16 = float16_t(7);
31    float32_t f32 = 7;
32    float64_t f64 = 7;
33    f16 = float16_t(b);
34    f32 = float32_t(b);
35    f64 = float64_t(b);
36
37    f16 = b;
38    f32 = b;
39    f64 = b;
40
41    b = funcfe2m3(b);
42
43
44    fe2m3vec4 v4;
45    vector<floate2m3_t, 8> v8;
46    vector<floate2m3_t, 16> v16;
47
48    u8vec3 u8   = packFloat4xfe2m3EXT(v4);
49    u16vec3 u16 = packFloat8xfe2m3EXT(v8);
50    u32vec3 u32 = packFloat16xfe2m3EXT(v16);
51
52    v4 = unpackFloat4xfe2m3EXT(u8);
53    v8 = unpackFloat8xfe2m3EXT(u16);
54    v16 = unpackFloat16xfe2m3EXT(u32);
55
56    b = bitcastExtractfe2m3EXT(uint8_t(1), 2);
57    fe2m3vec4 v4_2 = bitcastExtractfe2m3EXT(u8vec4(1), 2);
58    vector<floate2m3_t, 7> v7 = bitcastExtractfe2m3EXT(vector<uint8_t, 7>(1), 3);
59}