yum-mirror/glslang

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

Jeff BolzImplement GL_EXT_long_vector (#4132)b937eae5

main
2.0 KiB67 linesraw
1#version 450 core
2#extension GL_KHR_memory_scope_semantics : enable
3#extension GL_EXT_long_vector : enable
4#extension GL_EXT_shader_explicit_arithmetic_types : enable
5#extension GL_EXT_buffer_reference : enable
6#extension GL_EXT_expect_assume : enable
7#extension GL_EXT_bfloat16 : enable
8#extension GL_EXT_float_e5m2 : enable
9#extension GL_EXT_float_e4m3 : enable
10
11layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
12
13void main()
14{
15    vector<bfloat16_t, 5> vbf16;
16    vector<float16_t, 5> vf16;
17    vector<float, 5> vf32;
18    vector<float64_t, 5> vf64;
19    vector<uint16_t, 5> vu16;
20    vector<int16_t, 5> vi16;
21    vector<uint32_t, 5> vu32;
22    vector<int32_t, 5> vi32;
23    vector<uint64_t, 5> vu64;
24    vector<int64_t, 5> vi64;
25    vector<floate5m2_t, 5> vfe5m2;
26    vector<floate4m3_t, 5> vfe4m3;
27    vector<int8_t, 5> vi8;
28    vector<uint8_t, 5> vu8;
29
30    vi16 = halfBitsToInt16(vf16);
31    vu16 = halfBitsToUint16(vf16);
32    vf16 = int16BitsToHalf(vi16);
33    vf16 = uint16BitsToHalf(vu16);
34
35    vi16 = float16BitsToInt16(vf16);
36    vu16 = float16BitsToUint16(vf16);
37    vf16 = int16BitsToFloat16(vi16);
38    vf16 = uint16BitsToFloat16(vu16);
39
40    vi16 = bfloat16BitsToIntEXT(vbf16);
41    vu16 = bfloat16BitsToUintEXT(vbf16);
42    vbf16 = intBitsToBFloat16EXT(vi16);
43    vbf16 = uintBitsToBFloat16EXT(vu16);
44
45    vi32 = floatBitsToInt(vf32);
46    vu32 = floatBitsToUint(vf32);
47    vf32 = intBitsToFloat(vi32);
48    vf32 = uintBitsToFloat(vu32);
49
50    vi64 = doubleBitsToInt64(vf64);
51    vu64 = doubleBitsToUint64(vf64);
52    vf64 = int64BitsToDouble(vi64);
53    vf64 = uint64BitsToDouble(vu64);
54
55    vi8 = floate5m2BitsToIntEXT(vfe5m2);
56    vu8 = floate5m2BitsToUintEXT(vfe5m2);
57    vfe5m2 = intBitsToFloate5m2EXT(vi8);
58    vfe5m2 = uintBitsToFloate5m2EXT(vu8);
59
60    vi8 = floate4m3BitsToIntEXT(vfe4m3);
61    vu8 = floate4m3BitsToUintEXT(vfe4m3);
62    vfe4m3 = intBitsToFloate4m3EXT(vi8);
63    vfe4m3 = uintBitsToFloate4m3EXT(vu8);
64
65    saturatedConvertEXT(vfe5m2, vf16);
66    saturatedConvertEXT(vfe4m3, vf32);
67}