yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
5ed4003a
main
1#version 460 core 2 3#extension GL_ARM_tensors : enable 4#extension GL_EXT_shader_explicit_arithmetic_types : enable 5#extension GL_EXT_bfloat16 : enable 6#extension GL_EXT_float_e5m2 : enable 7#extension GL_EXT_float_e4m3 : enable 8#extension GL_ARM_tensors_bfloat16 : enable 9#extension GL_ARM_tensors_float_e5m2 : enable 10#extension GL_ARM_tensors_float_e4m3 : enable 11 12// Int types 13uniform tensorARM<int8_t, 1> it8; 14uniform tensorARM<int16_t, 1> it16; 15uniform tensorARM<int, 1> it32; 16uniform tensorARM<int64_t, 1> it64; 17 18// Uint types 19uniform tensorARM<uint8_t, 1> ut8; 20uniform tensorARM<uint16_t, 1> ut16; 21uniform tensorARM<uint, 1> ut32; 22uniform tensorARM<uint64_t, 1> ut64; 23 24// Float types 25uniform tensorARM<float16_t, 1> ft16; 26uniform tensorARM<float, 1> ft32; 27uniform tensorARM<float64_t, 1> ft64; 28 29// bfloat16, e5m2 and e4m3 types 30uniform tensorARM<bfloat16_t, 1> bft16; 31uniform tensorARM<floate5m2_t, 1> fte5m2; 32uniform tensorARM<floate4m3_t, 1> fte4m3; 33 34void main() { 35 uint coords[] = {0}; 36 37 // Int types 38 int8_t iw8 = int8_t(1); 39 int16_t iw16 = 1s; 40 int iw = 1; 41 int64_t iw64 = 1l; 42 tensorWriteARM(it8, coords, iw8); 43 tensorWriteARM(it16, coords, iw16); 44 tensorWriteARM(it32, coords, iw); 45 tensorWriteARM(it64, coords, iw64); 46 int iwv[4] = int[](1, 1, 1, 1); 47 tensorWriteARM(it32, coords, iwv); 48 49 int8_t ir8; 50 int16_t ir16; 51 int ir; 52 int64_t ir64; 53 tensorReadARM(it8, coords, ir8); 54 tensorReadARM(it16, coords, ir16); 55 tensorReadARM(it32, coords, ir); 56 tensorReadARM(it64, coords, ir64); 57 int irv[4]; 58 tensorReadARM(it32, coords, irv); 59 60 // Uint types 61 uint8_t uw8 = uint8_t(1); 62 uint16_t uw16 = 1s; 63 uint uw = 1; 64 uint64_t uw64 = 1l; 65 tensorWriteARM(ut8, coords, uw8); 66 tensorWriteARM(ut16, coords, uw16); 67 tensorWriteARM(ut32, coords, uw); 68 tensorWriteARM(ut64, coords, uw64); 69 uint uwv[4] = uint[](1, 1, 1, 1); 70 tensorWriteARM(ut32, coords, uwv); 71 72 uint8_t ur8; 73 uint16_t ur16; 74 uint ur; 75 uint64_t ur64; 76 tensorReadARM(ut8, coords, ur8); 77 tensorReadARM(ut16, coords, ur16); 78 tensorReadARM(ut32, coords, ur); 79 tensorReadARM(ut64, coords, ur64); 80 uint urv[4]; 81 tensorReadARM(ut32, coords, urv); 82 83 // Float types 84 float fw = 1.0; 85 float16_t fw16 = 1.0hf; 86 float64_t fw64 = 1.0; 87 tensorWriteARM(ft16, coords, fw16); 88 tensorWriteARM(ft32, coords, fw); 89 tensorWriteARM(ft64, coords, fw64); 90 float fwv[4] = float[](1.0, 1.0, 1.0, 1.0); 91 tensorWriteARM(ft32, coords, fwv); 92 93 float fr; 94 float16_t fr16; 95 float64_t fr64; 96 tensorReadARM(ft16, coords, fr16); 97 tensorReadARM(ft32, coords, fr); 98 tensorReadARM(ft64, coords, fr64); 99 float frv[4]; 100 tensorReadARM(ft32, coords, frv); 101 102 // bfloat16, e5m2 and e4m3 types 103 bfloat16_t bf16w = bfloat16_t(1.0); 104 floate5m2_t fe5m2w = floate5m2_t(1.0); 105 floate4m3_t fe4m3w = floate4m3_t(1.0); 106 tensorWriteARM(bft16, coords, bf16w); 107 tensorWriteARM(fte5m2, coords, fe5m2w); 108 tensorWriteARM(fte4m3, coords, fe4m3w); 109 110 const bfloat16_t bf16one = bfloat16_t(1.0); 111 bfloat16_t bf16wv[4] = bfloat16_t[](bf16one, bf16one, bf16one, bf16one); 112 tensorWriteARM(bft16, coords, bf16wv); 113 114 const floate5m2_t fe5m2one = floate5m2_t(1.0); 115 floate5m2_t fe5m2wv[4] = floate5m2_t[](fe5m2one, fe5m2one, fe5m2one, fe5m2one); 116 tensorWriteARM(fte5m2, coords, fe5m2wv); 117 118 floate4m3_t fe4m3one = floate4m3_t(1.0); 119 floate4m3_t fe4m3wv[4] = floate4m3_t[](fe4m3one, fe4m3one, fe4m3one, fe4m3one); 120 tensorWriteARM(fte4m3, coords, fe4m3wv); 121 122 bfloat16_t bf16r; 123 floate5m2_t fe5m2r; 124 floate4m3_t fe4m3r; 125 tensorReadARM(bft16, coords, bf16r); 126 tensorReadARM(fte5m2, coords, fe5m2r); 127 tensorReadARM(fte4m3, coords, fe4m3r); 128 129 bfloat16_t bf16rv[4]; 130 floate5m2_t fe5m2rv[4]; 131 floate4m3_t fe4m3rv[4]; 132 tensorReadARM(bft16, coords, bf16rv); 133 tensorReadARM(fte5m2, coords, fe5m2rv); 134 tensorReadARM(fte4m3, coords, fe4m3rv); 135}